From b9d316d8a4d433d51cebc3ce58bdb2a2874f6fc3 Mon Sep 17 00:00:00 2001 From: jishenghua <752718920@qq.com> Date: Thu, 6 Jun 2024 23:29:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=AE=A1=E7=AE=97=E6=88=90?= =?UTF-8?q?=E6=9C=AC=E4=BB=B7=E7=9A=84=E6=97=B6=E5=80=99=E7=A9=BA=E6=8C=87?= =?UTF-8?q?=E9=92=88=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/service/depotItem/DepotItemService.java | 17 +++++++++-------- .../resources/mapper_xml/DepotItemMapperEx.xml | 6 +++--- 2 files changed, 12 insertions(+), 11 deletions(-) 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 480505b8..9be070a5 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 @@ -520,6 +520,8 @@ public class DepotItemService { depotItem.setBasicNumber(oNumber.multiply(unitInfo.getRatioTwo())); //数量乘以比例 } else if (unit.equals(unitInfo.getOtherUnitThree())) { //如果等于副单位3 depotItem.setBasicNumber(oNumber.multiply(unitInfo.getRatioThree())); //数量乘以比例 + } else { + depotItem.setBasicNumber(oNumber); //数量一致 } } else { depotItem.setBasicNumber(oNumber); //其他情况 @@ -1063,18 +1065,18 @@ public class DepotItemService { BigDecimal currentUnitPrice = BigDecimal.ZERO; BigDecimal currentAllPrice = BigDecimal.ZERO; for(DepotItemVo4DetailByTypeAndMId item: itemList) { + BigDecimal basicNumber = item.getBnum()!=null?item.getBnum():BigDecimal.ZERO; //入库 if(BusinessConstants.DEPOTHEAD_TYPE_IN.equals(item.getType())) { //零售退货、销售退货 if(BusinessConstants.SUB_TYPE_RETAIL_RETURN.equals(item.getSubType())||BusinessConstants.SUB_TYPE_SALES_RETURN.equals(item.getSubType())) { //数量*当前的成本单价 - currentNumber = currentNumber.add(item.getBnum()); - BigDecimal inNum = item.getBnum()!=null?item.getBnum():BigDecimal.ZERO; - currentAllPrice = currentAllPrice.add(inNum.multiply(currentUnitPrice)); + currentNumber = currentNumber.add(basicNumber); + currentAllPrice = currentAllPrice.add(basicNumber.multiply(currentUnitPrice)); } else { //数量*单价 另外计算新的成本价 currentAllPrice = currentAllPrice.add(item.getAllPrice()); - currentNumber = currentNumber.add(item.getBnum()); + currentNumber = currentNumber.add(basicNumber); if(currentNumber.compareTo(BigDecimal.ZERO)!=0) { currentUnitPrice = currentAllPrice.divide(currentNumber, 2, BigDecimal.ROUND_HALF_UP); } @@ -1086,15 +1088,14 @@ public class DepotItemService { if(BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(item.getSubType())) { //数量*单价 另外计算新的成本价 currentAllPrice = currentAllPrice.add(item.getAllPrice()); - currentNumber = currentNumber.add(item.getBnum()); + currentNumber = currentNumber.add(basicNumber); if(currentNumber.compareTo(BigDecimal.ZERO)!=0) { currentUnitPrice = currentAllPrice.divide(currentNumber, 2, BigDecimal.ROUND_HALF_UP); } } else { - currentNumber = currentNumber.add(item.getBnum()); - BigDecimal outNum = item.getBnum()!=null?item.getBnum():BigDecimal.ZERO; + currentNumber = currentNumber.add(basicNumber); //数量*当前的成本单价 - currentAllPrice = currentAllPrice.add(outNum.multiply(currentUnitPrice)); + currentAllPrice = currentAllPrice.add(basicNumber.multiply(currentUnitPrice)); } } } diff --git a/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml index fd163f88..06f8811e 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml @@ -151,11 +151,11 @@ (select dh.number,me.bar_code,m.name material_name,dh.type,dh.sub_type, case when type='入库' then ifnull(di.basic_number,0) - when type='出库' then 0-di.basic_number + when type='出库' then 0-ifnull(di.basic_number,0) when dh.sub_type='组装单' and di.material_type='组合件' then ifnull(di.basic_number,0) - when dh.sub_type='组装单' and di.material_type='普通子件' then 0-di.basic_number + when dh.sub_type='组装单' and di.material_type='普通子件' then 0-ifnull(di.basic_number,0) when dh.sub_type='拆卸单' and di.material_type='普通子件' then ifnull(di.basic_number,0) - when dh.sub_type='拆卸单' and di.material_type='组合件' then 0-di.basic_number + when dh.sub_type='拆卸单' and di.material_type='组合件' then 0-ifnull(di.basic_number,0) when dh.sub_type='盘点复盘' then ifnull(di.basic_number,0) else 0 end