|
|
@ -2,6 +2,7 @@ package com.win.module.wms.dal.mysql.balance; |
|
|
|
|
|
|
|
import cn.hutool.json.JSONObject; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.win.framework.common.exception.ServiceException; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
import com.win.framework.mybatis.core.mapper.BaseMapperX; |
|
|
@ -18,6 +19,8 @@ import org.apache.ibatis.annotations.Mapper; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.LOCATION_DISABLE_NEGATIVE; |
|
|
|
|
|
|
|
/** |
|
|
|
* 库存余额 Mapper |
|
|
|
* |
|
|
@ -27,7 +30,7 @@ import java.util.List; |
|
|
|
public interface BalanceMapper extends BaseMapperX<BalanceDO> { |
|
|
|
|
|
|
|
/** |
|
|
|
* 更新库存余额数量 |
|
|
|
* 更新库存余额数量,出库qty是负数 |
|
|
|
*/ |
|
|
|
default Boolean updateBalanceQty(BalanceCreateReqVO reqVO, RuleDO ruleDO) { |
|
|
|
QueryWrapper<BalanceDO> queryWrapper = new QueryWrapper<>(); |
|
|
@ -43,14 +46,22 @@ public interface BalanceMapper extends BaseMapperX<BalanceDO> { |
|
|
|
result = this.insert(balanceDO); |
|
|
|
} else {//存在只更新数量
|
|
|
|
balanceDO.setQty(balanceDO.getQty().add(reqVO.getQty())); |
|
|
|
//计算单价和金额
|
|
|
|
BigDecimal amount = balanceDO.getAmount().add(reqVO.getAmount()); |
|
|
|
balanceDO.setAmount(amount); |
|
|
|
balanceDO.setSinglePrice(amount.divide(balanceDO.getQty())); |
|
|
|
result = this.updateById(balanceDO); |
|
|
|
} |
|
|
|
// 此处增加判断是否允许零库存
|
|
|
|
if(balanceDO.getQty().compareTo(BigDecimal.ZERO) == 0) { |
|
|
|
if(balanceDO.getQty().compareTo(BigDecimal.ZERO) == 0) {// 此处增加判断是否允许零库存
|
|
|
|
JSONObject jsonObject = new JSONObject(ruleDO.getCondition()); |
|
|
|
if(!"TRUE".equals(jsonObject.getStr("EnableKeepZero"))) { |
|
|
|
this.deleteById(balanceDO.getId()); |
|
|
|
} |
|
|
|
} else if(balanceDO.getQty().compareTo(BigDecimal.ZERO) < 0) {// 此处增加判断是否允许负库存
|
|
|
|
JSONObject jsonObject = new JSONObject(ruleDO.getCondition()); |
|
|
|
if(!"TRUE".equals(jsonObject.getStr("EnableNegative"))) { |
|
|
|
throw new ServiceException(LOCATION_DISABLE_NEGATIVE); |
|
|
|
} |
|
|
|
} |
|
|
|
return result > 0; |
|
|
|
} |
|
|
@ -74,8 +85,6 @@ public interface BalanceMapper extends BaseMapperX<BalanceDO> { |
|
|
|
.eqIfPresent(BalanceDO::getOwnerCode, reqVO.getOwnerCode()) |
|
|
|
.eqIfPresent(BalanceDO::getUom, reqVO.getUom()) |
|
|
|
.eqIfPresent(BalanceDO::getQty, reqVO.getQty()) |
|
|
|
.eqIfPresent(BalanceDO::getLockedQty, reqVO.getLockedQty()) |
|
|
|
.eqIfPresent(BalanceDO::getUsableQty, reqVO.getUsableQty()) |
|
|
|
.eqIfPresent(BalanceDO::getSinglePrice, reqVO.getSinglePrice()) |
|
|
|
.eqIfPresent(BalanceDO::getAmount, reqVO.getAmount()) |
|
|
|
.betweenIfPresent(BalanceDO::getPutInTime, reqVO.getPutInTime()) |
|
|
@ -109,8 +118,6 @@ public interface BalanceMapper extends BaseMapperX<BalanceDO> { |
|
|
|
.eqIfPresent(BalanceDO::getOwnerCode, reqVO.getOwnerCode()) |
|
|
|
.eqIfPresent(BalanceDO::getUom, reqVO.getUom()) |
|
|
|
.eqIfPresent(BalanceDO::getQty, reqVO.getQty()) |
|
|
|
.eqIfPresent(BalanceDO::getLockedQty, reqVO.getLockedQty()) |
|
|
|
.eqIfPresent(BalanceDO::getUsableQty, reqVO.getUsableQty()) |
|
|
|
.eqIfPresent(BalanceDO::getSinglePrice, reqVO.getSinglePrice()) |
|
|
|
.eqIfPresent(BalanceDO::getAmount, reqVO.getAmount()) |
|
|
|
.betweenIfPresent(BalanceDO::getPutInTime, reqVO.getPutInTime()) |
|
|
|