| | |
| | | @Mapper |
| | | public interface MesProTaskMapper extends BaseMapperX<MesProTaskDO> { |
| | | |
| | | /** 所有排产写入口以相同顺序锁定工作站;事务提交后释放,跨进程防止资源竞态。 */ |
| | | @org.apache.ibatis.annotations.Select("SELECT id FROM mes_md_workstation WHERE deleted = 0 ORDER BY id FOR UPDATE") |
| | | List<Long> lockSchedulingResources(); |
| | | |
| | | default List<MesProTaskDO> selectSchedulingTasks() { |
| | | return selectList(new LambdaQueryWrapperX<MesProTaskDO>() |
| | | .and(query -> query.isNull(MesProTaskDO::getStatus).or() |
| | | .notIn(MesProTaskDO::getStatus, MesProTaskStatusEnum.CANCELED.getStatus(), MesProTaskStatusEnum.FINISHED.getStatus())) |
| | | .orderByAsc(MesProTaskDO::getId)); |
| | | } |
| | | |
| | | default PageResult<MesProTaskDO> selectPage(MesProTaskPageReqVO reqVO) { |
| | | MPJLambdaWrapperX<MesProTaskDO> query = new MPJLambdaWrapperX<>(); |
| | | query.selectAll(MesProTaskDO.class); |
| | |
| | | return selectPage(reqVO, query); |
| | | } |
| | | |
| | | /** |
| | | * 查询工作站上正在运行的任务:生产中、部分完成、已停工 |
| | | */ |
| | | default MesProTaskDO selectRunningTaskByWorkstationId(Long workstationId) { |
| | | return selectOne(new LambdaQueryWrapperX<MesProTaskDO>() |
| | | .eq(MesProTaskDO::getWorkstationId, workstationId) |
| | | .in(MesProTaskDO::getStatus, MesProTaskStatusEnum.PRODUCING.getStatus(), |
| | | MesProTaskStatusEnum.PARTIAL_FINISHED.getStatus(), MesProTaskStatusEnum.PAUSED.getStatus()) |
| | | .orderByDesc(MesProTaskDO::getLastFeedbackTime) |
| | | .orderByDesc(MesProTaskDO::getId) |
| | | .last("LIMIT 1")); |
| | | } |
| | | |
| | | default List<MesProTaskDO> selectListByWorkOrderId(Long workOrderId) { |
| | | return selectList(new LambdaQueryWrapperX<MesProTaskDO>() |
| | | .eqIfPresent(MesProTaskDO::getWorkOrderId, workOrderId) |