P15GEN2\59518
2024-05-29 d4210c7c4b04abde20037ea8aa0f54ef8a2649aa
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
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
<?xml version="1.0" encoding="UTF-8" ?>
    
<sqls>
    <dataSpace name="interface-io">
    
        <sql name="interfaceSetOACode">
        <![CDATA[
            update so_order
            left join mirror_oa_v_gmd_dmsorder on  mirror_oa_v_gmd_dmsorder.requestname = so_order.id
            set oa_code = clbm, oa_sync_state = if (clbm is null , '未同步' , '同步成功')
            where oa_code is null
        ]]>
        </sql>    
        
        <sql name="interfaceInsertOACompany">
        <![CDATA[
            INSERT INTO md_org 
            ( id, is_master, state_code, state_name,  source, code, ncc_code, name, short_name, 
            category_code, category_name, check_error, create_time, update_time, creator_id, creator_name )
            select `分部主键` id,'T' is_master,'Open' state_code,'生效' state_name,'OA' source,`分部编码` code, null ncc_code,`分部简称` name,`分部简称` short_name,'Master' category_code,'中心公司' category_name, if(`分部编码` is null, 'T',null) check_error, `修改时间` create_time, `修改时间` update_time,'admin' creator_id,'admin' creator_name 
            from mirror_oa_v_gmd_company 
            where not EXISTS (
                select 1 from md_org 
                where is_master = 'T' and md_org.id = mirror_oa_v_gmd_company.`分部主键`
            )
        ]]>
        </sql>        
        
        <sql name="interfaceSetCompanyNCCOde">
        <![CDATA[
            update md_org
            inner join mirror_nc_v_org_orgs on  md_org.name = mirror_nc_v_org_orgs.name
            set md_org.ncc_code = mirror_nc_v_org_orgs.code , md_org.nc_id = mirror_nc_v_org_orgs.PK_ORG
            where  is_master = 'T' and nc_id is null
        ]]>
        </sql>    
                    
    </dataSpace>
    
    <dataSpace name="interface-io-hospital">
    
        <sql name="getUpdateHospital">
        <![CDATA[
            select md_hospital.id, mirror_oa_v_dms_hospital.* 
            from md_hospital
            inner join mirror_oa_v_dms_hospital on mirror_oa_v_dms_hospital.YYBM = md_hospital.code 
            where  state_code ='Open' 
            and ( 
                (md_hospital.name != YYMC)
             or (md_hospital.province != SF) 
             or (md_hospital.city != DQ) 
             or (md_hospital.county != XS) 
             or (md_hospital.address != DD)
             )
        ]]>
        </sql>    
        
        <sql name="getAppendHospital">
        <![CDATA[
            select YYBM id,null idx, YYBM code, YYMC name, 'Open' state_code, '生效' state_name, 
            null state_detail_code, null state_detail_name,null credit_code,null short_name, 
            null zip_code,null grade,null level_no,null category,null hospital_group, 
            SF province, DQ city, XS county, DD address, null  longitude, null latitude, 
             'T' is_active, 'OA' creator_id,'OA同步' creator_name,now() create_time,now() update_time
            from mirror_oa_v_dms_hospital
            left join md_hospital on mirror_oa_v_dms_hospital.YYBM = md_hospital.code
            where md_hospital.id is null
        ]]>
        </sql>    
        
    </dataSpace>
    
    <dataSpace name="interface-io-employee">
        
        <sql name="interfaceAppendNewEmployee">
        <![CDATA[
            INSERT INTO md_employee (id, org_id, account_type_code, secret,
                        code, oa_account, name, job_title, mail, phone, is_active,
                        creator_id, creator_name, create_time, update_time)
            select 主键 id , `所属分部` org_id, `账号类型` account_type_code, secret, `工号` code,
                     `OA账号` oa_account, `姓名` name, `部门名称` `job_title`, `邮箱` `mail`, `手机号` `phone`,
                      'T' `is_active`, 'admin' `creator_id`,'admin' `creator_name`,
                    now() `create_time`, `修改时间` `update_time`
            from mirror_oa_v_gmd_hrmresource
            where not exists (
                select 1 from md_employee
                where mirror_oa_v_gmd_hrmresource.`主键` = md_employee.id
            ) 
        ]]>
        </sql>
        
        <sql name="interfaceUpdateEmployeeInfoOA">
        <![CDATA[
            update  md_employee
                left join mirror_oa_v_gmd_hrmresource oaEmployee on oaEmployee.`主键` = md_employee.id 
                inner join md_org on md_org.id = oaEmployee.`所属分部`  and md_org.is_master = 'T'
            set 
                md_employee.account_type_code = oaEmployee.`账号类型`,
                md_employee.secret = oaEmployee.secret ,
                md_employee.code = oaEmployee.`工号` ,
                md_employee.oa_account = oaEmployee.`OA账号` ,
                md_employee.job_title = oaEmployee.`部门名称` ,
                md_employee.mail = oaEmployee.`邮箱` ,
                md_employee.phone = oaEmployee.`手机号` ,
                md_employee.org_id = md_org.id ,
                md_employee.org_name = md_org.name ,
                md_employee.job_title_code = oaEmployee.`所属部门` ,
                md_employee.is_active = if(oaEmployee.`主键` is null, 'F', 'T')
        ]]>
        </sql>
        
        <sql name="interfaceInvalidEmployeeInfoOA">
        <![CDATA[
            update md_employee
                left join mirror_oa_v_gmd_hrmresource oaEmployee on oaEmployee.`主键` = md_employee.id 
                left join md_org on md_org.id = oaEmployee.`所属分部`  and md_org.is_master = 'T'
            set 
                md_employee.is_active = if(oaEmployee.`主键` is null, 'F', 'T')
        ]]>
        </sql>
        
        <sql name="interfaceAppendNewUser">
        <![CDATA[
            insert into sys_user ( id, org_id, code, name, password, pass_need_change,
                is_active, remark, create_time, update_time ) 
            select UUID_SHORT() id, md_employee.org_id, md_employee.code, md_employee.code name, '123456' password,
                  'F' pass_need_change, 'T' is_active, md_employee.name remark,
                 md_employee.create_time,md_employee.update_time 
             from md_employee  
             where md_employee.is_active = 'T' and not exists (
                  select 1 from sys_user where md_employee.code = sys_user.code and sys_user.is_active = 'T' 
                 )
             group by md_employee.code
        ]]>
        </sql>    
        
        <sql name="interfaceUpdateInvalidUser">
        <![CDATA[        
            update sys_user 
            set is_active = 'F' 
             where not exists (
                 select 1 from md_employee 
                 where md_employee.code = sys_user.code 
                     and sys_user.is_active = 'T'  
                      and  md_employee.is_active = 'T' 
             ) and employee_id is not null and sys_user.id <> 'admin'
        ]]>
        </sql>    
        
        <sql name="interfaceEmptyNotExistsEmployeePosition">
        <![CDATA[
            delete from md_position_employee
            where not exists (
                select 1 from md_employee
                where md_employee.id = md_position_employee.employee_id
                        and md_employee.is_active = 'T'
                ) and id != 'admin'
        ]]>
        </sql>
        
        <sql name="interfaceInValidNotExistsEmployeeUser">
        <![CDATA[
            delete from sys_user_employee
            where not exists (
                select 1 from md_employee
                where md_employee.id = sys_user_employee.employee_id
                        and md_employee.is_active = 'T'
                ) and id != 'admin'
        ]]>
        </sql>
        
        <sql name="interfaceAppendNewEmployeeUser">
        <![CDATA[
            insert sys_user_employee (id, user_id,employee_id)
            select md5(UUID_SHORT()) id, sys_user.id user_id, md_employee.id
            from sys_user
            inner join md_employee on md_employee.code = sys_user.code
            where not exists (
                select 1 from sys_user_employee 
                where md_employee.id = sys_user_employee.employee_id
                    and md_employee.is_active = 'T'
                    and sys_user_employee.user_id = sys_user.id
            ) and md_employee.is_active = 'T' and sys_user.is_active = 'T'
        ]]>
        </sql>
        
        <sql name="interfaceUpdateEmployeeInfoNC">
        <![CDATA[
            update md_employee
                left join mirror_oa_v_gmd_hrmresource oaEmployee on oaEmployee.`主键` = md_employee.id 
                inner join md_org on md_org.id = oaEmployee.`所属分部`  and md_org.is_master = 'T'
                left join mirror_nc_v_psn_user ncUser on ncUser.`人员编码` = oaEmployee.`工号` and ncUser.`所属公司主键` = md_org.nc_id
                left join mirror_nc_v_org_dept_v ncDept on ncDept.PK_DEPT  = ncUser.`所属部门主键`
                left join mirror_nc_v_org_dept_v ncUpDept on ncDept.PK_FATHERORG = ncUpDept.PK_DEPT 
            set 
                md_employee.nc_org_id = ncUser.`所属公司主键` ,
                md_employee.nc_org_code = md_org.ncc_code ,
                md_employee.nc_department_id = ncUser.`所属部门主键`,
                md_employee.nc_department_code = ncDept.`CODE`,
                md_employee.nc_employee_id  = ncUser.`人员主键`,
                md_employee.is_error = if(ncUser.人员主键 is null ,'T',null) ,
                md_employee.error_message = if(ncUser.人员主键 is null ,'未匹配上NC数据',null) ,
                md_employee.nc_region_id = ifnull(ncUpDept.PK_DEPT, ncDept.PK_DEPT),
                md_employee.nc_region_code = ifnull(ncUpDept.`CODE`, ncDept.`CODE`) ,
                md_employee.nc_region_name = ifnull(ncUpDept.`NAME`, ncDept.`NAME`),
                md_employee.nc_area_id = if(ncUpDept.PK_DEPT is null ,'~', ncDept.PK_DEPT),
                md_employee.nc_area_code = if(ncUpDept.PK_DEPT is null ,'~',ncDept.`CODE`),
                md_employee.nc_area_name = if(ncUpDept.PK_DEPT is null ,'~',ncDept.`NAME`)
            where ncDept.ENABLESTATE = '已启用'  
        ]]>
        </sql>
        
    </dataSpace>
    
    <dataSpace name="interface-io-org">
        
        <sql name="interfaceAppendNewNCCOrg">
        <![CDATA[
            INSERT INTO `md_org_account_ncc` (`id`, `idx`, `company_id`, `company_name`, `code_ncc`, `org_id`, `nc_org_id`, `state_code`, `state_name`, `amt_credit_init`, `remark`, `create_time`, `update_time`)
             select  distinct concat('NCC-',customerOrg.`客户编码`,'-',company.`分部主键`  ) `id`, 
            null `idx`,  company.`分部主键` `company_id`, md_org.short_name `company_name`, customerOrg.`客户编码` `code_ncc`, customerOrg.`客户主键` `org_id`, customerOrg.`客户主键` `nc_org_id`, 'notExistsAccount'  `state_code`,'DMS未开户' `state_name`,  NULL, '' `remark`, customerOrg.`最后更新日期`  `create_time`,customerOrg.`最后更新日期`  `update_time`
             from mirror_oa_v_gmd_company company
             inner join (select * from md_org where is_master = 'T'  ) md_org on md_org.id = company.`分部主键`
            inner join mirror_nc_v_customer_org customerOrg on company.`分部简称` = customerOrg.`公司名称`
            left join mirror_nc_v_customer customer on customerOrg.`客户主键` = customer.`客户主键`
             where customerOrg.`客户是否启用` = '已启用' and not exists (
             select 1 from md_org_account_ncc
             where customerOrg.`客户主键` = md_org_account_ncc.nc_org_id ) 
        ]]>
        </sql>
        
        <sql name="interfaceUpdateOrg">
        <![CDATA[
             update md_org 
             inner join (
                select distinct 
                customerOrg.org_id id, null idx, null, 'F' is_master, 'Open', '已生效', NULL state_detail_code,NULL  state_detail_name, 'NCC' source, 
                customerOrg.org_id nc_id, customerOrg.code_ncc ncc_code, customer.`客户名称` name, customer.`客户名称` short_name,'Customer' category_code, '客户' category_name, customer.纳税人识别号  certificate_no, concat( customer.`客户名称` ,'营业执照' ) , customer.地区分类名称  province, 
                '' is_preload, '' is_frozen, now() create_time, now() update_time, 'admin' creator_id, 'admin' creator_name
                from md_org_account_ncc customerOrg 
                inner join mirror_nc_v_customer customer on customerOrg.org_id = customer.客户主键
                left join md_geo_province province  on POSITION(customer.地区分类名称 IN  province.name ) <>0
                 ) org on  md_org.license_business_no = org.certificate_no     
             set md_org.source = org.source,,
             md_org.nc_id = org.nc_id,
             md_org.ncc_code = org.ncc_code,
             md_org.province = ifnull(md_org.province ,org.province),
             md_org.name = org.name
        ]]>
        </sql>
        
        <sql name="interfaceAppendNewOrg">
        <![CDATA[
             INSERT INTO md_org (
                 code, 
                 id, idx, oa_no, is_master, state_code, state_name, state_detail_code, state_detail_name, source,  
                 nc_id, ncc_code, name, short_name, category_code, category_name, license_business_no, license_business_name,  
                 province,  is_preload, is_frozen,create_time, update_time, creator_id, creator_name)
            select concat('MN0', code_next_sequence('Code-Org-MN')) code, org.* 
                from (
                    select distinct 
                    customerOrg.org_id id, null idx, null, 'F' is_master, 'Open', '已生效', NULL state_detail_code,NULL  state_detail_name, 'NCC' source, 
                    customerOrg.org_id nc_id, customerOrg.code_ncc ncc_code, customer.`客户名称` name, customer.`客户名称` short_name,'Customer' category_code, '客户' category_name, customer.纳税人识别号  certificate_no, concat( customer.`客户名称` ,'营业执照' ) , customer.地区分类名称  province, 
                    '' is_preload, '' is_frozen, now() create_time, now() update_time, 'admin' creator_id, 'admin' creator_name
                    from md_org_account_ncc customerOrg 
                    inner join mirror_nc_v_customer customer on customerOrg.org_id = customer.客户主键
                    left join md_geo_province province  on POSITION(customer.地区分类名称 IN  province.name ) <>0
                    where  not exists (
                     select 1 from md_org
                     where md_org.license_business_no = customer.纳税人识别号   )  
                     ) org 
        ]]>
        </sql>
        
        <sql name="interfaceUpdateOrgLicense">
        <![CDATA[
            UPDATE md_org 
            inner join mirror_nc_v_gspcustomer gsp on gsp.`客户主键`  = md_org.nc_id  
            set md_org.register_address = ifnull(md_org.register_address, ifnull(gsp.`注册地址`,'~') ) ,
            license_business_no = ifnull(license_business_no, `营业执照编码` ) ,
            license_business_name = concat(name, '营业执照' ) ,
            license_business_date_from = ifnull(license_business_date_from, `营业执照经营期限自` ) ,
            license_business_date_to =  ifnull(license_business_date_to, if(length(`营业执照经营期限至`) != 10 , '9999-12-31',营业执照经营期限至)) ,
            license_device_no = ifnull(license_device_no, `器械编号` ) ,
            license_device_name = concat(name, '器械许可证' ) 
        ]]>
        </sql>
        
        <sql name="interfaceUpdateOrgAddress">
        <![CDATA[
             UPDATE md_org 
            inner join mirror_nc_view_custlinkinfo address on address.`PK_CUSTOMER`  = md_org.nc_id  
            set md_org.receiver_phone = address.phone ,
            md_org.receiver_name = address.name  ,
            md_org.receive_address = address.detailInfo
        ]]>
        </sql>
        
    </dataSpace>
    
    <dataSpace name="interface-io-department">
        
        <sql name="interfaceAppendNewNCDepartment">
        <![CDATA[
            INSERT INTO md_department_nc (id, idx, company_id, nc_company_id, nc_company_code, parent_nc_id, nc_id, code, name, pk_vid, enable_state, update_time)
            select 
                PK_VID id, null idx, md_org.id company_id, PK_ORG nc_company_id, md_org.ncc_code nc_company_code,PK_FATHERORG parent_nc_id,PK_DEPT nc_id,
             mirror_nc_v_org_dept_v.code, mirror_nc_v_org_dept_v.name, PK_VID, enablestate enable_state, TS update_time
            from mirror_nc_v_org_dept_v 
            inner join md_org on md_org.is_master = 'T' and mirror_nc_v_org_dept_v.PK_ORG = md_org.nc_id
            where not exists (
             select 1 from md_department_nc
             where  md_department_nc.id = mirror_nc_v_org_dept_v.PK_VID 
             ) 
        ]]>
        </sql>
        
        <sql name="interfaceUpdateNCDepartment">
        <![CDATA[
            update md_department_nc
             left join mirror_nc_v_org_dept_v on md_department_nc.id = mirror_nc_v_org_dept_v.PK_VID 
             inner join md_org on md_org.is_master = 'T' and mirror_nc_v_org_dept_v.PK_ORG = md_org.nc_id
             set md_department_nc.company_id = md_org.id,
                md_department_nc.nc_company_id = mirror_nc_v_org_dept_v.PK_ORG,
                md_department_nc.nc_company_code = md_org.ncc_code,
                md_department_nc.nc_id = mirror_nc_v_org_dept_v.PK_DEPT,
                md_department_nc.code = mirror_nc_v_org_dept_v.code,
                md_department_nc.name = mirror_nc_v_org_dept_v.name,
                md_department_nc.enable_state = ifnull(mirror_nc_v_org_dept_v.enablestate,'已停用'),
                md_department_nc.update_time = mirror_nc_v_org_dept_v.TS
        ]]>
        </sql>
        
        <sql name="interfaceAppendNewOADepartment">
        <![CDATA[
            INSERT INTO md_department_oa (
                id, idx, company_id, company_name, code, name, parent_id, parent_code, level_no, update_time) 
            select mirror_oa_v_gmd_department.部门主键  id, null idx, 所属分部  company_id, 所属分部简称  company_name, 
                部门主键  code, 部门名称  name, 上级部门  parent_id, 上级部门  parent_code, 部门层级  level_no, 修改时间  update_time   
            from mirror_oa_v_gmd_department 
            where not exists (
                select 1 from md_department_oa
                where  md_department_oa.id = mirror_oa_v_gmd_department.部门主键 
             ) 
        ]]>
        </sql>
        
        <sql name="interfaceUpdateOADepartment">
        <![CDATA[
             update md_department_oa
             left join mirror_oa_v_gmd_department on md_department_oa.id = mirror_oa_v_gmd_department.部门主键 
                set md_department_oa.company_id = mirror_oa_v_gmd_department.所属分部,
                md_department_oa.company_name = mirror_oa_v_gmd_department.所属分部简称,
                md_department_oa.parent_id = mirror_oa_v_gmd_department.上级部门,
                md_department_oa.parent_code = mirror_oa_v_gmd_department.上级部门,
                md_department_oa.name = mirror_oa_v_gmd_department.部门名称,
                md_department_oa.update_time = mirror_oa_v_gmd_department.修改时间
        ]]>
        </sql>
        
    </dataSpace>
    
    
    
    <dataSpace name="interface-io-product">
        
        <sql name="interfaceAppendNewProdcuct">
        <![CDATA[
            INSERT INTO md_prod_sku (id, idx, product_id, product_code, product_name, spec, unit, is_active, create_time, update_time) 
            select  distinct 物料编码 id, null idx, md_bu_product.product_id, 物料编码 product_code, 物料名称 product_name,
                型号 spec, 主单位 unit, 'T' is_active, TS create_time,TS update_time
            from mirror_nc_v_db_material_org 
            inner join  md_org on md_org.nc_id = mirror_nc_v_db_material_org.公司主键  and md_org.is_master = 'T'
            left join md_bu_product on md_bu_product.product_name = 物料名称 
            where ENABLESTATE = '已启用'and  分类名称 = '03神经和心血管手术器械'  and 型号 is not null and not exists(
            select 1 from md_prod_sku
            where md_prod_sku.id = mirror_nc_v_db_material_org.物料编码
            )
        ]]>
        </sql>
        
        <sql name="interfaceUpdateInvaildProdcuct">
        <![CDATA[
            update md_prod_sku 
            set md_prod_sku.is_active = 'F'
            where not EXISTS (
                select 1 from mirror_nc_v_db_material_org 
                where md_prod_sku.id = mirror_nc_v_db_material_org.物料编码 
                    and ENABLESTATE = '已启用'and  分类名称 = '03神经和心血管手术器械'
            )
        ]]>
        </sql>
        
    </dataSpace>
</sqls>