gaoluyang
4 天以前 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/feedback/MesProFeedbackMapper.java
@@ -8,18 +8,25 @@
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 芋道源码
 * @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 任务表
@@ -70,4 +77,35 @@
                .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));
    }
}