Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r18476 -r18503 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 18476) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 18503) @@ -109,6 +109,7 @@ import com.forgon.disinfectsystem.recyclingapplication.vo.ApplicationGoodsVo; import com.forgon.disinfectsystem.recyclingapplication.vo.MaterialVO; import com.forgon.disinfectsystem.recyclingapplication.vo.OperationReservationInvoiceGoodsDetail; +import com.forgon.disinfectsystem.recyclingapplication.vo.TousseItemVoForApplicationGoodsVo; import com.forgon.disinfectsystem.stockmanage.cssdstock.service.TousseStockManager; import com.forgon.disinfectsystem.stockmanage.departmentstock.service.DepartmentStockManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; @@ -4888,6 +4889,12 @@ boolean isBorrowTousse = InvoicePlan.TYPE_BORROWINGSINGLE .equals(invoicePlan.getType()) ? true : false; for (TousseItem applicationItem : invoicePlan.getApplicationItems()) { + Long tousseDefinitionId = applicationItem.getTousseDefinitionId(); + if(applicationItem.isDisinfection() && !DatabaseUtil.isPoIdValid(tousseDefinitionId)){ + // 消毒物品必须要有包定义id,其他类型的器械包,不确定申请单有没有记包定义id,所以暂时只限制消毒物品 +// throw new RuntimeException(String.format("申请单[%s]%s的包定义id为空", invoicePlan.getSerialNumber(),goodsName)); + continue; + } if(BooleanUtils.isTrue(applicationItem.getIsTerminated())) continue; // 是否发货 @@ -4989,15 +4996,22 @@ String goodsName = applicationItem.getTousseName(); Long disposableGoodsId = applicationItem.getDisposableGoodsId(); + + TousseDefinition tousseDefinition = null; if(applicationItem.isDisinfection()){ // 查找包定义,如果是可追溯的,那么下划线不能去掉 - tousseDefinition = tousseDefinitionManager.getTousseDefinitionByName(goodsName); - if(tousseDefinition != null && tousseDefinition.traceable()){ - - }else{ - goodsName = TousseDefinitionUtils.getTousseRawName(goodsName); +// tousseDefinition = tousseDefinitionManager.getTousseDefinitionByName(goodsName); + tousseDefinition = tousseDefinitionManager.getTousseDefinitionById(tousseDefinitionId); + if(tousseDefinition == null ){ + // 包定义不存在的项不处理 + continue; } +// if(tousseDefinition != null && tousseDefinition.traceable()){ +// +// }else{ +// goodsName = TousseDefinitionUtils.getTousseRawName(goodsName); +// } } String mapKey = goodsName; if(DatabaseUtil.isPoIdValid(disposableGoodsId)){ @@ -5015,6 +5029,14 @@ vo.setGoodsType(tousseType); datas.put(mapKey, vo); + }else{ + // 校验vo的属性是否兼容 + if(applicationItem.isDisinfection()){ + // 保证全部为拆包或者整包 + if(!StringUtils.equals(tousseDefinition.getIsApplyEntireTousse(), vo.getIsCleanedEntirely())){ + continue; + } + } } vo.addInvoicePlanID(invoicePlan.getId()); vo.addTousseItemId(invoicePlan.getId(), applicationItem.getId()); @@ -5040,7 +5062,8 @@ if(applicationItem.isDisinfection()){ // 非整包申请的消毒物品,显示材料数量,并且将材料明细设置到tousseVO里面 - if(tousseDefinition != null && !tousseDefinition.applyEntireTousse()){ + if(!tousseDefinition.applyEntireTousse()){ + TousseItemVoForApplicationGoodsVo tousseItemVo = new TousseItemVoForApplicationGoodsVo(); int materialTotalAmount = vo.getMaterialAmount(); materialTotalAmount += CssdUtils.getMaterialTotalAmount(tousseDefinition,false); vo.setMaterialAmount(materialTotalAmount); @@ -5060,6 +5083,12 @@ materialVO.setAmount(materialVO.getAmount() + materialAmount); } } + + tousseItemVo.setCount(notSendAmount); + tousseItemVo.setMaterialAmount(materialTotalAmount); + tousseItemVo.setName(goodsName); + tousseItemVo.setTousseDefinitionId(tousseDefinitionId); + vo.getTousseItems().add(tousseItemVo); } } Integer readed = invoicePlan.getReaded(); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/ApplicationGoodsVo.java =================================================================== diff -u -r18343 -r18503 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/ApplicationGoodsVo.java (.../ApplicationGoodsVo.java) (revision 18343) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/ApplicationGoodsVo.java (.../ApplicationGoodsVo.java) (revision 18503) @@ -50,6 +50,8 @@ private List materials = new LinkedList(); + private List tousseItems = new LinkedList(); + private String isCleanedEntirely = Constants.STR_YES; // 是否整包清洗 private Set disposableGoodsIdSet = new HashSet(); @@ -193,6 +195,10 @@ return null; } + public List getTousseItems() { + return tousseItems; + } + public String getIsCleanedEntirely() { return isCleanedEntirely; } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/TousseItemVoForApplicationGoodsVo.java =================================================================== diff -u --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/TousseItemVoForApplicationGoodsVo.java (revision 0) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/TousseItemVoForApplicationGoodsVo.java (revision 18503) @@ -0,0 +1,43 @@ +/** + * + */ +package com.forgon.disinfectsystem.recyclingapplication.vo; + +/** + * @author jeffli 2017年6月22日 下午5:11:20 + * + */ +public class TousseItemVoForApplicationGoodsVo { + + private String name; + private int count = 0;// 待发货数量(部分发货) + private int materialAmount; // 材料总数量 + private Long tousseDefinitionId; + + public String getName() { + return name; + } + public int getCount() { + return count; + } + public int getMaterialAmount() { + return materialAmount; + } + public Long getTousseDefinitionId() { + return tousseDefinitionId; + } + public void setName(String name) { + this.name = name; + } + public void setCount(int count) { + this.count = count; + } + public void setMaterialAmount(int materialAmount) { + this.materialAmount = materialAmount; + } + public void setTousseDefinitionId(Long tousseDefinitionId) { + this.tousseDefinitionId = tousseDefinitionId; + } + + +}