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
<?xml version="1.0" encoding="UTF-8" ?>
    
<sqls>
    <dataSpace name="updateSaleFramework">
       
        <sql name="deleteNotExistsSalesPosition">
        <![CDATA[
            delete from md_position 
            where category_code = 'Sales' and  
            not exists (
                select 1 from temp_position 
                where temp_position.position_code = md_position.name 
                    and @{IfEmpty}(is_error, '') <> 'T' 
                    and io_batch_id = '@{batchNo}'
            )
        ]]>
        </sql>        
 
        <sql name="updatePositionSalesPosition">
        <![CDATA[
            update md_position 
            inner join (
                select * from temp_position 
                where @{IfEmpty}(is_error, '') <> 'T' and io_batch_id = '@{batchNo}'
            ) temp_position on md_position.id = temp_position.position_id and  md_position.category_code = 'Sales'
            set md_position.company_id = temp_position.company_id,
                md_position.division_id = temp_position.division_id,
                md_position.parent_id = temp_position.parent_id,
                md_position.code = temp_position.position_code,
                md_position.name = temp_position.position_name,                
                md_position.type_code = temp_position.type_code,
                md_position.type_name = temp_position.type_name,
                md_position.remark = temp_position.remark,
                md_position.region = temp_position.region,
                md_position.index_no = temp_position.index_no           
        ]]>
        </sql>       
       
        <sql name="appendNewSalesPosition">
        <![CDATA[
            insert into md_position  (
                id,  company_id, division_id, parent_id, category_code, code, name, 
                type_code, type_name, remark, region, index_no,  
                superior_1, superior_2, superior_3, superior_4
            ) 
            select position_id, company_id, division_id, parent_id, 'Sales' category_code, position_code, position_name, 
                type_code, type_name, remark, region, index_no, 
                superior_1, superior_2, superior_3, superior_4
            from temp_position where io_batch_id = '@{batchNo}'
            and not exists (
                select 1 from md_position 
                where temp_position.position_id = md_position.id
            )
        ]]>
        </sql>
        
        <sql name="inactiveNotExistsSalesEmployee">
        <![CDATA[
            update md_employee 
            set is_active = 'F', update_time = now()
            where id is not null and actor_code like '%Sales%' and is_active = 'T' and not exists (
                select 1 from temp_position 
                where io_batch_id = '@{batchNo}'
                    and md_employee.id = temp_position.employee_id
            ) 
        ]]>
        </sql>        
        
        <sql name="appendNewSalesEmployee">
        <![CDATA[
            insert into md_employee (
                id, org_id, org_name, account_type_code, actor_code, code, name, 
                job_title, mail, phone, nc_org_id, nc_department_id, nc_employee_id, 
                is_error, error_message, is_active, creator_id, creator_name, create_time, update_time
            )
            select employee_id, company_id, company_name, account_type_code, actor_code, employee_code , remark,
                job_title, employee_mail, employee_phone, nc_company_id, nc_department_id, nc_employee_id,
                is_employee_match_error, employee_match_error_message, is_active, '@{creatorId}', '@{creatorName}',
                create_time,update_time
            from temp_position where io_batch_id = '@{batchNo}' and not exists (
                select 1 from md_employee 
                where md_employee.id = temp_position.employee_id
            )
        ]]>
        </sql>
 
        <sql name="deleteNotExistsPositionEmployee">
        <![CDATA[
            delete from md_position_employee where not exists (
                select 1 from md_position
                where md_position.id = md_position_employee.position_id 
            )
            or not exists (
                select 1 from md_employee
                where md_employee.id = md_position_employee.employee_id
            )            
        ]]>
        </sql>
                
        <sql name="inValidNotExistsEmployeeUser">
        <![CDATA[
            update sys_user
            set is_active = 'F'
            where not exists (
                select 1 from md_employee 
                where md_employee.id = sys_user.employee_id
                    and md_employee.is_active = 'T'
            ) and employee_id is not null and id != 'admin'
        ]]>
        </sql>
        
        <sql name="validExistsEmployeeUser">
        <![CDATA[
            update sys_user
            set is_active = 'T'
            where exists (
                select 1 from md_employee 
                where md_employee.id = sys_user.employee_id
                    and md_employee.is_active = 'T'
            )
        ]]>
        </sql>
        
        <sql name="appendNewEmployeeUser">
        <![CDATA[        
            insert into sys_user ( id, org_id, code, name, password, employee_id, pass_need_change,
                is_active, secret, remark, create_time, update_time ) 
            select md_employee.id, md_employee.org_id, md_employee.code, md_employee.code name, '123456' password,
                 md_employee.id employee_id, 'F' , 'T', mirror_oa_v_gmd_hrmresource.SECRET, md_employee.name remark,
                 md_employee.create_time,md_employee.update_time 
             from md_employee 
             left join mirror_oa_v_gmd_hrmresource on mirror_oa_v_gmd_hrmresource.主键 = md_employee.id 
             where md_employee.is_active = 'T' and not exists (
                  select 1 from sys_user where md_employee.id = sys_user.employee_id and sys_user.is_active = 'T' 
                  )
        ]]>
        </sql>
        
        <sql name="appendNewUserOrg">
        <![CDATA[        
            insert into sys_user_org (id,idx,org_id,user_id, division_id)
            select @{guid} id, null idx, md_employee.org_id, sys_user.id user_id, md_division.id division_id 
            from md_employee 
            inner join md_division on md_division.company_id = md_employee.org_id
            inner join sys_user on sys_user.employee_id = md_employee.id 
            left join sys_user_org on sys_user_org.org_id  =md_employee.org_id and sys_user.id =  sys_user_org.user_id 
            where sys_user_org.id is null and sys_user.is_active = 'T' 
            and md_employee.is_active = 'T' and md_employee.actor_code like '%Sales%'
        ]]>
        </sql>        
        
        
        <sql name = "queryEmployeeMatchNCError">
          <![CDATA[
               select *
               from md_employee 
               where is_error = 'T' and actor_code like '%Sales%'
          ]]>
       </sql>
        
        <sql name="deleteNotExistsRightActorTarget">
        <![CDATA[        
            delete from sys_right_actor_target 
            where type_code = 'Position' and  actor_id like '%Sales%' and not EXISTS (
            select 1 from  md_position
            where  is_delete != 'T' and  sys_right_actor_target.target_id = md_position.id ) 
 
        ]]>
        
        </sql>    <sql name="getNewRightActorTarget">
        <![CDATA[        
            select md_position.id, null actor_id, md_position.duty, 'Position' type_code , 
                md_position.company_id, md_position.division_id, md_position.id target_id, remark 
            from md_position 
            where is_delete != 'T' and not EXISTS (
            select 1 from  sys_right_actor_target
            where  sys_right_actor_target.target_id = md_position.id ) and category_code = 'Sales' 
        ]]>
        </sql>    
       
        <sql name="refreshHospitalPosition">
        <![CDATA[
            update md_position_hospital 
            left join temp_position_hospital on md_position_hospital.hospital_id = temp_position_hospital.hospital_id    
                    and md_position_hospital.bu_id = temp_position_hospital.bu_id 
                    and md_position_hospital.company_id = temp_position_hospital.company_id    
            set md_position_hospital.position_id = temp_position_hospital.position_id,
                md_position_hospital.department = temp_position_hospital.department,
                md_position_hospital.remark = temp_position_hospital.remark
            where io_batch_id = '@{batchNo}' 
          ]]>
       </sql>
 
    </dataSpace>
       
    <dataSpace name="checkTempSaleFramework">
       <sql name = "getParentPositionEmployee">
          <![CDATA[
              select parent_position.id parent_position_id , parent_position.company_id parent_position_company_id,
                parent_position.division_id parent_position_division_id,    parent_position.parent_id parent_position_parent_id,
                parent_position.category_code parent_position_category_code,    parent_position.code parent_position_code,
                parent_position.name parent_position_name,    parent_position.type_code parent_position_type_code,
                parent_position.type_name parent_position_type_name,    parent_position.remark parent_position_remark,
                parent_position.region parent_position_region,    parent_position.index_no parent_position_index_no,
                parent_position.level_no parent_position_level_no,    parent_position.superior_1 parent_position_superior_1,
                parent_position.superior_2 parent_position_superior_2,    parent_position.superior_3 parent_position_superior_3,
                parent_position.superior_4 parent_position_superior_4,    md_position_hierarchy.level2 parent_position_region_id,
                md_employee.id md_employee__id,
                md_employee.org_id md_employee_org_id,    md_employee.org_name md_employee_org_name,
                md_employee.account_type_code md_employee_account_type_code,    md_employee.actor_code md_employee_actor_code,
                md_employee.code md_employee_code,    md_employee.name md_employee__name,
                md_employee.job_title md_employee_job_title,
                md_employee.mail md_employee_mail,    md_employee.account_type_code md_employee_account_type_code,
                md_employee.actor_code md_employee_actor_code,    md_employee.code md_employee_code,
                md_employee.name md_employee_name,    md_employee.phone md_employee_phone,
                md_employee.avatar md_employee__avatar, md_employee.phone md_employee__phone, md_position.id
            from md_position
            left join md_position parent_position on md_position.parent_id = parent_position.id and md_position.category_code = 'Sales'
            left join md_position_employee ON parent_position.id = md_position_employee.position_id
            left join md_position_hierarchy ON md_position.parent_id = md_position_hierarchy.position_id
            LEFT JOIN md_employee md_employee ON md_position_employee.employee_id = md_employee.id
            where @{filter} @{orderby} @{limit}
          ]]>
       </sql>
                
    </dataSpace>
    
    <dataSpace name="salesHierarchy">
        <sql name = "getLeaderPosition">
        <![CDATA[
            select md_position.parent_id as parent_position_id, md_position.id as position_id, 
                md_position.name as position_title, md_position.level_code, md_position.duty,
                md_employee.id as employee_id, md_employee.name as employee_name, sys_user.id as user_id
            from md_position
            left join md_position_employee on md_position_employee.position_id = md_position.id
            left join md_employee on md_employee.id = md_position_employee.employee_id
            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
            where @{filter}
        ]]>
        </sql>
        
        <sql name = "getOALeader">
        <![CDATA[
            select DISTINCT md_department.parent_id as parent_position_id, md_department.id as position_id, 
                md_department.name as position_title, md_department.level_code, md_department.duty,
                md_employee.id as employee_id, md_employee.name as employee_name, sys_user.id as user_id 
            from md_department
            inner join md_employee on md_department.dept_manager_userid_list  = md_employee.dingtalk_id
            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
            where @{filter} 
        ]]>
        </sql>
        
    </dataSpace>    
 
</sqls>