| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.process.MesProWorkOrderProcessSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.process.MesProWorkOrderProcessSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProcessDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProductDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderBomDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderProcessDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.pro.workorder.MesProWorkOrderBomMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.pro.workorder.MesProWorkOrderProcessMapper; |
| | | import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.route.MesProRouteProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.route.MesProRouteProductService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private MesProProcessService processService; |
| | | @Resource |
| | | private MesProRouteProcessService routeProcessService; |
| | | @Resource |
| | | private MesProRouteProductService routeProductService; |
| | | @Resource |
| | | private MesWmWarehouseAreaService warehouseAreaService; |
| | | @Resource |
| | | @Lazy |
| | | private MesProWorkOrderBomService workOrderBomService; |
| | |
| | | .collect(Collectors.joining(","))); |
| | | } |
| | | workOrderProcessMapper.updateById(updateObj); |
| | | // 报工仓库允许置空,单独更新 |
| | | workOrderProcessMapper.updateWarehouseById(updateReqVO.getId(), updateReqVO.getWarehouseId(), |
| | | updateReqVO.getLocationId(), updateReqVO.getAreaId()); |
| | | |
| | | // 3. 重建工序链 |
| | | rebuildProcessChain(updateReqVO.getWorkOrderId()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public MesProWorkOrderProcessDO getWorkOrderProcessByWorkOrderIdAndProcessId(Long workOrderId, Long processId) { |
| | | return workOrderProcessMapper.selectByWorkOrderIdAndProcessId(workOrderId, processId); |
| | | } |
| | | |
| | | @Override |
| | | public MesProWorkOrderProcessDO getLastWorkOrderProcessByWorkOrderId(Long workOrderId) { |
| | | return workOrderProcessMapper.selectLastByWorkOrderId(workOrderId); |
| | | } |
| | |
| | | if (CollUtil.isEmpty(routeProcessList)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | // 工艺路线产品上配置的报工仓库作为工序默认值,下单时可再修改 |
| | | MesProRouteProductDO routeProduct = routeProductService.getRouteProductByItemId(productId); |
| | | // 转换为工单工序 DO(不设置 workOrderId,前端保存时再设置) |
| | | List<MesProWorkOrderProcessDO> processList = new ArrayList<>(routeProcessList.size()); |
| | | for (MesProRouteProcessDO routeProcess : routeProcessList) { |
| | | processList.add(MesProWorkOrderProcessDO.builder() |
| | | .processId(routeProcess.getProcessId()) |
| | | .paramTemplateId(routeProcess.getParamTemplateId()) |
| | | .yieldRate(routeProcess.getYieldRate()) |
| | | .sort(routeProcess.getSort()) |
| | | .nextProcessId(routeProcess.getNextProcessId()) |
| | | .linkType(routeProcess.getLinkType()) |
| | |
| | | .checkFlag(routeProcess.getCheckFlag()) |
| | | .backflushFlag(routeProcess.getBackflushFlag()) |
| | | .outputItemId(routeProcess.getOutputItemId()) |
| | | .warehouseId(routeProduct != null ? routeProduct.getWarehouseId() : null) |
| | | .locationId(routeProduct != null ? routeProduct.getLocationId() : null) |
| | | .areaId(routeProduct != null ? routeProduct.getAreaId() : null) |
| | | .remark(routeProcess.getRemark()) |
| | | .build()); |
| | | } |
| | |
| | | updateObj.setOutputItemId(item.getOutputItemIds().stream().map(String::valueOf).collect(Collectors.joining(","))); |
| | | } |
| | | workOrderProcessMapper.updateById(updateObj); |
| | | // 报工仓库允许置空,单独更新 |
| | | workOrderProcessMapper.updateWarehouseById(item.getId(), item.getWarehouseId(), |
| | | item.getLocationId(), item.getAreaId()); |
| | | } |
| | | } |
| | | |
| | |
| | | throw exception(PRO_WORK_ORDER_PROCESS_DUPLICATE); |
| | | } |
| | | } |
| | | // 4. 校验关键工序唯一 |
| | | // 4. 校验报工仓库层级(仓库/库区/库位同时填写时校验归属关系) |
| | | if (reqVO.getWarehouseId() != null && reqVO.getLocationId() != null && reqVO.getAreaId() != null) { |
| | | warehouseAreaService.validateWarehouseAreaExists(reqVO.getWarehouseId(), |
| | | reqVO.getLocationId(), reqVO.getAreaId()); |
| | | } |
| | | // 5. 校验关键工序唯一 |
| | | if (Boolean.TRUE.equals(reqVO.getKeyFlag())) { |
| | | for (MesProWorkOrderProcessDO process : list) { |
| | | if (reqVO.getId() != null && reqVO.getId().equals(process.getId())) { |