| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskPauseRecordRespVO; |
| | | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| | | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| | | import cn.iocoder.yudao.module.hrm.api.employee.HrmEmployeeApi; |
| | | import cn.iocoder.yudao.module.hrm.api.employee.dto.HrmEmployeeSimpleRespDTO; |
| | | |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | |
| | | @RequestMapping("/mes/pro/task") |
| | | @Validated |
| | | public class MesProTaskController { |
| | | |
| | | @Resource |
| | | private cn.iocoder.yudao.module.mes.dal.mysql.pro.task.MesProTaskMapper pendingCountMapper; |
| | | |
| | | @GetMapping("/unfinished-workstation-counts") |
| | | @Operation(summary = "获得各工作站未完成任务数量") |
| | | public CommonResult<List<cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProWorkstationPendingCountVO>> getPendingWorkstationCounts() { |
| | | Long userId = cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId(); |
| | | // 报工人以「员工管理」中的员工为准:登录账号先映射到员工,再按员工编号过滤 |
| | | Long assigneeId = null; |
| | | if (userId != null && !permissionApi.hasAnyRoles(userId, |
| | | cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum.SUPER_ADMIN.getCode())) { |
| | | HrmEmployeeSimpleRespDTO employee = hrmEmployeeApi.getEmployeeByUserId(userId); |
| | | if (employee == null) { |
| | | return success(Collections.emptyList()); |
| | | } |
| | | assigneeId = employee.getId(); |
| | | } |
| | | return success(pendingCountMapper.selectPendingCounts(assigneeId, |
| | | cn.iocoder.yudao.module.mes.enums.pro.MesProTaskStatusEnum.PREPARE.getStatus(), |
| | | cn.iocoder.yudao.module.mes.enums.pro.MesProTaskStatusEnum.PRODUCING.getStatus(), |
| | | cn.iocoder.yudao.module.mes.enums.pro.MesProTaskStatusEnum.PARTIAL_FINISHED.getStatus(), |
| | | cn.iocoder.yudao.module.mes.enums.pro.MesProTaskStatusEnum.PAUSED.getStatus())); |
| | | } |
| | | |
| | | @Resource |
| | | private cn.iocoder.yudao.module.mes.service.pro.task.schedule.MesProBatchScheduleService batchScheduleService; |
| | |
| | | private MesProTaskPauseRecordMapper pauseRecordMapper; |
| | | @Resource |
| | | private AdminUserApi adminUserApi; |
| | | @Resource |
| | | private HrmEmployeeApi hrmEmployeeApi; |
| | | @Resource |
| | | private cn.iocoder.yudao.module.system.api.permission.PermissionApi permissionApi; |
| | | |
| | |
| | | @Operation(summary = "获得待报工台账分页", description = "已排产且仍有待报工数量的任务(状态=进行中)") |
| | | 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); |
| | | HrmEmployeeSimpleRespDTO employee = hrmEmployeeApi.getEmployeeByUserId(loginUserId); |
| | | if (employee == null) { |
| | | return success(PageResult.empty()); |
| | | } |
| | | pageReqVO.setAssigneeUserId(employee.getId()); |
| | | } |
| | | PageResult<MesProTaskDO> pageResult = taskService.getPendingFeedbackPage(pageReqVO); |
| | | List<MesProTaskRespVO> respVOList = buildTaskRespVOList(pageResult.getList()); |
| | |
| | | Set<Long> allAssigneeUserIds = new HashSet<>(); |
| | | assigneeMap.values().forEach(assignees -> |
| | | assignees.forEach(assignee -> allAssigneeUserIds.add(assignee.getUserId()))); |
| | | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(allAssigneeUserIds); |
| | | // 报工人存的是员工编号,名称从「员工管理」取 |
| | | Map<Long, HrmEmployeeSimpleRespDTO> employeeMap = hrmEmployeeApi.getEmployeeMap(allAssigneeUserIds); |
| | | |
| | | // 拼接 VO |
| | | return convertList(list, task -> { |
| | |
| | | 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()); |
| | | for (Long employeeId : assigneeUserIds) { |
| | | HrmEmployeeSimpleRespDTO employee = employeeMap.get(employeeId); |
| | | if (employee != null && employee.getName() != null) { |
| | | assigneeUserNames.add(employee.getName()); |
| | | } |
| | | } |
| | | vo.setAssigneeUserNames(assigneeUserNames); |