Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r36705 -r36729 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 36705) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 36729) @@ -11444,7 +11444,7 @@ Invoice first = invoices.stream().findFirst().get(); if(first.getInvoicePlan() == null){ //没有申请单的,以发货单为依据,跟以前一样 - return loadToussePrintData(invoices,tousseGroupIds,invoiceTousseInstances,printedInvoiceItemIds,isMergeRemark); + return loadToussePrintData(invoices,tousseGroupIds,invoiceTousseInstances,printedInvoiceItemIds,isMergeRemark, null); }else{ Map recycleAmountInfo = getTousseRecyclingAmount(invoices); //找出需要打印的tousseItem @@ -11757,7 +11757,8 @@ private Map> loadToussePrintData(Collection invoices,List tousseGroupIds, Map> invoiceTousseInstances, Set printedInvoiceItemIds, - boolean isMergeRemark){ + boolean isMergeRemark, + Map ascriptionDepartmentCodeAndNameMap){ Map> tousseGroupIdPrintVoMap = new HashMap>(); if(CollectionUtils.isEmpty(invoices) || CollectionUtils.isEmpty(tousseGroupIds)) @@ -11828,7 +11829,7 @@ + tousseInstance.getPrice()); } //NFYY-86 打印外来器械包申请单患者相关信息:“病人姓名”、“住院号/诊疗号”、“病人所属科室” - setInvoicePrintVoForeignToussApplicationPatienInfo(ip, tempVo); + setInvoicePrintVoForeignToussApplicationPatienInfo(ip, tempVo, ascriptionDepartmentCodeAndNameMap); } else { String expireDateStr = tousseInstance.getValidUntilStr(Constants.SIMPLEDATEFORMAT_YYYYMMDD); @@ -11850,7 +11851,7 @@ //ZJYY-95打印发货单时,如果需要物品申领备注,只要配置打印包实例的备注字段即可 tempVo.setRemark(StringUtils.defaultString(tousseInstance.getRemark())); //NFYY-86 打印外来器械包申请单患者相关信息:“病人姓名”、“住院号/诊疗号”、“病人所属科室” - setInvoicePrintVoForeignToussApplicationPatienInfo(ip, tempVo); + setInvoicePrintVoForeignToussApplicationPatienInfo(ip, tempVo, ascriptionDepartmentCodeAndNameMap); voList.add(tempVo); } Set invoiceIds = tempVo.getInvoiceIds(); @@ -11865,78 +11866,15 @@ logger.debug("发货单(id:" + invoice.getId()+")没有器械包"); } } - //外来器械包申请单的所属科室记录的是科室编码,需要重新查询科室名称 - tousseGroupIdPrintVoMap = searchAscriptionDepartmentName(tousseGroupIdPrintVoMap); return tousseGroupIdPrintVoMap; } /** - * 外来器械包申请单的所属科室记录的是科室编码,需要重新查询科室名称 - * @param tousseGroupIdPrintVoMap - * @return - */ - private Map> searchAscriptionDepartmentName(Map> tousseGroupIdPrintVoMap) { - if(MapUtils.isEmpty(tousseGroupIdPrintVoMap)){ - return tousseGroupIdPrintVoMap; - } - Set ascriptionDepartmentCodeOrNameSet = new HashSet(); - for (Entry> entry : tousseGroupIdPrintVoMap.entrySet()) { - List invoicePrintVoList = entry.getValue(); - if(CollectionUtils.isNotEmpty(invoicePrintVoList)){ - for (InvoicePrintVo invoicePrintVo : invoicePrintVoList) { - String ascriptionDepartments = invoicePrintVo.getAscriptionDepartments(); - if(StringUtils.isBlank(ascriptionDepartments)){ - continue; - } - String[] ascriptionDepartmentArray = StringTools.split(ascriptionDepartments, ","); - for (String ascriptionDepartment : ascriptionDepartmentArray) { - ascriptionDepartmentCodeOrNameSet.add(ascriptionDepartment); - } - } - } - } - if(CollectionUtils.isEmpty(ascriptionDepartmentCodeOrNameSet)){ - return tousseGroupIdPrintVoMap; - } - Map orgUnitCodeAndNameMap = orgUnitManager.getOrgUnitCodeAndNameMapByOrgUnitCodes(ascriptionDepartmentCodeOrNameSet); - if(MapUtils.isEmpty(orgUnitCodeAndNameMap)){ - return tousseGroupIdPrintVoMap; - } - - Map> result = new HashMap>(); - for (Entry> entry : tousseGroupIdPrintVoMap.entrySet()) { - List invoicePrintVoList = entry.getValue(); - if(CollectionUtils.isNotEmpty(invoicePrintVoList)){ - for (InvoicePrintVo invoicePrintVo : invoicePrintVoList) { - String ascriptionDepartments = invoicePrintVo.getAscriptionDepartments(); - if(StringUtils.isBlank(ascriptionDepartments)){ - continue; - } - String[] ascriptionDepartmentArray = StringTools.split(ascriptionDepartments, ","); - Set ascriptionDepartmentNames = new HashSet(); - for (String ascriptionDepartment : ascriptionDepartmentArray) { - String orgUnitName = orgUnitCodeAndNameMap.get(ascriptionDepartment); - if(orgUnitName == null){ - ascriptionDepartmentNames.add(ascriptionDepartment); - }else{ - ascriptionDepartmentNames.add(orgUnitName); - } - } - invoicePrintVo.setAscriptionDepartments(StringTools.join(ascriptionDepartmentNames, ",")); - } - } - result.put(entry.getKey(), invoicePrintVoList); - } - - return result; - } - - /** * 查询外来器械申请单的患者相关信息NFYY-86 * @param ip * @param tempVo */ - private void setInvoicePrintVoForeignToussApplicationPatienInfo(InvoicePlan ip, InvoicePrintVo tempVo) { + private void setInvoicePrintVoForeignToussApplicationPatienInfo(InvoicePlan ip, InvoicePrintVo tempVo, Map ascriptionDepartmentCodeAndNameMap) { if(ip != null && ip.isForeignTousseAppliaction() && tempVo != null){ //外来器械申请单 ForeignTousseApplication fta = (ForeignTousseApplication) ip; @@ -11952,6 +11890,11 @@ //如果住院号和诊疗号都不为空,则显示为“住院号/诊疗号”,例如“123456/J0054321”;如果只有住院号或者只有诊疗号,则只显示住院号或者诊疗号的值,例如“123456”或者“J0054321”。 String hospitalNumAndClinicNumber = StringTools.uniteTwoStringBySemicolon(hospitalNumber, clinicNumber, "/"); tempVo.setHospitalNumAndClinicNumber(StringTools.uniteTwoStringBySemicolon(tempVo.getHospitalNumAndClinicNumber(), hospitalNumAndClinicNumber, ",")); + if(StringUtils.isNotEmpty(ascriptionDepartment) + && ascriptionDepartmentCodeAndNameMap != null + && ascriptionDepartmentCodeAndNameMap.containsKey(ascriptionDepartment)){ + ascriptionDepartment = ascriptionDepartmentCodeAndNameMap.get(ascriptionDepartment); + } tempVo.setAscriptionDepartments(StringTools.uniteTwoStringBySemicolon(tempVo.getAscriptionDepartments(), ascriptionDepartment, ",")); } } @@ -12078,6 +12021,8 @@ } boolean comboTousseSendByWrapperTousse = CssdUtils.getSystemSetConfigByNameBool("comboTousseSendByWrapperTousse"); Map recycleAmountInfo = getTousseRecyclingAmount(invoices); + //病人所在科室的编码和名称map(外来器械包申请单) + Map ascriptionDepartmentCodeAndNameMap = getAscriptionDepartmentCodeAndNameMap(invoices); List voList = new ArrayList(); for (Invoice invoice : invoices) { @@ -12147,7 +12092,7 @@ tempVo.setAmount(tempVo.getAmount() + 1); tempVo.setTotalPrice(MathTools.add(tempVo.getTotalPrice(), tousseInstance.getPrice()).doubleValue()); //查询外来器械申请单的患者相关信息NFYY-86 - setInvoicePrintVoForeignToussApplicationPatienInfo(ip, tempVo); + setInvoicePrintVoForeignToussApplicationPatienInfo(ip, tempVo, ascriptionDepartmentCodeAndNameMap); } else { String expireDateStr = tousseInstance.getValidUntilStr(Constants.SIMPLEDATEFORMAT_YYYYMMDD); @@ -12168,62 +12113,74 @@ tempVo.setSupplierName(tousseDefinition.getSupplierName()); tempVo.setRemark(StringUtils.defaultString(tousseInstance.getRemark())); //查询外来器械申请单的患者相关信息NFYY-86 - setInvoicePrintVoForeignToussApplicationPatienInfo(ip, tempVo); + setInvoicePrintVoForeignToussApplicationPatienInfo(ip, tempVo, ascriptionDepartmentCodeAndNameMap); voList.add(tempVo); } if(invoice.getInvoicePlan() != null && StringUtils.isBlank(tempVo.getApplicationDate())){ tempVo.setApplicationDate(invoice.getInvoicePlan().getApplicationTime()); } } } - //查询所属科室名称 - searchAscriptionDepartmentName(voList); return voList; } /** - * 查询所属科室名称 - * @param voList + * 病人所在科室的编码和名称map(外来器械包申请单) + * @param invoices + * @return */ - private void searchAscriptionDepartmentName(List voList) { - if(CollectionUtils.isEmpty(voList)){ - return; + private Map getAscriptionDepartmentCodeAndNameMap( Map> departCodingInvoiceMap) { + Map ascriptionDepartmentCodeAndNameMap = new HashMap(); + if(MapUtils.isEmpty(departCodingInvoiceMap)){ + return ascriptionDepartmentCodeAndNameMap; } + Collection invoices = new ArrayList(); + for (List list : departCodingInvoiceMap.values()) { + if(CollectionUtils.isNotEmpty(list)){ + invoices.addAll(list); + } + } + return getAscriptionDepartmentCodeAndNameMap(invoices); + } + + /** + * 病人所在科室的编码和名称map(外来器械包申请单) + * @param invoices + * @return + */ + private Map getAscriptionDepartmentCodeAndNameMap(Collection invoices) { + Map ascriptionDepartmentCodeAndNameMap = new HashMap(); + if(CollectionUtils.isEmpty(invoices)){ + return ascriptionDepartmentCodeAndNameMap; + } Set ascriptionDepartmentCodeOrNameSet = new HashSet(); - if(CollectionUtils.isNotEmpty(voList)){ - for (InvoicePrintVo invoicePrintVo : voList) { - String ascriptionDepartments = invoicePrintVo.getAscriptionDepartments(); - if(StringUtils.isBlank(ascriptionDepartments)){ - continue; - } - String[] ascriptionDepartmentArray = StringTools.split(ascriptionDepartments, ","); - for (String ascriptionDepartment : ascriptionDepartmentArray) { + for (Invoice invoice : invoices) { + InvoicePlan ip = invoice.getInvoicePlan(); + if(ip != null && ip.isForeignTousseAppliaction()){ + ForeignTousseApplication fta = (ForeignTousseApplication) ip; + //病人所属科室 + String ascriptionDepartment = fta.getAscriptionDepartment(); + if(StringUtils.isNotBlank(ascriptionDepartment)){ ascriptionDepartmentCodeOrNameSet.add(ascriptionDepartment); } } } - if(CollectionUtils.isNotEmpty(ascriptionDepartmentCodeOrNameSet)){ - Map orgUnitCodeAndNameMap = orgUnitManager.getOrgUnitCodeAndNameMapByOrgUnitCodes(ascriptionDepartmentCodeOrNameSet); - if(MapUtils.isNotEmpty(orgUnitCodeAndNameMap)){ - for (InvoicePrintVo invoicePrintVo : voList) { - String ascriptionDepartments = invoicePrintVo.getAscriptionDepartments(); - if(StringUtils.isBlank(ascriptionDepartments)){ - continue; - } - Set ascriptionDepartmentSet = new HashSet(); - String[] ascriptionDepartmentArray = StringTools.split(ascriptionDepartments, ","); - for (String ascriptionDepartment : ascriptionDepartmentArray) { - String orgUnitName = orgUnitCodeAndNameMap.get(ascriptionDepartment); - if(orgUnitName == null){ - ascriptionDepartmentSet.add(ascriptionDepartment); - }else{ - ascriptionDepartmentSet.add(orgUnitName); - } - } - invoicePrintVo.setAscriptionDepartments(StringTools.join(ascriptionDepartmentSet, ",")); - } - } + if(CollectionUtils.isEmpty(ascriptionDepartmentCodeOrNameSet)){ + return ascriptionDepartmentCodeAndNameMap; } + for (String codeOrName : ascriptionDepartmentCodeOrNameSet) { + ascriptionDepartmentCodeAndNameMap.put(codeOrName, codeOrName); + } + Map orgUnitCodeAndNameMap = orgUnitManager.getOrgUnitCodeAndNameMapByOrgUnitCodes(ascriptionDepartmentCodeOrNameSet); + if(MapUtils.isEmpty(orgUnitCodeAndNameMap)){ + return ascriptionDepartmentCodeAndNameMap; + } + for (Entry entry : orgUnitCodeAndNameMap.entrySet()) { + String orgUnitCode = entry.getKey(); + String orgUnitName = entry.getValue(); + ascriptionDepartmentCodeAndNameMap.put(orgUnitCode, orgUnitName); + } + return ascriptionDepartmentCodeAndNameMap; } @Override @@ -13347,6 +13304,7 @@ } String printUser = AcegiHelper.getLoginUserFullName(); List orgUnits = orgUnitManager.getByCodes(departCodingInvoiceMap.keySet()); + Map ascriptionDepartmentCodeAndNameMap = getAscriptionDepartmentCodeAndNameMap(departCodingInvoiceMap); List batchPrintInvoiceVos = new LinkedList(); Set printedInviceItemIds = new HashSet(); departCodingInvoiceMap.forEach(new BiConsumer>(){ @@ -13366,22 +13324,22 @@ Map> invoicePlanMapInvoice = seperateInvoiceByInvoicePlan(invoices); if(invoicePlanMapInvoice.size() > 0){ for(Entry> entry:invoicePlanMapInvoice.entrySet()){ - List vos = buildBatchPrintInvoiceVo(entry.getValue(),config,depart,printUser,invoiceTousseInstances,printedInviceItemIds,isMergeRemark); + List vos = buildBatchPrintInvoiceVo(entry.getValue(),config,depart,printUser,invoiceTousseInstances,printedInviceItemIds,isMergeRemark, ascriptionDepartmentCodeAndNameMap); if(CollectionUtils.isNotEmpty(vos)){ batchPrintInvoiceVos.addAll(vos); } } } }else if(config.departMergePrint()){ - List vos = buildBatchPrintInvoiceVo(invoices,config,depart,printUser,invoiceTousseInstances,printedInviceItemIds,isMergeRemark); + List vos = buildBatchPrintInvoiceVo(invoices,config,depart,printUser,invoiceTousseInstances,printedInviceItemIds,isMergeRemark, ascriptionDepartmentCodeAndNameMap); if(CollectionUtils.isNotEmpty(vos)){ batchPrintInvoiceVos.addAll(vos); } }else{ for(Invoice invoice : invoices){ List array = new ArrayList(); array.add(invoice); - List vos = buildBatchPrintInvoiceVo(array,config,depart,printUser,invoiceTousseInstances,printedInviceItemIds,isMergeRemark); + List vos = buildBatchPrintInvoiceVo(array,config,depart,printUser,invoiceTousseInstances,printedInviceItemIds,isMergeRemark, ascriptionDepartmentCodeAndNameMap); if(CollectionUtils.isNotEmpty(vos)){ batchPrintInvoiceVos.addAll(vos); } @@ -13487,7 +13445,7 @@ * @return */ private List buildBatchPrintInvoiceVo(List invoices,PrintInvoiceConfig config,OrgUnit depart, - String printUser,Map> invoiceTousseInstances,Set printedInvoiceItemIds,boolean isMergeRemark){ + String printUser,Map> invoiceTousseInstances,Set printedInvoiceItemIds,boolean isMergeRemark, Map ascriptionDepartmentCodeAndNameMap){ List retList = new ArrayList(); if(StringTools.isNotBlank(config.getTousseGroupConfig())){ // 转换为打印配置对象,是一个数组,数组中的每个元素定义一种打印组合,每个元素也是一个数组 @@ -13560,7 +13518,7 @@ if(CssdUtils.isDgszyyProject()){ tousseGroupPrintDataMap = loadToussePrintData_dgszyy(invoices, tousseGroupIds,invoiceTousseInstances,printedInvoiceItemIds,isMergeRemark); }else{ - tousseGroupPrintDataMap = loadToussePrintData(invoices, tousseGroupIds,invoiceTousseInstances,printedInvoiceItemIds,isMergeRemark); + tousseGroupPrintDataMap = loadToussePrintData(invoices, tousseGroupIds,invoiceTousseInstances,printedInvoiceItemIds,isMergeRemark, ascriptionDepartmentCodeAndNameMap); } Collection disposableVos = null; Collection disinfectGoodsVos = null;