刘光辉
6 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
package jnpf.elnMapper;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jnpf.elnEntity.template.ElnTemplateVersionEntity;
import jnpf.elnEntity.template.ElnTemplateVos;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
 
import java.util.List;
 
@Mapper
public interface ElnTemplateMapper extends BaseMapper<ElnTemplateVersionEntity> {
 
    default ElnTemplateVersionEntity lockTemplateForUpdate(String tenantId, String templateId) {
        return selectOne(Wrappers.<ElnTemplateVersionEntity>lambdaQuery()
                .eq(ElnTemplateVersionEntity::getFTenantId, tenantId)
                .eq(ElnTemplateVersionEntity::getId, templateId)
                .and(query -> query.isNull(ElnTemplateVersionEntity::getFDeleteMark)
                        .or().eq(ElnTemplateVersionEntity::getFDeleteMark, 0))
                .last("FOR UPDATE"));
    }
 
    @Select("SELECT m.muban_file "
            + "FROM eln_template_current_version c "
            + "JOIN eln_template m "
            + "ON m.f_tenant_id = c.f_tenant_id AND m.f_id = c.dangqian_muban_id "
            + "WHERE c.f_tenant_id = #{tenantId} "
            + "AND m.jianyan_xiangmu = #{jianyanXiangmu} "
            + "AND m.biz_status = 'PUBLISHED' "
            + "AND m.biz_enabled = 'enabled' "
            + "AND m.shengxiao_riqi <= CURRENT_TIMESTAMP "
            + "AND COALESCE(m.f_delete_mark, 0) = 0")
    IPage<String> selectLatestTemplateFiles(IPage<String> page,
                                            @Param("tenantId") String tenantId,
                                            @Param("jianyanXiangmu") String jianyanXiangmu);
 
    @Select("SELECT m.muban_file "
            + "FROM eln_template_current_version c "
            + "JOIN eln_template m "
            + "ON m.f_tenant_id = c.f_tenant_id AND m.f_id = c.dangqian_muban_id "
            + "WHERE c.f_tenant_id = #{tenantId} "
            + "AND m.jianyan_xiangmu_bianma = #{testDefinitionCode} "
            + "AND m.biz_status = 'PUBLISHED' "
            + "AND m.biz_enabled = 'enabled' "
            + "AND m.shengxiao_riqi <= CURRENT_TIMESTAMP "
            + "AND COALESCE(c.f_delete_mark, 0) = 0 "
            + "AND COALESCE(m.f_delete_mark, 0) = 0")
    IPage<String> selectLatestTemplateFilesByTestDefinitionCode(
            IPage<String> page,
            @Param("tenantId") String tenantId,
            @Param("testDefinitionCode") String testDefinitionCode);
 
    @Select("SELECT m.f_id AS id, m.f_tenant_id AS fTenantId, "
            + "m.muban_bianhao AS mubanBianhao, m.muban_banben AS mubanBanben, "
            + "m.jianyan_xiangmu AS jianyanXiangmu, "
            + "m.jianyan_xiangmu_bianma AS jianyanXiangmuBianma, m.muban_file AS mubanFile, "
            + "m.biz_status AS bizStatus, m.biz_enabled AS bizEnabled, "
            + "m.shengxiao_riqi AS shengxiaoRiqi, m.f_delete_mark AS fDeleteMark "
            + "FROM eln_template_current_version c "
            + "JOIN eln_template m "
            + "ON m.f_tenant_id = c.f_tenant_id AND m.f_id = c.dangqian_muban_id "
            + "WHERE c.f_tenant_id = #{tenantId} "
            + "AND m.jianyan_xiangmu_bianma = #{testDefinitionCode} "
            + "AND m.biz_status = 'PUBLISHED' "
            + "AND m.biz_enabled = 'enabled' "
            + "AND m.shengxiao_riqi <= CURRENT_TIMESTAMP "
            + "AND COALESCE(c.f_delete_mark, 0) = 0 "
            + "AND COALESCE(m.f_delete_mark, 0) = 0")
    List<ElnTemplateVersionEntity> selectCurrentPublishedByTestDefinition(
            @Param("tenantId") String tenantId,
            @Param("testDefinitionCode") String testDefinitionCode);
 
    @Select({"<script>",
            "SELECT m.muban_bianhao ",
            "FROM eln_template m ",
            "WHERE m.f_tenant_id = #{tenantId} ",
            "AND COALESCE(m.f_delete_mark, 0) = 0 ",
            "<if test='mubanFenlei != null'>",
            "AND m.muban_fenlei = #{mubanFenlei} ",
            "</if>",
            "<if test='mubanBianhao != null'>",
            "AND m.muban_bianhao = #{mubanBianhao} ",
            "</if>",
            "<if test='bizStatus != null'>",
            "AND m.biz_status = #{bizStatus} ",
            "</if>",
            "<if test='bizEnabled != null'>",
            "AND m.biz_enabled = #{bizEnabled} ",
            "</if>",
            "<if test='keywordPattern != null'>",
            "AND (m.muban_bianhao LIKE #{keywordPattern} ",
            "OR m.muban_banben LIKE #{keywordPattern} ",
            "OR m.jianyan_xiangmu LIKE #{keywordPattern} ",
            "OR m.jianyan_xiangmu_mingcheng LIKE #{keywordPattern}) ",
            "</if>",
            "GROUP BY m.muban_bianhao ",
            "ORDER BY CASE WHEN MAX(COALESCE(m.chuangjian_shijian, m.f_creator_time)) ",
            "IS NULL THEN 1 ELSE 0 END ASC, ",
            "MAX(COALESCE(m.chuangjian_shijian, m.f_creator_time)) DESC, ",
            "MAX(m.f_id) DESC",
            "</script>"})
    IPage<String> selectLatestTemplateCodes(
            IPage<String> page,
            @Param("tenantId") String tenantId,
            @Param("mubanFenlei") String mubanFenlei,
            @Param("mubanBianhao") String mubanBianhao,
            @Param("bizStatus") String bizStatus,
            @Param("bizEnabled") String bizEnabled,
            @Param("keywordPattern") String keywordPattern);
 
    @Select({"<script>",
            "SELECT m.muban_bianhao AS mubanBianhao, ",
            "COALESCE(e.jianyan_xiangmu, MAX(m.jianyan_xiangmu)) AS jianyanXiangmu, ",
            "COALESCE(e.jianyan_xiangmu_bianma, MAX(m.jianyan_xiangmu_bianma)) AS jianyanXiangmuBianma, ",
            "COALESCE(e.jianyan_xiangmu_mingcheng, MAX(m.jianyan_xiangmu_mingcheng)) AS jianyanXiangmuMingcheng, ",
            "COALESCE(e.muban_fenlei, MAX(m.muban_fenlei)) AS mubanFenlei, ",
            "COALESCE(e.muban_fenlei_mingcheng, MAX(m.muban_fenlei_mingcheng)) AS mubanFenleiMingcheng, ",
            "e.f_id AS shengxiaoMubanId, ",
            "e.muban_banben AS shengxiaoMubanBanben, ",
            "e.biz_status AS bizStatus, e.biz_enabled AS bizEnabled, ",
            "e.shengxiao_riqi AS shengxiaoRiqi, ",
            "MAX(COALESCE(m.f_last_modify_time, m.f_creator_time)) AS gengxinShijian, ",
            "MIN(COALESCE(m.chuangjian_shijian, m.f_creator_time)) AS chuangjianShijian ",
            "FROM eln_template m ",
            "LEFT JOIN eln_template_current_version c ON ",
            "c.f_tenant_id = m.f_tenant_id ",
            "AND c.muban_bianhao = m.muban_bianhao ",
            "AND COALESCE(c.f_delete_mark, 0) = 0 ",
            "LEFT JOIN eln_template e ON ",
            "e.f_tenant_id = m.f_tenant_id ",
            "AND e.f_id = c.dangqian_muban_id ",
            "AND e.muban_bianhao = m.muban_bianhao ",
            "AND COALESCE(e.f_delete_mark, 0) = 0 ",
            "WHERE m.f_tenant_id = #{tenantId} ",
            "AND COALESCE(m.f_delete_mark, 0) = 0 ",
            "<if test='mubanFenlei != null'>",
            "AND m.muban_fenlei = #{mubanFenlei} ",
            "</if>",
            "<if test='mubanBianhao != null'>",
            "AND m.muban_bianhao = #{mubanBianhao} ",
            "</if>",
            "<if test='bizStatus != null'>",
            "AND e.biz_status = #{bizStatus} ",
            "</if>",
            "<if test='bizEnabled != null'>",
            "AND e.biz_enabled = #{bizEnabled} ",
            "</if>",
            "<if test='keywordPattern != null'>",
            "AND (m.muban_bianhao LIKE #{keywordPattern} ",
            "OR m.jianyan_xiangmu LIKE #{keywordPattern} ",
            "OR m.jianyan_xiangmu_mingcheng LIKE #{keywordPattern} ",
            "OR m.muban_fenlei_mingcheng LIKE #{keywordPattern}) ",
            "</if>",
            "GROUP BY m.muban_bianhao, e.f_id, e.muban_banben, ",
            "e.jianyan_xiangmu, e.jianyan_xiangmu_bianma, e.jianyan_xiangmu_mingcheng, ",
            "e.muban_fenlei, e.muban_fenlei_mingcheng, ",
            "e.biz_status, e.biz_enabled, e.shengxiao_riqi ",
            "ORDER BY MIN(COALESCE(m.chuangjian_shijian, m.f_creator_time)) DESC, ",
            "m.muban_bianhao ASC",
            "</script>"})
    IPage<ElnTemplateVos.CatalogItem> selectTemplateDirectory(
            IPage<ElnTemplateVos.CatalogItem> page,
            @Param("tenantId") String tenantId,
            @Param("mubanFenlei") String mubanFenlei,
            @Param("mubanBianhao") String mubanBianhao,
            @Param("bizStatus") String bizStatus,
            @Param("bizEnabled") String bizEnabled,
            @Param("keywordPattern") String keywordPattern);
 
    @Select({"<script>",
            "SELECT f_id AS id, fenlei_mingcheng AS name ",
            "FROM eln_template_category ",
            "WHERE f_tenant_id = #{tenantId} ",
            "AND COALESCE(f_delete_mark, 0) = 0 ",
            "AND f_id IN ",
            "<foreach collection='templateCategoryIds' item='id' open='(' separator=',' close=')'>",
            "#{id}",
            "</foreach>",
            "</script>"})
    List<ElnTemplateVos.TemplateCategory> selectTemplateCategories(
            @Param("tenantId") String tenantId,
            @Param("templateCategoryIds") List<String> templateCategoryIds);
}