Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r14842 -r14892 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 14842) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 14892) @@ -192,7 +192,7 @@ } /** - * 更新回收记录中的明细和回收误差信息 + * 更新回收记录中的明细 * * @param tousseInstanceItems * @param errorsStr @@ -206,14 +206,18 @@ items = new ArrayList(); } if (itemJsonList != null) { - for (JSONObject json : itemJsonList) { - String name = json.optString("tousseName"); - Long tousseDefinitionID = json.optLong("tousseDefinitionID"); - Integer amount = json.optInt("amount"); + + Map tousseMap = getRecycleTousseItemMap(itemJsonList); + + for (Long tousseDefinitionID : tousseMap.keySet()) { + Integer amount = tousseMap.get(tousseDefinitionID); TousseItem tousseItem = null; //一个包装两个篮筐保存 for (TousseItem ti : items) { - if(ti.getTousseName().equals(name)){ + if(ti.getTousseDefinitionId() == null){ + throw new RuntimeException(ti.getTousseName() + ",数据异常!"); + } + if(ti.getTousseDefinitionId().longValue() == tousseDefinitionID.longValue()){ tousseItem = ti; } } @@ -226,10 +230,10 @@ if(app != null){ tousseItem.setInvoicePlanID(app.getId()); } - tousseItem.setTousseName(name); + TousseDefinition td = getTousseDefinition(tdMap, tousseDefinitionID); + tousseItem.setTousseName(td.getName()); tousseItem.setPrice(0D); tousseItem.setRowPrice(0D); - TousseDefinition td = getTousseDefinition(tdMap, tousseDefinitionID); tousseItem.setTousseType(td.getTousseType()); tousseItem.setTousseDefinitionId(td.getId()); @@ -239,15 +243,11 @@ tousseItem.setIsThereIdentificationCard(isThereIDCard?"是":"否"); Integer oldRecyclingAmount = tousseItem.getAmount(); - //一个包分两个篮筐装 或者 包按材料回收 if(oldRecyclingAmount == null){ oldRecyclingAmount = 0; } tousseItem.setAmount(oldRecyclingAmount + amount); tousseItem.setRecyclingAmount(tousseItem.getAmount()); - //名字太长保存不了 -// String basketName = getBasketName(recyclingRecord,tousseItem); -// tousseItem.setBasketName(basketName); if(tousseItem.getAmount() <= 0){ tousseItem.setRecyclingRecord(null); items.remove(tousseItem); @@ -262,6 +262,24 @@ recyclingRecord.setItems(items); } + + private Map getRecycleTousseItemMap( + List itemJsonList) { + Map tousseMap = new HashMap(); + for (JSONObject json : itemJsonList) { + Long tousseDefinitionID = json.optLong("tousseDefinitionID"); + if(!DatabaseUtil.isPoIdValid(tousseDefinitionID)){ + throw new RuntimeException("参数错误!"); + } + Integer amount = json.optInt("amount"); + Integer tmpAmount = tousseMap.get(tousseDefinitionID); + if(tmpAmount == null){ + tmpAmount = 0; + } + tousseMap.put(tousseDefinitionID, tmpAmount + amount); + } + return tousseMap; + } /** * 设置器械报损 @@ -695,21 +713,30 @@ Set items) { ClassifiedItem classifiedItem = null; for (ClassifiedItem ci : items) { + String oldIdcardBarcode = ci.getIdCardBarcode(); + if(StringUtils.isBlank(oldIdcardBarcode)){ + oldIdcardBarcode = ""; + } if (ci.getName().equals(name) - && ci.getRecyclingRecordId().equals(recordId) - && idCardBarcode.equals(ci.getIdCardBarcode()) - && ci.getItemType().equals(itemType)) { - if ("材料".equals(itemType)) { - if (tousseNameForMaterial.equals(ci - .getTousseNameForMaterial()) - && basketGroupBarcodes.equals(ci - .getBasketGroupBarcodes())) { + && ci.getRecyclingRecordId() != null + && ci.getRecyclingRecordId().longValue() == recordId.longValue() + && idCardBarcode.equals(oldIdcardBarcode)) { + //ClassifiedItem ItemType 整包清洗的包类型 是包定义的类型,但是回收页面的类型只有材料、器械包两种类型 + if("材料".equals(ci.getItemType())){ + if ("材料".equals(itemType)) { + if (tousseNameForMaterial.equals(ci + .getTousseNameForMaterial()) + && basketGroupBarcodes.equals(ci + .getBasketGroupBarcodes())) { + classifiedItem = ci; + break; + } + } + }else{ + if("器械包".equals(itemType)){ classifiedItem = ci; break; } - } else { - classifiedItem = ci; - break; } } } @@ -987,8 +1014,11 @@ //删除装配记录 if (task.getId() != null && task.getUnPackAmount() != null && task.getUnPackAmount() + amount == 0) { + Long taskId = task.getId(); packingManager.delete(task,"保存回收记录"); setIDCardTousseInstanceBeforeRecycleStatus(idCardTousseInstance); + //丢失、报损关联项清理 + cleanErrorAndDamagePackingTaskId(taskId); continue; } task.setStartTime(new Date()); @@ -1056,6 +1086,21 @@ setPackingTaskUrgentAmount(recyclingRecord, urgentTousseItems,idToTDMap); } } + + private void cleanErrorAndDamagePackingTaskId(Long taskId){ + List errors = objectDao.findBySql(RecyclingError.class.getSimpleName(), "where po.packingTask_ID = " + taskId); + if(errors != null){ + for (RecyclingError recyclingError : errors) { + recyclingError.setPackingTask_ID(null); + } + } + List damages = objectDao.findBySql(RecyclingDamageItem.class.getSimpleName(), "where po.packingTask_ID = " + taskId); + if(damages != null){ + for (RecyclingDamageItem damage : damages) { + damage.setPackingTask_ID(null); + } + } + } private void setPackingTaskUrgentAmount(RecyclingRecord recyclingRecord, JSONArray urgentTousseItems,Map idToTDMap) { Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js =================================================================== diff -u -r14835 -r14892 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 14835) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 14892) @@ -2396,7 +2396,7 @@ element += '
删除
'; $('dl[class="sed clearfix"]:eq(0)').prepend(element); - var json = getBasketItemJSON(ci.id,ci.itemType,ci.orgUnitName,ci.tousseDefinition.name,"",ci.amount,ci.tousseAmountForMaterial,ci.idCardBarcode,ci.tousseDefinitionID,ci.basketGroupBarcodes); + var json = getBasketItemJSON(ci.id,"器械包",ci.orgUnitName,ci.tousseDefinition.name,"",ci.amount,ci.tousseAmountForMaterial,ci.idCardBarcode,ci.tousseDefinitionID,ci.basketGroupBarcodes); $('dl[class="sed clearfix"]:eq(0)').find("input:first").val(json); } }