Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r34293 -r34306 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 34293) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 34306) @@ -8458,7 +8458,7 @@ !TousseInstance.STATUS_REVIEWED.equals(tousseInstance.getStatus()) && !TousseInstance.STATUS_PACKED.equals(tousseInstance.getStatus()) && !TousseInstance.STATUS_PRERECYCLED.equals(tousseInstance.getStatus())){//包状态检查 2020-07-08 11:32:00 - errorMessage = String.format("【必须是%s、%s、%s、%s、%s、%s、%s或%s的状态的包,该包当前状态为:%s,%s】", + errorMessage = String.format("【必须是%s、%s、%s、%s、%s、%s、%s或%s的状态的包,该【%s】当前状态为:%s,%s】", TousseInstance.STATUS_SHIPPED, TousseInstance.STATUS_USED, TousseInstance.STATUS_SIGNED, @@ -8467,6 +8467,7 @@ TousseInstance.STATUS_STERILED, TousseInstance.STATUS_REVIEWED, TousseInstance.STATUS_PACKED, + td.getName(), tousseInstance.getStatus(), tousseInstanceManager.getDateStrByTousseInstanceStatus(tousseInstance)); }else{ @@ -8802,19 +8803,36 @@ invoicePlanId = rr.getRecyclingApplication().getId(); } } - String sql = String.format("select depart,serialNumber,id from %s where (endStatus is null or endStatus<>'"+ InvoicePlan.STATUS_END +"') and tousseBarcodes like '%%%s%%' %s " + String sql = String.format("select depart,serialNumber,id from %s where (endStatus is null or endStatus<>'"+ InvoicePlan.STATUS_END +"') and recyclingStatus in('%s','%s') and tousseBarcodes like '%%%s%%' %s " , InvoicePlan.class.getSimpleName() + ,InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + ,InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE ,ti.getBarcode() ,DatabaseUtil.isPoIdValid(invoicePlanId)?" and id<>" + invoicePlanId:""); ResultSet result = objectDao.executeSql(sql); String msg = null; try { - while (result.next()){ + boolean checkTerminated = false;//是否检查了申请单上对应的物品被终止 + out : while (result.next()){ String depart = result.getString("depart"); String serialNumber = result.getString("serialNumber"); if(!TousseDefinition.PACKAGE_TYPE_SPLIT.equals(ti.getTousseDefinition().getTousseType())){ Long id = result.getLong("id"); InvoicePlan ip = invoicePlanManager.get(id); + if(!checkTerminated){ + checkTerminated = true; + List tousseItems = ip.getApplicationItems(); + if(CollectionUtils.isNotEmpty(tousseItems)){ + for (TousseItem tousseItem : tousseItems) { + if(MathTools.equals(tousseItem.getTousseDefinitionId(), ti.getTousseDefinition().getId()) + || MathTools.equals(tousseItem.getTousseDefinitionId(), ti.getTousseDefinition().getAncestorID())){ + if(tousseItem.terminated()){ + break out; + } + } + } + } + } RecyclingRecord rr = ip.getRecyclingRecord(objectDao); if(rr != null){ boolean find = false; Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/toussedefinition/service/TousseInstanceUtils.java =================================================================== diff -u -r33913 -r34306 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/toussedefinition/service/TousseInstanceUtils.java (.../TousseInstanceUtils.java) (revision 33913) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/toussedefinition/service/TousseInstanceUtils.java (.../TousseInstanceUtils.java) (revision 34306) @@ -136,7 +136,7 @@ dateString = dateFormat.format(specifiedDate); } String status = tousseInstance.getStatus(); - statusAndTime = String.format(format, status, dateString); + statusAndTime = String.format(format, status, StringUtils.isNotBlank(dateString)?"操作时间:"+ dateString:dateString); return statusAndTime; } /** Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java =================================================================== diff -u -r33942 -r34306 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 33942) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 34306) @@ -405,17 +405,19 @@ BarcodeDevice barcodeDevice = barcodeManager .getBarcodeByBarcode(barcodeStr); JSONObject jsonObject = new JSONObject(); + IDCardInstance idCardInstance = null; + TousseInstance tousseInstance = null; + boolean specialCaseTips = false;//是否有一些特殊的情况提示 if (barcodeDevice != null){ - TousseInstance tousseInstance = null; // 是否器械包实例 if (barcodeDevice instanceof TousseInstance) { tousseInstance = (TousseInstance) barcodeDevice; isTousseInstanceBarcode = true; // 是否器械包标识牌实例 }else if (barcodeDevice instanceof IDCardInstance) { isIdCardBarcode = true; - IDCardInstance idCardInstance = (IDCardInstance) barcodeDevice; + idCardInstance = (IDCardInstance) barcodeDevice; List tousseInstances = idCardInstance .getTousseInstances(objectDao); if (tousseInstances != null && tousseInstances.size() > 0) { @@ -439,8 +441,6 @@ || firstTousseInstance.isPreRecycled()) { tousseInstance = firstTousseInstance; } - }else{ - message = "该标识牌没有器械包装配记录!(即没有关联的器械包实例)"; } // 是否部门编码 }else if(barcodeDevice.getType()!=null && BarcodeDevice.BARCODE_TYPE_ORGUNIT.equals(barcodeDevice.getType())){ @@ -462,22 +462,29 @@ TousseDefinition td = tousseInstance.getTousseDefinition(); if(TousseDefinition.PACKAGE_TYPE_SPLIT.equals(td.getTousseType())){ message = "该器械包已回收!"; + specialCaseTips = true; }else{ RecyclingRecord rr = application.getRecyclingRecord(objectDao);//有回收记录才算回收 if(rr != null){ - for (RecyclingItem ri : rr.getItems()) { - if(MathTools.equals(td.getId(), ri.getTousseDefinitionId()) || MathTools.equals(td.getAncestorID(), ri.getTousseDefinitionId())){ - message = "该器械包已回收!"; - break; - } + String sql = String.format("select count(*) from %s where recyclingRecordId=%s and toussedefinition_id in(%s,%s) " + ,ClassifiedItem.class.getSimpleName(),rr.getId(), td.getId(),td.getAncestorID()); + if(isTousseInstanceBarcode){ + sql += " and lastTousseInstanceId='"+ tousseInstance.getId() +"' "; + }else if(idCardInstance != null){ + sql += " and idCardBarcode='"+ idCardInstance.getBarcode() +"' "; } + if(objectDao.countBySql(sql) > 0){ + message = "该器械包已回收!"; + specialCaseTips = true; + } } } }else if (StringUtils.isNotBlank(handleDepartCoding) && !handleDepartCoding.equals(application .getHandleDepartCoding())) { message = "该器械包关联的申请单处理科室与当前登录科室不一致!"; + specialCaseTips = true; } else { message = ""; } @@ -493,9 +500,11 @@ switch (useRecord.getStatus()) { case UseRecord.STATUS_UNAUDITED: message = "该器械包的使用记录未审核,请审核后再回收"; + specialCaseTips = true; break; case UseRecord.STATUS_AUDITED: message = "该器械包的使用记录未转换申请单,请转换后再回收"; + specialCaseTips = true; break; default: break; @@ -517,8 +526,15 @@ } } jsonObject.put("success", true); - jsonObject.put("message", message); jsonObject.put("id", id); + if(!DatabaseUtil.isPoIdValid(id) && !specialCaseTips){ + if(isTousseInstanceBarcode && tousseInstance != null){ + message = "包外标签条码为"+ idCardInstance.getBarcode() +"的【"+ tousseInstance.getTousseName() +"】,没有找到对应的待回收申请单!"; + }else if(idCardInstance != null){ + message = "标识牌条码为"+ idCardInstance.getBarcode() +"的【"+ idCardInstance.getTousseName() +"】,没有找到对应的待回收申请单!"; + } + } + jsonObject.put("message", message); jsonObject.put("departMent", departMent); jsonObject.put("orgUnitCoding", orgUnitCoding); jsonObject.put("isIdCardBarcode", isIdCardBarcode);