package cn.iocoder.yudao.module.mes.dal.mysql.pro.feedback;
|
|
import cn.hutool.core.util.StrUtil;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
|
import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackPageReqVO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO;
|
import cn.iocoder.yudao.module.mes.enums.pro.MesProFeedbackStatusEnum;
|
import org.apache.ibatis.annotations.Mapper;
|
|
import java.time.LocalDateTime;
|
import java.util.Collection;
|
import java.util.List;
|
|
/**
|
* MES 生产报工 Mapper
|
*
|
* @author 超级管理员
|
*/
|
@Mapper
|
public interface MesProFeedbackMapper extends BaseMapperX<MesProFeedbackDO> {
|
|
default MesProFeedbackDO selectByIdForUpdate(Long id) {
|
return selectOne(new LambdaQueryWrapperX<MesProFeedbackDO>()
|
.eq(MesProFeedbackDO::getId, id).last("FOR UPDATE"));
|
}
|
|
default PageResult<MesProFeedbackDO> selectPage(MesProFeedbackPageReqVO reqVO) {
|
// 当按任务编码模糊查询时,需要 JOIN 任务表
|
if (StrUtil.isNotBlank(reqVO.getTaskCode())) {
|
MPJLambdaWrapperX<MesProFeedbackDO> query = new MPJLambdaWrapperX<>();
|
query.selectAll(MesProFeedbackDO.class);
|
query.leftJoin(MesProTaskDO.class, on -> on
|
.eq(MesProTaskDO::getId, MesProFeedbackDO::getTaskId));
|
query.like(MesProTaskDO::getCode, reqVO.getTaskCode());
|
query.likeIfPresent(MesProFeedbackDO::getCode, reqVO.getCode())
|
.eqIfPresent(MesProFeedbackDO::getType, reqVO.getType())
|
.eqIfPresent(MesProFeedbackDO::getWorkOrderId, reqVO.getWorkOrderId())
|
.eqIfPresent(MesProFeedbackDO::getTaskId, reqVO.getTaskId())
|
.eqIfPresent(MesProFeedbackDO::getStatus, reqVO.getStatus())
|
.betweenIfPresent(MesProFeedbackDO::getFeedbackTime, reqVO.getFeedbackTime())
|
.eqIfPresent(MesProFeedbackDO::getItemId, reqVO.getItemId())
|
.eqIfPresent(MesProFeedbackDO::getFeedbackUserId, reqVO.getFeedbackUserId())
|
.eqIfPresent(MesProFeedbackDO::getCreator, reqVO.getCreator())
|
.orderByDesc(MesProFeedbackDO::getId);
|
return selectPage(reqVO, query);
|
}
|
// 不涉及任务编码查询时,走普通查询
|
return selectPage(reqVO, new LambdaQueryWrapperX<MesProFeedbackDO>()
|
.likeIfPresent(MesProFeedbackDO::getCode, reqVO.getCode())
|
.eqIfPresent(MesProFeedbackDO::getType, reqVO.getType())
|
.eqIfPresent(MesProFeedbackDO::getWorkOrderId, reqVO.getWorkOrderId())
|
.eqIfPresent(MesProFeedbackDO::getTaskId, reqVO.getTaskId())
|
.eqIfPresent(MesProFeedbackDO::getStatus, reqVO.getStatus())
|
.betweenIfPresent(MesProFeedbackDO::getFeedbackTime, reqVO.getFeedbackTime())
|
.eqIfPresent(MesProFeedbackDO::getItemId, reqVO.getItemId())
|
.eqIfPresent(MesProFeedbackDO::getFeedbackUserId, reqVO.getFeedbackUserId())
|
.eqIfPresent(MesProFeedbackDO::getCreator, reqVO.getCreator())
|
.orderByDesc(MesProFeedbackDO::getId));
|
}
|
|
default Long selectCountByTaskId(Long taskId) {
|
return selectCount(MesProFeedbackDO::getTaskId, taskId);
|
}
|
|
default List<MesProFeedbackDO> selectListByTaskId(Long taskId) {
|
return selectList(new LambdaQueryWrapperX<MesProFeedbackDO>()
|
.eq(MesProFeedbackDO::getTaskId, taskId)
|
.orderByDesc(MesProFeedbackDO::getId));
|
}
|
|
default List<MesProFeedbackDO> selectListByTaskIds(Collection<Long> taskIds) {
|
return selectList(new LambdaQueryWrapperX<MesProFeedbackDO>()
|
.in(MesProFeedbackDO::getTaskId, taskIds));
|
}
|
|
/**
|
* 工时考核报表取数:时间段内已审批通过(待检验/已完成)的报工单
|
*/
|
default List<MesProFeedbackDO> selectWorktimeReportList(LocalDateTime beginTime, LocalDateTime endTime,
|
Long feedbackUserId, Long processId, Long workstationId) {
|
return selectList(new LambdaQueryWrapperX<MesProFeedbackDO>()
|
.eqIfPresent(MesProFeedbackDO::getFeedbackUserId, feedbackUserId)
|
.eqIfPresent(MesProFeedbackDO::getProcessId, processId)
|
.eqIfPresent(MesProFeedbackDO::getWorkstationId, workstationId)
|
.inIfPresent(MesProFeedbackDO::getStatus,
|
MesProFeedbackStatusEnum.UNCHECK.getStatus(),
|
MesProFeedbackStatusEnum.FINISHED.getStatus())
|
.ge(MesProFeedbackDO::getFeedbackTime, beginTime)
|
.le(MesProFeedbackDO::getFeedbackTime, endTime));
|
}
|
|
/**
|
* 查询指定报工人在某时间段内已审批通过(待检验/已完成)的报工单,用于汇总月度报工工资。
|
* 草稿、审批中的报工不计薪。
|
*/
|
default List<MesProFeedbackDO> selectWageListByUserIds(Collection<Long> feedbackUserIds,
|
LocalDateTime beginTime, LocalDateTime endTime) {
|
return selectList(new LambdaQueryWrapperX<MesProFeedbackDO>()
|
.in(MesProFeedbackDO::getFeedbackUserId, feedbackUserIds)
|
.in(MesProFeedbackDO::getStatus,
|
MesProFeedbackStatusEnum.UNCHECK.getStatus(),
|
MesProFeedbackStatusEnum.FINISHED.getStatus())
|
.ge(MesProFeedbackDO::getFeedbackTime, beginTime)
|
.le(MesProFeedbackDO::getFeedbackTime, endTime));
|
}
|
|
}
|