Index: ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java =================================================================== diff -u -r40717 -r40873 --- ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 40717) +++ ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 40873) @@ -1088,6 +1088,8 @@ Set comboTousseInstanceIdSet = new HashSet(); // 发货单Id及发货单上对应的器械包实例,方便将退货信息备注到发货单上 Map> invoiceIdToTousseInstanceMap = new HashMap>(); + //记录是否重装为否、是否重发为是的包实例集合,后续对于这些包实例的来源申请单进行赋值 + List reDeliveryYesRePackingNoTiList = new ArrayList(); for (ReturnGoodsItem newItem : returnGoodsRecord.getReturnGoodsItems()) { //对于消毒物品(器械包与敷料包也是),为祖先包定义 TousseDefinition tousseDefinition = newItem.getTousseDefinition(); @@ -1162,7 +1164,7 @@ } comboTousseInstanceIdSet.add(tousseInstance.getComboTousseInstanceId()); } - + //只能对状态为已发货、已签收、已灭菌的包实例进行退货 if (tousseInstance.isShipped() || tousseInstance.isSigned() || TousseInstance.STATUS_STERILED .equals(tousseInstance.getStatus())) { @@ -1173,7 +1175,7 @@ //第三方器械包退货时,直接废弃器械包实例GZSLWQGSKY-15 tousseInstanceManager.discardTousseInstance(tousseInstance, "退货的第三方物品直接退还第三方"); objectDao.refresh(tousseInstance); - }else if (newItem.isRepacking()) { + }else if (newItem.isRepacking()) {//如果是否重装为“是”时则废弃包实例 tousseInstanceManager.discardTousseInstance(tousseInstance, "退货重装"); objectDao.refresh(tousseInstance); }else { @@ -1187,6 +1189,7 @@ tousseInstance.setSignedUser(null); tousseInstance.setSignRecordId(null); tousseInstanceManager.save(tousseInstance); + reDeliveryYesRePackingNoTiList.add(tousseInstance); } } else { throw new RuntimeException(String.format( @@ -1220,9 +1223,11 @@ returnComboTousseInstance(comboTousseInstanceIdSet); // 创建发货计划单 - createInvoicePlan(returnGoodsRecord,null,foreignTousseReturnGoodsItems); + InvoicePlan invoicePlan = createInvoicePlan(returnGoodsRecord,null,foreignTousseReturnGoodsItems); updateInvoicePlan(invoicePlanId); saveOrUpdate(returnGoodsRecord); + //对是否重装为否、是否重发为是的包实例集合里的包实例的来源申请单进行赋值 + updateTousseInstanceInvoicePlanInfo(invoicePlan,reDeliveryYesRePackingNoTiList); // 退货的包实例自动关联到之前的发货单,并在发货单上自动添加备注(SZSDSRMYY-13) addRemarkForInvoice(returnGoodsRecord, invoiceIdToTousseInstanceMap); @@ -1249,6 +1254,21 @@ }*/ return buildSuccessMsgJsonResult(); } + + /** + * 对是否重装为否、是否重发为是的包实例集合里的包实例的来源申请单进行赋值 + * @param invoicePlan 申请单对象 + * @param reDeliveryYesRePackingNoTiList 否重装为否、是否重发为是的包实例集合 + */ + private void updateTousseInstanceInvoicePlanInfo(InvoicePlan invoicePlan,List reDeliveryYesRePackingNoTiList){ + if(invoicePlan != null && CollectionUtils.isNotEmpty(reDeliveryYesRePackingNoTiList)){ + for(TousseInstance tousseInstance : reDeliveryYesRePackingNoTiList){ + tousseInstance.setInvoicePlanID(invoicePlan.getId()); + tousseInstance.setInvoicePlanSerialNum(invoicePlan.getSerialNumber()); + tousseInstanceManager.save(tousseInstance); + } + } + } /** * 退货成功后,需要在相应的退货记录中追加备注信息,备注信息内容为:“退货的第三方物品直接退还第三方”GZSLWQGSKY-15 @@ -1713,7 +1733,7 @@ } } - private boolean createInvoicePlan(ReturnGoodsRecord returnGoodsRecord,Map idToDisposableGoodsMap,Set foreignTousseReturnGoodsItems){ + private InvoicePlan createInvoicePlan(ReturnGoodsRecord returnGoodsRecord,Map idToDisposableGoodsMap,Set foreignTousseReturnGoodsItems){ RecyclingApplication recyclingApplication = new RecyclingApplication(); // 生成发货单明细 List tousseItems = new ArrayList(); @@ -1791,7 +1811,7 @@ } if(CollectionUtils.isEmpty(tousseItems)){ - return false; + return recyclingApplication; } // 生成发货单信息 @@ -1843,7 +1863,7 @@ setPackingTaskRtInvoicePlanId(recyclingApplication, returnGoodsRecord); //设置退货重发的包实例的退货重发申请单ID setTousseInstanceRtInvoicePlanId(recyclingApplication, returnGoodsRecord); - return true; + return recyclingApplication; } /**