Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r31988 -r32192 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 31988) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 32192) @@ -503,6 +503,7 @@ List needUpdateMiList = new ArrayList<>(); List needDeleteMiList = new ArrayList<>(); List miList = td.getMaterialInstances(); + double tdPrice = 0d; //1.通过第一次的两层循环找到要添加和修改的材料 for(int i = 0;i < materialSize;i++){ JSONObject jsonObject = jsonArray.optJSONObject(i); @@ -513,6 +514,7 @@ } if(md != null){ int count = jsonObject.optInt("count"); + tdPrice = MathTools.add(tdPrice, MathTools.mul(count, md.getDisinfectionPrice())).doubleValue(); if(CollectionUtils.isEmpty(miList)){ MaterialInstance mi = new MaterialInstance(); mi.setCount(count); @@ -569,6 +571,7 @@ if(CollectionUtils.isNotEmpty(needAddMiList)){ for(MaterialInstance mi : needAddMiList){ materialInstanceManager.save(mi); + miList.add(mi); materialInstances.add(mi); } } @@ -581,12 +584,13 @@ if(CollectionUtils.isNotEmpty(needDeleteMiList)){ for(MaterialInstance mi : needDeleteMiList){ materialInstanceManager.delete(mi); + miList.remove(mi); } } td.setMaterialInstances(materialInstances); td.calculateMaterialAmount(); td.generateMaterialsMD5(); - //if(1+1>=2)throw new SystemException("test"); + td.setPrice(tdPrice); } }else if(updateMaterialDisposableMode == TousseDefinition.UPDATE_MATERIAL_DISPOSABLE_MODE_ONLY_DISPOSABLE){ //只更新器械包定义的一次性物品部分(先不处理、预留) @@ -773,6 +777,7 @@ td.setAncestorID(ancestorID); } saveOrUpdate(td); + objectDao.flush(); //改为不管器械是否追溯,都创建一个固定条码的实例,由不追溯改为追溯时也不删除此固定条码的器械包实例 if(td.getForDisplay()){ Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java =================================================================== diff -u -r32082 -r32192 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 32082) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 32192) @@ -342,11 +342,12 @@ * 添加消毒物品项(用于pda预回收用) * @param plan 申请单对象 * @param prepareRecycleAmount 预回收数量 - * @param td 包定义 + * @param td 包定义(如果为新添加的消毒物品项时,则该参数为祖先包定义(需创建一个新的包定义);如果为已存在的消毒物品项时,则该参数为该项对应的包定义(不需要创建一个新的包定义)。) * @param item 申请项 * @param materialInstancesJsonArray 材料明细清单json数组 + * @return 新创建的消毒物品包定义 */ - public void addDisinfectTousseItemForPrepareRecycle(InvoicePlan plan, Integer prepareRecycleAmount, TousseDefinition td, TousseItem item,JSONArray materialInstancesJsonArray); + public TousseDefinition addDisinfectTousseItemForPrepareRecycle(InvoicePlan plan, Integer prepareRecycleAmount, TousseDefinition td, TousseItem item,JSONArray materialInstancesJsonArray); /** * 根据借物单id查找能归还的数量(计算方式:待归还数量(即该借物单的已发货数量-该借物单的所有还原物单的已归还数量之和)-已经转申请单的数量). Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r32119 -r32192 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 32119) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 32192) @@ -763,8 +763,8 @@ jsonItem.put("tousseDefineId", item.getTousseDefinitionId()); //array.add(jsonItem); //BJ307YY-95 更新后,PDA预回收把包数量改成0提交后,电脑端上数量还是显示1的缺陷(已存在的申请项,不再传tousseDefinitionId至前端了) - array.append(String.format("{\"id\":%s,\"tousseName\":\"%s\",\"amount\":%s,\"prepareRecycleAmount\":%s,\"tousseType\":\"%s\",\"type\":\"%s\",\"applyEntireTousse\":\"%s\",\"materialInstancesJsonArray\":\"%s\"}", - item.getId(),tousseName,item.getAmount(),prepareRecycleAmount,tousseType,tousseType,td.getIsApplyEntireTousse(),td.getMaterialInstancesJsonArrayStringExceptDisposableInstances())); + array.append(String.format("{\"id\":%s,\"tousseName\":\"%s\",\"amount\":%s,\"prepareRecycleAmount\":%s,\"tousseType\":\"%s\",\"type\":\"%s\",\"applyEntireTousse\":\"%s\",\"materialInstancesJsonArray\":\"%s\",\"tousseDefineId\":%s}", + item.getId(),tousseName,item.getAmount(),prepareRecycleAmount,tousseType,tousseType,td.getIsApplyEntireTousse(),td.getMaterialInstancesJsonArrayStringExceptDisposableInstances(),item.getTousseDefinitionId())); if(i < itemSize - 1){ array.append(","); } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/PrepareRecycleTousseManagerImpl.java =================================================================== diff -u -r31438 -r32192 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/PrepareRecycleTousseManagerImpl.java (.../PrepareRecycleTousseManagerImpl.java) (revision 31438) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/PrepareRecycleTousseManagerImpl.java (.../PrepareRecycleTousseManagerImpl.java) (revision 32192) @@ -84,10 +84,25 @@ long tousseItemId = obj.optLong("id"); if(DatabaseUtil.isPoIdValid(tousseItemId)){ tousseItemIdList.add(tousseItemId); - }else if(DatabaseUtil.isPoIdValid(tdId)){ + } + if(DatabaseUtil.isPoIdValid(tdId)){ tdIdList.add(tdId); } } + //申请单的已有的申请项 + List orginalTousseItemList = plan.getApplicationItems(); + //未提交到后台的申请项 + List unSubmitTousseItemList = new ArrayList<>(); + for(TousseItem tousseItem : orginalTousseItemList){ + if(!tousseItemIdList.contains(tousseItem.getId())){ + unSubmitTousseItemList.add(tousseItem); + } + } + if(CollectionUtils.isNotEmpty(unSubmitTousseItemList)){ + for(TousseItem ti : unSubmitTousseItemList){ + ti.setPrepareRecycleAmount(0); + } + } Map idToTousseItemMap = new HashMap<>(); if(CollectionUtils.isNotEmpty(tousseItemIdList)){ List tousseItemList = tousseItemManager.getCollection(tousseItemIdList); @@ -138,6 +153,9 @@ //如果为非整包申请的消毒物品,则需要更新包定义的材料明细信息 if (td != null && td.isDisinfection() && !td.applyEntireTousse()) { tousseDefinitionManager.saveTousseDefinition(td, materialInstances, null,TousseDefinition.UPDATE_MATERIAL_DISPOSABLE_MODE_ONLY_MATERIAL); + item.setPrice(td.getPrice()); + item.setRowPrice(MathTools.mul(td.getPrice(), + prepareRecycleAmount).doubleValue()); } if(isContinue != null && isContinue && DatabaseUtil.isPoIdValid(item.getTousseDefinitionId())){ if(td != null){ @@ -155,9 +173,10 @@ item.setAmount(prepareRecycleAmount); item.setPrepareRecycleAmount(prepareRecycleAmount); String tousseName = td.getName(); + TousseDefinition newTd = null; if (td.isDisinfection()) { //如果为新添加的消毒物品的申请项 - recyclingApplicationManager.addDisinfectTousseItemForPrepareRecycle(plan, prepareRecycleAmount,td,item,materialInstancesJsonArray); + newTd = recyclingApplicationManager.addDisinfectTousseItemForPrepareRecycle(plan, prepareRecycleAmount,td,item,materialInstancesJsonArray); /*if(!td.applyEntireTousse()){ tousseDefinitionManager.saveTousseDefinition(td, materialInstances, null,TousseDefinition.UPDATE_MATERIAL_DISPOSABLE_MODE_ONLY_MATERIAL); }*/ @@ -191,8 +210,13 @@ // 消毒物品取材料的消毒价格之和 if (TousseDefinition.PACKAGE_TYPE_DISINFECTION .equals(td.getTousseType())) { - price = tousseDefinitionManager - .getDisinfectGoodsTotalPrice(td); + if(newTd != null){ + price = tousseDefinitionManager + .getDisinfectGoodsTotalPrice(newTd); + }else{ + price = tousseDefinitionManager + .getDisinfectGoodsTotalPrice(td); + } } item.setPrice(price); item.setRowPrice(MathTools.mul(price, @@ -204,6 +228,7 @@ } } tousseItemManager.save(item); + objectDao.flush(); } if (plan != null) { plan.setIsPrepareRecycled(InvoicePlan.SIGNED_TRUE); @@ -224,7 +249,9 @@ } } } - //if(1==1)throw new SystemException("test"); + /*if(1==1){ + throw new SystemException("test"); + }*/ return JSONUtil.buildJsonObject(success, error); } /** Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r32175 -r32192 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 32175) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 32192) @@ -8943,6 +8943,7 @@ item.setInvoiceAmountMode(newTousseDefinition.getInvoiceAmountMode()); item.setHideRecycling(newTousseDefinition.getHideRecycling()); item.setIsInvoice(newTousseDefinition.getIsInvoice()); + item.setPrice(newTousseDefinition.getPrice()); //是否生成包实例 if (TousseDefinition.STR_NO.equals(td.getIsPacking()) && TousseDefinition.STR_NO.equals(td.getIsRecycling())) { @@ -8960,10 +8961,12 @@ } @Override - public void addDisinfectTousseItemForPrepareRecycle(InvoicePlan plan, Integer prepareRecycleAmount, TousseDefinition td, TousseItem item,JSONArray materialInstancesJsonArray) { - TousseDefinition ancestorTD = addDisinfectTousseItemCommonAndReturnAncestorTdBeforeNewTousseDefinition(plan, prepareRecycleAmount, td, item,materialInstancesJsonArray); - TousseDefinition newTousseDefinition = tousseDefinitionManager.newDisinfectGoodsDefinitionForPrepareRecycle(ancestorTD,materialInstancesJsonArray,plan.getId()); - addDisinfectTousseItemCommonAfterNewTousseDefinition(plan, prepareRecycleAmount, td, item, materialInstancesJsonArray, newTousseDefinition); + public TousseDefinition addDisinfectTousseItemForPrepareRecycle(InvoicePlan plan, Integer prepareRecycleAmount, TousseDefinition td, TousseItem item,JSONArray materialInstancesJsonArray) { + TousseDefinition ancestorTD = addDisinfectTousseItemCommonAndReturnAncestorTdBeforeNewTousseDefinition(plan, prepareRecycleAmount, td, item,materialInstancesJsonArray); + TousseDefinition newTousseDefinition = tousseDefinitionManager.newDisinfectGoodsDefinitionForPrepareRecycle(ancestorTD,materialInstancesJsonArray,plan.getId()); + addDisinfectTousseItemCommonAfterNewTousseDefinition(plan, prepareRecycleAmount, td, item, materialInstancesJsonArray, newTousseDefinition); + objectDao.flush(); + return newTousseDefinition; } @Override