ny
23 小时以前 b6f169fe43a2b13f351aefc152374fc7f0bc8cb7
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
package jnpf.flowable.mapper;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import jnpf.base.Pagination;
import jnpf.base.UserInfo;
import jnpf.base.mapper.SuperMapper;
import jnpf.flowable.entity.TemplateEntity;
import jnpf.flowable.entity.TemplateUseNumEntity;
import jnpf.flowable.model.template.TemplateUseNumVo;
import jnpf.flowable.model.util.FlowNature;
import jnpf.util.StringUtil;
import jnpf.util.UserProvider;
import org.apache.ibatis.annotations.Mapper;
 
import java.util.Date;
import java.util.List;
 
@Mapper
public interface TemplateUseNumMapper extends SuperMapper<TemplateUseNumEntity> {
 
    default boolean insertOrUpdateUseNum(String templateId) {
        UserInfo user = UserProvider.getUser();
        LambdaQueryWrapper<TemplateUseNumEntity> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TemplateUseNumEntity::getTemplateId, templateId);
        queryWrapper.eq(TemplateUseNumEntity::getUserId, user.getUserId());
        TemplateUseNumEntity userNumEntity = this.selectOne(queryWrapper);
        if (userNumEntity == null) {
            userNumEntity = new TemplateUseNumEntity();
            userNumEntity.setUserId(user.getUserId());
            userNumEntity.setTemplateId(templateId);
            userNumEntity.setUseNum(1);
            userNumEntity.setLastModifyTime(new Date());
            return this.insert(userNumEntity) > 0;
        }
        userNumEntity.setUseNum(userNumEntity.getUseNum() + 1);
        userNumEntity.setLastModifyTime(null);
        return this.updateById(userNumEntity) > 0;
    }
 
    default void deleteUseNum(String templateId, String userId) {
        if (StringUtil.isNotEmpty(templateId)) {
            LambdaQueryWrapper<TemplateUseNumEntity> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(TemplateUseNumEntity::getTemplateId, templateId);
            if (StringUtil.isNotEmpty(userId)) {
                queryWrapper.eq(TemplateUseNumEntity::getUserId, userId);
            }
            this.delete(queryWrapper);
        }
    }
 
    default List<TemplateUseNumVo> getMenuUseNum(int i, List<String> authFlowList, String systemId) {
        Pagination pagination = new Pagination();
        pagination.setPageSize(12);
        UserInfo user = UserProvider.getUser();
        MPJLambdaWrapper<TemplateUseNumEntity> wrapper = JoinWrappers.lambda(TemplateUseNumEntity.class)
                .select(TemplateEntity::getId, TemplateEntity::getFullName, TemplateEntity::getEnCode,
                        TemplateEntity::getType, TemplateEntity::getIcon, TemplateEntity::getIconBackground,
                        TemplateEntity::getSystemId
                )
                .leftJoin(TemplateEntity.class, TemplateEntity::getId, TemplateUseNumEntity::getTemplateId)
                .eq(TemplateUseNumEntity::getUserId, user.getUserId())
                .eq(TemplateEntity::getEnabledMark, 1);
        if (i == 0) {
            wrapper.orderByDesc(TemplateUseNumEntity::getUseNum);
        } else if (i == 1) {
            wrapper.orderByDesc(TemplateUseNumEntity::getLastModifyTime);
        }
        if (StringUtil.isNotEmpty(systemId)) {
            wrapper.eq(TemplateEntity::getSystemId, systemId);
        }
        //流程有权限(包含通用)
        wrapper.and(t -> t.eq(TemplateEntity::getVisibleType, FlowNature.All)
                .or().in(!authFlowList.isEmpty(), TemplateEntity::getId, authFlowList)
        );
 
 
        Page<TemplateUseNumVo> page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize());
        Page<TemplateUseNumVo> iPage = this.selectJoinPage(page, TemplateUseNumVo.class, wrapper);
        return pagination.setData(iPage.getRecords(), page.getTotal());
    }
}