From 8950be4c6ccd2052e665630b231fb40124b43e92 Mon Sep 17 00:00:00 2001 From: jishenghua <752718920@qq.com> Date: Wed, 15 May 2024 00:53:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3bug=EF=BC=9A=E6=89=B9?= =?UTF-8?q?=E6=AC=A1=E5=95=86=E5=93=81=E8=BF=9B=E8=A1=8C=E9=94=80=E5=94=AE?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E8=B6=85=E5=87=BA=E5=BA=93=E5=AD=98=E7=A1=AE=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E4=BA=86=EF=BC=8C=E8=80=8C=E4=B8=94=E6=B2=A1=E5=BC=80?= =?UTF-8?q?=E8=B4=9F=E5=BA=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/depotItem/DepotItemService.java | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java index df8629c5..5490c5b7 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java @@ -624,15 +624,21 @@ public class DepotItemService { } //出库时判断库存是否充足 if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())){ + String stockMsg = material.getName() + "-" + barCode; BigDecimal stock = getCurrentStockByParam(depotItem.getDepotId(),depotItem.getMaterialId()); if(StringUtil.isNotEmpty(depotItem.getSku())) { //对于sku商品要换个方式计算库存 stock = getSkuStockByParam(depotItem.getDepotId(),depotItem.getMaterialExtendId(),null,null); } + if(StringUtil.isNotEmpty(depotItem.getBatchNumber())) { + //对于批次商品要换个方式计算库存 + stock = getOneBatchNumberStock(depotItem.getDepotId(), barCode, depotItem.getBatchNumber()); + stockMsg += "-批号" + depotItem.getBatchNumber(); + } BigDecimal thisBasicNumber = depotItem.getBasicNumber()==null?BigDecimal.ZERO:depotItem.getBasicNumber(); if(!systemConfigService.getMinusStockFlag() && stock.compareTo(thisBasicNumber)<0){ throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_STOCK_NOT_ENOUGH_CODE, - String.format(ExceptionConstants.MATERIAL_STOCK_NOT_ENOUGH_MSG, material.getName() + "-" + barCode)); + String.format(ExceptionConstants.MATERIAL_STOCK_NOT_ENOUGH_MSG, stockMsg)); } //出库时处理序列号 if(!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())) { @@ -1170,6 +1176,34 @@ public class DepotItemService { return reslist; } + /** + * 查询某个批号的商品库存 + * @param depotId + * @param barCode + * @param batchNumber + * @return + * @throws Exception + */ + public BigDecimal getOneBatchNumberStock(Long depotId, String barCode, String batchNumber) throws Exception { + BigDecimal totalNum = BigDecimal.ZERO; + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + Boolean inOutManageFlag = systemConfigService.getInOutManageFlag(); + List list = depotItemMapperEx.getBatchNumberList(null, null, + depotId, barCode, batchNumber, forceFlag, inOutManageFlag); + if(list!=null && list.size()>0) { + DepotItemVoBatchNumberList bn = list.get(0); + totalNum = bn.getTotalNum(); + if(bn.getTotalNum()!=null && bn.getTotalNum().compareTo(BigDecimal.ZERO)>0) { + if(bn.getUnitId()!=null) { + Unit unit = unitService.getUnit(bn.getUnitId()); + String commodityUnit = bn.getCommodityUnit(); + totalNum = unitService.parseStockByUnit(bn.getTotalNum(), unit, commodityUnit); + } + } + } + return totalNum; + } + public Long getCountByMaterialAndDepot(Long mId, Long depotId) { return depotItemMapperEx.getCountByMaterialAndDepot(mId, depotId); }