yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
@@ -6,6 +6,7 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.MesWmSalesNoticePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.MesWmSalesNoticeSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO;
@@ -17,6 +18,7 @@
import cn.iocoder.yudao.module.mes.enums.wm.MesWmOutStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductSalesStatusEnum;
import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderItemRespDTO;
@@ -29,11 +31,14 @@
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.mes.enums.wm.MesWmSalesNoticeStatusEnum.*;
@@ -64,6 +69,8 @@
    private MesWmProductSalesLineMapper productSalesLineMapper;
    @Resource
    private MesWmSalesNoticeLineMapper salesNoticeLineMapper;
    @Resource
    private MesMdItemService mdItemService;
    @Override
    public Long createSalesNotice(MesWmSalesNoticeSaveReqVO createReqVO) {
@@ -352,6 +359,8 @@
        productSalesMapper.insert(productSales);
        // 6. 遍历发货通知单行创建销售出库单行
        Map<Long, MesMdItemDO> itemMap = mdItemService.getItemMap(
                convertSet(noticeLines, MesWmSalesNoticeLineDO::getItemId));
        for (MesWmSalesNoticeLineDO noticeLine : noticeLines) {
            MesWmProductSalesLineDO salesLine = new MesWmProductSalesLineDO();
            salesLine.setSalesId(productSales.getId());
@@ -362,6 +371,14 @@
            salesLine.setBatchId(noticeLine.getBatchId());
            salesLine.setBatchCode(noticeLine.getBatchCode());
            salesLine.setOqcCheckFlag(noticeLine.getOqcCheckFlag());
            // 按 数量 / 物料每箱数量 向上取整计算箱数;未维护每箱数量时记 0
            MesMdItemDO item = itemMap.get(noticeLine.getItemId());
            if (item != null && item.getBoxQuantity() != null
                    && item.getBoxQuantity().compareTo(BigDecimal.ZERO) > 0
                    && noticeLine.getQuantity() != null) {
                salesLine.setBoxCount(noticeLine.getQuantity()
                        .divide(item.getBoxQuantity(), 0, RoundingMode.CEILING).intValue());
            }
            productSalesLineMapper.insert(salesLine);
        }