P15GEN2\59518
2025-10-10 9f6890646993d16260d4201d613c092132856127
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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
<?xml version="1.0" encoding="UTF-8" ?>
 
<sqls>
    <dataSpace name="user">
 
        <!-- 获取审批人信息 -->
        <sql name="getApproverInfo">
           <![CDATA[
                select md_employee.*
                from sys_user
                inner join md_employee on sys_user.employee_id = md_employee.id
                where sys_user.id = '@{userId}'
           ]]>
        </sql>
 
        <!-- 保存重置密码 -->
        <sql name="resetUserVerifyCode">
            <![CDATA[
                 update sys_user
                 set verify_code = null
                 where name = '@{account}'
            ]]>
        </sql>
 
        <!-- 保存重置密码 -->
        <sql name="saveResetUserPassword">
            <![CDATA[
                 update sys_user
                 set password = '@{password}',
                     verify_code = null
                 where name = '@{account}'
            ]]>
        </sql>
 
        <!-- 更新验证码 -->
        <sql name="saveVerifyCode">
            <![CDATA[
                 update sys_user
                 set verify_code = '@{verifyCode}'
                 where name = '@{account}'
            ]]>
        </sql>
 
        <!-- 根据岗位-医院, 查看经销商指标 -->
        <sql name="queryDealerTargetBypositionLimit">
            <![CDATA[
                 exists (
                         select 1 from md_hospital 
                         left join md_org_hospital on md_org_hospital.hospital_id = md_hospital.id
                         where exists (select code from (select code
                                                               from (select t1.*, 
                                                                            case when find_in_set(@{IfEmpty}(CONVERT( parent_code USING utf8mb4 ), ''), @pids) = 0  when null 
                                                                            else @pids := concat(@pids, ',', code))end as ischild
                                                                     from (select * 
                                                                           from md_position t  
                                                                           order by parent_id, code) t1, (select @pids := '@{user.position_code}') t2
                                                                     ) t3 
                                                               where (ischild is not null or code = '@{user.position_code}' )) t4 
                                             where t4.code = md_hospital.position_code)
                           and @{tableName}.customer_id = md_org_hospital.parent_id )
            ]]>
        </sql>
 
        <!-- 经销商指标权限 -->
        <sql name="creatorDealerTargetLimit">
            <![CDATA[
                 EXISTS (
                 SELECT 1 
                 FROM (
                       select code 
                       from
                             (select t1.*, if (find_in_set( @{IfEmpty}( CONVERT ( parent_code USING utf8mb4 ), '' ), @pids ) = 0, NULL, @pids := concat( @pids, ',', CODE )) AS ischild 
                              from ( SELECT * FROM md_position t ORDER BY parent_id, CODE ) t1, ( SELECT @pids := '@{user.position_code}' ) t2 
                             ) t3 
                       where ( ischild IS NOT NULL OR CODE = '@{user.position_code}' )) t4 
                 inner join md_employee on t4.code = md_employee.position_code
                 inner join sys_user on md_employee.id = sys_user.employee_id
                 where sys_user.id = @{tableName}.creator_id )            
            ]]>
        </sql>
 
        <!-- 医院指标 -->
        <sql name="hospitalTargetLimit">
            <![CDATA[
                 exists (select t4.code 
                         from (select code
                               from (select t1.*, 
                                            case when find_in_set(@{IfEmpty}(CONVERT ( parent_code USING utf8mb4 ), ''), @pids) = 0  then null 
                                            else @pids := concat(@pids, ',', code)) end as ischild
                                     from (select * 
                                           from md_position t  
                                           order by parent_id, code) t1, (select @pids := '@{user.position_code}') t2
                                    ) t3 
                              where (ischild is not null or code = '@{user.position_code}' )) t4 
                         inner join md_hospital on t4.code = md_hospital.position_code
                          where @{tableName}.hospital_id = md_hospital.id)                
            ]]>
        </sql>
 
        <!-- 医院管理权限 -->
        <sql name="creatorHospitalLimit">
            <![CDATA[
                 EXISTS (
                 SELECT 1 
                 FROM (
                       select code 
                       from
                             (select t1.*, if (find_in_set( @{IfEmpty}( CONVERT ( parent_code USING utf8mb4 ), '' ), @pids ) = 0, NULL, @pids := concat( @pids, ',', CODE )) AS ischild 
                              from ( SELECT * FROM md_position t ORDER BY parent_id, CODE ) t1, ( SELECT @pids := '@{user.position_code}' ) t2 
                             ) t3 
                       where ( ischild IS NOT NULL OR CODE = '@{user.position_code}' )) t4 
                 inner join md_employee on t4.code = md_employee.position_code
                 inner join sys_user on md_employee.id = sys_user.employee_id
                 where sys_user.id = @{tableName}.create_id )            
            ]]>
        </sql>
 
        <sql name="getUser">
            <![CDATA[
            select sys_user.*, md_employee.name as employee_name from sys_user 
            left join md_employee on sys_user.employee_id = md_employee.id
            where sys_user.name = '@{userName}' 
              and password = '@{password}'
              and sys_user.is_active = '@{is_active}' 
            ]]>
        </sql>
 
        <sql name="getUserBySystem">
            <![CDATA[
                select distinct sys_user.*, md_employee.name as employee_name
                from sys_user 
                left join sys_user_employee on sys_user.id = sys_user_employee.user_id 
                left join md_employee on sys_user_employee.employee_id = md_employee.id 
                where @{userNameField} = '@{unionId}'
                  and sys_user.is_active = '@{is_active}' 
            ]]>
        </sql>
        
        <sql name="getUserByUsername">
            <![CDATA[
            select sys_user.*, md_employee.name as employee_name 
            from sys_user 
            left join sys_user_employee on sys_user_employee.user_id = sys_user.id
             inner join md_employee on sys_user_employee.employee_id = md_employee.id
            where @{filter}
            ]]>
        </sql>
 
        <sql name="getEmployeeInfo">
            <![CDATA[
            select  @{IfEmpty}(md_employee.phone,md_org_account.business_phone) phone   from sys_user 
            left join md_employee on sys_user.employee_id = md_employee.id
            left join md_org_account  on md_org_account.org_id = sys_user.org_id
            where sys_user.name = '@{userName}' 
              and sys_user.is_active = '@{is_active}' 
            ]]>
        </sql>
        
        <sql name="denyLimit">
            <![CDATA[
            1 <> 1
            ]]>
        </sql>
 
        <sql name="unlimit">
            <![CDATA[
            1 = 1
            ]]>
        </sql>
 
        <!-- 审批数据权限 -->
        <sql name="writerLimit">
           <![CDATA[
                workflow_step_user.user_id = '@{user_id}'
           ]]>
         </sql>
        
        <!-- 销售 根据岗位查看指标明细(tgt_planning_detail)  -->
        <sql name="positionPlanningDetailLimit">
            <![CDATA[
                 exists (
                    select 1 from md_position_hierarchy 
                    where md_position_hierarchy.@{user.position_level_field} = '@{user.position_id}'
                        and  md_position_hierarchy.position_id = @{tableName}.position_id) 
            ]]>
        </sql>
 
        <sql name="hierarchyAndCreatorLimit">
            <![CDATA[
            exists (
                select 1 from speed_user_province 
                where speed_user_province.user_id = '@{user.id}' 
                    and speed_user_province.province = @{tableName}.province
            )
            and @{tableName}.creator_id = '@{user.id}'
            ]]>
        </sql>
 
        <sql name="noTempLimit">
            <![CDATA[
            (state_code = 'Open' or state_code is null)
            ]]>
        </sql>
 
        <sql name="creatorLimit">
            <![CDATA[
            @{tableName}.creator_id = '@{user.id}'
            ]]>
        </sql>
 
        <sql name="getUserLimitActive">
            <![CDATA[
            select is_line_limit_active from sys_user
            where name = '@{userName}'
            ]]>
        </sql>
 
        <sql name="userLimit">
            <![CDATA[
                exists (
                    select 1 from sys_user_employee 
                    inner join sys_user on sys_user.id = sys_user_employee.user_id 
                    where sys_user.id = '@{user.id}')
            ]]>
        </sql>
        
        <sql name="getDistinctPositionUserByActor">
            <![CDATA[
                select md_position_employee.id, sys_right_actor_target.actor_id, sys_right_actor_target.type_code, 
                md_position.code md_position__code, md_position.name md_position__name, md_position_employee.remark md_position_employee__remark,
                md_employee.code md_employee__code, md_employee.name md_employee__name, md_employee.phone md_employee__phone, md_employee.mail md_employee__mail,
                sys_user.id sys_user__id
                from sys_right_actor_target
                left join md_position on sys_right_actor_target.target_id = md_position.id    
                inner join md_position_employee on md_position.id = md_position_employee.position_id    
                left join md_employee on md_position_employee.employee_id =    md_employee.id and md_employee.is_active = 'T'
                left join sys_user_employee on sys_user_employee.employee_id = md_employee.id
                left join sys_user on sys_user.id = sys_user_employee.user_id  and sys_user.is_active = 'T'
                where @{filter} @{orderby}@{limit}
            ]]>
        </sql>
        
        <sql name="getUserMail">
            <![CDATA[
                select distinct * from (
                    select sys_user.name, mail from sys_user
                    inner join sys_user_employee on sys_user_employee.user_id = sys_user.id
                    inner join md_employee on md_employee.id = sys_user_employee.employee_id
                    where sys_user.is_active = 'T' and mail is not null
                    union
                    select sys_user.name, md_org_account.business_email mail from sys_user
                    inner join md_org_account on md_org_account.org_id = sys_user.org_id 
                    where sys_user.is_active = 'T' and state_code = 'Open' and business_email is not null) user_mail
                where @{filter} @{orderby}@{limit}
            ]]>
        </sql>
        
    </dataSpace>
 
</sqls>