| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.GanttDataRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskAutoGeneratePreviewRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskAutoGenerateReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskSaveReqVO; |
| | |
| | | public CommonResult<Boolean> deleteTask(@RequestParam("id") Long id) { |
| | | taskService.deleteTask(id); |
| | | return success(true); |
| | | } |
| | | |
| | | @PostMapping("/auto-generate/preview") |
| | | @Operation(summary = "一键排产预览") |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-task:create')") |
| | | public CommonResult<MesProTaskAutoGeneratePreviewRespVO> previewAutoGenerate( |
| | | @Valid @RequestBody MesProTaskAutoGenerateReqVO reqVO) { |
| | | return success(taskService.previewAutoGenerate(reqVO)); |
| | | } |
| | | |
| | | @PostMapping("/auto-generate") |
| | | @Operation(summary = "一键排产执行") |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-task:create')") |
| | | public CommonResult<java.util.Map<String, Object>> autoGenerate( |
| | | @Valid @RequestBody MesProTaskAutoGenerateReqVO reqVO) { |
| | | List<Long> taskIds = taskService.autoGenerateTasks(reqVO); |
| | | return success(java.util.Map.of("taskIds", taskIds)); |
| | | } |
| | | |
| | | @GetMapping("/get") |
| | |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, CrmCustomerRespDTO> customerMap = customerApi.getCustomerMap( |
| | | convertSet(list, MesProTaskDO::getClientId)); |
| | | // 工序的 checkFlag:批量查询后构建 routeId -> processId -> checkFlag 的双层 Map |
| | | // 工序的 checkFlag + backflushFlag:批量查询后构建 routeId -> processId -> flag 的双层 Map |
| | | Set<Long> routeIds = convertSet(list, MesProTaskDO::getRouteId); |
| | | Map<Long, Map<Long, Boolean>> routeProcessCheckFlagMap = new HashMap<>(); |
| | | Map<Long, Map<Long, Boolean>> routeProcessBackflushFlagMap = new HashMap<>(); |
| | | if (CollUtil.isNotEmpty(routeIds)) { |
| | | List<MesProRouteProcessDO> allRouteProcesses = routeProcessService.getRouteProcessListByRouteIds(routeIds); |
| | | for (MesProRouteProcessDO rp : allRouteProcesses) { |
| | | routeProcessCheckFlagMap |
| | | .computeIfAbsent(rp.getRouteId(), k -> new HashMap<>()) |
| | | .put(rp.getProcessId(), Boolean.TRUE.equals(rp.getCheckFlag())); |
| | | routeProcessBackflushFlagMap |
| | | .computeIfAbsent(rp.getRouteId(), k -> new HashMap<>()) |
| | | .put(rp.getProcessId(), Boolean.TRUE.equals(rp.getBackflushFlag())); |
| | | } |
| | | } |
| | | // 报工在途量:按任务聚合 feedbackQuantity(草稿/审批中/待检验 = 在途;已完成 = 已审批) |
| | |
| | | vo.setClientName(customer.getName())); |
| | | findAndThen(routeProcessCheckFlagMap, task.getRouteId(), processCheckMap -> |
| | | findAndThen(processCheckMap, task.getProcessId(), vo::setCheckFlag)); |
| | | findAndThen(routeProcessBackflushFlagMap, task.getRouteId(), processBackflushMap -> |
| | | findAndThen(processBackflushMap, task.getProcessId(), vo::setBackflushFlag)); |
| | | return vo; |
| | | }); |
| | | } |