| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLineSaveReqVO; |
| | | 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.mysql.wm.productsales.MesWmProductSalesLineMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; |
| | | 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 cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | |
| | | @Resource |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesMdItemService mdItemService; |
| | | @Resource |
| | | private MesWmBatchService batchService; |
| | | @Resource |
| | | @Lazy |
| | |
| | | |
| | | // 新增 |
| | | MesWmProductSalesLineDO line = BeanUtils.toBean(createReqVO, MesWmProductSalesLineDO.class); |
| | | line.setBoxCount(calculateBoxCount(line.getItemId(), line.getQuantity())); |
| | | productSalesLineMapper.insert(line); |
| | | return line.getId(); |
| | | } |
| | |
| | | |
| | | // 更新 |
| | | MesWmProductSalesLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductSalesLineDO.class); |
| | | updateObj.setBoxCount(calculateBoxCount(updateObj.getItemId(), updateObj.getQuantity())); |
| | | productSalesLineMapper.updateById(updateObj); |
| | | |
| | | // 检查是否需要创建 OQC 检验单:从不需要检验变为需要检验 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 按 数量 / 物料每箱数量 向上取整计算箱数;未维护每箱数量时返回 0 |
| | | */ |
| | | private int calculateBoxCount(Long itemId, BigDecimal quantity) { |
| | | if (itemId == null || quantity == null) { |
| | | return 0; |
| | | } |
| | | MesMdItemDO item = mdItemService.getItem(itemId); |
| | | if (item == null || item.getBoxQuantity() == null |
| | | || item.getBoxQuantity().compareTo(BigDecimal.ZERO) <= 0) { |
| | | return 0; |
| | | } |
| | | return quantity.divide(item.getBoxQuantity(), 0, RoundingMode.CEILING).intValue(); |
| | | } |
| | | |
| | | /** |
| | | * 根据 batchCode 解析 batchId |
| | | */ |
| | | private void fillBatchId(MesWmProductSalesLineSaveReqVO reqVO) { |