云
20 小时以前 e09f103259fa602382bb5ce2a03361a6397af46a
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java
@@ -73,6 +73,25 @@
public class MesProTaskController {
    @Resource
    private cn.iocoder.yudao.module.mes.service.pro.task.schedule.MesProBatchScheduleService batchScheduleService;
    @PostMapping("/auto-schedule/preview")
    @Operation(summary = "批量一键排产预览(09–18点,排除周末和节假日)")
    @PreAuthorize("@ss.hasPermission('mes:pro-task:create')")
    public CommonResult<cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProBatchSchedulePreviewRespVO> previewBatchSchedule(
            @Valid @RequestBody cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProBatchScheduleReqVO request) {
        return success(batchScheduleService.preview(request));
    }
    @PostMapping("/auto-schedule")
    @Operation(summary = "确认批量一键排产(重新校验预览,整批原子提交)")
    @PreAuthorize("@ss.hasPermission('mes:pro-task:create')")
    public CommonResult<java.util.Map<String, Object>> executeBatchSchedule(
            @Valid @RequestBody cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProBatchScheduleReqVO request) {
        return success(java.util.Map.of("taskIds", batchScheduleService.execute(request)));
    }
    @Resource
    private MesProTaskService taskService;
    @Resource
    private MesProWorkOrderService workOrderService;
@@ -257,6 +276,7 @@
                convertSet(allTasks, MesProTaskDO::getProcessId));
        // 2.2 组装甘特图数据
        List<GanttDataRespVO> ganttData = new java.util.ArrayList<>();
        Set<Long> visibleWorkOrderIds = convertSet(workOrders, MesProWorkOrderDO::getId);
        for (MesProWorkOrderDO workOrder : workOrders) {
            // 2.2.a 工单 -> project 行
            MesMdItemDO item = itemMap.get(workOrder.getProductId());
@@ -270,7 +290,10 @@
                    .setQuantity(workOrder.getQuantity())
                    .setDuration(0L)
                    .setProgress(calcProgress(workOrder.getQuantityProduced(), workOrder.getQuantity()));
            if (ObjUtil.notEqual(workOrder.getParentId(), MesProWorkOrderDO.PARENT_ID_NULL)) {
            if (workOrder.getParentId() != null
                    && !Objects.equals(workOrder.getParentId(), MesProWorkOrderDO.PARENT_ID_NULL)
                    && !Objects.equals(workOrder.getParentId(), workOrder.getId())
                    && visibleWorkOrderIds.contains(workOrder.getParentId())) {
                woData.setParent(MesBizTypeConstants.PRO_WORKORDER + "_" + workOrder.getParentId());
            }
            ganttData.add(woData);