Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java =================================================================== diff -u -r32539 -r32558 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 32539) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 32558) @@ -3451,26 +3451,32 @@ } } } + //是否外来器械接收单 + boolean isForeignTousseReceiveRecord = false; + RecyclingRecord record = null; + if(StringUtils.isNotBlank(recyclingrecordId)){ + record = recyclingRecordManager.get(recyclingrecordId); + if(record != null && record.getRecyclingApplication() == null){ + isForeignTousseReceiveRecord = true; + } + } InvoicePlan app = null; if(StringUtils.isNotBlank(applicationId)){ app = invoicePlanManager.get(applicationId); if(app != null){ + //是否外来器械包申请单二次回收 + boolean isForeignSecondaryRecy = InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION.equals(app.getType()) && InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE.equals(app.getRecyclingStatus()); + if(record != null){ + isForeignSecondaryRecy = record.getRecyclingTimes() != null && RecyclingRecord.RECYCLINGTIMES_TWO == record.getRecyclingTimes(); + } boolean confirmRecycle = false; if(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE.equals(app.getRecyclingStatus())){ confirmRecycle = true; } TousseItem tousseItem = tousseItemManager.find(app.getApplicationItems(), tousseDefinitionId); - jsonArray = buildTousseItemsJson(tousseItem,confirmRecycle,jsonArray); + jsonArray = buildTousseItemsJson(tousseItem,confirmRecycle,jsonArray, isForeignSecondaryRecy); } } - //是否外来器械接收单 - boolean isForeignTousseReceiveRecord = false; - if(StringUtils.isNotBlank(recyclingrecordId)){ - RecyclingRecord record = recyclingRecordManager.get(recyclingrecordId); - if(record != null && record.getRecyclingApplication() == null){ - isForeignTousseReceiveRecord = true; - } - } JSONObject obj = new JSONObject(); if(app != null){ Date operationTime = null; @@ -3520,7 +3526,7 @@ } - private JSONArray buildTousseItemsJson(TousseItem tousseItem,boolean confirmRecycle,JSONArray jsonArray) { + private JSONArray buildTousseItemsJson(TousseItem tousseItem,boolean confirmRecycle,JSONArray jsonArray, boolean isForeignSecondaryRecy) { if(tousseItem != null){ String tousseName = tousseItem.getTousseName(); TousseDefinition td = tousseDefinitionManager.getForeignTousseDefinitionByTousseItem(tousseItem); @@ -3549,6 +3555,9 @@ String includeImplant = mi.materialIsImplant(); int usedAmountOfIncludeImplant = 0; JSONObject obj = new JSONObject(); + if(isForeignSecondaryRecy && mi.getApplyAmount() != null && mi.getApplyAmount() == 0){ + continue; + } //如果是植入物 if ("是".equals(includeImplant)) { if(mi.getUsedAmountOfIncludeImplant() != null){ Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r32556 -r32558 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 32556) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 32558) @@ -6013,7 +6013,7 @@ miCount = mi.getCount(); } if(td.isForeignTousse() && InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE.equals(ip.getRecyclingStatus())){ - miCount = mi.getApplyAmount() == null?0:mi.getApplyAmount(); + miCount = mi.getApplyAmount() == null?mi.getCount():mi.getApplyAmount(); } Integer totalIntoBasketAmount = miCount * amount; List errorMsg = new ArrayList<>(); @@ -7603,7 +7603,7 @@ //材料的数量,如果没修改就使用包定义的数量 Integer miCount = 0; if(td.isForeignTousse() && InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE.equals(ip.getRecyclingStatus())){ - miCount = mi.getApplyAmount() == null?0:mi.getApplyAmount();; + miCount = mi.getApplyAmount() == null?mi.getCount():mi.getApplyAmount(); }else{ miCount = mi.getCount(); } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java =================================================================== diff -u -r32551 -r32558 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 32551) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 32558) @@ -892,11 +892,11 @@ tousseDefinition.setSplitNumber(obj.optInt("splitNumber")); //拆包数量 } - List foreignMaterialDefinitions = new ArrayList(); + List foreignMaterialInstances = new ArrayList(); int materialAmount = 0; int materialSplitAmount = 0; // 记录没有删除的材料id - List existforeignMaterialDefinitionIds = new ArrayList(); + List existforeignMaterialInstanceIds = new ArrayList(); JSONArray materialsJsonArray = obj.optJSONArray("materials"); for (int n = 0; n < materialsJsonArray.size(); n++) { JSONObject materialJson = materialsJsonArray.optJSONObject(n); @@ -925,7 +925,7 @@ .get(materialInstanceId); //如果根据id没有找到材料,我们仍然认为是新增加的 if(materialInstance != null){ - existforeignMaterialDefinitionIds.add(materialInstance + existforeignMaterialInstanceIds.add(materialInstance .getId()); }else{ materialInstance = new MaterialInstance(); @@ -959,28 +959,33 @@ MaterialDefinition md = getMaterialDefintion(materialName,includeImplant); materialInstance.setMaterialDefinition(md); materialInstance.setIsImplant(includeImplant); - foreignMaterialDefinitions.add(materialInstance); + foreignMaterialInstances.add(materialInstance); materialAmount += materialInstance.getCount(); if(md != null){ materialSplitAmount += (md.getSplitAmount()==null?1:md.getSplitAmount())*materialInstance.getCount(); } } - List deleteForeignMaterialDefinitions = new ArrayList(); + List deleteForeignMaterialInstances = new ArrayList(); // 记录需要删的材料 - List oldForeignMaterialDefinitions = tousseDefinition + List oldForeignMaterialInstances = tousseDefinition .getMaterialInstances(); - for (MaterialInstance oldForeignMaterialDefinition : oldForeignMaterialDefinitions) { - if (!existforeignMaterialDefinitionIds - .contains(oldForeignMaterialDefinition.getId())) { - deleteForeignMaterialDefinitions - .add(oldForeignMaterialDefinition); + for (MaterialInstance oldForeignMaterialInstance : oldForeignMaterialInstances) { + if (!existforeignMaterialInstanceIds + .contains(oldForeignMaterialInstance.getId())) { + if(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE.equals(recyclingStatus) && InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION.equals(foreignTousseApplication.getType())){ + oldForeignMaterialInstance.setApplyAmount(0);//外来二次回收删除材料定义不是真删除,否则影响二次回收之前流程中的数据。 + }else{ + deleteForeignMaterialInstances.add(oldForeignMaterialInstance); + } } } - - tousseDefinition.setMaterialInstances(foreignMaterialDefinitions); - objectDao.deleteAll(deleteForeignMaterialDefinitions); - tousseDefinition.setMaterialAmount(materialAmount); - tousseDefinition.setMaterialSplitAmount(materialSplitAmount); + //外来二次回收删除材料定义不是真删除,否则影响二次回收之前流程中的数据。 + if(!(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE.equals(recyclingStatus) && InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION.equals(foreignTousseApplication.getType()))){ + objectDao.deleteAll(deleteForeignMaterialInstances); + tousseDefinition.setMaterialInstances(foreignMaterialInstances); + tousseDefinition.setMaterialAmount(materialAmount); + tousseDefinition.setMaterialSplitAmount(materialSplitAmount); + } //修改包名称后器械包实例也要跟着改,不然发不了货(外来器械拆分小包可以忽略) if(!tousseName.equals(oldTousseName)){ String updateSQL = String.format("update %s set tousseName = '%s' where tousseDefinition_id = %s",