From 20440ed330da520ea7dd9016d1dd3983e86bd760 Mon Sep 17 00:00:00 2001 From: HuangHuiKang Date: Mon, 6 Jul 2026 16:39:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E6=98=BE=E7=A4=BA=E9=94=81=E5=AE=9A=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/pallet/ErpPalletController.java | 18 +++++++- .../admin/pallet/vo/ErpPalletRespVO.java | 3 ++ .../admin/stock/ErpStockController.java | 7 +++ .../admin/stock/vo/stock/ErpStockRespVO.java | 3 ++ .../erp/dal/mysql/pallet/ErpPalletMapper.java | 21 ++++++--- .../erp/dal/mysql/stock/ErpStockMapper.java | 25 +++++++++-- .../mysql/stock/ErpStockOutItemMapper.java | 6 +++ .../stock/ErpStockOutItemPalletMapper.java | 44 +++++++++++++++++++ .../erp/service/pallet/ErpPalletService.java | 3 ++ .../service/pallet/ErpPalletServiceImpl.java | 15 +++++++ .../service/stock/ErpStockOutServiceImpl.java | 16 ++++--- .../mapper/autocode/ErpStockOutItemMapper.xml | 23 ++++++++++ 12 files changed, 167 insertions(+), 17 deletions(-) diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/pallet/ErpPalletController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/pallet/ErpPalletController.java index 53f073510..c37e88a3c 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/pallet/ErpPalletController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/pallet/ErpPalletController.java @@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -84,7 +85,10 @@ public class ErpPalletController { PageResult pageResult = palletService.getPalletPage(pageReqVO); Map qrcodeMap = qrcodeService.selectQrcodeUrlMapByBizTypeAndIds(QrcodeBizTypeEnum.PALLET.getCode(), convertList(pageResult.getList(), ErpPalletDO::getId)); - List list = convertList(pageResult.getList(), pallet -> buildPalletRespVO(pallet, qrcodeMap)); + Map lockedPackageCountMap = palletService.getLockedPackageCountMap( + convertList(pageResult.getList(), ErpPalletDO::getId)); + List list = convertList(pageResult.getList(), + pallet -> buildPalletRespVO(pallet, qrcodeMap, lockedPackageCountMap)); return success(new PageResult<>(list, pageResult.getTotal())); } @@ -98,7 +102,10 @@ public class ErpPalletController { PageResult pageResult = palletService.getPalletPage(pageReqVO); Map qrcodeMap = qrcodeService.selectQrcodeUrlMapByBizTypeAndIds(QrcodeBizTypeEnum.PALLET.getCode(), convertList(pageResult.getList(), ErpPalletDO::getId)); - List list = convertList(pageResult.getList(), pallet -> buildPalletRespVO(pallet, qrcodeMap)); + Map lockedPackageCountMap = palletService.getLockedPackageCountMap( + convertList(pageResult.getList(), ErpPalletDO::getId)); + List list = convertList(pageResult.getList(), + pallet -> buildPalletRespVO(pallet, qrcodeMap, lockedPackageCountMap)); ExcelUtils.write(response, "托盘.xls", "数据", ErpPalletRespVO.class, list); } @@ -151,6 +158,13 @@ public class ErpPalletController { return respVO; } + private ErpPalletRespVO buildPalletRespVO(ErpPalletDO pallet, Map qrcodeMap, + Map lockedPackageCountMap) { + ErpPalletRespVO respVO = buildPalletRespVO(pallet, qrcodeMap); + respVO.setLockedPackageCount(lockedPackageCountMap.getOrDefault(pallet.getId(), BigDecimal.ZERO)); + return respVO; + } + private void fillPackagingInfo(ErpPalletRespVO respVO) { if (respVO == null) { return; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/pallet/vo/ErpPalletRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/pallet/vo/ErpPalletRespVO.java index 95335de51..5b7681b44 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/pallet/vo/ErpPalletRespVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/pallet/vo/ErpPalletRespVO.java @@ -69,6 +69,9 @@ public class ErpPalletRespVO { @Schema(description = "当前包数", example = "20") private BigDecimal packageCount; + @Schema(description = "锁定包数", example = "5") + private BigDecimal lockedPackageCount; + @Schema(description = "二维码", example = "https://xxx.com/qrcode/pallet/1") @ExcelProperty("二维码") private String qrcode; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java index 334ab92e9..3a182c8d1 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java @@ -17,6 +17,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.pallet.ErpPalletDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO; +import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutItemMapper; import cn.iocoder.yudao.module.erp.service.pallet.ErpPalletService; import cn.iocoder.yudao.module.erp.service.product.ErpProductService; import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService; @@ -70,6 +71,10 @@ public class ErpStockController { private ErpStockRecordService stockRecordService; @Resource private ErpPalletService palletService; + @Resource + private ErpStockOutItemMapper stockOutItemMapper; + + private static final List LOCKED_STOCK_OUT_STATUSES = java.util.Arrays.asList(10, 0, 1); @GetMapping("/get") @Operation(summary = "获得产品库存") @@ -174,6 +179,8 @@ public class ErpStockController { fillPackagingSnapshot(respVO, product); } fillDerivedFields(respVO); + respVO.setLockedStockCount(stockOutItemMapper.selectLockedStockCount( + respVO.getProductId(), respVO.getWarehouseId(), respVO.getAreaId(), LOCKED_STOCK_OUT_STATUSES)); respVO.setPalletCount(getPalletCount(respVO)); respVO.setPackagingRule(buildPackagingRule(respVO)); respVO.setStockDisplay(buildStockDisplay(respVO)); diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java index 893779d4e..ea80e6a56 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/stock/ErpStockRespVO.java @@ -39,6 +39,9 @@ public class ErpStockRespVO { @ExcelProperty("库存数量") private BigDecimal count; + @Schema(description = "锁定库存数量", example = "10") + private BigDecimal lockedStockCount; + @Schema(description = "产品分类编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11161") private Long categoryId; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/pallet/ErpPalletMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/pallet/ErpPalletMapper.java index feeca1ca9..4d16caf4a 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/pallet/ErpPalletMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/pallet/ErpPalletMapper.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.erp.dal.mysql.pallet; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.pallet.enums.ErpPalletStatusEnum; import cn.iocoder.yudao.module.erp.controller.admin.pallet.vo.ErpPalletPageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.pallet.ErpPalletDO; import org.apache.ibatis.annotations.Mapper; @@ -16,19 +17,29 @@ import java.util.List; public interface ErpPalletMapper extends BaseMapperX { default PageResult selectPage(ErpPalletPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() + LambdaQueryWrapperX query = new LambdaQueryWrapperX() .likeIfPresent(ErpPalletDO::getCode, reqVO.getCode()) .eqIfPresent(ErpPalletDO::getPalletType, reqVO.getPalletType()) - .eqIfPresent(ErpPalletDO::getStatus, reqVO.getStatus()) - .neIfPresent(ErpPalletDO::getStatus, reqVO.getExcludeStatus()) .eqIfPresent(ErpPalletDO::getWarehouseId, reqVO.getWarehouseId()) .eqIfPresent(ErpPalletDO::getAreaId, reqVO.getAreaId()) .likeIfPresent(ErpPalletDO::getPlanCode, reqVO.getPlanCode()) - .eqIfPresent(ErpPalletDO::getProductId, reqVO.getProductId()) .betweenIfPresent(ErpPalletDO::getPurchaseDate, reqVO.getPurchaseDate()) .betweenIfPresent(ErpPalletDO::getUseDate, reqVO.getUseDate()) .betweenIfPresent(ErpPalletDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(ErpPalletDO::getId)); + .orderByDesc(ErpPalletDO::getId); + if (reqVO.getProductId() != null && reqVO.getExcludeStatus() != null && reqVO.getStatus() == null) { + query.and(wrapper -> wrapper + .and(productWrapper -> productWrapper + .eq(ErpPalletDO::getProductId, reqVO.getProductId()) + .ne(ErpPalletDO::getStatus, reqVO.getExcludeStatus())) + .or() + .eq(ErpPalletDO::getStatus, ErpPalletStatusEnum.IDLE.getStatus())); + } else { + query.eqIfPresent(ErpPalletDO::getStatus, reqVO.getStatus()) + .neIfPresent(ErpPalletDO::getStatus, reqVO.getExcludeStatus()) + .eqIfPresent(ErpPalletDO::getProductId, reqVO.getProductId()); + } + return selectPage(reqVO, query); } default ErpPalletDO selectByCode(String code) { diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java index f6d504660..355c00563 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -85,11 +86,27 @@ public interface ErpStockMapper extends BaseMapperX { } default ErpStockDO selectByProductIdAndWarehouseIdAndAreaId(Long productId, Long warehouseId, Long areaId) { - return selectOne(new LambdaQueryWrapperX() + if (areaId != null) { + return selectOne(new LambdaQueryWrapperX() + .eq(ErpStockDO::getProductId, productId) + .eq(ErpStockDO::getWarehouseId, warehouseId) + .eq(ErpStockDO::getAreaId, areaId)); + } + List stockList = selectList(new LambdaQueryWrapperX() .eq(ErpStockDO::getProductId, productId) - .eq(ErpStockDO::getWarehouseId, warehouseId) - .eq(areaId != null, ErpStockDO::getAreaId, areaId) - .isNull(areaId == null, ErpStockDO::getAreaId)); + .eq(ErpStockDO::getWarehouseId, warehouseId)); + if (CollUtil.isEmpty(stockList)) { + return null; + } + ErpStockDO stock = stockList.get(0); + stock.setId(null); + stock.setAreaId(null); + stock.setAreaName(null); + stock.setCount(stockList.stream() + .map(ErpStockDO::getCount) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add)); + return stock; } default ErpStockDO selectByProductIdAndWarehouseIdAndCategoryType(Long productId, Long warehouseId, Integer categoryType) { diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java index f14a848d4..e1f82569a 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemMapper.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.Collection; import java.util.List; @@ -30,4 +31,9 @@ public interface ErpStockOutItemMapper extends BaseMapperX { List selectOutIds(@Param("productId") Long productId, @Param("warehouseId") Long warehouseId); + BigDecimal selectLockedStockCount(@Param("productId") Long productId, + @Param("warehouseId") Long warehouseId, + @Param("areaId") Long areaId, + @Param("statuses") Collection statuses); + } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemPalletMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemPalletMapper.java index a87bd9e26..ee3d9a6ed 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemPalletMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutItemPalletMapper.java @@ -3,9 +3,15 @@ package cn.iocoder.yudao.module.erp.dal.mysql.stock; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemPalletDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import java.math.BigDecimal; import java.util.Collection; +import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Mapper public interface ErpStockOutItemPalletMapper extends BaseMapperX { @@ -21,4 +27,42 @@ public interface ErpStockOutItemPalletMapper extends BaseMapperX selectLockedPackageCountMap(Collection palletIds, + Collection statuses, + String outType) { + if (palletIds == null || palletIds.isEmpty()) { + return Collections.emptyMap(); + } + List> list = selectLockedPackageCountList(palletIds, statuses, outType); + if (list == null || list.isEmpty()) { + return Collections.emptyMap(); + } + return list.stream().collect(Collectors.toMap( + item -> ((Number) item.get("palletId")).longValue(), + item -> item.get("lockedPackageCount") == null ? BigDecimal.ZERO + : new BigDecimal(item.get("lockedPackageCount").toString()), + (count1, count2) -> count1)); + } + + @Select({""}) + List> selectLockedPackageCountList(@Param("palletIds") Collection palletIds, + @Param("statuses") Collection statuses, + @Param("outType") String outType); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/pallet/ErpPalletService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/pallet/ErpPalletService.java index e840d4b10..2800a5efb 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/pallet/ErpPalletService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/pallet/ErpPalletService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.pallet.ErpPalletDO; import javax.validation.Valid; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; import java.util.Collection; import java.util.List; import java.util.Map; @@ -34,4 +35,6 @@ public interface ErpPalletService { void regenerateCode(Long id, String code) throws UnsupportedEncodingException; String selectPrintTemplate(); + + Map getLockedPackageCountMap(Collection palletIds); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/pallet/ErpPalletServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/pallet/ErpPalletServiceImpl.java index 095ba8440..9ed33b691 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/pallet/ErpPalletServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/pallet/ErpPalletServiceImpl.java @@ -12,6 +12,8 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.pallet.ErpPalletDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.warehousearea.WarehouseAreaDO; import cn.iocoder.yudao.module.erp.dal.mysql.pallet.ErpPalletMapper; +import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutItemPalletMapper; +import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; import cn.iocoder.yudao.module.erp.service.product.ErpProductService; import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService; import cn.iocoder.yudao.module.erp.service.warehousearea.WarehouseAreaService; @@ -21,6 +23,8 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -40,10 +44,15 @@ import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.WAREHOUSE_LOC public class ErpPalletServiceImpl implements ErpPalletService { private static final int ERPPALLET_PRINT_TEMPLATE_TYPE = 8; + private static final String PRODUCT_STOCK_OUT_TYPE = "产品出库"; + private static final List LOCKED_STOCK_OUT_STATUSES = Arrays.asList( + ErpAuditStatus.PROCESS.getStatus(), ErpAuditStatus.DRAFT.getStatus(), ErpAuditStatus.UN_APPROVE.getStatus()); @Resource private ErpPalletMapper palletMapper; @Resource + private ErpStockOutItemPalletMapper stockOutItemPalletMapper; + @Resource private AutoCodeUtil autoCodeUtil; @Resource private ErpWarehouseService warehouseService; @@ -149,6 +158,12 @@ public class ErpPalletServiceImpl implements ErpPalletService { return palletMapper.selectPrintTemplate(ERPPALLET_PRINT_TEMPLATE_TYPE); } + @Override + public Map getLockedPackageCountMap(Collection palletIds) { + return stockOutItemPalletMapper.selectLockedPackageCountMap( + palletIds, LOCKED_STOCK_OUT_STATUSES, PRODUCT_STOCK_OUT_TYPE); + } + private ErpPalletDO validatePalletExists(Long id) { ErpPalletDO pallet = palletMapper.selectById(id); if (pallet == null) { diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java index e268924bd..051e1936e 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java @@ -51,6 +51,7 @@ import cn.iocoder.yudao.module.infra.api.config.ConfigApi; import cn.iocoder.yudao.module.system.api.permission.PermissionApi; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -762,12 +763,15 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { if (approve) { BigDecimal remainCount = defaultZero(pallet.getProductCount()).subtract(packageCount); if (remainCount.compareTo(BigDecimal.ZERO) <= 0) { - pallet.setStatus(ErpPalletStatusEnum.IDLE.getStatus()); - pallet.setProductId(null); - pallet.setProductName(null); - pallet.setProductCount(BigDecimal.ZERO); - pallet.setWarehouseId(null); - pallet.setAreaId(null); + palletMapper.update(null, new LambdaUpdateWrapper() + .eq(ErpPalletDO::getId, pallet.getId()) + .set(ErpPalletDO::getStatus, ErpPalletStatusEnum.IDLE.getStatus()) + .set(ErpPalletDO::getProductId, null) + .set(ErpPalletDO::getProductName, null) + .set(ErpPalletDO::getProductCount, BigDecimal.ZERO) + .set(ErpPalletDO::getWarehouseId, null) + .set(ErpPalletDO::getAreaId, null)); + return; } else { pallet.setProductCount(remainCount); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/autocode/ErpStockOutItemMapper.xml b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/autocode/ErpStockOutItemMapper.xml index b324081ad..75c4a26f5 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/autocode/ErpStockOutItemMapper.xml +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/autocode/ErpStockOutItemMapper.xml @@ -15,4 +15,27 @@ + +