From d39e4f7d839167c16425086dfa2f8747bccfdff9 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 05 十一月 2026 17:39:01 +0800
Subject: [PATCH] feat: 打通销售采购财务闭环并完成累计业务优化
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java | 34 +++++++++++++++++++++++++++++++---
1 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java
index 5769273..e7a10e3 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java
@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.mes.dal.mysql.wm.materialstock;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO;
@@ -19,6 +20,11 @@
@Mapper
public interface MesWmMaterialStockMapper extends BaseMapperX<MesWmMaterialStockDO> {
+ default MesWmMaterialStockDO lockById(Long id) {
+ return selectOne(new LambdaQueryWrapperX<MesWmMaterialStockDO>()
+ .eq(MesWmMaterialStockDO::getId, id).last("FOR UPDATE"));
+ }
+
default PageResult<MesWmMaterialStockDO> selectPage(MesWmMaterialStockPageReqVO reqVO,
Collection<Long> itemTypeIds,
Collection<Long> itemIds,
@@ -26,6 +32,7 @@
LambdaQueryWrapperX<MesWmMaterialStockDO> wrapper = new LambdaQueryWrapperX<MesWmMaterialStockDO>()
.inIfPresent(MesWmMaterialStockDO::getItemTypeId, itemTypeIds)
.inIfPresent(MesWmMaterialStockDO::getItemId, itemIds)
+ .eqIfPresent(MesWmMaterialStockDO::getItemId, reqVO.getMdmItemId())
.likeIfPresent(MesWmMaterialStockDO::getBatchCode, reqVO.getBatchCode())
.eqIfPresent(MesWmMaterialStockDO::getBatchId, reqVO.getBatchId())
.eqIfPresent(MesWmMaterialStockDO::getWarehouseId, reqVO.getWarehouseId())
@@ -33,6 +40,14 @@
.eqIfPresent(MesWmMaterialStockDO::getAreaId, reqVO.getAreaId())
.eqIfPresent(MesWmMaterialStockDO::getVendorId, reqVO.getVendorId())
.eqIfPresent(MesWmMaterialStockDO::getFrozen, reqVO.getFrozen());
+ if (StrUtil.isNotBlank(reqVO.getItemName())) {
+ String keyword = "%" + reqVO.getItemName().trim() + "%";
+ wrapper.apply("item_id IN (SELECT id FROM mdm_item WHERE (name LIKE {0} OR code LIKE {0}) AND deleted = 0)", keyword);
+ }
+ if (StrUtil.isNotBlank(reqVO.getVendorName())) {
+ wrapper.apply("vendor_id IN (SELECT id FROM srm_supplier WHERE name LIKE {0} AND deleted = 0)",
+ "%" + reqVO.getVendorName().trim() + "%");
+ }
wrapper.ne(MesWmMaterialStockDO::getQuantity, BigDecimal.ZERO)
.orderByAsc(MesWmMaterialStockDO::getReceiptTime);
// 铏氭嫙浠撹繃婊わ紙Service 灞傚凡灏� virtualFilter 瑙f瀽涓� virtualWarehouseId锛�
@@ -137,12 +152,13 @@
} else {
wrapper.isNull(MesWmMaterialStockDO::getBatchId);
}
- // vendorId=null 鏃剁簿纭尮閰� is null
+ // vendorId=null 鏃朵笉闄愬埗锛屽尮閰嶄换鎰忎緵搴斿晢鐨勫簱瀛�
+ // 锛堥伩鍏嶅洜渚涘簲鍟嗙淮搴︽媶鍒嗭紝OUT 浜嬪姟鎵句笉鍒扮湡姝f湁搴撳瓨鐨勮褰曡�屾墸閿欏埌 vendor_id IS NULL 鐨勮褰曪級
if (vendorId != null) {
wrapper.eq(MesWmMaterialStockDO::getVendorId, vendorId);
- } else {
- wrapper.isNull(MesWmMaterialStockDO::getVendorId);
}
+ // 澶氳褰曟椂浼樺厛鍙栧簱瀛橀噺鏈�澶氱殑锛堥伩鍏嶆墸鍒伴浂搴撳瓨鎴栬礋搴撳瓨鐨勮褰曪級
+ wrapper.last("ORDER BY quantity DESC LIMIT 1");
return selectOne(wrapper);
}
@@ -183,4 +199,16 @@
.orderByAsc(MesWmMaterialStockDO::getReceiptTime));
}
+ /**
+ * 鎸夌墿鏂欑紪鍙锋壒閲忔煡璇㈠簱瀛樿褰曪紙鐢ㄤ簬鐗╂枡闇�姹傚簱瀛樻牎楠岋級
+ */
+ default List<MesWmMaterialStockDO> selectListByItemIds(Collection<Long> itemIds) {
+ if (itemIds == null || itemIds.isEmpty()) {
+ return java.util.Collections.emptyList();
+ }
+ return selectList(new LambdaQueryWrapperX<MesWmMaterialStockDO>()
+ .in(MesWmMaterialStockDO::getItemId, itemIds)
+ .ne(MesWmMaterialStockDO::getQuantity, BigDecimal.ZERO));
+ }
+
}
--
Gitblit v1.9.3