刘光辉
5 小时以前 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
187
188
package jnpf.limsMapper;
 
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import jnpf.base.mapper.SuperMapper;
import jnpf.limsEntity.LimsJianyanXiangEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
 
import java.util.Date;
import java.util.List;
 
@Mapper
public interface LimsJianyanXiangMapper extends SuperMapper<LimsJianyanXiangEntity> {
 
    @InterceptorIgnore(others = "Ilg@true")
    @Select({
            "<script>",
            "SELECT f_id AS id, f_foreign_id AS foreignId, f_tenant_id AS tenantId,",
            "qingyandan_id AS qingyandanId, laiyuan_renwu_id AS laiyuanRenwuId,",
            "renwu_jianyan_xiang_kuaizhao_id AS renwuJianyanXiangKuaizhaoId,",
            "biz_type AS bizType, jianyan_liushuihao AS jianyanLiushuihao,",
            "chanpin_id AS chanpinId, chanpin_bianma AS chanpinBianma,",
            "chanpin_mingcheng AS chanpinMingcheng, pihao, guige,",
            "jianyan_xiangmu_bianma AS jianyanXiangmuBianma,",
            "jianyan_xiangmu_mingcheng AS jianyanXiangmuMingcheng,",
            "fenxi_leixing AS fenxiLeixing, shifou_waijian AS shifouWaijian,",
            "shifou_chuju_baogao AS shifouChujuBaogao, waijian_danwei AS waijianDanwei,",
            "waijian_lururen AS waijianLururen, biaozhun_guiding AS biaozhunGuiding,",
            "biaozhun_shangxian AS biaozhunShangxian, biaozhun_xiaxian AS biaozhunXiaxian,",
            "shuju_leixing AS shujuLeixing, jiancha_banzu AS jianchaBanzu,",
            "jiancha_ren AS jianchaRen, wancheng_riqi AS wanchengRiqi,",
            "remind_flags AS remindFlags, jianyan_zhuangtai AS jianyanZhuangtai,",
            "renwu_fenpeiren AS renwuFenpeiren, renwu_fenpei_shijian AS renwuFenpeiShijian,",
            "jianyan_jieguo AS jianyanJieguo, jianyan_jielun AS jianyanJielun,",
            "biz_files AS bizFiles, jieguo_luru_riqi AS jieguoLuruRiqi,",
            "renwu_tuihuiren AS renwuTuihuiren, tuihui_yuanyin AS tuihuiYuanyin,",
            "renwu_shenheren AS renwuShenheren, fenjian_zhuangtai AS fenjianZhuangtai,",
            "fenjian_liang AS fenjianLiang, fenjian_danwei AS fenjianDanwei,",
            "fenjian_fenzhuang_rongqi AS fenjianFenzhuangRongqi,",
            "fenjian_baocun_tiaojian AS fenjianBaocunTiaojian, fenjian_huanjing AS fenjianHuanjing,",
            "fenjian_ren AS fenjianRen, fenjian_riqi AS fenjianRiqi,",
            "yichang_diaocha_leixing AS yichangDiaochaLeixing,",
            "shifou_zuhe_fenjian AS shifouZuheFenjian, zuhe_id AS zuheId,",
            "zuhe_fenjian_liang AS zuheFenjianLiang, zuhe_fenjian_danwei AS zuheFenjianDanwei,",
            "f_delete_mark AS deleteMark, f_delete_time AS deleteTime,",
            "f_delete_user_id AS deleteUserId, renwu_shenheren_shijian AS renwuShenherenShijian,",
            "hetonghao, beizhu",
            "FROM lims_jianyan_xiang",
            "WHERE f_tenant_id = #{tenantId}",
            "AND (f_delete_mark IS NULL OR f_delete_mark = 0)",
            "AND f_id IN",
            "<foreach collection='ids' item='id' open='(' separator=',' close=')'>",
            "#{id}",
            "</foreach>",
            "</script>"
    })
    List<LimsJianyanXiangEntity> selectLiveTasks(
            @Param("tenantId") String tenantId, @Param("ids") List<String> ids);
 
    @InterceptorIgnore(others = "Ilg@true")
    @Update({
            "<script>",
            "UPDATE lims_jianyan_xiang",
            "SET jianyan_jieguo = #{result},",
            "jianyan_jielun = #{conclusion},",
            "biz_files = #{files},",
            "jieguo_luru_riqi = #{recordedAt},",
            "jianyan_zhuangtai = 'pending_audit',",
            "yichang_diaocha_leixing = #{investigationType}",
            "WHERE f_id = #{id}",
            "AND f_tenant_id = #{tenantId}",
            "AND jianyan_zhuangtai IN ('pending_test','cancelled','audit_rejected')",
            "<choose>",
            "<when test='external'>AND waijian_lururen = #{userId}</when>",
            "<otherwise>AND jiancha_ren = #{userId}</otherwise>",
            "</choose>",
            "AND (f_delete_mark IS NULL OR f_delete_mark = 0)",
            "</script>"
    })
    int submitResult(@Param("tenantId") String tenantId,
                     @Param("id") String id,
                     @Param("userId") String userId,
                     @Param("external") boolean external,
                     @Param("result") String result,
                     @Param("conclusion") String conclusion,
                     @Param("files") String files,
                     @Param("recordedAt") Date recordedAt,
                     @Param("investigationType") String investigationType);
 
    @InterceptorIgnore(others = "Ilg@true")
    @Update({
            "UPDATE lims_jianyan_xiang",
            "SET renwu_shenheren = #{auditorId},",
            "jianyan_zhuangtai = 'audited',",
            "renwu_shenheren_shijian = #{reviewedAt}",
            "WHERE f_id = #{id}",
            "AND f_tenant_id = #{tenantId}",
            "AND jianyan_zhuangtai = 'pending_audit'",
            "AND (f_delete_mark IS NULL OR f_delete_mark = 0)"
    })
    int markAudited(@Param("tenantId") String tenantId,
                    @Param("id") String id,
                    @Param("auditorId") String auditorId,
                    @Param("reviewedAt") Date reviewedAt);
 
    @InterceptorIgnore(others = "Ilg@true")
    @Update({
            "UPDATE lims_jianyan_xiang",
            "SET renwu_tuihuiren = #{auditorId},",
            "tuihui_yuanyin = #{note},",
            "jianyan_zhuangtai = 'audit_rejected'",
            "WHERE f_id = #{id}",
            "AND f_tenant_id = #{tenantId}",
            "AND jianyan_zhuangtai = 'pending_audit'",
            "AND (f_delete_mark IS NULL OR f_delete_mark = 0)"
    })
    int markAuditRejected(@Param("tenantId") String tenantId,
                          @Param("id") String id,
                          @Param("note") String note,
                          @Param("auditorId") String auditorId);
 
    @InterceptorIgnore(others = "Ilg@true")
    @Select({
            "<script>",
            "SELECT task.f_id, task.f_foreign_id, task.f_tenant_id, task.qingyandan_id AS qingyandanId, task.jianyan_zhuangtai,",
            "task.shifou_waijian, task.waijian_lururen, task.jiancha_ren, task.biaozhun_guiding,",
            "task.chanpin_mingcheng, task.pihao, task.guige, task.f_delete_mark,",
            "task.jianyan_xiangmu_bianma, task.jianyan_xiangmu_mingcheng,",
            "project.test_definition_id AS testDefinitionId,",
            "project.match_count AS testDefinitionMatchCount,",
            "qingyandan.shengchan_riqi AS shengchanRiqi,",
            "qingyandan.jianyan_leixing AS jianyanLeixing,",
            "quality_standard.gongyang_danwei AS qualityStandardSource",
            "FROM lims_jianyan_xiang task",
            "LEFT JOIN lims_qingyandan qingyandan ON qingyandan.f_id = task.qingyandan_id",
            "AND qingyandan.f_tenant_id = task.f_tenant_id",
            "AND (qingyandan.f_delete_mark IS NULL OR qingyandan.f_delete_mark = 0)",
            "LEFT JOIN zhiliang_biaozhun_guanli_zixiang quality_standard_item",
            "ON quality_standard_item.f_id = task.f_foreign_id",
            "AND quality_standard_item.f_tenant_id = task.f_tenant_id",
            "AND (quality_standard_item.f_delete_mark IS NULL OR quality_standard_item.f_delete_mark = 0)",
            "LEFT JOIN zhiliang_biaozhun_guanli quality_standard",
            "ON quality_standard.f_id = quality_standard_item.f_foreign_id",
            "AND quality_standard.f_tenant_id = task.f_tenant_id",
            "AND (quality_standard.f_delete_mark IS NULL OR quality_standard.f_delete_mark = 0)",
            "LEFT JOIN (",
            "SELECT f_tenant_id, bianma, MIN(f_id) AS test_definition_id, COUNT(*) AS match_count",
            "FROM jianyan_xiangmu_guanli",
            "GROUP BY f_tenant_id, bianma",
            ") project ON project.f_tenant_id = task.f_tenant_id",
            "AND project.bianma = task.jianyan_xiangmu_bianma",
            "WHERE task.f_tenant_id = #{tenantId}",
            "AND (task.f_delete_mark IS NULL OR task.f_delete_mark = 0)",
            "AND task.f_id IN",
            "<foreach collection='ids' item='id' open='(' separator=',' close=')'>",
            "#{id}",
            "</foreach>",
            "</script>"
    })
    @Results({
            @Result(column = "f_id", property = "id", id = true),
            @Result(column = "f_foreign_id", property = "foreignId"),
            @Result(column = "f_tenant_id", property = "tenantId"),
            @Result(column = "qingyandanId", property = "qingyandanId"),
            @Result(column = "jianyan_zhuangtai", property = "jianyanZhuangtai"),
            @Result(column = "shifou_waijian", property = "shifouWaijian"),
            @Result(column = "waijian_lururen", property = "waijianLururen"),
            @Result(column = "jiancha_ren", property = "jianchaRen"),
            @Result(column = "biaozhun_guiding", property = "biaozhunGuiding"),
            @Result(column = "chanpin_mingcheng", property = "chanpinMingcheng"),
            @Result(column = "pihao", property = "pihao"),
            @Result(column = "guige", property = "guige"),
            @Result(column = "shengchanRiqi", property = "shengchanRiqi"),
            @Result(column = "jianyanLeixing", property = "jianyanLeixing"),
            @Result(column = "qualityStandardSource", property = "qualityStandardSource"),
            @Result(column = "testDefinitionId", property = "testDefinitionId"),
            @Result(column = "testDefinitionMatchCount", property = "testDefinitionMatchCount"),
            @Result(column = "jianyan_xiangmu_bianma", property = "jianyanXiangmuBianma"),
            @Result(column = "jianyan_xiangmu_mingcheng", property = "jianyanXiangmuMingcheng"),
            @Result(column = "f_delete_mark", property = "deleteMark")
    })
    List<LimsJianyanXiangEntity> selectSnapshotTasks(
            @Param("tenantId") String tenantId, @Param("ids") List<String> ids);
}