6 小时以前 74ad846852f42b4e2258bfddd5c2a33cc1ce9847
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/task/MesProTaskController.java
@@ -13,6 +13,7 @@
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.MesProTaskPauseReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskStartWaitCountdownReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskResumeReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskRespVO;
@@ -59,6 +60,7 @@
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.*;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@@ -94,6 +96,8 @@
    private MesProTaskPauseRecordMapper pauseRecordMapper;
    @Resource
    private AdminUserApi adminUserApi;
    @Resource
    private cn.iocoder.yudao.module.system.api.permission.PermissionApi permissionApi;
    @PostMapping("/create")
    @Operation(summary = "创建生产任务")
@@ -149,6 +153,13 @@
        return success(true);
    }
    @PostMapping("/start-wait-countdown")
    @Operation(summary = "开始报工倒计时", description = "工序配置了等待时长时,点击开始倒计时,记录倒计时开始时间")
    @PreAuthorize("@ss.hasPermission('mes:pro-task:update')")
    public CommonResult<LocalDateTime> startWaitCountdown(@Valid @RequestBody MesProTaskStartWaitCountdownReqVO reqVO) {
        return success(taskService.startWaitCountdown(reqVO.getTaskId()));
    }
    @PostMapping("/auto-generate/preview")
    @Operation(summary = "一键排产预览")
    @PreAuthorize("@ss.hasPermission('mes:pro-task:create')")
@@ -190,6 +201,11 @@
    @Operation(summary = "获得待报工台账分页", description = "已排产且仍有待报工数量的任务(状态=进行中)")
    @PreAuthorize("@ss.hasPermission('mes:pro-task:query')")
    public CommonResult<PageResult<MesProTaskRespVO>> getPendingFeedbackPage(@Valid MesProTaskPageReqVO pageReqVO) {
        Long loginUserId = cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId();
        // 如果当前登录人不是超级管理员,则仅查询分配给自己的生产工单
        if (loginUserId != null && !permissionApi.hasAnyRoles(loginUserId, cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum.SUPER_ADMIN.getCode())) {
            pageReqVO.setAssigneeUserId(loginUserId);
        }
        PageResult<MesProTaskDO> pageResult = taskService.getPendingFeedbackPage(pageReqVO);
        List<MesProTaskRespVO> respVOList = buildTaskRespVOList(pageResult.getList());
        
@@ -349,6 +365,15 @@
                inTransitMap.merge(fb.getTaskId(), fbQty, BigDecimal::add);
            }
        }
        // 查询指派报工人员
        Set<Long> taskIds = convertSet(list, MesProTaskDO::getId);
        Map<Long, List<cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskAssigneeDO>> assigneeMap = taskService.getTaskAssigneeMap(taskIds);
        Set<Long> allAssigneeUserIds = new HashSet<>();
        assigneeMap.values().forEach(assignees ->
            assignees.forEach(assignee -> allAssigneeUserIds.add(assignee.getUserId())));
        Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(allAssigneeUserIds);
        // 拼接 VO
        return convertList(list, task -> {
            MesProTaskRespVO vo = BeanUtils.toBean(task, MesProTaskRespVO.class);
@@ -379,6 +404,22 @@
                    findAndThen(processCheckMap, task.getProcessId(), vo::setCheckFlag));
            findAndThen(routeProcessBackflushFlagMap, task.getRouteId(), processBackflushMap ->
                    findAndThen(processBackflushMap, task.getProcessId(), vo::setBackflushFlag));
            // 设置指派报工人员
            List<cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskAssigneeDO> assignees = assigneeMap.get(task.getId());
            if (CollUtil.isNotEmpty(assignees)) {
                List<Long> assigneeUserIds = convertList(assignees, cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskAssigneeDO::getUserId);
                vo.setAssigneeUserIds(assigneeUserIds);
                List<String> assigneeUserNames = new ArrayList<>();
                for (Long userId : assigneeUserIds) {
                    AdminUserRespDTO user = userMap.get(userId);
                    if (user != null && user.getNickname() != null) {
                        assigneeUserNames.add(user.getNickname());
                    }
                }
                vo.setAssigneeUserNames(assigneeUserNames);
            }
            return vo;
        });
    }