gaoluyang
昨天 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java
@@ -74,6 +74,8 @@
    private MesMdWorkstationService workstationService;
    @Resource
    private CrmCustomerApi customerApi;
    @Resource
    private MesProWorkOrderTechnicalFileService technicalFileService;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -89,6 +91,7 @@
        MesProWorkOrderDO workOrder = BeanUtils.toBean(createReqVO, MesProWorkOrderDO.class);
        workOrder.setStatus(MesProWorkOrderStatusEnum.PREPARE.getStatus());
        workOrderMapper.insert(workOrder);
        technicalFileService.snapshot(workOrder.getId(), workOrder.getProductId());
        // 3. 自动生成 BOM:根据产品 BOM 生成工单 BOM
        workOrderBomService.generateWorkOrderBom(workOrder.getId(), createReqVO, false);
@@ -122,7 +125,10 @@
        // 3. 更新
        MesProWorkOrderDO updateObj = BeanUtils.toBean(updateReqVO, MesProWorkOrderDO.class);
        // 工单盘号沿用创建时的来源快照,避免与计划和已生成的下游记录不一致。
        updateObj.setReelNo(null);
        workOrderMapper.updateById(updateObj);
        if (productChanged) technicalFileService.replace(updateReqVO.getId(), updateReqVO.getProductId());
    }
    @Override
@@ -309,7 +315,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean checkAndAutoFinishWorkOrder(Long id) {
        MesProWorkOrderDO workOrder = getWorkOrder(id);
        MesProWorkOrderDO workOrder = workOrderMapper.selectByIdForUpdate(id);
        if (workOrder == null) {
            return false;
        }