Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r38436 -r38452 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 38436) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 38452) @@ -2273,7 +2273,7 @@ int amount = CssdUtils.getWaitDeliverAmount(applicationItem, invoiceOrigin, recycledDeliver, invoicePlan, objectDao); // 申请数量大于发货数量 - if (amount <= applicationItem.getSendOutAmount()) { + if (amount <= (applicationItem.getSendOutAmount() + applicationItem.getTerminatePackingTaskAmount())) { continue; } if(submitInvoiceContext.isSendOnlyUrgentGoods() && (applicationItem.safelyGetUrgentAmount() == 0)){ @@ -2282,7 +2282,7 @@ String applicationGoodsName = applicationItem.getTousseName(); // 未发货数量 - Integer notSendAmount = (amount - applicationItem.getSendOutAmount()); + Integer notSendAmount = (amount - applicationItem.getSendOutAmount() - applicationItem.getTerminatePackingTaskAmount()); if (notSendAmount == null || notSendAmount <= 0) { continue; } @@ -3392,15 +3392,18 @@ } //校验是否符合科研项目发货条件(该业务方法仅用于广东省中医院,前提是有开启科室研目配置项.中山眼科中心的科室项目接口的配置不同,不适用于此业务) validateProjectBeforeSubmitInvoice(params); - //校验发货物品(追溯的器械包)是否全部符合发货至原申请单的条件(DGSETYY-85,DGSETYY-80) - Map invoiceParamsMap = new HashMap(); - invoiceParamsMap.put("invoiceType", invoiceType); - invoiceParamsMap.put("departCode", JSONUtil.optString(params, "departCode", "")); - invoiceParamsMap.put("invoicePlanId", JSONUtil.optLong(params, "invoicePlanId", null)); - invoiceParamsMap.put("invoiceItems", params.optJSONArray("invoiceItems")); - //旧版发货,后续需支持DGSETYY-80器械包发货回原申请单功能时再另行处理 - validateTraceableToussesShippedBackToTheOriginalApply(invoiceParamsMap,new HashMap>>(), - new HashMap>(),new HashMap(),new HashMap()); + //如果发货类型为申领发货或辅助发货时,调用器械包发货回原申请单的调验功能 + if(StringUtils.contains(Invoice.TYPE_APPLICATION, invoiceType) || StringUtils.contains(Invoice.TYPE_AUXILIARY, invoiceType)){ + //校验发货物品(追溯的器械包)是否全部符合发货至原申请单的条件(DGSETYY-85,DGSETYY-80) + Map invoiceParamsMap = new HashMap(); + invoiceParamsMap.put("invoiceType", invoiceType); + invoiceParamsMap.put("departCode", JSONUtil.optString(params, "departCode", "")); + invoiceParamsMap.put("invoicePlanId", JSONUtil.optLong(params, "invoicePlanId", null)); + invoiceParamsMap.put("invoiceItems", params.optJSONArray("invoiceItems")); + //旧版发货,后续需支持DGSETYY-80器械包发货回原申请单功能时再另行处理 + validateTraceableToussesShippedBackToTheOriginalApply(invoiceParamsMap,new HashMap>>(), + new HashMap>(),new HashMap(),new HashMap()); + } SubmitInvoiceContext submitInvoiceContext = new SubmitInvoiceContext(); //聚合包是否按大包发货(即收费按聚合包定义收取、非聚合包子包实例收取) String comboTousseSendByWrapperTousseStr = CssdUtils.getSystemSetConfigByName("comboTousseSendByWrapperTousse"); @@ -7940,7 +7943,7 @@ for (TousseItem tousseItem : tis) { if (tousseItem.getTousseName().equals( tousseInstance.getTousseName())) { - if (tousseItem.getSendOutAmount() >= tousseItem + if (tousseItem.getSendOutAmount() + tousseItem.getTerminatePackingTaskAmount() >= tousseItem .getAmount()) { return false; } @@ -8503,14 +8506,17 @@ } return buildErrorMsgJsonResult(String.format("%s不属于%s,请扫描%s的%s进行发货!", tousseNameAndBarcode,orgUnitStr,orgUnitStr,tousseName),tousseInstance); } - //判断可追溯的复用性物品发货时优先发回原申请单模式(DGSETYY-80) - Map invoiceParamsMap = new HashMap(); - invoiceParamsMap.put("departCode", departCodeOfInvoicePlan); - invoiceParamsMap.put("invoicePlanId", JSONUtil.optLong(extraParam, "invoicePlanId", null)); - invoiceParamsMap.put("invoiceType", invoiceType); - invoiceParamsMap.put("invoiceTousseInstanceList", Collections.singletonList(tousseInstance)); - validateTraceableToussesShippedBackToTheOriginalApply(invoiceParamsMap,new HashMap>>(), - new HashMap>(),new HashMap(),new HashMap()); + //如果发货类型为申领发货或辅助发货时,调用器械包发货回原申请单的调验功能(针对XJJQZYY-131扫描条码的处理) + if(StringUtils.contains(Invoice.TYPE_APPLICATION, invoiceType) || StringUtils.contains(Invoice.TYPE_AUXILIARY, invoiceType)){ + //判断可追溯的复用性物品发货时优先发回原申请单模式(DGSETYY-80) + Map invoiceParamsMap = new HashMap(); + invoiceParamsMap.put("departCode", departCodeOfInvoicePlan); + invoiceParamsMap.put("invoicePlanId", JSONUtil.optLong(extraParam, "invoicePlanId", null)); + invoiceParamsMap.put("invoiceType", invoiceType); + invoiceParamsMap.put("invoiceTousseInstanceList", Collections.singletonList(tousseInstance)); + validateTraceableToussesShippedBackToTheOriginalApply(invoiceParamsMap,new HashMap>>(), + new HashMap>(),new HashMap(),new HashMap()); + } JsonObject result = new JsonObject(); result.addProperty("success", true); @@ -9736,7 +9742,7 @@ SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); //1.查询该消毒物品待发货申请项的包定义的材料md5及待发数量 String queryTousseItemSql = String.format("select ip.type,td.materialsMD5,td.tousseType,po.invoiceAmountMode," - + "po.amount,po.recyclingAmount,po.tallyAmount,po.tallyAmount,po.sendOutAmount from %s po " + + "po.amount,po.recyclingAmount,po.tallyAmount,po.tallyAmount,po.sendOutAmount,po.terminatePackingTaskAmount from %s po " + "join %s ip on po.recyclingApplication_ID=ip.id " + "join %s td on po.tousseDefinitionId=td.id " + "where td.ancestorId=%s and %s",TousseItem.class.getSimpleName(),InvoicePlan.class.getSimpleName(), @@ -9765,12 +9771,14 @@ Number recyclingAmountNumber = (Number)rs.getObject("recyclingAmount"); Number tallyAmountNumber = (Number)rs.getObject("tallyAmount"); Number sendOutAmountNumber = (Number)rs.getObject("sendOutAmount"); + Number terminatePackingTaskAmountNumber = (Number)rs.getObject("terminatePackingTaskAmount"); Integer invoiceAmountMode = invoiceAmountModeNumber == null ? null : invoiceAmountModeNumber.intValue(); Integer amount = amountNumber == null ? null : amountNumber.intValue(); Integer recyclingAmount = recyclingAmountNumber == null ? null : recyclingAmountNumber.intValue(); Integer tallyAmount = tallyAmountNumber == null ? null : tallyAmountNumber.intValue(); Integer sendOutAmount = sendOutAmountNumber == null ? null : sendOutAmountNumber.intValue(); + Integer terminatePackingTaskAmount = terminatePackingTaskAmountNumber == null ? null : terminatePackingTaskAmountNumber.intValue(); boolean isBorrowTousseOrProxyDisinfectionOrGoodsReservationApplication = StringUtils.equals(invoicePlanType, InvoicePlan.TYPE_BORROWINGSINGLE) @@ -9780,7 +9788,7 @@ int shouldSendAmount = CssdUtils.getShouldDeliverAmountByTousseItemField(supplyRoomConfig.getInvoiceOrigin(), supplyRoomConfig.getAfterRecyclingTousseDeliver(), isBorrowTousseOrProxyDisinfectionOrGoodsReservationApplication, tousseType, invoiceAmountMode, amount, recyclingAmount, tousseDefinition.getIsRecycling(), tallyAmount); - int restWaitSendAmount = MathTools.sub(shouldSendAmount, sendOutAmount).intValue(); + int restWaitSendAmount = MathTools.sub(shouldSendAmount, sendOutAmount + terminatePackingTaskAmount).intValue(); if(restWaitSendAmount <= 0){ continue; } @@ -9992,7 +10000,7 @@ CssdUtils.getWaitDeliverAmount2(tousseItem, supplyRoomConfig.getInvoiceOrigin(), supplyRoomConfig.getTousseDeliverOccasion(), isBorrowTousseOrProxyDisinfectionOrGoodsReservationApplication, objectDao); - if(sendoutAmount.intValue() >= shouleSendoutAmount){ + if(sendoutAmount.intValue() + tousseItem.getTerminatePackingTaskAmount() >= shouleSendoutAmount){ continue; } fitInvoiceCondition = true; @@ -10267,8 +10275,8 @@ Integer sendOutAmount = applicationItem.getSendOutAmount(); if (sendOutAmount == null) continue; - // 未发数量 = 申请数量-发货数量 - int notSendAmount = appAmount - sendOutAmount; + // 未发数量 = 申请数量-发货数量-装配终止数量 + int notSendAmount = appAmount - sendOutAmount - applicationItem.getTerminatePackingTaskAmount(); if (notSendAmount <= 0) continue; @@ -10642,9 +10650,10 @@ int awaitSendAmount = 0; int amount = tousseItem.getAmount(); int sendOutAmount = tousseItem.getSendOutAmount(); - // 申请数量大于发货数量 - if (amount > sendOutAmount) { - awaitSendAmount = amount - sendOutAmount; + int terminatePackingTaskAmount = tousseItem.getTerminatePackingTaskAmount(); + // 申请数量大于发货数量+装配终止数量 + if (amount > sendOutAmount + tousseItem.getTerminatePackingTaskAmount()) { + awaitSendAmount = amount - sendOutAmount - terminatePackingTaskAmount; } // 未发货数量 @@ -10678,7 +10687,7 @@ if (!(barcodeDevice instanceof TousseInstance)) { continue; } - if(tousseItem.getSendOutAmount() >= tousseItem.getAmount()){ + if(tousseItem.getSendOutAmount() + tousseItem.getTerminatePackingTaskAmount() >= tousseItem.getAmount()){ continue; } TousseInstance tousseInstance = (TousseInstance) barcodeDevice; @@ -11128,7 +11137,7 @@ String applicationGoodsName = applicationItem.getTousseName(); // 未发货数量 - Integer notSendAmount = (amount - applicationItem.getSendOutAmount()); + Integer notSendAmount = (amount - applicationItem.getSendOutAmount() - applicationItem.getTerminatePackingTaskAmount()); if (disposableGoods.expensiveDiposablegoods()) {// 高值耗材 int canSendAmount = notSendAmount.intValue(); int actualSendAmount = 0; @@ -11355,7 +11364,7 @@ int amount = CssdUtils.getWaitDeliverAmount(applicationItem, invoiceOrigin, recycledDeliver, invoicePlan, objectDao); // 申请数量大于发货数量 - if (amount <= applicationItem.getSendOutAmount()) { + if (amount <= applicationItem.getSendOutAmount() + applicationItem.getTerminatePackingTaskAmount()) { return; } if(submitInvoiceContext.isSendOnlyUrgentGoods() && (applicationItem.safelyGetUrgentAmount() == 0)){ @@ -11370,7 +11379,7 @@ throw new RuntimeException(String.format("申请单[%s]的器械包[%s]包定义id为空!",invoicePlan.getSerialNumber(), applicationItem.getTousseName())); } // 未发货数量 - Integer notSendAmount = (amount - applicationItem.getSendOutAmount()); + Integer notSendAmount = (amount - applicationItem.getSendOutAmount() - applicationItem.getTerminatePackingTaskAmount()); // Integer scannedAmount = sendOutGoods.get(applicationGoodsName);// 发货界面已扫描的数量 Integer scannedAmount = sendOutGoodsTdIdToAmountMap.get(ancestorId);// 发货界面已扫描的数量 @@ -11428,7 +11437,7 @@ // 完全发货 if (canSendAmount >= notSendAmount) { invoiceItem.setAmount(notSendAmount); - applicationItem.setSendOutAmount(amount); + applicationItem.setSendOutAmount(amount - applicationItem.getTerminatePackingTaskAmount()); // 部分发货 } else { applicationItem.setSendOutAmount((applicationItem @@ -15149,7 +15158,7 @@ if (sendOutAmount == null) continue; // 未发数量 = 申请数量-发货数量 - int notSendAmount = appAmount - sendOutAmount; + int notSendAmount = appAmount - sendOutAmount - tousseItem.getTerminatePackingTaskAmount(); if (notSendAmount <= 0) continue; if(tousseItem.isDisinfection()){ Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java =================================================================== diff -u -r38232 -r38452 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 38232) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 38452) @@ -1996,7 +1996,7 @@ String tousseNameOfTousseItem = tousseItem.getTousseName(); String tousseTypeOfTousseItem = tousseItem.getTousseType(); int needSendAmount = - MathTools.sub(tousseItem.getAmount(), tousseItem.getSendOutAmount()).intValue(); + MathTools.sub(tousseItem.getAmount(), tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); List matchedTousseInstances = new ArrayList(); List tousseInstanceList = proxyDisinfectionIdToTousseListMap.get(invoicePlanIdOfTousseItem); tousseInstanceList.stream().forEach(tousseInstance -> { @@ -2113,7 +2113,7 @@ Long invoicePlanIdOfTousseItem = tousseItem.getInvoicePlan().getId(); Long tousseDefinitionId = tousseItem.getTousseDefinitionId(); int needSendAmount = - MathTools.sub(tousseItem.getRecyclingAmount(), tousseItem.getSendOutAmount()).intValue(); + MathTools.sub(tousseItem.getRecyclingAmount(), tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); List matchedTousseInstances = new ArrayList(); List tousseInstanceList = invoicePlanIdToTousseListMap.get(invoicePlanIdOfTousseItem); tousseInstanceList.stream().forEach(tousseInstance -> { @@ -2258,7 +2258,7 @@ Long tousseDefinitionId = tousseItem.getTousseDefinitionId(); int needSendAmount = MathTools.sub(tousseItem.getRecyclingAmount(), - tousseItem.getSendOutAmount()).intValue(); + tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); List matchedTousseInstances = new ArrayList(); List tousseInstanceList = invoicePlanIdToTousseListMap.get(invoicePlanIdOfTousseItem); tousseInstanceList.stream().forEach(tousseInstance -> { @@ -2358,11 +2358,11 @@ //剩下还需发货的数量 int shouldSendAmount = MathTools.sub(tousseItem.getRecyclingAmount(), - tousseItem.getSendOutAmount()).intValue(); + tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); if(!tousseItem.isRecycling()){ shouldSendAmount = MathTools.sub(tousseItem.getAmount(), - tousseItem.getSendOutAmount()).intValue(); + tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); } int needSendAmount = shouldSendAmount; List matchedTousseInstances = new ArrayList(); @@ -2500,7 +2500,7 @@ int waitSendAmount = CssdUtils.getWaitDeliverAmount2(tousseItem, invoiceOrigin, tousseDeliverOccasion, InvoicePlan.isBorrowTousseOrProxyDisinfectionOrGoodsReservationApplication(invoicePlan), objectDao); - int needSendAmount = MathTools.sub(waitSendAmount, tousseItem.getSendOutAmount()).intValue(); + int needSendAmount = MathTools.sub(waitSendAmount, tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); if(needSendAmount <= 0){ continue; } @@ -2749,7 +2749,7 @@ //该申请项还需要发货的数量 int needSendAmount = MathTools.sub(tousseItem.getAmount(), - tousseItem.getSendOutAmount()).intValue(); + tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); needSendAmount = Math.min(needSendAmount, tdIdRestNeedMatchAmount); if(needSendAmount <= 0){ continue; @@ -3105,7 +3105,7 @@ int waitSendAmount = CssdUtils.getWaitDeliverAmount2(tousseItem, invoiceOrigin, tousseDeliverOccasion, InvoicePlan.isBorrowTousseOrProxyDisinfectionOrGoodsReservationApplication(invoicePlan), objectDao); - int needSendAmount = MathTools.sub(waitSendAmount, tousseItem.getSendOutAmount()).intValue(); + int needSendAmount = MathTools.sub(waitSendAmount, tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); if(needSendAmount <= 0){ continue; } @@ -3294,7 +3294,7 @@ * 5.所属包定义的祖先包定义及相关的材料md5 */ String tousseItemCondition = String.format("%s and (po.isTerminated is null or po.isTerminated <> 1) " - + "and (po.isInvoice = '%s') and %s > po.sendOutAmount and (%s)", + + "and (po.isInvoice = '%s') and %s > (po.sendOutAmount + po.terminatePackingTaskAmount) and (%s)", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.ancestorID", ancestorIdToMaterialsMD5TiListMap.keySet()),Constants.STR_YES, CssdUtils.buildTousseItemShouldDeliverAmountSql("invoicePlan", "po", invoiceOrigin, tousseDeliverOccasion), @@ -3389,7 +3389,7 @@ int waitSendAmount = CssdUtils.getWaitDeliverAmount2(tousseItem, invoiceOrigin, tousseDeliverOccasion, InvoicePlan.isBorrowTousseOrProxyDisinfectionOrGoodsReservationApplication(invoicePlan), objectDao); - int needSendAmount = MathTools.sub(waitSendAmount, tousseItem.getSendOutAmount()).intValue(); + int needSendAmount = MathTools.sub(waitSendAmount, tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); if(needSendAmount <= 0){ continue; } @@ -3524,7 +3524,7 @@ tousseDeliverOccasion, false, false); //申请单过滤条件:1.对应的包定义(传包定义参数) 2.未终止(固定写法) 3.需要发货(固定写法) 4.4.还需待发货数量是否大于0 String tousseItemCondition = String.format("%s and (po.isTerminated is null or po.isTerminated <> 1) " - + "and (po.isInvoice = '%s') and %s > po.sendOutAmount", + + "and (po.isInvoice = '%s') and %s > (po.sendOutAmount + po.terminatePackingTaskAmount)", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.tousseDefinitionId", tdIdToSendAmountMap.keySet()), Constants.STR_YES, @@ -3658,7 +3658,7 @@ //该申请项还需要发货的数量 int needSendAmount = MathTools.sub(waitSendAmount, - tousseItem.getSendOutAmount()).intValue(); + tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); if(needSendAmount <= 0){ continue; } @@ -3850,7 +3850,7 @@ * 4.还需待发货数量是否大于0 */ String tousseItemCondition = String.format("%s and (po.isTerminated is null or po.isTerminated <> 1) " - + "and (po.isInvoice = '%s') and %s > po.sendOutAmount", + + "and (po.isInvoice = '%s') and %s > (po.sendOutAmount + po.terminatePackingTaskAmount)", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.ancestorID", tdIdToTdMapParam.keySet()),Constants.STR_YES, CssdUtils.buildTousseItemShouldDeliverAmountSql("invoicePlan", "po", invoiceOrigin, tousseDeliverOccasion) @@ -3888,7 +3888,7 @@ invoiceOrigin, tousseDeliverOccasion, InvoicePlan.isBorrowTousseOrProxyDisinfectionOrGoodsReservationApplication(invoicePlan), objectDao); //当前申请项还需待发的数量 - int needSendAmountForThisTousseItem = MathTools.sub(waitSendAmountForTousseItem, tousseItem.getSendOutAmount()).intValue(); + int needSendAmountForThisTousseItem = MathTools.sub(waitSendAmountForTousseItem, tousseItem.getSendOutAmount()+tousseItem.getTerminatePackingTaskAmount()).intValue(); if(needSendAmountForThisTousseItem > 0){ tdIdToNeedSendAmountMap.put(tousseDefinitionId, needSendAmountForThisTousseItem); } @@ -4067,7 +4067,7 @@ invoiceOrigin, tousseDeliverOccasion, InvoicePlan.isBorrowTousseOrProxyDisinfectionOrGoodsReservationApplication(invoicePlan), objectDao); //当前申请项还需待发的数量 - int needSendAmountForThisTousseItem = MathTools.sub(waitSendAmountForTousseItem, tousseItem.getSendOutAmount()).intValue(); + int needSendAmountForThisTousseItem = MathTools.sub(waitSendAmountForTousseItem, tousseItem.getSendOutAmount() + tousseItem.getTerminatePackingTaskAmount()).intValue(); if(needSendAmountForThisTousseItem <= 0){ continue; } @@ -4227,7 +4227,7 @@ String invoicePlanCondition = buildInvoicePlanCondition(invoicePlanId, departCoding, invoiceGroupByConfig,invoicePlanList, applyDate, invoiceOrigin, tousseDeliverOccasion,false, hideUnprintedDisposableGoodsInvoicePlan); - String queryCondition = String.format("where %s and (isTerminated is null or isTerminated <> 1) and sendOutAmount < amount and %s)", + String queryCondition = String.format("where %s and (isTerminated is null or isTerminated <> 1) and (sendOutAmount + terminatePackingTaskAmount) < amount and %s)", invoicePlanCondition, SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.disposableGoodsId", dgIdToEdgListMap.keySet()) @@ -4267,7 +4267,7 @@ for(TousseItem tousseItem : tousseItemList){ //需要发货的数量 - int needSendAmount = MathTools.sub(tousseItem.getAmount(), tousseItem.getSendOutAmount()).intValue(); + int needSendAmount = MathTools.sub(tousseItem.getAmount(), tousseItem.getSendOutAmount() + tousseItem.getTerminatePackingTaskAmount()).intValue(); if(needSendAmount <= 0){ continue; } @@ -4396,7 +4396,7 @@ String invoicePlanCondition = buildInvoicePlanCondition(invoicePlanId, departCoding, invoiceGroupByConfig,invoicePlanList, applyDate, invoiceOrigin, tousseDeliverOccasion,false, hideUnprintedDisposableGoodsInvoicePlan); - String queryCondition = String.format("where %s and (po.isTerminated is null or po.isTerminated <> 1) and po.sendOutAmount < po.amount and %s)", + String queryCondition = String.format("where %s and (po.isTerminated is null or po.isTerminated <> 1) and (po.sendOutAmount + po.terminatePackingTaskAmount) < po.amount and %s)", invoicePlanCondition, SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.disposableGoodsId", disposableGoodsBatchSet.stream().map(batch -> batch.getDiposableGoods().getId()).collect(Collectors.toSet())) @@ -4422,7 +4422,7 @@ //遍历申请项 for(TousseItem tousseItem : tousseItemList){ //该申请项总共需要发货的数量 - int needSendAmountOfTousseItem = MathTools.sub(tousseItem.getAmount(), tousseItem.getSendOutAmount()).intValue(); + int needSendAmountOfTousseItem = MathTools.sub(tousseItem.getAmount(), tousseItem.getSendOutAmount() + tousseItem.getTerminatePackingTaskAmount()).intValue(); if(needSendAmountOfTousseItem <= 0){ continue; } @@ -4701,7 +4701,7 @@ String invoicePlanCondition = buildInvoicePlanCondition(invoicePlanId, departCoding, invoiceGroupByConfig,invoicePlanList, applyDate, invoiceOrigin, tousseDeliverOccasion,false, hideUnprintedDisposableGoodsInvoicePlan); - String queryCondition = String.format("where %s and (po.isTerminated is null or po.isTerminated <> 1) and po.sendOutAmount < po.amount and %s)", + String queryCondition = String.format("where %s and (po.isTerminated is null or po.isTerminated <> 1) and (po.sendOutAmount + po.terminatePackingTaskAmount) < po.amount and %s)", invoicePlanCondition, SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.disposableGoodsId", disposableGoodsSet.stream().map(DisposableGoods::getId).collect(Collectors.toList())) @@ -4727,7 +4727,7 @@ //遍历申请项 for(TousseItem tousseItem : tousseItemList){ //需要发货的数量 - int needSendAmount = MathTools.sub(tousseItem.getAmount(), tousseItem.getSendOutAmount()).intValue(); + int needSendAmount = MathTools.sub(tousseItem.getAmount(), tousseItem.getSendOutAmount() + tousseItem.getTerminatePackingTaskAmount()).intValue(); if(tousseItemToIdentificationAmountMapForBatch != null){ Map identificationAmountMapForBatch = tousseItemToIdentificationAmountMapForBatch.get(tousseItem); if(MapUtils.isNotEmpty(identificationAmountMapForBatch)){ @@ -7881,7 +7881,7 @@ dateQueryAdapter.dateAdapter(currentDateTime), SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", invoicePlanIdList), String.format("select recyclingApplication_ID from %s %s join %s %s on %s.recyclingApplication_ID=%s.id " - + "where (isInvoice='%s') and (isTerminated is null or isTerminated <> 1) and (%s-sendoutamount) > 0", + + "where (isInvoice='%s') and (isTerminated is null or isTerminated <> 1) and (%s-sendoutamount-terminatePackingTaskAmount) > 0", TousseItem.class.getSimpleName(),tousseItemTableAlias, InvoicePlan.class.getSimpleName(),invoicePlanTableAlias, tousseItemTableAlias,invoicePlanTableAlias, @@ -7894,7 +7894,7 @@ dateQueryAdapter.dateAdapter(currentDateTime), SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", invoicePlanIdList), String.format("select recyclingApplication_ID from %s %s join %s %s on %s.recyclingApplication_ID=%s.id " - + "where (isInvoice='%s') and (isTerminated is null or isTerminated <> 1) and (%s-sendoutamount) > 0", + + "where (isInvoice='%s') and (isTerminated is null or isTerminated <> 1) and (%s-sendoutamount-terminatePackingTaskAmount) > 0", TousseItem.class.getSimpleName(),tousseItemTableAlias, InvoicePlan.class.getSimpleName(),invoicePlanTableAlias, tousseItemTableAlias,invoicePlanTableAlias, Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r38420 -r38452 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 38420) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 38452) @@ -526,8 +526,8 @@ Integer sendOutAmount = applicationItem.getSendOutAmount(); if (sendOutAmount == null) continue; - // 未发数量 = 申请数量-发货数量 - int notSendAmount = appAmount - sendOutAmount; + // 未发数量 = 申请数量-发货数量-装配已终止数量 + int notSendAmount = appAmount - sendOutAmount - applicationItem.getTerminatePackingTaskAmount(); if(!invoicePlan.isExpensiveGoodsApplication()){ if (notSendAmount <= 0) continue; @@ -1703,13 +1703,13 @@ }))); //数量合计语句(外来器械包) - String tousseItemWaitSendAmountSumSql = "(recyclingAmount - sendOutAmount)"; + String tousseItemWaitSendAmountSumSql = "(recyclingAmount - sendOutAmount - terminatePackingTaskAmount)"; if(StringUtils.equals(SupplyRoomConfig.TOUSSEDELIVEROCCASION_BEFORERECYCLING, config.getTousseDeliverOccasion()) ){ - tousseItemWaitSendAmountSumSql = "(amount - sendOutAmount)"; + tousseItemWaitSendAmountSumSql = "(amount - sendOutAmount - terminatePackingTaskAmount)"; }else if(StringUtils.equals(SupplyRoomConfig.TOUSSEDELIVEROCCASION_AFTERPRERECYCLING, config.getTousseDeliverOccasion()) ){ - tousseItemWaitSendAmountSumSql = "(amount - sendOutAmount)"; + tousseItemWaitSendAmountSumSql = "(amount - sendOutAmount- terminatePackingTaskAmount)"; }if(StringUtils.equals(SupplyRoomConfig.TOUSSEDELIVEROCCASION_AFTERRECYCLING, config.getTousseDeliverOccasion()) ){ - tousseItemWaitSendAmountSumSql = "(recyclingAmount - sendOutAmount)"; + tousseItemWaitSendAmountSumSql = "(recyclingAmount - sendOutAmount - terminatePackingTaskAmount)"; } //1.先查询待发货申请单的申请项 @@ -1783,7 +1783,7 @@ + tousseItemTableAlias +".tousseType," + tousseItemTableAlias +".diposable,ul.grade," + invoicePlanTableAlias +".applicationTime," - + "(" + shouldSendAmountCaseSql +" - "+ tousseItemTableAlias +".sendoutAmount) amount," + + "(" + shouldSendAmountCaseSql +" - "+ tousseItemTableAlias +".sendoutAmount - "+ tousseItemTableAlias +".terminatePackingTaskAmount) amount," + "(case when ("+ tousseItemTableAlias +".urgentAmount is null or "+ tousseItemTableAlias +".urgentAmount <= "+ tousseItemTableAlias +".sendoutAmount) then 0 else ("+ tousseItemTableAlias +".urgentAmount - "+ tousseItemTableAlias +".sendoutAmount) end) urgentAmount " + "from %s "+ tousseItemTableAlias +" " + "join %s "+ invoicePlanTableAlias +" on "+ tousseItemTableAlias +".recyclingApplication_ID="+ invoicePlanTableAlias +".id " @@ -1829,7 +1829,7 @@ + tousseItemTableAlias +".tousseType," + tousseItemTableAlias +".diposable,ul.grade," + invoicePlanTableAlias +".applicationTime," - + "(" + shouldSendAmountCaseSql +" - "+ tousseItemTableAlias +".sendoutAmount) amount," + + "(" + shouldSendAmountCaseSql +" - "+ tousseItemTableAlias +".sendoutAmount - "+ tousseItemTableAlias +".terminatePackingTaskAmount) amount," + "(case when ("+ tousseItemTableAlias +".urgentAmount is null or "+ tousseItemTableAlias +".urgentAmount <= "+ tousseItemTableAlias +".sendoutAmount) then 0 else ("+ tousseItemTableAlias +".urgentAmount - "+ tousseItemTableAlias +".sendoutAmount) end) urgentAmount " + "from %s "+ tousseItemTableAlias +" " + "join %s "+ invoicePlanTableAlias +" on "+ tousseItemTableAlias +".recyclingApplication_ID="+ invoicePlanTableAlias +".id " @@ -1867,7 +1867,8 @@ + "then case when ("+ tousseItemTableAlias +".transferScale is not null and "+ tousseItemTableAlias +".transferScale > 0) then "+ tousseItemTableAlias +".amount/"+ tousseItemTableAlias +".transferScale " + "else "+ tousseItemTableAlias +".amount end " + "else "+ shouldSendAmountCaseSql +" " - + "end) - (case when ("+ tousseItemTableAlias +".transferScale is not null and "+ tousseItemTableAlias +".transferScale > 0) then "+ tousseItemTableAlias +".sendOutAmount/"+ tousseItemTableAlias +".transferScale else "+ tousseItemTableAlias +".sendOutAmount end))"; + + "end) - (case when ("+ tousseItemTableAlias +".transferScale is not null and "+ tousseItemTableAlias +".transferScale > 0) then "+ tousseItemTableAlias +".sendOutAmount/"+ tousseItemTableAlias +".transferScale else "+ tousseItemTableAlias +".sendOutAmount end)" + + " - (case when ("+ tousseItemTableAlias +".transferScale is not null and "+ tousseItemTableAlias +".transferScale > 0) then "+ tousseItemTableAlias +".terminatePackingTaskAmount/"+ tousseItemTableAlias +".transferScale else "+ tousseItemTableAlias +".terminatePackingTaskAmount end))"; //1.器械包、敷料包、一次性物品的待发货查询 if(CollectionUtils.isEmpty(tousseTypeList) || tousseTypeList.contains(TousseDefinition.PACKAGE_TYPE_INSIDE) @@ -2376,7 +2377,7 @@ String shouldSendAmountCaseSql = CssdUtils.buildTousseItemShouldDeliverAmountSql(invoicePlanTableAlias, tousseItemTableAlias, invoiceOrigin, tousseDeliverOccasion); - tousseItemCondition += String.format(" and (%s - %s) > 0", shouldSendAmountCaseSql,tableColumnAliasPre + "sendOutAmount"); + tousseItemCondition += String.format(" and (%s - %s - %s) > 0", shouldSendAmountCaseSql,tableColumnAliasPre + "sendOutAmount",tableColumnAliasPre + "terminatePackingTaskAmount"); //增加待发货物品的过滤条件1:开平市中心医院KPSZXYY-13 回收申请单、通用申请单需要打印后才产生发货计划 boolean hideUnprintedTousseItems = CssdUtils.getSystemSetConfigByNameBool("hideUnprintedTousseItems"); List hideUnprintedTousseItemTousseTypeList = null; @@ -3284,8 +3285,8 @@ Integer sendOutAmount = applicationItem.getSendOutAmount(); if (sendOutAmount == null) continue; - // 未发数量 = 申请数量-发货数量 - int notSendAmount = appAmount - sendOutAmount; + // 未发数量 = 申请数量-发货数量-装配终止数量 + int notSendAmount = appAmount - sendOutAmount - applicationItem.getTerminatePackingTaskAmount(); if (notSendAmount <= 0) continue; String mapKey = null; @@ -5228,7 +5229,7 @@ // 新的传参方式 where8 = String.format("%s and po.id in (select invoicePlan.id from %s where %s)",where8, TousseItem.class.getSimpleName(), SqlUtils.getStringFieldInLargeCollectionsPredicate("tousseType", tousseTypeSet)); }else if(TousseItem.DIPOSABLE_YES.equals(tousseType) || TousseItem.TYPE_DIPOSABLE_GOODS.equals(tousseType)){ - where8 = String.format("%s and po.id in (select invoicePlan.id from %s where %s)",where8, TousseItem.class.getSimpleName(), String.format("(amount - sendOutAmount > 0) and tousseType = '%s')", TousseItem.TYPE_DIPOSABLE_GOODS)); + where8 = String.format("%s and po.id in (select invoicePlan.id from %s where %s)",where8, TousseItem.class.getSimpleName(), String.format("(amount - sendOutAmount - terminatePackingTaskAmount > 0) and tousseType = '%s')", TousseItem.TYPE_DIPOSABLE_GOODS)); }else if(TousseItem.DIPOSABLE_NO.equals(tousseType)){ where8 = String.format("%s and po.id in (select invoicePlan.id from %s where %s)",where8, TousseItem.class.getSimpleName(), String.format("tousseType <> '%s')", TousseItem.TYPE_DIPOSABLE_GOODS)); }else{ @@ -6252,11 +6253,11 @@ continue; } if (ti.isRecycling() && ti.getRecyclingAmount() != null && ti.getRecyclingAmount() > 0){ - if (!ti.needInvoice() || (ti.needInvoice() && MathTools.sub(ti.getRecyclingAmount(), ti.getSendOutAmount()).intValue() == 0)){ + if (!ti.needInvoice() || (ti.needInvoice() && MathTools.sub(ti.getRecyclingAmount(), ti.getSendOutAmount() + ti.getTerminatePackingTaskAmount()).intValue() == 0)){ continue; } } - if (!ti.isRecycling() && ti.needInvoice() && MathTools.sub(ti.getAmount(), ti.getSendOutAmount()).intValue()== 0){ + if (!ti.isRecycling() && ti.needInvoice() && MathTools.sub(ti.getAmount(), ti.getSendOutAmount() + ti.getTerminatePackingTaskAmount()).intValue()== 0){ continue; } if(CollectionUtils.isNotEmpty(bindings)){ @@ -6746,17 +6747,18 @@ for (TousseItem tousseItem : tousseItems) { Integer recyclingAmount = IntegerUtils.parse(tousseItem.getRecyclingAmount()); Integer sendOutAmount = IntegerUtils.parse(tousseItem.getSendOutAmount()); + Integer terminatePackingTaskAmount = IntegerUtils.parse(tousseItem.getTerminatePackingTaskAmount()); String isInvoice = tousseItem.getIsInvoice(); if (tousseItem.isRecycling() && recyclingAmount > 0){ - if (Constants.STR_NO.equals(isInvoice) || (Constants.STR_YES.equals(isInvoice) && recyclingAmount - sendOutAmount == 0)){ + if (Constants.STR_NO.equals(isInvoice) || (Constants.STR_YES.equals(isInvoice) && recyclingAmount - sendOutAmount - terminatePackingTaskAmount == 0)){ result.add(tousseItem.getTousseName()); continue; } } Integer amount = IntegerUtils.parse(tousseItem.getAmount()); String isRecycling = tousseItem.getIsRecycling(); //一次性物品isRecycling是为null,敷料包isRecycling是否 - if ((Constants.STR_NO.equals(isRecycling) || isRecycling == null) && Constants.STR_YES.equals(isInvoice) && amount - sendOutAmount == 0){ + if ((Constants.STR_NO.equals(isRecycling) || isRecycling == null) && Constants.STR_YES.equals(isInvoice) && amount - sendOutAmount - terminatePackingTaskAmount == 0){ result.add(tousseItem.getTousseName()); continue; } @@ -7658,18 +7660,18 @@ CssdUtils.buildTousseItemShouldDeliverAmountSql(invoicePlanTableAlias, tousseItemTableAlias, invoiceOrigin, tousseDeliverOccasion); //数量合计语句 - String tousseItemWaitSendAmountSumSql = "(" + shouldSendAmountCaseSql +" - "+ tousseItemTableAlias +".sendoutAmount) "; + String tousseItemWaitSendAmountSumSql = "(" + shouldSendAmountCaseSql +" - "+ tousseItemTableAlias +".sendoutAmount- "+ tousseItemTableAlias +".terminatePackingTaskAmount) "; //如果存在外来器械单的查询条件时 if(StringUtils.equals(tousseType, TousseDefinition.PACKAGE_TYPE_FOREIGN)){ //数量合计语句(外来器械包) - tousseItemWaitSendAmountSumSql = "(ti.recyclingAmount - ti.sendOutAmount)"; + tousseItemWaitSendAmountSumSql = "(ti.recyclingAmount - ti.sendOutAmount - ti.terminatePackingTaskAmount)"; if(StringUtils.equals(SupplyRoomConfig.TOUSSEDELIVEROCCASION_BEFORERECYCLING, config.getTousseDeliverOccasion()) ){ - tousseItemWaitSendAmountSumSql = "(ti.amount - ti.sendOutAmount)"; + tousseItemWaitSendAmountSumSql = "(ti.amount - ti.sendOutAmount - ti.terminatePackingTaskAmount)"; }else if(StringUtils.equals(SupplyRoomConfig.TOUSSEDELIVEROCCASION_AFTERPRERECYCLING, config.getTousseDeliverOccasion()) ){ - tousseItemWaitSendAmountSumSql = "(ti.amount - ti.sendOutAmount)"; + tousseItemWaitSendAmountSumSql = "(ti.amount - ti.sendOutAmount - ti.terminatePackingTaskAmount)"; }if(StringUtils.equals(SupplyRoomConfig.TOUSSEDELIVEROCCASION_AFTERRECYCLING, config.getTousseDeliverOccasion()) ){ - tousseItemWaitSendAmountSumSql = "(ti.recyclingAmount - ti.sendOutAmount)"; + tousseItemWaitSendAmountSumSql = "(ti.recyclingAmount - ti.sendOutAmount - ti.terminatePackingTaskAmount)"; } } @@ -7718,7 +7720,7 @@ String shouldSendAmountCaseSql = CssdUtils.buildTousseItemShouldDeliverAmountSql(invoicePlanTableAlias, tousseItemTableAlias, invoiceOrigin, tousseDeliverOccasion); - tousseItemCondition += String.format(" and (%s - %s) > 0", shouldSendAmountCaseSql,tableColumnAliasPre + "sendOutAmount"); + tousseItemCondition += String.format(" and (%s - %s - %s) > 0", shouldSendAmountCaseSql,tableColumnAliasPre + "sendOutAmount",tableColumnAliasPre + "terminatePackingTaskAmount"); if (StringUtils.isNotBlank(tousseTypes)) { Set tousseTypeSet = buildTousseTypeSet(tousseTypes); if(CollectionUtils.isNotEmpty(tousseTypeSet)){ Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java =================================================================== diff -u -r38419 -r38452 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java (.../InvoicePlanOptimizeManagerImpl.java) (revision 38419) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java (.../InvoicePlanOptimizeManagerImpl.java) (revision 38452) @@ -1,26 +1,16 @@ package com.forgon.disinfectsystem.recyclingapplication.service; import java.sql.ResultSet; -import java.text.SimpleDateFormat; -import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Date; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - import org.apache.commons.collections.MapUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -502,13 +492,13 @@ String tousseInstanceCondition = buildForeignTousseTousseInstanceCondifition(tousseInstanceTableAlias, filterParams); //数量合计语句(外来器械包) - String tousseItemWaitSendAmountSumSql = "(recyclingAmount - sendOutAmount)"; + String tousseItemWaitSendAmountSumSql = "(recyclingAmount - sendOutAmount - terminatePackingTaskAmount)"; if(StringUtils.equals(SupplyRoomConfig.TOUSSEDELIVEROCCASION_BEFORERECYCLING, config.getTousseDeliverOccasion()) ){ - tousseItemWaitSendAmountSumSql = "(amount - sendOutAmount)"; + tousseItemWaitSendAmountSumSql = "(amount - sendOutAmount - terminatePackingTaskAmount)"; }else if(StringUtils.equals(SupplyRoomConfig.TOUSSEDELIVEROCCASION_AFTERPRERECYCLING, config.getTousseDeliverOccasion()) ){ - tousseItemWaitSendAmountSumSql = "(amount - sendOutAmount)"; + tousseItemWaitSendAmountSumSql = "(amount - sendOutAmount - terminatePackingTaskAmount)"; }if(StringUtils.equals(SupplyRoomConfig.TOUSSEDELIVEROCCASION_AFTERRECYCLING, config.getTousseDeliverOccasion()) ){ - tousseItemWaitSendAmountSumSql = "(recyclingAmount - sendOutAmount)"; + tousseItemWaitSendAmountSumSql = "(recyclingAmount - sendOutAmount - terminatePackingTaskAmount)"; } //1.先查询待发货申请单的申请项 @@ -587,7 +577,7 @@ + tousseItemTableAlias +".tousseType," + tousseItemTableAlias +".diposable,ul.grade," + invoicePlanTableAlias +".applicationTime," - + "(" + shouldSendAmountCaseSql +" - "+ tousseItemTableAlias +".sendoutAmount) amount," + + "(" + shouldSendAmountCaseSql +" - "+ tousseItemTableAlias +".sendoutAmount - "+ tousseItemTableAlias +".terminatePackingTaskAmount) amount," + "(case when ("+ tousseItemTableAlias +".urgentAmount is null or "+ tousseItemTableAlias +".urgentAmount <= "+ tousseItemTableAlias +".sendoutAmount) then 0 else ("+ tousseItemTableAlias +".urgentAmount - "+ tousseItemTableAlias +".sendoutAmount) end) urgentAmount " + "from %s "+ tousseItemTableAlias +" " + "join %s "+ invoicePlanTableAlias +" on "+ tousseItemTableAlias +".recyclingApplication_ID="+ invoicePlanTableAlias +".id " @@ -663,7 +653,7 @@ + tousseItemTableAlias +".tousseType," + tousseItemTableAlias +".diposable,ul.grade," + invoicePlanTableAlias +".applicationTime," - + "(" + shouldSendAmountCaseSql +" - "+ tousseItemTableAlias +".sendoutAmount) amount," + + "(" + shouldSendAmountCaseSql +" - "+ tousseItemTableAlias +".sendoutAmount - "+ tousseItemTableAlias +".terminatePackingTaskAmount) amount," + "(case when ("+ tousseItemTableAlias +".urgentAmount is null or "+ tousseItemTableAlias +".urgentAmount <= "+ tousseItemTableAlias +".sendoutAmount) then 0 else ("+ tousseItemTableAlias +".urgentAmount - "+ tousseItemTableAlias +".sendoutAmount) end) urgentAmount " + "from %s "+ tousseItemTableAlias +" " + "join %s "+ invoicePlanTableAlias +" on "+ tousseItemTableAlias +".recyclingApplication_ID="+ invoicePlanTableAlias +".id " @@ -732,7 +722,9 @@ + "then case when ("+ tousseItemTableAlias +".transferScale is not null and "+ tousseItemTableAlias +".transferScale > 0) then "+ tousseItemTableAlias +".amount/"+ tousseItemTableAlias +".transferScale " + "else "+ tousseItemTableAlias +".amount end " + "else "+ shouldSendAmountCaseSql +" " - + "end) - (case when ("+ tousseItemTableAlias +".transferScale is not null and "+ tousseItemTableAlias +".transferScale > 0) then "+ tousseItemTableAlias +".sendOutAmount/"+ tousseItemTableAlias +".transferScale else "+ tousseItemTableAlias +".sendOutAmount end))"; + + "end) - (case when ("+ tousseItemTableAlias +".transferScale is not null and "+ tousseItemTableAlias +".transferScale > 0) then "+ tousseItemTableAlias +".sendOutAmount/"+ tousseItemTableAlias +".transferScale else "+ tousseItemTableAlias +".sendOutAmount " + + "end) - (case when ("+ tousseItemTableAlias +".transferScale is not null and "+ tousseItemTableAlias +".transferScale > 0) then "+ tousseItemTableAlias +".terminatePackingTaskAmount/"+ tousseItemTableAlias +".transferScale else "+ tousseItemTableAlias +".terminatePackingTaskAmount " + + "end))"; //器械包、敷料包、一次性物品的待发货物品查询(仅查询通用申请单、器械包申请单、回收申请单、一次性物品申请单里的器械包、敷料包、一次性物品,不需要返回申请单id) Collection commonGoodsButNotDisinfectGoodsApplicationGoodsVoList = null;