diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index d2652442..9247e63c 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java @@ -170,6 +170,7 @@ public interface ErrorCodeConstants { ErrorCode LOCATION_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_037_011, "导入库位不能为空"); ErrorCode LOCATION_ITEMCODE_AND_LOCATIONCODE_NOT_EXISTS = new ErrorCode(1_000_037_012, "未查找到零件item_code库位location_code对应的上架策略"); ErrorCode LOCATION_HANDLE_TOLOCATIONCODE_AND_RECOMMEND_TOLOCATIONCODECODE_INCONFORMITY = new ErrorCode(1_000_037_013, "实际库位与任务推荐的目标库位不一致"); + ErrorCode LOCATION_DISABLE_NEGATIVE = new ErrorCode(1_000_037_014, "库位不允许负库存"); //车间ErrorCode ErrorCode WORKSHOP_NOT_EXISTS = new ErrorCode(1_038_000_000, "车间不存在"); ErrorCode WORKSHOP_CODE_EXISTS = new ErrorCode(1_039_000_001, "code已存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceBaseVO.java index 535ece19..529080ff 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceBaseVO.java @@ -73,12 +73,6 @@ public class BalanceBaseVO { @Schema(description = "数量") private BigDecimal qty; - @Schema(description = "锁定数量") - private BigDecimal lockedQty; - - @Schema(description = "可用数量") - private BigDecimal usableQty; - @Schema(description = "单价") private BigDecimal singlePrice; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceExcelVO.java index c35cad1a..409b8886 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceExcelVO.java @@ -1,25 +1,13 @@ package com.win.module.wms.controller.balance.vo; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; - import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; /** @@ -83,12 +71,6 @@ public class BalanceExcelVO { @ExcelProperty("数量") private BigDecimal qty; - @ExcelProperty("锁定数量") - private BigDecimal lockedQty; - - @ExcelProperty("可用数量") - private BigDecimal usableQty; - @ExcelProperty("单价") private BigDecimal singlePrice; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceExportReqVO.java index dc84c09f..973f40b2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceExportReqVO.java @@ -1,13 +1,11 @@ package com.win.module.wms.controller.balance.vo; -import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import com.win.framework.common.pojo.PageParam; import java.time.LocalDateTime; -import org.springframework.format.annotation.DateTimeFormat; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -69,12 +67,6 @@ public class BalanceExportReqVO { @Schema(description = "数量") private BigDecimal qty; - @Schema(description = "锁定数量") - private BigDecimal lockedQty; - - @Schema(description = "可用数量") - private BigDecimal usableQty; - @Schema(description = "单价") private BigDecimal singlePrice; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceImportExcelVo.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceImportExcelVo.java index c572f598..09055631 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceImportExcelVo.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalanceImportExcelVo.java @@ -5,7 +5,6 @@ import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; import com.win.module.wms.enums.DictTypeConstants; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -78,12 +77,6 @@ public class BalanceImportExcelVo { @ExcelProperty("数量") private BigDecimal qty; - @ExcelProperty("锁定数量") - private BigDecimal lockedQty; - - @ExcelProperty("可用数量") - private BigDecimal usableQty; - @ExcelProperty("单价") private BigDecimal singlePrice; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalancePageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalancePageReqVO.java index 0fdc8075..2b37e348 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalancePageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/balance/vo/BalancePageReqVO.java @@ -1,12 +1,13 @@ package com.win.module.wms.controller.balance.vo; -import lombok.*; - -import java.math.BigDecimal; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import com.win.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; import java.time.LocalDateTime; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -71,12 +72,6 @@ public class BalancePageReqVO extends PageParam { @Schema(description = "数量") private BigDecimal qty; - @Schema(description = "锁定数量") - private BigDecimal lockedQty; - - @Schema(description = "可用数量") - private BigDecimal usableQty; - @Schema(description = "单价") private BigDecimal singlePrice; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/balance/BalanceDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/balance/BalanceDO.java index 65b425e1..b08707da 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/balance/BalanceDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/balance/BalanceDO.java @@ -1,21 +1,14 @@ package com.win.module.wms.dal.dataobject.balance; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.sun.xml.bind.v2.TODO; +import com.win.framework.mybatis.core.dataobject.BaseDO; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; + import java.math.BigDecimal; import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.*; -import com.win.framework.mybatis.core.dataobject.BaseDO; /** * 库存余额 DO @@ -108,14 +101,6 @@ public class BalanceDO extends BaseDO { * 数量 */ private BigDecimal qty; - /** - * 锁定数量 - */ - private BigDecimal lockedQty; - /** - * 可用数量 - */ - private BigDecimal usableQty; /** * 单价 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java index 4c10858d..4fbfe74a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/balance/BalanceMapper.java @@ -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 { /** - * 更新库存余额数量 + * 更新库存余额数量,出库qty是负数 */ default Boolean updateBalanceQty(BalanceCreateReqVO reqVO, RuleDO ruleDO) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -43,14 +46,22 @@ public interface BalanceMapper extends BaseMapperX { 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 { .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 { .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())