Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r33109 -r33163 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 33109) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 33163) @@ -4473,7 +4473,7 @@ } //设置申请单状态 if(!isForeignTousseApplication){ - invoicePlanManager.computeAndSetStatus(application); + invoicePlanManager.computeAndSetStatus(application,deleteTousseItems); if(DatabaseUtil.isPoIdValid(application.getId()) && InvoicePlan.TYPE_APPLYING_FOR_RETURN_FORM.equals(application.getType())){ InvoicePlan ip = (InvoicePlan)objectDao.getById(InvoicePlan.class.getSimpleName(), application.getId()); if(ip != null && StringUtils.isNotBlank(application.getRecyclingStatus()) && !application.getRecyclingStatus().equals(ip.getRecyclingStatus())){ @@ -6961,13 +6961,53 @@ if(enableUrgentFunction){//如果开启了加急,获取加急数量为0且未装配的物品。 NYSY-39 针对已经回收但未装配的物品的器械包允许在历史回收记录里添加加急状态 setPackingInfo(recyclingRecord.getId(), obj); } + removieTousse(obj); json = obj.toString(); } catch (Exception e) { e.printStackTrace(); } return json; } /** + * 过滤回收删除掉的器械包 + * @param obj + */ + private void removieTousse(JSONObject obj){ + if(obj == null) { + return; + } + JSONObject recyclingApplicationObj = obj.optJSONObject("recyclingApplication"); + if(recyclingApplicationObj == null){ + return; + } + InvoicePlan ip = invoicePlanManager.get(recyclingApplicationObj.optLong("id")); + List applicationItems = ip.getApplicationItems(); + if(CollectionUtils.isEmpty(applicationItems)){ + return; + } + + Set ids = new HashSet(); + for (TousseItem item : applicationItems) { + if(item.getRecyclingAmount() != null && item.getRecyclingAmount() == 0){ + ids.add(item.getId());//回收删除掉了就不显示了 + } + } + if(ids.size() == 0){ + return; + } + JSONArray applicationItemsArr = recyclingApplicationObj.optJSONArray("applicationItems"); + JSONArray newApplicationItems = new JSONArray(); + for (int i = 0; i < applicationItemsArr.size(); i++) { + JSONObject item = (JSONObject)applicationItemsArr.opt(i); + Long id = item.optLong("id"); + if(ids.contains(id)){ + continue; + } + newApplicationItems.add(item); + } + recyclingApplicationObj.put("applicationItems", newApplicationItems); + } + /** * 回收记录信息 * @param recyclingRecordId 回收记录id * @param obj 回收记录信息,也就是recyclingRecordToJson(recyclingRecord)得到的返回值 Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r32639 -r33163 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 32639) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 33163) @@ -2817,10 +2817,9 @@ } return lostMaterialItems; } - @Override - @Deprecated// 太过通用,效率太低 - public void computeAndSetStatus(InvoicePlan invoicePlan) { + public void computeAndSetStatus(InvoicePlan invoicePlan, + JSONArray deleteTousseItems) { if(invoicePlan == null|| CollectionUtils.isEmpty(invoicePlan.getApplicationItems())) return; @@ -2844,7 +2843,15 @@ InvoicePlan.TYPE_SECOND_SUPPLY_ROOM, InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, InvoicePlan.TYPE_QUALITY_MONITOR_RECYCLE_APPLICATION).contains(invoicePlan.getType())) { - // 需回收的物品,包括已终止的 + // 需回收的物品,包括已终止的 不包括删除的 + Set tdIds = new HashSet(); + if(CollectionUtils.isNotEmpty(deleteTousseItems)){ + for (int i = 0; i < deleteTousseItems.size(); i++) { + JSONObject item = (JSONObject)deleteTousseItems.get(i); + Long tdId = item.optLong("tousseDefinitionID"); + tdIds.add(tdId); + } + } Collection needRecycleTousseItemsIncludeTerminated = CollectionUtils .select(invoicePlan.getApplicationItems(), new Predicate() { @@ -2858,7 +2865,9 @@ return false; if(TousseDefinition.STR_NO.equals(tousseItem.getIsRecycling())) return false; - + if(tdIds.contains(tousseItem.getTousseDefinitionId()) || tousseItem.getRecyclingAmount() != null && tousseItem.getRecyclingAmount() == 0){ + return false; + } switch(tousseItem.getTousseType()){ case TousseDefinition.PACKAGE_TYPE_DRESSING: return false; @@ -2951,6 +2960,11 @@ invoicePlan.setEndStatus(endStatus); /*计算终止状态*/ } + @Override + @Deprecated// 太过通用,效率太低 + public void computeAndSetStatus(InvoicePlan invoicePlan) { + computeAndSetStatus(invoicePlan, null); + } @Override public void calculateReturnStatus(InvoicePlan invoicePlan) { Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java =================================================================== diff -u -r32175 -r33163 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 32175) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 33163) @@ -252,6 +252,11 @@ Set list, InvoicePlan invoicePlan); public void computeAndSetStatus(InvoicePlan invoicePlan); + /** + * @param invoicePlan + * @param deleteTousseItems 回收删除的物品 + */ + public void computeAndSetStatus(InvoicePlan invoicePlan, JSONArray deleteTousseItems); // 计算和设置发货状态 public void computeAndSetInvoiceStatus(InvoicePlan invoicePlan) ;