Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r38608 -r38637 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 38608) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 38637) @@ -2280,7 +2280,7 @@ saveRecyclingTousseInstanceRecord(recyclingContext, record); boolean enableAnInstanceIsGeneratedAfterRecycled = CssdUtils.getSystemSetConfigByNameBool("enableAnInstanceIsGeneratedAfterRecycled", false); if(enableAnInstanceIsGeneratedAfterRecycled){ - updateTousseInstance(recyclingSumInfoVo, record); + updateTousseInstance(recyclingSumInfoVo, record,tousseDefinitions); recyclingSumInfoVo.setNewRecyclingItmeAmountMap(null); recyclingSumInfoVo.setOldRecyclingItmeAmountMap(null); recyclingSumInfoVo.setUpdateRecyclingItmeArr(null); @@ -11928,8 +11928,43 @@ return newBarcode; } @Override - public void updateTousseInstance(RecyclingSumInfoVo recyclingSumInfoVo, RecyclingRecord recyclingRecord){ - Set delRecyclingItemIds = recyclingSumInfoVo.getDelRecyclingItemIds(); + public void updateTousseInstance(RecyclingSumInfoVo recyclingSumInfoVo, RecyclingRecord recyclingRecord, List tds){ + if(MathTools.equals(recyclingRecord.getRecyclingTimes(), RecyclingRecord.RECYCLINGTIMES_TWO)){//二次回收不处理 + return; + } + Set handleRecyclingItems = new HashSet(); + Set handleRecyclingItemIds = new HashSet(); + for (RecyclingItem ri : recyclingRecord.getItems()) { + TousseDefinition td = null; + if(!CollectionUtils.isEmpty(tds)){ + for (TousseDefinition tdItem : tds) { + if(MathTools.equals(tdItem.getId(), ri.getTousseDefinitionId())){ + td = tdItem; + break; + } + } + } + if(td == null && DatabaseUtil.isPoIdValid(ri.getTousseDefinitionId())){ + td = tousseDefinitionManager.get(ri.getTousseDefinitionId()); + } + if(td == null){ + continue; + } + if(td.needPacking()){ + handleRecyclingItems.add(ri); + handleRecyclingItemIds.add(ri.getId()); + } + } + if(handleRecyclingItems.size() == 0){ + return; + } + Set oldDelRecyclingItemIds = recyclingSumInfoVo.getDelRecyclingItemIds();//页面删除的回收项 + Set delRecyclingItemIds = new HashSet();//需要联动删除包实例的回收项 + for (Long delRecyclingItemId : oldDelRecyclingItemIds) { + if(handleRecyclingItemIds.contains(delRecyclingItemId)){ + delRecyclingItemIds.add(delRecyclingItemId); + } + } if(CollectionUtils.isNotEmpty(delRecyclingItemIds)){ //直接执行delete 删除TousseInstance 然后 delete BarcodeDevice 会报错 List tousseInstanceList = @@ -11946,11 +11981,15 @@ List reduceRecyclingItemIds = new ArrayList(); for (int i = 0; i < reduceRecyclingItembArr.size(); i++) { JSONObject reduceItem = reduceRecyclingItembArr.optJSONObject(i); + Long recyclingItemId = reduceItem.optLong("recyclingItemId"); + if(!handleRecyclingItemIds.contains(recyclingItemId)){ + continue; + } int amount = reduceItem.optInt("amount", 0); if(amount == 0){//设值的时候做了处理 基本不会为0 continue; } - reduceRecyclingItemIds.add(reduceItem.optLong("recyclingItemId")); + reduceRecyclingItemIds.add(recyclingItemId); } List tis = null; Map> tisMap = new HashMap>(); @@ -11976,6 +12015,9 @@ JSONObject reduceItem = reduceRecyclingItembArr.optJSONObject(i); int amount = reduceItem.optInt("amount", 0); Long recyclingItemId = reduceItem.optLong("recyclingItemId"); + if(!handleRecyclingItemIds.contains(recyclingItemId)){ + continue; + } if(amount == 0 || !tisMap.containsKey(recyclingItemId)){//设值的时候做了处理 基本不会为0 continue; } @@ -12014,6 +12056,9 @@ List addRecyclingItemIds = new ArrayList();//id会重复 Map recyclingItemIdToTdIdMap = new HashMap(); for (RecyclingItem ri : recyclingRecord.getItems()) { + if(!handleRecyclingItemIds.contains(ri.getId())){ + continue; + } if(DatabaseUtil.isPoIdValid(ri.getTousseDefinitionId())){ recyclingItemIdToTdIdMap.put(ri.getId(), ri); } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java =================================================================== diff -u -r38571 -r38637 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java (.../RecyclingRecordManager.java) (revision 38571) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java (.../RecyclingRecordManager.java) (revision 38637) @@ -317,7 +317,8 @@ * 回收物品数量变动时,联动修改没有装配的包实例 * @param recyclingSumInfoVo 包含了物品变动信息的vo * @param recyclingRecord 回收记录 + * @param 涉及的包定义 */ - public void updateTousseInstance(RecyclingSumInfoVo recyclingSumInfoVo, RecyclingRecord recyclingRecord); + public void updateTousseInstance(RecyclingSumInfoVo recyclingSumInfoVo, RecyclingRecord recyclingRecord,List tds); }