| | |
| | | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskPauseRecordDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.pro.task.MesProTaskPauseRecordMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskAssigneeDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.pro.task.MesProTaskAssigneeMapper; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskPauseReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.task.vo.MesProTaskResumeReqVO; |
| | | |
| | |
| | | |
| | | @Resource |
| | | private MesProTaskPauseRecordMapper taskPauseRecordMapper; |
| | | |
| | | @Resource |
| | | private MesProTaskAssigneeMapper taskAssigneeMapper; |
| | | |
| | | @Resource |
| | | @Lazy |
| | |
| | | } |
| | | // 2.2 插入 |
| | | taskMapper.insert(task); |
| | | |
| | | // 2.3 保存指定报工人员 |
| | | updateTaskAssignees(task.getId(), createReqVO.getAssigneeUserIds()); |
| | | |
| | | return task.getId(); |
| | | } |
| | | |
| | |
| | | MesProTaskDO updateObj = BeanUtils.toBean(updateReqVO, MesProTaskDO.class) |
| | | .setName(buildTaskName(item, quantity)); |
| | | taskMapper.updateById(updateObj); |
| | | |
| | | // 3. 更新指定报工人员(比对更新) |
| | | updateTaskAssignees(task.getId(), updateReqVO.getAssigneeUserIds()); |
| | | } |
| | | |
| | | private void updateTaskAssignees(Long taskId, List<Long> assigneeUserIds) { |
| | | if (assigneeUserIds == null) { |
| | | assigneeUserIds = Collections.emptyList(); |
| | | } |
| | | // 1. 查询数据库中原有的 |
| | | List<MesProTaskAssigneeDO> oldAssignees = taskAssigneeMapper.selectListByTaskId(taskId); |
| | | Set<Long> oldUserIds = convertSet(oldAssignees, MesProTaskAssigneeDO::getUserId); |
| | | Set<Long> newUserIds = new java.util.HashSet<>(assigneeUserIds); |
| | | |
| | | // 2. 计算需要新增的和需要删除的 |
| | | Set<Long> toAddUserIds = newUserIds.stream().filter(id -> !oldUserIds.contains(id)).collect(java.util.stream.Collectors.toSet()); |
| | | Set<Long> toRemoveUserIds = oldUserIds.stream().filter(id -> !newUserIds.contains(id)).collect(java.util.stream.Collectors.toSet()); |
| | | |
| | | // 3. 新增 |
| | | if (CollUtil.isNotEmpty(toAddUserIds)) { |
| | | List<MesProTaskAssigneeDO> addList = convertList(toAddUserIds, userId -> new MesProTaskAssigneeDO().setTaskId(taskId).setUserId(userId)); |
| | | taskAssigneeMapper.insertBatch(addList); |
| | | } |
| | | |
| | | // 4. 删除 |
| | | if (CollUtil.isNotEmpty(toRemoveUserIds)) { |
| | | taskAssigneeMapper.deleteByTaskIdAndUserIds(taskId, toRemoveUserIds); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | if (feedbackMapper.selectCountByTaskId(id) > 0) { |
| | | throw exception(PRO_TASK_HAS_FEEDBACK); |
| | | } |
| | | // 3. 删除 |
| | | // 3. 删除任务主表 |
| | | taskMapper.deleteById(id); |
| | | // 4. 删除关联的人员 |
| | | taskAssigneeMapper.deleteByTaskId(id); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<MesProTaskAssigneeDO> getTaskAssigneeListByTaskIds(Collection<Long> taskIds) { |
| | | if (CollUtil.isEmpty(taskIds)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | return taskAssigneeMapper.selectListByTaskIds(taskIds); |
| | | } |
| | | |
| | | @Override |
| | | public MesProTaskDO validateTaskExists(Long id) { |
| | | MesProTaskDO task = taskMapper.selectById(id); |
| | | if (task == null) { |