From 97f048ce14db07ee41ca05f9c7010dfe132150e4 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 03 十一月 2026 11:06:59 +0800
Subject: [PATCH] feat(mes): 补生产准备检查与仓储收发存汇总接口,附 CFWJ 演示数据种子脚本
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java | 43 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
index 43f4f0b..f32c44e 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
@@ -5,6 +5,8 @@
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.transaction.vo.MesWmStockSummaryReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.transaction.vo.MesWmStockSummaryRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.transaction.vo.MesWmTransactionPageReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
@@ -21,8 +23,11 @@
import cn.iocoder.yudao.module.mes.service.wm.stockwarning.MesWmStockWarningService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
+import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseDefaultService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -60,6 +65,8 @@
@Resource
private MesWmWarehouseAreaService areaService;
@Resource
+ private MesWmWarehouseDefaultService warehouseDefaultService;
+ @Resource
private MesWmStockWarningService stockWarningService;
@Override
@@ -75,6 +82,10 @@
checkQuantity(reqDTO, inbound);
// 1.3 鍏ュ簱浜嬪姟锛氭壒娆″彿鏍¢獙 + batchId/batchCode 浜掕ˉ
checkBatch(reqDTO, inbound);
+ // 1.3.1 鍏ュ簱浜嬪姟鏈寚瀹氬簱鍖�/搴撲綅鏃讹紝鑷姩钀藉埌浠撳簱榛樿搴撳尯/搴撲綅锛堝鎴锋湭鍚敤搴撳尯/搴撲綅绠$悊锛�
+ if (inbound) {
+ fillDefaultLocationAndArea(reqDTO);
+ }
// 1.4 鍏ュ簱浜嬪姟锛氬簱浣嶆贩鏀捐鍒欐牎楠�
if (inbound) {
materialStockService.checkAreaMixingRule(reqDTO.getAreaId(), reqDTO.getItemId(), reqDTO.getBatchId());
@@ -168,9 +179,41 @@
return transactionMapper.selectPage(pageReqVO);
}
+ @Override
+ public PageResult<MesWmStockSummaryRespVO> getStockSummaryPage(MesWmStockSummaryReqVO reqVO) {
+ // 鏈寚瀹氭椂闂存椂榛樿缁熻杩戜笁涓湀锛氭湡鍒濅负涓や釜鏈堝墠 1 鏃� 0 鐐癸紝鏈熸湯涓哄綋鍓嶆椂闂�
+ LocalDateTime endTime = reqVO.getEndTime() != null ? reqVO.getEndTime() : LocalDateTime.now();
+ LocalDateTime startTime = reqVO.getStartTime() != null ? reqVO.getStartTime()
+ : endTime.toLocalDate().withDayOfMonth(1).minusMonths(2).atStartOfDay();
+ if (startTime.isAfter(endTime)) {
+ throw new ServiceException(400, StrUtil.format(
+ "鏌ヨ寮�濮嬫椂闂碵{}]鏅氫簬缁撴潫鏃堕棿[{}]锛岃璋冩暣鏃堕棿鑼冨洿鍚庨噸璇�",
+ startTime, endTime));
+ }
+ IPage<MesWmStockSummaryRespVO> page = transactionMapper.selectStockSummaryPage(
+ new Page<>(reqVO.getPageNo(), reqVO.getPageSize()),
+ reqVO.getItemId(), reqVO.getWarehouseId(), startTime, endTime);
+ return new PageResult<>(page.getRecords(), page.getTotal());
+ }
+
// ==================== 绉佹湁鏍¢獙鏂规硶 ====================
/**
+ * 鍏ュ簱浜嬪姟鏈寚瀹氬簱鍖�/搴撲綅鏃讹紝鑷姩浣跨敤浠撳簱鐨勯粯璁ゅ簱鍖�/榛樿搴撲綅
+ *
+ * 瀹㈡埛鏈惎鐢ㄥ簱鍖�/搴撲綅绠$悊锛屽墠绔笉鍐嶈鐢ㄦ埛閫夋嫨锛屽簱瀛樹粛闇�瑕佸畬鏁寸殑浠撳簱-搴撳尯-搴撲綅缁村害銆�
+ */
+ private void fillDefaultLocationAndArea(MesWmTransactionSaveReqDTO reqDTO) {
+ if (reqDTO.getWarehouseId() == null
+ || (reqDTO.getLocationId() != null && reqDTO.getAreaId() != null)) {
+ return;
+ }
+ MesWmWarehouseAreaDO defaultArea = warehouseDefaultService.getOrCreateDefaultArea(reqDTO.getWarehouseId());
+ reqDTO.setLocationId(defaultArea.getLocationId());
+ reqDTO.setAreaId(defaultArea.getId());
+ }
+
+ /**
* 鏍¢獙鏁伴噺姝h礋鍙蜂笌浜嬪姟鏂瑰悜涓�鑷�
*/
private void checkQuantity(MesWmTransactionSaveReqDTO reqDTO, boolean inbound) {
--
Gitblit v1.9.3