云
2026-10-29 a1a94ab39a3ac9cc28601e3381b3b4fbc0cda02a
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeLineServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.line.MesWmSalesNoticeLinePageReqVO;
@@ -10,7 +11,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeLineMapper;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@@ -39,7 +40,9 @@
    @Resource
    private MesWmBatchService batchService;
    @Resource
    private MesMdItemService itemService;
    private MesMdmItemService mdmItemService;
    @Resource
    private ErpSaleOrderApi saleOrderApi;
    @Override
    public Long createSalesNoticeLine(MesWmSalesNoticeLineSaveReqVO createReqVO) {
@@ -59,6 +62,9 @@
        MesWmSalesNoticeLineDO line = validateSalesNoticeLineExists(updateReqVO.getId());
        // 校验数据
        updateReqVO.setNoticeId(line.getNoticeId());
        if (updateReqVO.getSaleOrderItemId() == null) {
            updateReqVO.setSaleOrderItemId(line.getSaleOrderItemId());
        }
        validateLineSaveData(updateReqVO);
        // 更新
@@ -120,9 +126,20 @@
    private void validateLineSaveData(MesWmSalesNoticeLineSaveReqVO reqVO) {
        // 校验父单据存在且为草稿状态
        validateNoticeStatusDraft(reqVO.getNoticeId());
        MesWmSalesNoticeDO notice = salesNoticeService.getSalesNotice(reqVO.getNoticeId());
        if (notice.getSaleOrderId() != null && reqVO.getSaleOrderItemId() == null) {
            throw exception(WM_SALES_NOTICE_LINE_SALE_ITEM_REQUIRED);
        }
        if (reqVO.getSaleOrderItemId() != null) {
            var saleItem = saleOrderApi.getSaleOrderItem(reqVO.getSaleOrderItemId()).getCheckedData();
            if (saleItem == null || !ObjUtil.equal(notice.getSaleOrderId(), saleItem.getOrderId())
                    || !ObjUtil.equal(reqVO.getItemId(), saleItem.getProductId())) {
                throw exception(WM_SALES_NOTICE_LINE_SALE_ITEM_MISMATCH);
            }
        }
        // 校验物料存在
        if (reqVO.getItemId() != null) {
            itemService.validateItemExistsAndEnable(reqVO.getItemId());
            mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
        }
    }