| | |
| | | package cn.iocoder.yudao.module.mes.service.wm.productsales; |
| | | |
| | | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| | | import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.core.util.ObjUtil; |
| | |
| | | @Resource |
| | | @Lazy |
| | | private MesQcOqcService oqcService; |
| | | @Resource |
| | | private ErpSaleOrderApi saleOrderApi; |
| | | |
| | | @Override |
| | | public Long createProductSalesLine(MesWmProductSalesLineSaveReqVO createReqVO) { |
| | |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | // 校验关联发货通知单行(存在性 + 归属 + 字段一致性) |
| | | MesWmSalesNoticeLineDO noticeLine = validateSalesNoticeLine(sales, reqVO); |
| | | if (noticeLine == null && sales.getSaleOrderId() != null) { |
| | | if (reqVO.getSaleOrderItemId() == null) { |
| | | throw exception(WM_SALES_NOTICE_SALE_ORDER_ITEM_EMPTY); |
| | | } |
| | | var item = saleOrderApi.getSaleOrderItem(reqVO.getSaleOrderItemId()).getCheckedData(); |
| | | if (item == null || !Objects.equals(item.getOrderId(), sales.getSaleOrderId()) |
| | | || !Objects.equals(item.getProductId(), reqVO.getItemId())) { |
| | | throw exception(WM_SALES_NOTICE_LINE_SALE_ITEM_MISMATCH); |
| | | } |
| | | } |
| | | // 根据 batchCode 解析 batchId |
| | | fillBatchId(reqVO); |
| | | return noticeLine; |