gaoluyang
昨天 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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));
    }
 
}