Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java =================================================================== diff -u -r17849 -r17875 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java (.../UseRecord.java) (revision 17849) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java (.../UseRecord.java) (revision 17875) @@ -242,14 +242,16 @@ /** * 查询该使用记录里会被转换至申请单的申请项的包实例集合 * 条件如下:包类型为器械包、敷料包中的一种并且(包实例的是否真正使用为否或者包定义的是否转换为是) + * 自定义器械包无条件转换 * @param dao * @return */ + @SuppressWarnings("unchecked") public List getTousseInstanceWillBeConvertedTousseItemList(ObjectDao dao) { //改为按使用记录顺序号排序 List tousseInstanceList = dao.findBySql(TousseInstance.class.getSimpleName(), " where useRecord_id=" + id - + " and tousseDefinition.tousseType in ('"+ TousseDefinition.PACKAGE_TYPE_INSIDE +"','"+ TousseDefinition.PACKAGE_TYPE_DRESSING +"')" - + " and (actualUsed = '"+ Constants.STR_NO +"' or tousseDefinition.isConvertApplyGoods='"+ Constants.STR_YES +"') " + + " and tousseDefinition.tousseType in ('"+ TousseDefinition.PACKAGE_TYPE_INSIDE +"','"+ TousseDefinition.PACKAGE_TYPE_DRESSING +"','"+ TousseDefinition.PACKAGE_TYPE_CUSTOM +"')" + + " and (actualUsed = '"+ Constants.STR_NO +"' or tousseDefinition.isConvertApplyGoods='"+ Constants.STR_YES +"' or tousseDefinition.tousseType = '"+ TousseDefinition.PACKAGE_TYPE_CUSTOM +"') " + " order by useRecordSortNumber"); return tousseInstanceList; } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recyclingapplication/RecyclingApplication.java =================================================================== diff -u -r17840 -r17875 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recyclingapplication/RecyclingApplication.java (.../RecyclingApplication.java) (revision 17840) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recyclingapplication/RecyclingApplication.java (.../RecyclingApplication.java) (revision 17875) @@ -280,12 +280,27 @@ if(td == null){ throw new RuntimeException("未找到" + tousseInstance.getTousseName() + "的包定义数据!"); } + + //如果申请单的单类型是自定义器械包申请单、但包实例的包定义类型不是自定义器械包时,continue + if(StringUtils.equals(InvoicePlan.TYPE_CUSTOM_TOUSSE_APPLIACTION_FORM, getType())){ + if(!td.isCustomTousse()){ + continue; + } + }else{ + //或者申请单的单类型不是自定义器械包申请单、但包实例的包定义类型又是自定义器械包时,continue + if(td.isCustomTousse()){ + continue; + } + } TousseItem currentTousseItem = null; if(CollectionUtils.isNotEmpty(tousseItemList)){ boolean foundTousseItem = false; //循环之前的每个申请项 for (TousseItem tousseItem : tousseItemList) { - if(tousseInstance.getTousseDefinition().getId().longValue() == tousseItem.getTousseDefinitionId().longValue()){ + Long tousseItemTousseDefinitionId = tousseItem.getTousseDefinitionId(); + TousseDefinition tousseItemCutomerTd = (TousseDefinition)objectDao.getBySql(TousseDefinition.class.getSimpleName(), " where id=" + tousseItemTousseDefinitionId); + //自定义器械包只能用祖先id进行比较(申请项的包定义id为根据申请单创建的包定义id,而包实例的) + if(tousseItemCutomerTd.getAncestorID() != null && (td.getId().longValue() == tousseItemCutomerTd.getAncestorID().longValue())){ currentTousseItem = new TousseItem(); currentTousseItem.setId(tousseItem.getId()); //是否为第二个或第二个以后的使用记录转换合并到本申请单 @@ -361,8 +376,8 @@ tousseItemList.add(currentTousseItem); } - //如果包定义为要回收且器械包类型为器械包时,构造预回收计划单明细 - if(td.isInsideTousse() && Constants.STR_YES.equals(td.getIsConvertApplyGoods())){ + //如果包定义为要回收且器械包类型为器械包时又或者包类型为自定义器械包时,构造预回收计划单明细 + if(td.isCustomTousse() || (td.isInsideTousse() && Constants.STR_YES.equals(td.getIsConvertApplyGoods()))){ TousseTransitionPlanItem tousseTransitionPlanItem = null; if(CollectionUtils.isNotEmpty(tousseTransitionPlanItemList)){ boolean foundTousseTransitionPlanItemInList = false;