Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/tousseitem/TousseItem.java =================================================================== diff -u -r21484 -r21498 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/tousseitem/TousseItem.java (.../TousseItem.java) (revision 21484) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/tousseitem/TousseItem.java (.../TousseItem.java) (revision 21498) @@ -270,6 +270,45 @@ this.amount = amount; } + /** + * 针对使用记录转换申请单时根据物品绑定定义的构造函数 + * @param tousseName + * @param amount + * @param price + * @param diposable + * @param isApplyEntireTousse + * @param isCleanedEntirely + * @param isRecycling + * @param isTraceable + * @param tousseDefinitionId + * @param disposableGoodsId + * @param disposableGoodsType + * @param unit + * @param tousseType + * @param isInvoice + */ + public TousseItem(String tousseName, Integer amount, Integer editAmount, Double price, + String diposable,String isApplyEntireTousse, String isCleanedEntirely, + String isRecycling, String isTraceable, Long tousseDefinitionId, + Long disposableGoodsId, String disposableGoodsType, String unit, String tousseType, String isInvoice) { + super(); + this.tousseName = tousseName; + this.amount = amount; + this.editAmount = editAmount; + this.unit = unit; + this.disposableGoodsType = disposableGoodsType; + this.price = price; + this.diposable = diposable; + this.isApplyEntireTousse = isApplyEntireTousse; + this.isCleanedEntirely = isCleanedEntirely; + this.isRecycling = isRecycling; + this.isTraceable = isTraceable; + this.tousseDefinitionId = tousseDefinitionId; + this.disposableGoodsId = disposableGoodsId; + this.tousseType = tousseType; + this.isInvoice = isInvoice; + } + @Override @Id @GeneratedValue(strategy = GenerationType.AUTO) Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r21435 -r21498 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 21435) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 21498) @@ -86,6 +86,7 @@ import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.entity.useRecord.UseRecord; import com.forgon.disinfectsystem.exception.RecyclingRecordException; +import com.forgon.disinfectsystem.goodsBindingConfig.vo.BindGoodVo; import com.forgon.disinfectsystem.inventorymanagement.model.HrpInvoicePlan; import com.forgon.disinfectsystem.inventorymanagement.model.HrpTousseItem; import com.forgon.disinfectsystem.inventorymanagement.service.InventoryManager; @@ -1155,6 +1156,8 @@ Map newDiposableGoodMap, double dpf, Map applyUrgentTousseMap) { + //根据现有的物品申请项查出对应绑定的物品作为新加的申请项(同器械包/消毒物品的数量进行叠加) + List newAppendTousseItemListFromBinding = new ArrayList(); List applicationItems = new ArrayList(); for (Entry entry : tousseNameAndAmount.entrySet()) { @@ -1189,6 +1192,36 @@ tousseItem.setExpressRecycling(TousseDefinition.STR_NO); } applicationItems.add(tousseItem); + + //获取该器械包所绑定的器械包 + BindGoodVo bindGoodVo = new BindGoodVo(); + bindGoodVo.setBindCount(tousseItem.getEditAmount()); + bindGoodVo.setGoodId(String.valueOf(tousseItem.getTousseDefinitionId())); + bindGoodVo.setGoodName(tousseItem.getTousseName()); + bindGoodVo.setGoodType(tousseItem.getTousseType()); + JSONArray bindGoodVoJsonArray = tousseDefinitionManager.getBindGoods(bindGoodVo, recyclingApplication.getHandleDepartCoding()); + if(bindGoodVoJsonArray != null && bindGoodVoJsonArray.size() > 0){ + for (int i = 0; i < bindGoodVoJsonArray.size(); i++) { + JSONObject jsonObject = bindGoodVoJsonArray.optJSONObject(i); + newAppendTousseItemListFromBinding.add(new TousseItem(jsonObject.optString("name") + , 0 + , jsonObject.optInt("count") + , jsonObject.optDouble("price") + , TousseItem.DIPOSABLE_NO + , jsonObject.optString("isApplyEntireTousse") + , jsonObject.optString("isCleanedEntirely") + , jsonObject.optString("isRecycling") + , jsonObject.optString("isTraceable") + , jsonObject.optLong("id") + , null + , null + , jsonObject.optString("unit") + , jsonObject.optString("tousseType") + , jsonObject.optString("isInvoice") + ) + ); + } + } } List items = recyclingApplication.getApplicationItems(); @@ -1223,8 +1256,64 @@ tousseItem.setRowPrice(rowPrice); } applicationItems.add(tousseItem); + + //获取该一次性物品所绑定的一次性物品 + BindGoodVo bindGoodVo = new BindGoodVo(); + bindGoodVo.setBindCount(tousseItem.getEditAmount()); + bindGoodVo.setGoodId(String.valueOf(tousseItem.getTousseDefinitionId())); + bindGoodVo.setGoodName(tousseItem.getTousseName()); + bindGoodVo.setGoodType(tousseItem.getTousseType()); + JSONArray bindGoodVoJsonArray = tousseDefinitionManager.getBindGoods(bindGoodVo, recyclingApplication.getHandleDepartCoding()); + if(bindGoodVoJsonArray != null && bindGoodVoJsonArray.size() > 0){ + for (int i = 0; i < bindGoodVoJsonArray.size(); i++) { + JSONObject jsonObject = bindGoodVoJsonArray.optJSONObject(i); + newAppendTousseItemListFromBinding.add(new TousseItem(jsonObject.optString("name") + , 0 + , jsonObject.optInt("count") + , jsonObject.optDouble("price") + , TousseItem.DIPOSABLE_YES + , null + , null + , null + , null + , null + , jsonObject.optLong("id") + , jsonObject.optString("type") + , jsonObject.optString("unit") + , TousseItem.TYPE_DIPOSABLE_GOODS + , com.forgon.Constants.STR_YES + ) + ); + } + } } } + //嵌套循环源申请项与绑定得出的申请项 + if(CollectionUtils.isNotEmpty(applicationItems) && CollectionUtils.isNotEmpty(newAppendTousseItemListFromBinding)){ + for (TousseItem newAppendTousseItemFromBinding : newAppendTousseItemListFromBinding) { + //判断所绑定的物品在源申请项中是否已经存在 + boolean newTousseItemExistsInSourceTousseItems = false; + for (TousseItem applicationItem : applicationItems) { + if(newAppendTousseItemFromBinding.getTousseDefinitionId() != null + && applicationItem.getTousseDefinitionId() != null + && newAppendTousseItemFromBinding.getTousseDefinitionId().longValue() == applicationItem.getTousseDefinitionId().longValue()){ + newTousseItemExistsInSourceTousseItems = true; + newAppendTousseItemFromBinding.setInvoicePlan(recyclingApplication); + applicationItem.setEditAmount(applicationItem.getEditAmount() + newAppendTousseItemFromBinding.getAmount()); + }else if(newAppendTousseItemFromBinding.getTousseDefinitionId() != null + && applicationItem.getTousseDefinitionId() != null + && newAppendTousseItemFromBinding.getTousseDefinitionId().longValue() == applicationItem.getTousseDefinitionId().longValue()){ + newTousseItemExistsInSourceTousseItems = true; + newAppendTousseItemFromBinding.setInvoicePlan(recyclingApplication); + applicationItem.setEditAmount(applicationItem.getEditAmount() + newAppendTousseItemFromBinding.getAmount()); + } + } + if(newTousseItemExistsInSourceTousseItems == false){ + newAppendTousseItemFromBinding.setInvoicePlan(recyclingApplication); + applicationItems.add(newAppendTousseItemFromBinding); + } + } + } recyclingApplication.setApplicationItems(applicationItems); }