| | |
| | | package cn.iocoder.yudao.module.mes.service.wm.stocktaking.task; |
| | | |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | 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.stocktaking.task.vo.result.MesWmStockTakingTaskResultPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.result.MesWmStockTakingTaskResultSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskResultDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskResultMapper; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseDefaultService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | private MesWmStockTakingTaskLineService stockTakingTaskLineService; |
| | | @Resource |
| | | private MesWmStockTakingTaskService stockTakingTaskService; |
| | | @Resource |
| | | private MesWmWarehouseDefaultService warehouseDefaultService; |
| | | |
| | | @Override |
| | | public PageResult<MesWmStockTakingTaskResultDO> getStockTakingTaskResultPage( |
| | |
| | | // 2. 确定 lineId 和账面数量 |
| | | Long lineId = createReqVO.getLineId(); |
| | | MesWmStockTakingTaskLineDO existingLine = null; |
| | | if (lineId != null) { |
| | | // 2.1 如果传递了 lineId,从 line 中获取 quantity,并补齐仓库/库区/库位/批次 |
| | | existingLine = stockTakingTaskLineService.validateStockTakingTaskLineExists(lineId); |
| | | if (createReqVO.getWarehouseId() == null) { |
| | | createReqVO.setWarehouseId(existingLine.getWarehouseId()); |
| | | } |
| | | if (createReqVO.getLocationId() == null) { |
| | | createReqVO.setLocationId(existingLine.getLocationId()); |
| | | } |
| | | if (createReqVO.getAreaId() == null) { |
| | | createReqVO.setAreaId(existingLine.getAreaId()); |
| | | } |
| | | if (createReqVO.getBatchId() == null) { |
| | | createReqVO.setBatchId(existingLine.getBatchId()); |
| | | } |
| | | if (StrUtil.isEmpty(createReqVO.getBatchCode())) { |
| | | createReqVO.setBatchCode(existingLine.getBatchCode()); |
| | | } |
| | | } |
| | | // 2.2 未指定库区/库位时,落到仓库默认库区/库位(客户未启用库区/库位管理) |
| | | if (createReqVO.getWarehouseId() != null |
| | | && (createReqVO.getLocationId() == null || createReqVO.getAreaId() == null)) { |
| | | MesWmWarehouseAreaDO defaultArea = |
| | | warehouseDefaultService.getOrCreateDefaultArea(createReqVO.getWarehouseId()); |
| | | createReqVO.setLocationId(defaultArea.getLocationId()); |
| | | createReqVO.setAreaId(defaultArea.getId()); |
| | | } |
| | | if (lineId == null) { |
| | | // 2.1 基于 taskId + itemId + areaId 查询已存在的 line |
| | | // 2.3 基于 taskId + itemId + areaId 查询已存在的 line |
| | | existingLine = stockTakingTaskLineService.getStockTakingTaskLine( |
| | | createReqVO.getTaskId(), createReqVO.getItemId(), createReqVO.getAreaId()); |
| | | if (existingLine != null) { |
| | | lineId = existingLine.getId(); |
| | | } else { |
| | | // 2.2 创建新的 line(注意:当盘点结果没有对应的盘点清单行时,会自动创建一个新的盘点任务行) |
| | | // 2.4 创建新的 line(注意:当盘点结果没有对应的盘点清单行时,会自动创建一个新的盘点任务行) |
| | | lineId = stockTakingTaskLineService.createStockTakingTaskLine(createReqVO); |
| | | } |
| | | } else { |
| | | // 2.3 如果传递了 lineId,从 line 中获取 quantity |
| | | existingLine = stockTakingTaskLineService.validateStockTakingTaskLineExists(lineId); |
| | | } |
| | | if (existingLine != null |
| | | && existingLine.getTakingQuantity() != null |