Index: ssts-web/src/main/webapp/disinfectsystem/config/gzfdzl/config.js =================================================================== diff -u -r27538 -r28479 --- ssts-web/src/main/webapp/disinfectsystem/config/gzfdzl/config.js (.../config.js) (revision 27538) +++ ssts-web/src/main/webapp/disinfectsystem/config/gzfdzl/config.js (.../config.js) (revision 28479) @@ -83,5 +83,7 @@ //是否启用合同管理模块,默认为否 showContractManage : true, //禁用基数限制 - disableCardinalNumLimit:true + disableCardinalNumLimit:true, + //供应室发货给自己时扣减物品的库存 + decreaseGoodsStorageWhenCSSDSendToItself : true } \ No newline at end of file Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java =================================================================== diff -u -r28463 -r28479 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 28463) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 28479) @@ -986,7 +986,7 @@ logger.debug(debugInfo); //启用发货保存调试模式(默认不启用) if(CssdUtils.getSystemSetConfigByNameBool("enableInvoiceSubmitDebug")){ - throw new RuntimeException("调试:" + debugInfo); + throw new RuntimeException("test调试:" + debugInfo); } context.setInvoiceList(invoiceList); return context; @@ -6047,7 +6047,7 @@ * @param invoiceToInvoiceItemListMap * @param tousseItemToBatchIdToEdgListMapMap * @param tousseItemToIdentiToAmountMapMap - * @param orgUnit + * @param orgUnit 收货科室 * @param targetWarehouse * @param idColumnName * @param idColumnValue @@ -6198,11 +6198,21 @@ }); } + //供应室发货给自己时扣减物品的库存,默认值为true(值为true:则供应室发货给自己时,要扣减该发货物品的库存 ;值为false或者没有配置:则供应室发货给自己时,该物品的库存保持不变) + boolean decreaseGoodsStorageWhenCSSDSendToItself = CssdUtils.getSystemSetConfigByNameBool("decreaseGoodsStorageWhenCSSDSendToItself"); + //是否需要增加目标仓库(即收货科室的默认仓库)库存(仅一次性物品):(ASSFDZLYY-25 供应室填申请单申领一次性物品发货后,供应室库存没有扣减一次性物品) + boolean needIncreaseTargetOrgUnitDgStock = (decreaseGoodsStorageWhenCSSDSendToItself && StringUtils.equals(AcegiHelper.getCurrentOrgUnitCode(), params.optString("departCode"))) ? false : true; List targetStockList = objectDao.getBySql_ForUpdate2(DisposableGoodsStock.class.getSimpleName(), String.format("where warehouseID=%s and %s", targetWarehouse.getId(), SqlUtils.getNonStringFieldInLargeCollectionsPredicate("disposableGoodsID", dgIdToAmountMap.keySet()))); + //事先通过jdbcTemplate的bean对象update过表数据,重新刷新一下对象后再查 + if(CollectionUtils.isNotEmpty(targetStockList)){ + targetStockList.stream().forEach(ts -> { + objectDao.refresh(ts); + }); + } /* * 1.对有找到相关物品的目标收货仓库的库存对象进行update更新 * 2.对未找到相关物品的目标收货仓库的库存对象进行insert新增 @@ -6217,32 +6227,35 @@ needInsertStockDgIdList.add(dgId); } }); - targetStockList.stream().forEach(stock -> { - Map map = new HashMap(); - Long dgId = stock.getDisposableGoodsID(); - Long adjustAmount = MathTools.add(stock.getAmount(), dgIdToAmountMap.get(dgId)).longValue(); - map.put("amount", adjustAmount); - map.put("id", stock.getId()); - disaposableGoodsStockIncreaseUpdateMapList.add(map); - }); - String updateDisposableGoodsStockIncreaseBatchSql = String.format( - "update %s set amount=? where id=?", - DisposableGoodsStock.class.getSimpleName()); - jdbcTemplate.batchUpdate(updateDisposableGoodsStockIncreaseBatchSql, new BatchPreparedStatementSetter() { - - @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { - Map map = disaposableGoodsStockIncreaseUpdateMapList.get(i); - ps.setLong(1, (Long)map.get("amount")); - ps.setLong(2, (Long)map.get("id")); - } - - @Override - public int getBatchSize() { - // TODO Auto-generated method stub - return disaposableGoodsStockIncreaseUpdateMapList.size(); - } - }); + //如果需要增加库存时,则增加 + if(needIncreaseTargetOrgUnitDgStock){ + targetStockList.stream().forEach(stock -> { + Map map = new HashMap(); + Long dgId = stock.getDisposableGoodsID(); + Long adjustAmount = MathTools.add(stock.getAmount(), dgIdToAmountMap.get(dgId)).longValue(); + map.put("amount", adjustAmount); + map.put("id", stock.getId()); + disaposableGoodsStockIncreaseUpdateMapList.add(map); + }); + String updateDisposableGoodsStockIncreaseBatchSql = String.format( + "update %s set amount=? where id=?", + DisposableGoodsStock.class.getSimpleName()); + jdbcTemplate.batchUpdate(updateDisposableGoodsStockIncreaseBatchSql, new BatchPreparedStatementSetter() { + + @Override + public void setValues(PreparedStatement ps, int i) throws SQLException { + Map map = disaposableGoodsStockIncreaseUpdateMapList.get(i); + ps.setLong(1, (Long)map.get("amount")); + ps.setLong(2, (Long)map.get("id")); + } + + @Override + public int getBatchSize() { + // TODO Auto-generated method stub + return disaposableGoodsStockIncreaseUpdateMapList.size(); + } + }); + } }else{ needInsertStockDgIdList.addAll(allDgIdSet); } @@ -6252,7 +6265,7 @@ needInsertStockDgIdList.stream().forEach(dgId -> { Map map = new HashMap(); DisposableGoods dg = idToDisposableGoodsMap.get(dgId); - map.put("amount", new Long(dgIdToAmountMap.get(dgId))); + map.put("amount", needIncreaseTargetOrgUnitDgStock ? new Long(dgIdToAmountMap.get(dgId)) : 0L); map.put("applicationSpecification", dg.getApplicationSpecification()); map.put("certification", dg.getCertification()); map.put("disposableGoodsID", dgId); @@ -6365,6 +6378,12 @@ String.format("where warehouseID=%s and %s", targetWarehouse.getId(), SqlUtils.getNonStringFieldInLargeCollectionsPredicate("disposableGoodsBatchId", batchIdToAmountMap.keySet()))); + //事先通过jdbcTemplate的bean对象update过表数据,重新刷新一下对象后再查 + if(CollectionUtils.isNotEmpty(targetBatchStockList)){ + targetBatchStockList.stream().forEach(tbs -> { + objectDao.refresh(tbs); + }); + } /* * 1.对未找到相关物品的目标收货仓库的批次库存对象进行insert新增 * 2.对有找到相关物品的目标收货仓库的批次库存对象进行update更新 @@ -6375,39 +6394,41 @@ if(CollectionUtils.isEmpty(targetBatchStockList)){ needInsertBatchStockBatchIdList.addAll(allBatchIdSet); }else{ - Set alreadyBatchIdSet = targetBatchStockList.stream().map(DisposableGoodsBatchStock::getDisposableGoodsBatchId).collect(Collectors.toSet()); - batchIdToAmountMap.entrySet().forEach(entry -> { - Long batchId = entry.getKey(); - if(!alreadyBatchIdSet.contains(batchId)){ - needInsertBatchStockBatchIdList.add(batchId); - } - }); - targetBatchStockList.stream().forEach(batchStock -> { - Map map = new HashMap(); - Long batchId = batchStock.getDisposableGoodsBatchId(); - Long adjustAmount = MathTools.add(batchStock.getStorage(), batchIdToAmountMap.get(batchId)).longValue(); - map.put("storage", adjustAmount); - map.put("id", batchStock.getId()); - disaposableGoodsBatchStockIncreaseUpdateMapList.add(map); - }); - String updateDisposableGoodsStockIncreaseBatchSql = String.format( - "update %s set storage=? where id=?", - DisposableGoodsBatchStock.class.getSimpleName()); - jdbcTemplate.batchUpdate(updateDisposableGoodsStockIncreaseBatchSql, new BatchPreparedStatementSetter() { - - @Override - public void setValues(PreparedStatement ps, int i) throws SQLException { - Map map = disaposableGoodsBatchStockIncreaseUpdateMapList.get(i); - ps.setLong(1, (Long)map.get("storage")); - ps.setLong(2, (Long)map.get("id")); - } - - @Override - public int getBatchSize() { - // TODO Auto-generated method stub - return disaposableGoodsBatchStockIncreaseUpdateMapList.size(); - } - }); + if(needIncreaseTargetOrgUnitDgStock){ + Set alreadyBatchIdSet = targetBatchStockList.stream().map(DisposableGoodsBatchStock::getDisposableGoodsBatchId).collect(Collectors.toSet()); + batchIdToAmountMap.entrySet().forEach(entry -> { + Long batchId = entry.getKey(); + if(!alreadyBatchIdSet.contains(batchId)){ + needInsertBatchStockBatchIdList.add(batchId); + } + }); + targetBatchStockList.stream().forEach(batchStock -> { + Map map = new HashMap(); + Long batchId = batchStock.getDisposableGoodsBatchId(); + Long adjustAmount = MathTools.add(batchStock.getStorage(), batchIdToAmountMap.get(batchId)).longValue(); + map.put("storage", adjustAmount); + map.put("id", batchStock.getId()); + disaposableGoodsBatchStockIncreaseUpdateMapList.add(map); + }); + String updateDisposableGoodsStockIncreaseBatchSql = String.format( + "update %s set storage=? where id=?", + DisposableGoodsBatchStock.class.getSimpleName()); + jdbcTemplate.batchUpdate(updateDisposableGoodsStockIncreaseBatchSql, new BatchPreparedStatementSetter() { + + @Override + public void setValues(PreparedStatement ps, int i) throws SQLException { + Map map = disaposableGoodsBatchStockIncreaseUpdateMapList.get(i); + ps.setLong(1, (Long)map.get("storage")); + ps.setLong(2, (Long)map.get("id")); + } + + @Override + public int getBatchSize() { + // TODO Auto-generated method stub + return disaposableGoodsBatchStockIncreaseUpdateMapList.size(); + } + }); + } } //如果有需要插入库存新数据时 if(CollectionUtils.isNotEmpty(needInsertBatchStockBatchIdList)){ @@ -6436,7 +6457,7 @@ map.put("produceDate", batch.getProduceDate()); map.put("producingArea", batch.getProducingArea()); map.put("sterileBatchNumber", batch.getSterileBatchNumber()); - map.put("storage", new Long(batchIdToAmountMap.get(batchId))); + map.put("storage", needIncreaseTargetOrgUnitDgStock ? new Long(batchIdToAmountMap.get(batchId)) : 0L); map.put("supplierId", batch.getSupplierId()); map.put("supplierName", batch.getSupplierName()); map.put("warehouseID", targetWarehouse.getId()); @@ -6567,7 +6588,7 @@ map.put("identification", identi.getIdentification()); map.put("ancestorId", identi.getId()); map.put("entryDate", identi.getEntryDate()); - map.put("amount", amount); + map.put("amount", needIncreaseTargetOrgUnitDgStock ? amount : 0L); map.put("price", identi.getPrice()); List batchStockList = targetBatchStockList.stream().filter(batchStock -> { return batchStock.getDisposableGoodsBatchId().equals(identi.getDisposableGoodsBatchID());