Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r13514 -r13518 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 13514) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 13518) @@ -256,7 +256,7 @@ * 设置器械报损 * * @param departCode - * @param damageJsonArray 参数说明:{recyclingDamageId:1,materialDefinitionId:1,tousseDefinitionId:1,materialName:'剪刀',amount:2} + * @param damageJsonArray 参数说明:{recyclingDamageId:1,materialDefinitionId:1,tousseDefinitionID:1,materialName:'剪刀',amount:2} */ private void setDamageItems(RecyclingRecord record,JSONArray damageJsonArray,Boolean confirmation) { if (damageJsonArray != null) { @@ -268,8 +268,14 @@ Long recyclingDamageId = obj.optLong("recyclingDamageId"); Integer amount = obj.optInt("amount"); Long materialDefinitionId = obj.optLong("materialDefinitionId"); - Long tousseDefinitionId = obj.optLong("tousseDefinitionId"); + Long tousseDefinitionID = obj.optLong("tousseDefinitionID"); String materialName = obj.optString("materialName"); + + TousseItem tousseItem = tousseItemMap.get(tousseDefinitionID); + if(tousseItem == null){ + throw new RuntimeException("报损器械未找到相应的器械包"); + } + RecyclingDamageItem item = null; if (recyclingDamageId != null) { item = (RecyclingDamageItem) objectDao.getByProperty( @@ -288,12 +294,8 @@ } item.setMaterialCost(md.getCost()); item.setMaterialName(materialName); - item.setTousseDefinitionId(tousseDefinitionId); + item.setTousseDefinitionId(tousseDefinitionID); item.setMaterialDefinitionId(materialDefinitionId); - TousseItem tousseItem = tousseItemMap.get(tousseDefinitionId); - if(tousseItem == null){ - throw new RuntimeException("报损器械未找到相应的器械包"); - } item.setTousseItem_ID(tousseItem.getId()); tousseItem.getRecyclingDamages().add(item); } @@ -302,14 +304,8 @@ if(item.getAmount() <= 0){ item.setPackingTask_ID(null); - Long tousseItem_id = item.getTousseItem_ID(); - if(tousseItem_id != null){ - TousseItem tousseItem = tousseItemManager.getTousseItemById("" + tousseItem_id); - if(tousseItem != null){ - tousseItem.getRecyclingDamages().remove(item); - item.setTousseItem_ID(null); - } - } + item.setTousseItem_ID(null); + tousseItem.getRecyclingDamages().remove(item); items.remove(item); if(item.getId() != null){ objectDao.delete(item); @@ -349,7 +345,7 @@ /** * * @param record - * @param errorJsonArray 参数:{recyclingErrorId:12,tousseDefinitionId:1,tousseName:'开胸包',materialDefinitionId:12,materialName:'镊子[12cm]',amount:3,errorType:'缺失'} + * @param errorJsonArray 参数:{recyclingErrorId:12,tousseDefinitionID:1,tousseName:'开胸包',materialDefinitionId:12,materialName:'镊子[12cm]',amount:3,errorType:'缺失'} * 说明: 丢失和报损一定要确认了之后,装配那里才能补充,回收未确认装配任务的状是【待确认】状态 */ private void setRecyclingError(RecyclingRecord record,JSONArray errorJsonArray) { @@ -361,11 +357,11 @@ Integer amount = obj.optInt("amount"); String errorType = obj.optString("errorType"); Long materialDefinitionId = obj.optLong("materialDefinitionId"); - Long tousseDefinitionId = obj.optLong("tousseDefinitionId"); + Long tousseDefinitionID = obj.optLong("tousseDefinitionID"); String materialName = obj.optString("materialName"); RecyclingError error = null; - TousseItem tousseItem = tousseItemMap.get(tousseDefinitionId); + TousseItem tousseItem = tousseItemMap.get(tousseDefinitionID); if(tousseItem == null){ throw new RuntimeException("丢失器械未找到相应的器械包"); } @@ -389,7 +385,7 @@ } error.setMaterialName(materialName); error.setMissTime(new Date()); - error.setTousseDefinitionId(tousseDefinitionId); + error.setTousseDefinitionId(tousseDefinitionID); error.setMaterialDefinitionId(materialDefinitionId); error.setType(RecyclingError.TYPE_RECYCLINGRECORD); error.setTousseItemId(tousseItem.getId()); @@ -400,7 +396,7 @@ if(error.getAmount() <= 0){ error.setPackingTask_ID(null); error.setTousseItemId(null); - tousseItem.getRecyclingDamages().remove(error); + tousseItem.getRecyclingErrors().remove(error); if(error.getId() != null){ objectDao.delete(error); } @@ -653,21 +649,25 @@ @Override public void saveOrUpdate(RecyclingRecord record,JSONObject params) { Map idToTDMap = new HashMap(); - + //放入篮筐的物品 JSONArray basketItemJson = params.getJSONArray("tousseJson"); + //未入篮筐删掉的物品 JSONArray deleteTousseItems = params.optJSONArray("delToussItems"); + //丢失项 JSONArray errors = params.optJSONArray("errors"); + //报损项 JSONArray damages = params.optJSONArray("damages"); + //是否确认 boolean confirmation = params.optBoolean("confirmation"); List tousseItemJson = getTousseItemJsonArray(basketItemJson,record); //日志记录 addLogInfo(params,record.getId()); saveOrUpdate(record); + //更新申请单 + updateInvoicePlan(record,tousseItemJson,deleteTousseItems,idToTDMap,errors,damages,basketItemJson); //设置篮筐及篮筐内物品 setClassifyBaskets(basketItemJson,idToTDMap,record); - //更新申请单 - updateInvoicePlan(record,tousseItemJson,deleteTousseItems,idToTDMap); //设置回收物品 setRecylingItems(record, tousseItemJson,idToTDMap); //设置回收误差、器械报损 @@ -1050,7 +1050,7 @@ */ private void updateInvoicePlan(RecyclingRecord record, List itemJsonList, JSONArray deleteTousseItems, - Map idToTDMap){ + Map idToTDMap,JSONArray errors,JSONArray damages,JSONArray basketItemJson){ RecyclingApplication application = record.getRecyclingApplication(); String invoiceOrigin = supplyRoomConfigManager.getInvoiceOrigin(); if(application != null){ @@ -1107,8 +1107,8 @@ TousseDefinition td = getTousseDefinition(idToTDMap,appItem.getTousseDefinitionId()); if (amount != 0) { - newUnPackingTousseTousseInstanceOrDisinfectGoodsDefinition(record, - application, amount, isNewAddTousse, td, appItem,json); + newUnPackingTousseInstanceOrDisinfectGoodsDefinition(record, + application, amount, isNewAddTousse, td, appItem,json,errors, damages,basketItemJson); } } } @@ -1173,8 +1173,8 @@ tousseItems.add(item); //不装配不追溯物品 - newUnPackingTousseTousseInstanceOrDisinfectGoodsDefinition(record, - application, item.getRecyclingAmount(), true, td,item,json); + newUnPackingTousseInstanceOrDisinfectGoodsDefinition(record, + application, item.getRecyclingAmount(), true, td,item,json,errors, damages,basketItemJson); } application.setApplicationItems(tousseItems); invoicePlanManager.computeAndSetStatus(application); @@ -1203,10 +1203,12 @@ * @param appItem * @param basketItemJson */ - private void newUnPackingTousseTousseInstanceOrDisinfectGoodsDefinition( + private void newUnPackingTousseInstanceOrDisinfectGoodsDefinition( RecyclingRecord record, RecyclingApplication application, - Integer amount, boolean isNewAddTousse, TousseDefinition td,TousseItem appItem,JSONObject basketItemJson) { - + Integer amount, boolean isNewAddTousse, TousseDefinition td, + TousseItem appItem, JSONObject basketItemJson, JSONArray errors, + JSONArray damages,JSONArray basketItems) { + TousseDefinition createInstanceTD = td; //创建消毒物品包定义 if(isNewAddTousse && TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(td.getTousseType())){ @@ -1221,14 +1223,39 @@ createInstanceTD = recyclingApplicationManager.newDisinfectGoodsDefinition(td.getId(), materialArray, application.getId()); appItem.setTousseDefinitionId(createInstanceTD.getId()); + + //把页面中传到后台的JSON tousseDefinitionID都替换成新的器械包定义 id + String originalId = basketItemJson.optString("tousseDefinitionID"); basketItemJson.put("tousseDefinitionID", createInstanceTD.getId()); + resetJsonPropertyTousseDefinitionId(errors,originalId,createInstanceTD.getId()); + resetJsonPropertyTousseDefinitionId(damages,originalId,createInstanceTD.getId()); + resetJsonPropertyTousseDefinitionId(basketItems,originalId,createInstanceTD.getId()); + } //创建不装配、不追溯的包实例 if(TousseDefinition.STR_NO.equals(td.getIsPacking())){ recyclingApplicationManager.newUnPackingTousseInstance( createInstanceTD, amount, application, record); } } + + /** + * 重新设置消毒物品包定义新的Id + * @param array + * @param originalId + * @param replaceId + */ + private void resetJsonPropertyTousseDefinitionId(JSONArray array,String originalId ,Long replaceId){ + if(array != null){ + for (int i = 0; i < array.size(); i++) { + JSONObject item = array.optJSONObject(i); + if(item.optString("tousseDefinitionID").equals(originalId)){ + item.put("tousseDefinitionID", replaceId); + } + } + } + + } private RecyclingApplication newRecyclingApplication( RecyclingRecord recyclingRecord) { Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recyclingErrors.jsp =================================================================== diff -u -r13461 -r13518 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recyclingErrors.jsp (.../recyclingErrors.jsp) (revision 13461) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recyclingErrors.jsp (.../recyclingErrors.jsp) (revision 13518) @@ -92,7 +92,7 @@ if(amount > 0){ var item = { recyclingErrorId: "", - tousseDefinitionId: tousseDefinitionID, + tousseDefinitionID: tousseDefinitionID, materialDefinitionId: materialDefinitionId, materialName: materialName, amount: amount, Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recyclingDamage.jsp =================================================================== diff -u -r13470 -r13518 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recyclingDamage.jsp (.../recyclingDamage.jsp) (revision 13470) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recyclingDamage.jsp (.../recyclingDamage.jsp) (revision 13518) @@ -83,7 +83,7 @@ if(amount > 0){ var item = { recyclingDamageId: "", - tousseDefinitionId: tousseDefinitionID, + tousseDefinitionID: tousseDefinitionID, materialDefinitionId: materialDefinitionId, materialName: materialName, amount: amount Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js =================================================================== diff -u -r13494 -r13518 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 13494) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 13518) @@ -2135,7 +2135,7 @@ var error = tousseItem.recyclingErrors[j]; var errorObj = { recyclingErrorId: error.id, - tousseDefinitionId: error.tousseDefinitionId, + tousseDefinitionID: error.tousseDefinitionId, materialDefinitionId: error.materialDefinitionId, materialName: error.materialName, amount: error.amount @@ -2152,7 +2152,7 @@ var damage = tousseItem.recyclingDamages[j]; var item = { recyclingDamageId: damage.id, - tousseDefinitionId: damage.tousseDefinitionId, + tousseDefinitionID: damage.tousseDefinitionId, materialDefinitionId: damage.materialDefinitionId, materialName: damage.materialName, amount: damage.amount