解决计算成本价的时候空指针异常

This commit is contained in:
jishenghua 2024-06-06 23:29:43 +08:00
parent d2f3e3d5e9
commit b9d316d8a4
2 changed files with 12 additions and 11 deletions

View File

@ -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));
}
}
}

View File

@ -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