Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/DisposableGoodsStorageAdjustVo.java =================================================================== diff -u -r19508 -r28458 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/DisposableGoodsStorageAdjustVo.java (.../DisposableGoodsStorageAdjustVo.java) (revision 19508) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/DisposableGoodsStorageAdjustVo.java (.../DisposableGoodsStorageAdjustVo.java) (revision 28458) @@ -23,7 +23,7 @@ private Long adjustAmount; /** - * 单价 + * 单价(暂时不用) */ private Double price; @@ -60,5 +60,14 @@ this.price = price; } + @Override + public String toString() { + return "{\"disposableGoodsIdentificationId\":\"" + + disposableGoodsIdentificationId + + "\", \"expensiveDisposablegoodsId\":\"" + + expensiveDisposablegoodsId + "\", \"adjustAmount\":\"" + + adjustAmount + "\", \"price\":\"" + price + "\"}"; + } + } Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java =================================================================== diff -u -r28435 -r28458 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 28435) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 28458) @@ -4,6 +4,7 @@ import java.sql.SQLException; import java.sql.Timestamp; import java.sql.Types; +import java.util.AbstractMap; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -979,6 +980,7 @@ * 第四大点:回写(根据上面的一次性物品的业务数据调用相关的业务接口方法) */ writebackCommon(invoiceList); + logger.debug("回写对象:disposableGoodsStorageAdjustVoTotalList=" + disposableGoodsStorageAdjustVoTotalList); writebackForWriteBackInventoryDao(invoiceList, disposableGoodsStorageAdjustVoTotalList); String debugInfo = "发货完成,耗时(毫秒数):" + (System.currentTimeMillis() - start); logger.debug(debugInfo); @@ -4008,18 +4010,19 @@ Map newMatchIdentiToAmountMap = new LinkedHashMap(); for(Entry entry : identiToAmountMapFromStock.entrySet()){ + //该标识尚可扣减的数量 Integer amount = entry.getValue(); if(amount >= restWaitMatchSendAmount){ newMatchIdentiToAmountMap.put(entry.getKey(), restWaitMatchSendAmount); entry.setValue(amount-restWaitMatchSendAmount); - restWaitMatchSendAmount = 0; alreadyMatchedAmount = MathTools.add(alreadyMatchedAmount, restWaitMatchSendAmount).intValue(); + restWaitMatchSendAmount = 0; break; } - int matchAmount = (restWaitMatchSendAmount-amount); - newMatchIdentiToAmountMap.put(entry.getKey(), matchAmount); + restWaitMatchSendAmount = (restWaitMatchSendAmount - amount); + newMatchIdentiToAmountMap.put(entry.getKey(), amount); entry.setValue(0); - alreadyMatchedAmount += matchAmount; + alreadyMatchedAmount += amount; } barcodeAlreadyMatchedSendAmountMap.put(barcode, alreadyMatchedAmount); tousseItemMatchIdentiToAmountMapMap.put(tousseItem, newMatchIdentiToAmountMap); @@ -4032,6 +4035,21 @@ } } } + logger.debug("*******************findTousseItemAndMatchIdentificationAmountMapFromDisposableGoods tousseItemMatchIdentiToAmountMapMap begin"); + tousseItemMatchIdentiToAmountMapMap.entrySet().forEach(entry -> { + TousseItem key = entry.getKey(); + Map value = entry.getValue(); + List values = new ArrayList(); + value.entrySet().forEach(entry1 -> { + DisposableGoodsIdentification key1 = entry1.getKey(); + Integer value1 = entry1.getValue(); + values.add(String.format("DisposableGoodsIdentification:id=%s amount=%s,adjustAmount=%s", key1.getId(),key1.getAmount(),value1)); + }); + logger.debug(String.format("tousseItem:id=%s,disposableGoodsId=%s,amount=%s.IdentiToAmountMap:(%s)", + key.getId(),key.getDisposableGoodsId(),key.getAmount(), + StringUtils.join(values,";"))); + }); + logger.debug("*******************findTousseItemAndMatchIdentificationAmountMapFromDisposableGoods tousseItemMatchIdentiToAmountMapMap end"); return tousseItemMatchIdentiToAmountMapMap; } return null; @@ -4427,7 +4445,7 @@ Map idToDisposableGoodsMap,Map idToDisposableGoodsBatchMap, Map idToInvoiceMap,List disposableGoodsStorageAdjustVoTotalList){ if(CollectionUtils.isEmpty(invoiceList)){ - throw new SystemException(""); + throw new SystemException("发货失败,未生成发货单."); } Map> invoiceToInvoiceItemListMap = new LinkedHashMap>(); @@ -4837,7 +4855,7 @@ batchUpdateDisposableGoodsStockTableData(invoiceToInvoiceItemListMap, idToDisposableGoodsMap,idToDisposableGoodsBatchMap, tousseItemToBatchIdToEdgListMapMap,tousseItemToIdentiToAmountMapMap, - params,orgUnit,targetWarehouse, idColumnName,idColumnValue); + params,orgUnit,targetWarehouse, idColumnName,idColumnValue, disposableGoodsStorageAdjustVoTotalList); //批量增加收货科室(即供应室)的库存数量(如果收货科室的仓库没有相关的库存对象,则新插入相关的库存的表数据) /*batchUpdateDisposableGoodsStockTableData(true,invoiceToInvoiceItemListMap, @@ -5070,7 +5088,7 @@ Map idToDisposableGoodsMap,Map idToDisposableGoodsBatchMap, List sourceStockList,List sourceBatchStockList, List targetStockList,List targetBatchStockList, - List targetIdentificationList,String idColumnName,String idColumnValue){ + List targetIdentificationList,String idColumnName,String idColumnValue,List disposableGoodsStorageAdjustVoTotalList){ if(MapUtils.isEmpty(tousseItemToBatchIdToEdgListMapMap) && MapUtils.isEmpty(tousseItemToIdentiToAmountMapMap)){ return; @@ -5140,7 +5158,7 @@ throw new SystemException(String.format("未找到%s的发货项", expensiveDisposablegoods.getBarcode())); } Map map = buildDiposableGoodsItemMapForExpensiveDisposableGoods(invoice, invoiceItem, null, - expensiveDisposablegoods, batch,targetBatchIdToDisposableGoodsBatchStockMap, InvoiceItem.TYPE_APPLICATION); + expensiveDisposablegoods, batch,targetBatchIdToDisposableGoodsBatchStockMap, InvoiceItem.TYPE_APPLICATION, disposableGoodsStorageAdjustVoTotalList); /*map.put("amount", 1); map.put("barcode", batch.getBarcode()); map.put("batch", batch.getBatchNumber()); @@ -5198,7 +5216,7 @@ if(amount != null && amount.intValue() > 0){ Map map = buildDiposableGoodsItemMapForNotExpensiveDisposableGoods(invoice, invoiceItem, null, identi, batch, sourceBatchIdToDisposableGoodsBatchStockMap, sourceDgIdToDisposableGoodsStockMap, - ancestorIdToIdentificationMap, identiToAmountEntry, InvoiceItem.TYPE_APPLICATION); + ancestorIdToIdentificationMap, identiToAmountEntry, InvoiceItem.TYPE_APPLICATION, disposableGoodsStorageAdjustVoTotalList); /* map.put("amount", identiToAmountEntry.getValue()); map.put("barcode", batch.getBarcode()); map.put("batch", batch.getBatchNumber()); @@ -5329,11 +5347,13 @@ * @param batch 批次定义 * @param targetBatchIdToDisposableGoodsBatchStockMap 目标"批次定义对应批次库存"map * @param invoiceItemType 业务项类型 + * @param disposableGoodsStorageAdjustVoTotalList 回写的集合 * @return */ private Map buildDiposableGoodsItemMapForExpensiveDisposableGoods(Invoice invoice, InvoiceItem invoiceItem,String invoiceItemUUID, ExpensiveDisposablegoods expensiveDisposablegoods,DisposableGoodsBatch batch, - Map targetBatchIdToDisposableGoodsBatchStockMap,String invoiceItemType){ + Map targetBatchIdToDisposableGoodsBatchStockMap, + String invoiceItemType,List disposableGoodsStorageAdjustVoTotalList){ Map map = new LinkedHashMap(); Long batchId = batch.getId(); map.put("amount", 1); @@ -5347,13 +5367,21 @@ } map.put("invoiceItemUUID", invoiceItemUUID); map.put("disposableGoodsBatchID", batchId); - map.put("disposableGoodsBatchStockID", targetBatchIdToDisposableGoodsBatchStockMap.get(batchId).getId()); + if(targetBatchIdToDisposableGoodsBatchStockMap != null && targetBatchIdToDisposableGoodsBatchStockMap.get(batchId) != null){ + map.put("disposableGoodsBatchStockID", targetBatchIdToDisposableGoodsBatchStockMap.get(batchId).getId()); + } map.put("disposableGoodsID", expensiveDisposablegoods.getDisposableGoodsID()); map.put("disposableGoodsStockID", expensiveDisposablegoods.getDisposableGoodsStockID()); map.put("expensiveDisposablegoodsId", expensiveDisposablegoods.getId()); map.put("expensiveDGBarcode", expensiveDisposablegoods.getBarcode()); map.put("type", invoiceItemType); map.put("name", batch.getDiposableGoods().getShowName()); + + //构造回写的vo对象并添加至回写集合中 + DisposableGoodsStorageAdjustVo vo = new DisposableGoodsStorageAdjustVo(); + vo.setExpensiveDisposablegoodsId(expensiveDisposablegoods.getId()); + vo.setAdjustAmount(1L); + disposableGoodsStorageAdjustVoTotalList.add(vo); return map; } @@ -5369,12 +5397,13 @@ * @param ancestorIdToIdentificationMap * @param identiToAmountEntry 标识对应扣减数量的entry * @param invoiceItemType 业务项类型 + * @param disposableGoodsStorageAdjustVoTotalList 回写的集合 * @return */ private Map buildDiposableGoodsItemMapForNotExpensiveDisposableGoods(Invoice invoice, InvoiceItem invoiceItem,String invoiceItemUUID, DisposableGoodsIdentification identi,DisposableGoodsBatch batch,Map sourceBatchIdToDisposableGoodsBatchStockMap, Map sourceDgIdToDisposableGoodsStockMap,Map ancestorIdToIdentificationMap, - Entry identiToAmountEntry,String invoiceItemType){ + Entry identiToAmountEntry,String invoiceItemType,List disposableGoodsStorageAdjustVoTotalList){ Map map = new LinkedHashMap(); Long batchId = batch.getId(); Long dgId = batch.getDiposableGoods().getId(); @@ -5401,6 +5430,12 @@ } } map.put("name", batch.getDiposableGoods().getShowName()); + + //构造回写的vo对象并添加至回写集合中 + DisposableGoodsStorageAdjustVo vo = new DisposableGoodsStorageAdjustVo(); + vo.setDisposableGoodsIdentificationId(identi.getId()); + vo.setAdjustAmount(new Long(identiToAmountEntry.getValue())); + disposableGoodsStorageAdjustVoTotalList.add(vo); return map; } @@ -5508,10 +5543,10 @@ }); } //批量执行器械包扣减一次性物品库存 - /*tousseInstanceAutoDeduction(tousseItemToTdToTiListMapMap, + tousseInstanceAutoDeduction(tousseItemToTdToTiListMapMap, invoicePlanToInvoiceMap,orgUnit,targetWarehouse,params,currentDateTime, idColumnName, idColumnValue, - disposableGoodsStorageAdjustVoTotalList);*/ + disposableGoodsStorageAdjustVoTotalList); } /** @@ -6024,7 +6059,7 @@ Map>> tousseItemToBatchIdToEdgListMapMap, Map> tousseItemToIdentiToAmountMapMap, JSONObject params,OrgUnit orgUnit,WareHouse targetWarehouse, - String idColumnName,String idColumnValue){ + String idColumnName,String idColumnValue,List disposableGoodsStorageAdjustVoTotalList){ //一次性物品定义对应的库存调整数量 Map dgIdToAmountMap = new HashMap(); //一次性物品批次定义对应的库存调整数量 @@ -6044,8 +6079,7 @@ batchIdToAmountMap.put(batchId, MathTools.add(batchAdjustAmount, edgList.size()).intValue()); Long dgId = idToDisposableGoodsBatchMap.get(batchId).getDiposableGoods().getId(); - Integer dgAdjustAmount = dgIdToAmountMap.get(dgId); - dgIdToAmountMap.put(dgId, MathTools.add(dgAdjustAmount, edgList.size()).intValue()); + dgIdToAmountMap.put(dgId, MathTools.add(dgIdToAmountMap.get(dgId), edgList.size()).intValue()); allEdgList.addAll(edgList); }); }); @@ -6060,8 +6094,7 @@ batchIdToAmountMap.put(batchId, MathTools.add(batchAdjustAmount, amount).intValue()); Long dgId = idToDisposableGoodsBatchMap.get(batchId).getDiposableGoods().getId(); - Integer dgAdjustAmount = dgIdToAmountMap.get(dgId); - dgIdToAmountMap.put(dgId, MathTools.add(dgAdjustAmount, amount).intValue()); + dgIdToAmountMap.put(dgId, MathTools.add(dgIdToAmountMap.get(dgId), amount).intValue()); allIdentiToAmountEntryList.add(entry); }); }); @@ -6692,7 +6725,7 @@ idToDisposableGoodsBatchMap, sourceStockList,sourceBatchStockList, targetStockList,targetBatchStockList,targetIdentificationList, - idColumnName, idColumnValue); + idColumnName, idColumnValue, disposableGoodsStorageAdjustVoTotalList); } /** @@ -7068,7 +7101,7 @@ invoiceItemMapList.add(buildInvoiceItemMapForExpensiveDisposableGoods(invoice, null, batch, expensiveDisposablegoods, params, InvoiceItem.TYPE_AUTO_DEDUCTION,invoiceItemUUID)); //添加一次性物品业务项的map diposableGoodsItemMapList.add(buildDiposableGoodsItemMapForExpensiveDisposableGoods(invoice, null , invoiceItemUUID, expensiveDisposablegoods, batch, - null, InvoiceItem.TYPE_AUTO_DEDUCTION)); + null, InvoiceItem.TYPE_AUTO_DEDUCTION, disposableGoodsStorageAdjustVoTotalList)); invoiceItemUUIDList.add(invoiceItemUUID); edgListForInvoiceOutStock.add(expensiveDisposablegoods); }); @@ -7078,14 +7111,14 @@ int alreayOutStockAmount = 0; int restOutStockAmount = outStockAmount; String invoiceItemUUID = UUID.randomUUID().toString(); - //批次定义对应的"标识对应扣减数量map"的map + //批次定义对应的"标识对应可扣减数量map"的map Map> batchToIdentiToAmountMapMap = new LinkedHashMap>(); for(Entry identiToAmountEntry : identiToAmountMap.entrySet()){ DisposableGoodsIdentification identification = identiToAmountEntry.getKey(); - DisposableGoodsBatch batch = idToDisposableGoodsBatchMap.get(identification.getBatchStock().getId()); + DisposableGoodsBatch batch = idToDisposableGoodsBatchMap.get(identification.getBatchStock().getDisposableGoodsBatchId()); Map identiToAmountMapOfBatch = batchToIdentiToAmountMapMap.get(batch); - if(identiToAmountMapOfBatch != null){ + if(identiToAmountMapOfBatch == null){ identiToAmountMapOfBatch = new LinkedHashMap(); } identiToAmountMapOfBatch.put(identification,identiToAmountEntry.getValue()); @@ -7094,32 +7127,42 @@ for(Entry> batchToIdentiToAmountMapEntry : batchToIdentiToAmountMapMap.entrySet()){ DisposableGoodsBatch batch = batchToIdentiToAmountMapEntry.getKey(); Map identiToAmountMapOfBatch = batchToIdentiToAmountMapEntry.getValue(); + //该批次下的标识要对应自动扣减数量的map + Map identificationOfBatchToOutStockAmountMapForInvoiceOutStock = + new HashMap(); boolean finishLoop = false; for(Entry identiToAmountEntryOfBatch : identiToAmountMapOfBatch.entrySet()){ DisposableGoodsIdentification identification = identiToAmountEntryOfBatch.getKey(); - Integer amount = identiToAmountEntryOfBatch.getValue(); - if(amount >= restOutStockAmount){ + Integer amountOfIdenti = identiToAmountEntryOfBatch.getValue(); + if(amountOfIdenti >= restOutStockAmount){ alreayOutStockAmount += restOutStockAmount; - restOutStockAmount = 0; - identiToAmountMap.put(identification, amount - restOutStockAmount); + identiToAmountMap.put(identification, amountOfIdenti - restOutStockAmount); identificationToOutStockAmountMapForInvoiceOutStock.put(identification, restOutStockAmount); + Entry identificationToOutStockAmountEntryForInvoiceOutStock = + new AbstractMap.SimpleEntry(identification, restOutStockAmount); diposableGoodsItemMapList.add(buildDiposableGoodsItemMapForNotExpensiveDisposableGoods(invoice, null, invoiceItemUUID, identification, batch, - batchIdToDisposableGoodsBatchStockMap, dgIdToDisposableGoodsStockMap, - null, identiToAmountEntryOfBatch, InvoiceItem.TYPE_AUTO_DEDUCTION)); + batchIdToDisposableGoodsBatchStockMap, dgIdToDisposableGoodsStockMap, null, identificationToOutStockAmountEntryForInvoiceOutStock, + InvoiceItem.TYPE_AUTO_DEDUCTION, disposableGoodsStorageAdjustVoTotalList)); + identificationOfBatchToOutStockAmountMapForInvoiceOutStock.put(identification, restOutStockAmount); + restOutStockAmount = 0; finishLoop = true; break; }else{ - restOutStockAmount = restOutStockAmount - amount; - alreayOutStockAmount += amount; + alreayOutStockAmount += amountOfIdenti; identiToAmountMap.put(identification, 0); - identificationToOutStockAmountMapForInvoiceOutStock.put(identification, amount); + identificationToOutStockAmountMapForInvoiceOutStock.put(identification, amountOfIdenti); + Entry identificationToOutStockAmountEntryForInvoiceOutStock = + new AbstractMap.SimpleEntry(identification, amountOfIdenti); diposableGoodsItemMapList.add(buildDiposableGoodsItemMapForNotExpensiveDisposableGoods(invoice, null, invoiceItemUUID, identification, batch, - batchIdToDisposableGoodsBatchStockMap, dgIdToDisposableGoodsStockMap, - null, identiToAmountEntryOfBatch, InvoiceItem.TYPE_AUTO_DEDUCTION)); + batchIdToDisposableGoodsBatchStockMap, dgIdToDisposableGoodsStockMap, null, identificationToOutStockAmountEntryForInvoiceOutStock, + InvoiceItem.TYPE_AUTO_DEDUCTION, disposableGoodsStorageAdjustVoTotalList)); + identificationOfBatchToOutStockAmountMapForInvoiceOutStock.put(identification, amountOfIdenti); + restOutStockAmount = restOutStockAmount - amountOfIdenti; } } //添加发货项的map - invoiceItemMapList.add(buildInvoiceItemMapForNotExpensiveDisposableGoods(invoice, null, batch, identiToAmountMapOfBatch, params, InvoiceItem.TYPE_AUTO_DEDUCTION, invoiceItemUUID)); + invoiceItemMapList.add(buildInvoiceItemMapForNotExpensiveDisposableGoods(invoice, null, batch, identificationOfBatchToOutStockAmountMapForInvoiceOutStock, + params, InvoiceItem.TYPE_AUTO_DEDUCTION, invoiceItemUUID)); invoiceItemUUIDList.add(invoiceItemUUID); if(finishLoop){ break; @@ -7281,7 +7324,7 @@ Map uuidToInvoiceItemIdMap = new HashMap(); if(CollectionUtils.isNotEmpty(invoiceItemResultMapResultList)){ for (Map invoiceItemMapResult : invoiceItemResultMapResultList) { - uuidToInvoiceItemIdMap.put((String)invoiceItemMapResult.get("uuid"),(Long)invoiceItemMapResult.get("id")); + uuidToInvoiceItemIdMap.put((String)invoiceItemMapResult.get("uuid"),((Number)invoiceItemMapResult.get("id")).longValue()); } } @@ -7328,7 +7371,7 @@ } Long invoiceItemID = (Long)map.get("invoiceItemID"); if(invoiceItemID == null){ - invoiceItemID = uuidToInvoiceItemIdMap.get(map.get("uuid")); + invoiceItemID = uuidToInvoiceItemIdMap.get(map.get("invoiceItemUUID")); } if(invoiceItemID != null){ ps.setLong(9, invoiceItemID); @@ -7401,10 +7444,28 @@ stockToAdjustAmountMap.put(stock, MathTools.add(stockToAdjustAmountMap.get(stock), 1).intValue()); }); jdbcTemplate.update(String.format("update %s set status='%s' where %s", - ExpensiveDisposablegoods.class.getSimpleName(),ExpensiveDisposablegoods.STATUS_IN_WAREHOUSE, + ExpensiveDisposablegoods.class.getSimpleName(),ExpensiveDisposablegoods.STATUS_RECEIVED, SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", edgListForInvoiceOutStock.stream().map(ExpensiveDisposablegoods::getId).collect(Collectors.toList())))); } if(MapUtils.isNotEmpty(identificationToOutStockAmountMapForInvoiceOutStock)){ + String updateDisposableGoodsIdentificationDecreaseBatchSql = String.format( + "update %s set amount=amount-? where id=?", + DisposableGoodsIdentification.class.getSimpleName()); + jdbcTemplate.batchUpdate(updateDisposableGoodsIdentificationDecreaseBatchSql, new BatchPreparedStatementSetter() { + + @Override + public void setValues(PreparedStatement ps, int i) throws SQLException { + Entry entry = CollectionUtils.get(identificationToOutStockAmountMapForInvoiceOutStock.entrySet(), i); + ps.setLong(1, entry.getValue()); + ps.setLong(2, entry.getKey().getId()); + } + + @Override + public int getBatchSize() { + // TODO Auto-generated method stub + return CollectionUtils.size(identificationToOutStockAmountMapForInvoiceOutStock); + } + }); identificationToOutStockAmountMapForInvoiceOutStock.entrySet().forEach(entry -> { DisposableGoodsBatchStock batchStock = entry.getKey().getBatchStock(); Integer adjustAmount = entry.getValue(); @@ -7424,8 +7485,8 @@ @Override public void setValues(PreparedStatement ps, int i) throws SQLException { Entry entry = CollectionUtils.get(batchStockToAdjustAmountMap.entrySet(), i); - ps.setLong(1, entry.getKey().getId()); - ps.setLong(2, entry.getValue()); + ps.setLong(1, entry.getValue()); + ps.setLong(2, entry.getKey().getId()); } @Override @@ -7437,21 +7498,21 @@ } if(MapUtils.isNotEmpty(stockToAdjustAmountMap)){ String updateDisposableGoodsStockIncreaseBatchSql = String.format( - "update %s set amount=? where id=?", + "update %s set amount=amount-? where id=?", DisposableGoodsStock.class.getSimpleName()); jdbcTemplate.batchUpdate(updateDisposableGoodsStockIncreaseBatchSql, new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { Entry entry = CollectionUtils.get(stockToAdjustAmountMap.entrySet(), i); - ps.setLong(1, entry.getKey().getId()); - ps.setLong(2, entry.getValue()); + ps.setLong(1, entry.getValue()); + ps.setLong(2, entry.getKey().getId()); } @Override public int getBatchSize() { // TODO Auto-generated method stub - return stockToAdjustAmountMap.size(); + return CollectionUtils.size(stockToAdjustAmountMap); } }); } @@ -7495,7 +7556,7 @@ TousseDefinition td = entry2.getKey(); //一次性物品对应的扣减数量map Map dgToOutStockAmountMap = tdToDgToOutStockAmountMapMap.get(td); - if(tiSize > 1){ + if(tiSize >= 1){ dgToOutStockAmountMap.entrySet().forEach(entry1 -> { //将一次性物品定义拆分出高值耗材与非高值耗材 DisposableGoods dg = entry1.getKey(); @@ -7533,8 +7594,8 @@ resultMapList.stream().forEach(map -> { Long disposableGoodsId = ((Number)map.get("diposablegoods_id")).longValue(); Integer storage = ((Number)map.get("cnt")).intValue(); - Integer totalOutStockAmount = notExpensiveDisposableGoodsToOutStockMap.get(disposableGoodsId); - if(storage < notExpensiveDisposableGoodsToOutStockMap.get(disposableGoodsId)){ + Integer totalOutStockAmount = expensiveDisposableGoodsToOutStockMap.get(disposableGoodsId); + if(storage < expensiveDisposableGoodsToOutStockMap.get(disposableGoodsId)){ throw new SystemException(String.format("【%s】总的需扣减数量为%s,库存数量为%s,库存不足", idToDisposableGoodsMap.get(disposableGoodsId).getShowName() , totalOutStockAmount, storage)); } @@ -7580,7 +7641,7 @@ } }); //2.查询出可用于发货的一次性物品标识 - String queryCondition = String.format("where warehouseID=%s and amount > 0 and po.disposableGoodsBatchStock.expDate > %s and %s order by batchStock.expDate", + String queryCondition = String.format("where warehouseID=%s and amount > 0 and po.batchStock.expDate > %s and %s order by batchStock.expDate", warehouseId, dateQueryAdapter.dateAdapter(new Date()), SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.batchStock.diposableGoods.disposableGoodsID", notExpensiveDisposableGoodsToOutStockMap.keySet()));