| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.line.MesWmMiscReceiptLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.line.MesWmMiscReceiptLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscreceipt.MesWmMiscReceiptLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.miscreceipt.MesWmMiscReceiptLineMapper; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseDefaultService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmWarehouseAreaService warehouseAreaService; |
| | | @Resource |
| | | private MesWmWarehouseDefaultService warehouseDefaultService; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | // 1. 校验 |
| | | MesWmMiscReceiptLineDO line = validateMiscReceiptLineExists(updateReqVO.getId()); |
| | | updateReqVO.setReceiptId(line.getReceiptId()); |
| | | // 未指定库区/库位时,落到仓库默认库区/库位(客户未启用库区/库位管理) |
| | | fillDefaultLocationAndArea(updateReqVO); |
| | | |
| | | // 2. 更新行 |
| | | MesWmMiscReceiptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMiscReceiptLineDO.class); |
| | |
| | | miscReceiptService.validateMiscReceiptEditable(reqVO.getReceiptId()); |
| | | // 校验物料存在 |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | // 未指定库区/库位时,落到仓库默认库区/库位(客户未启用库区/库位管理) |
| | | fillDefaultLocationAndArea(reqVO); |
| | | // 校验仓库层级关系(仓库 - 库位 - 库区) |
| | | warehouseAreaService.validateWarehouseAreaExists(reqVO.getWarehouseId(), |
| | | reqVO.getLocationId(), reqVO.getAreaId()); |
| | | } |
| | | |
| | | /** |
| | | * 未指定库区/库位时,落到仓库默认库区/库位 |
| | | */ |
| | | private void fillDefaultLocationAndArea(MesWmMiscReceiptLineSaveReqVO reqVO) { |
| | | if (reqVO.getWarehouseId() == null |
| | | || (reqVO.getLocationId() != null && reqVO.getAreaId() != null)) { |
| | | return; |
| | | } |
| | | MesWmWarehouseAreaDO defaultArea = warehouseDefaultService.getOrCreateDefaultArea(reqVO.getWarehouseId()); |
| | | reqVO.setLocationId(defaultArea.getLocationId()); |
| | | reqVO.setAreaId(defaultArea.getId()); |
| | | } |
| | | |
| | | } |