| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderProcessDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDO; |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | |
| | | @Resource |
| | | private MesProWorkOrderService workOrderService; |
| | | @Resource |
| | | private MesProWorkOrderProcessService workOrderProcessService; |
| | | @Resource |
| | | private MesWmProductReceiptService productReceiptService; |
| | | @Resource |
| | | private MesWmBatchService batchService; |
| | | @Resource |
| | | private MesWmTransactionService wmTransactionService; |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void finishProductProduce(Long id) { |
| | | // 1.1 校验存在 + 草稿状态 |
| | | validateProductProduceExistsAndPrepare(id); |
| | | MesWmProductProduceDO produce = validateProductProduceExistsAndPrepare(id); |
| | | // 1.2 校验至少有一条行 |
| | | List<MesWmProductProduceLineDO> lines = productProduceLineService.getProductProduceLineListByProduceId(id); |
| | | if (CollUtil.isEmpty(lines)) { |
| | |
| | | // 3. 更新入库单状态 |
| | | productProduceMapper.updateById(new MesWmProductProduceDO() |
| | | .setId(id).setStatus(MesWmProductProduceStatusEnum.FINISHED.getStatus())); |
| | | |
| | | // 4. 只有末道工序的合格产出才生成产品入库单,避免中间工序重复生成成品入库 |
| | | MesProWorkOrderProcessDO lastProcess = workOrderProcessService |
| | | .getLastWorkOrderProcessByWorkOrderId(produce.getWorkOrderId()); |
| | | if (lastProcess != null && ObjUtil.equal(lastProcess.getProcessId(), produce.getProcessId())) { |
| | | productReceiptService.generateProductReceipt(produce, lines); |
| | | } |
| | | } |
| | | |
| | | private void createTransactionList(Long produceId, List<MesWmProductProduceLineDO> lines) { |