基础数据同步视图修改

This commit is contained in:
李正@用友 2025-06-09 09:00:32 +08:00
parent 545167fa69
commit 2a1400897b
1 changed files with 155 additions and 69 deletions

View File

@ -1,40 +1,100 @@
## 物料编码 ## 物料编码
~~~sql ~~~sql
CREATE OR REPLACE FORCE EDITIONABLE VIEW "TKNCC"."V_UAPBD_QUERYSYNC_MATERIAL" ("PK_MATERIAL", "CODE", "NAME", "MATERIALSPEC", "PK_MEASDOC", "CHKFREEFLAG", "ENABLESTATE", "PK_STORDOC", "MATERSTATE", "PK_ORG", "ORG_CODE", "TS") AS -- TKNCC.V_UAPBD_QUERYSYNC_MATERIAL source
SELECT DISTINCT create view V_UAPBD_QUERYSYNC_MATERIAL as
m.PK_MATERIAL, SELECT
m.CODE, t."PK_MATERIAL",t."CODE",t."NAME",t."MATERIALSPEC",t."ENABLESTATE",t."DW_CODE",t."DW_NAME",t."PK_MEASDOC",t."CHKFREEFLAG",t."STOCKORG_CODE",t."PK_STORDOC",t."STOCKCODE",t."STOCKNAME",t."PK_ORG",t."REAL_ORG_CODE",t."MTS",t."MKTS",
m.NAME, 'C022' AS org_code,
m.MATERIALSPEC, t1.materstate,
m.PK_MEASDOC, t.PK_MARBASCLASS,
mk.chkfreeflag, CASE
m.ENABLESTATE, WHEN t.mTS IS NULL
mk.pk_stordoc, AND t.mkTS IS NULL
md.materstate, AND t1.mdTS IS NULL THEN to_char(TO_DATE(sysdate, 'YYYY-MM-DD HH24:MI:SS'))
m.PK_ORG, ELSE GREATEST(
oo.code AS org_code, COALESCE(t.mTS, '2000-01-01 00:00:00'),
GREATEST(m.TS, mk.TS, md.TS, oo.TS) AS TS COALESCE(t.mkTS, '2000-01-01 00:00:00'),
COALESCE(t1.mdTS, '2000-01-01 00:00:00'))
END AS ts
FROM FROM
bd_material m (
LEFT JOIN bd_materialstock mk ON m.PK_MATERIAL = mk.pk_material SELECT
LEFT JOIN bd_materialprod md ON m.PK_MATERIAL = md.pk_material m.PK_MATERIAL,
LEFT JOIN org_orgs oo ON m.pk_org = oo.pk_org m.CODE,
WHERE m.NAME,
m.dr = 0; m.MATERIALSPEC,
m.PK_MARBASCLASS,
m.ENABLESTATE,
mc.code AS dw_code,
mc.name AS dw_name,
mc.pk_measdoc AS pk_measdoc,
mk.chkfreeflag,
os.code AS stockorg_code,
bdstoc.pk_stordoc,
bdstoc.code AS stockcode,
bdstoc.name AS stockname,
oo.PK_ORG,
oo.code AS real_org_code,
m.ts AS mts,
mk.ts AS mkts
FROM
bd_material m
INNER JOIN bd_materialstock mk ON
m.PK_MATERIAL = mk.pk_material
INNER JOIN org_stockorg os ON
mk.pk_org = os.pk_stockorg
AND os.code = 'C022'
LEFT JOIN bd_stordoc bdstoc ON
mk.pk_stordoc = bdstoc.pk_stordoc
LEFT JOIN bd_measdoc mc ON
m.pk_measdoc = mc.pk_measdoc
LEFT JOIN org_orgs oo ON
m.pk_org = oo.pk_org
WHERE
m.dr = 0
-- AND (oo.code = '30401'
-- OR m.CODE LIKE '1%'
-- OR m.CODE LIKE '2%'
-- OR m.CODE LIKE '4%')
ORDER BY
m.pk_material DESC
)t
LEFT JOIN (
SELECT
md.pk_material,
md.materstate,
orgf.code AS orgf_code,
md.ts AS mdts
FROM
bd_materialprod md
INNER JOIN org_factory orgf ON
md.pk_org = orgf.pk_factory
AND orgf.code = 'C022'
)t1 ON
t.PK_MATERIAL = t1.PK_MATERIAL
~~~ ~~~
## 物料分类 ## 物料分类
~~~sql ~~~sql
CREATE VIEW V_UAPBD_QUERYSYNC_MATERIALCLASS AS create view V_UAPBD_QUERYSYNC_MATCLASS as
SELECT SELECT
m.code, m.code,
m.name, m.name,
m.pk_marbasclass , m.pk_marbasclass ,
p.name AS parent_name, p.name AS parent_name,
p.code AS parent_code, p.code AS parent_code,
oo.CODE AS org_code,
p.pk_marbasclass pk_parent, p.pk_marbasclass pk_parent,
GREATEST(p.TS, m.TS) AS TS oo.CODE AS real_org_code,
m.enablestate,
CASE
WHEN p.TS IS NULL
AND m.TS IS NULL THEN to_char(TO_DATE(sysdate, 'YYYY-MM-DD HH24:MI:SS'))
ELSE GREATEST(
COALESCE(p.TS, '2000-01-01 00:00:00'),
COALESCE(m.TS, '2000-01-01 00:00:00'))
END AS ts
FROM FROM
bd_marbasclass m bd_marbasclass m
LEFT JOIN bd_marbasclass p ON m.pk_parent = p.pk_marbasclass LEFT JOIN bd_marbasclass p ON m.pk_parent = p.pk_marbasclass
@ -45,7 +105,7 @@ WHERE
## 人员 ## 人员
~~~sql ~~~sql
CREATE VIEW V_UAPBD_QUERYSYNC_PSNDOC AS create view V_UAPBD_QUERYSYNC_PSNDOC as
SELECT SELECT
p.pk_psndoc, p.pk_psndoc,
p.CODE, p.CODE,
@ -54,87 +114,114 @@ SELECT
dept.name AS dept_name, dept.name AS dept_name,
p.ENABLESTATE, p.ENABLESTATE,
org.code as org_code, org.code as org_code,
p.TS AS TS CASE
WHEN p.TS IS NULL
AND j.TS IS NULL THEN to_char(TO_DATE(sysdate, 'YYYY-MM-DD HH24:MI:SS'))
ELSE GREATEST(
COALESCE(p.TS, '2000-01-01 00:00:00'),
COALESCE(j.TS, '2000-01-01 00:00:00'))
END AS ts
FROM FROM
bd_psndoc p bd_psndoc p
LEFT JOIN bd_psnjob j ON p.pk_psndoc = j.pk_psndoc LEFT JOIN bd_psnjob j ON p.pk_psndoc = j.pk_psndoc AND (j.enddutydate IS NULL OR TO_DATE(j.enddutydate, 'YYYY-MM-DD HH24:MI:SS') > SYSDATE)
AND j.ismainjob = 'Y' AND j.ismainjob = 'Y'
AND j.dr = 0 AND j.dr = 0
LEFT JOIN org_orgs org ON p.pk_org = org.pk_org LEFT JOIN org_orgs org ON p.pk_org = org.pk_org
LEFT JOIN org_dept dept ON j.pk_dept = dept.pk_dept LEFT JOIN org_dept dept ON j.pk_dept = dept.pk_dept
WHERE WHERE
p.dr = 0; p.dr = 0
~~~ ~~~
## 客户 ## 客户
~~~sql ~~~sql
CREATE VIEW V_UAPBD_QUERYSYNC_CUSTOMER AS create view V_UAPBD_QUERYSYNC_CUSTOMER as
SELECT SELECT t.PK_CUSTOMER,
c.pk_customer, t.NAME,
c.name, t.CODE,
c.code, t.ENABLESTATE,
c.enablestate, t.SHORTNAME,
c.shortname, t.REAL_ORG_CODE,
oo.code AS org_code, t.ORG_NAME,
oo.name AS org_name, t.GROUP_CODE,
og.code AS group_code, t.GROUP_NAME,
og.name AS group_name, NVL(t.TS, SYSDATE) AS ts,
GREATEST(c.ts, oo.TS, og.TS) AS TS t.RN,
FROM CEIL(t.rn / 10000) AS org_code
bd_customer c FROM (SELECT c.pk_customer,
LEFT JOIN org_orgs oo ON c.pk_org = oo.pk_org c.name,
LEFT JOIN org_group og ON c.pk_group = og.pk_group c.code,
WHERE c.enablestate,
c.dr = 0; c.shortname,
oo.code AS real_org_code,
oo.name AS org_name,
og.code AS group_code,
og.name AS group_name,
c.ts AS TS,
ROW_NUMBER() OVER (ORDER BY c.pk_customer) AS rn
FROM bd_customer c
LEFT JOIN org_orgs oo ON c.pk_org = oo.pk_org
LEFT JOIN org_group og ON c.pk_group = og.pk_group
WHERE c.dr = 0) t
~~~ ~~~
## 供应商 ## 供应商
~~~sql ~~~sql
CREATE VIEW V_UAPBD_QUERYSYNC_SUPPLIER AS create view V_UAPBD_QUERYSYNC_SUPPLIER as
SELECT SELECT
s.CODE, t."CODE",t."PK_SUPPLIER",t."NAME",t."ENABLESTATE",t."SHORTNAME",t."REAL_ORG_CODE",t."ORG_NAME",t."GROUP_CODE",t."GROUP_NAME",t."TS",t."RN",
s.PK_SUPPLIER, CEIL(t.rn / 10000) AS org_code
s.NAME, FROM (
s.ENABLESTATE, SELECT
s.shortname, s.CODE,
oo.code AS org_code, s.PK_SUPPLIER,
oo.name AS org_name, s.NAME,
og.code AS group_code, s.ENABLESTATE,
og.name AS group_name, s.shortname,
s.ts AS TS oo.code AS real_org_code,
FROM oo.name AS org_name,
bd_supplier s og.code AS group_code,
LEFT JOIN org_orgs oo ON s.pk_org = oo.pk_org og.name AS group_name,
LEFT JOIN org_group og ON s.pk_group = og.pk_group s.ts AS TS,
WHERE ROW_NUMBER() OVER (ORDER BY s.PK_SUPPLIER) AS rn
s.dr = 0; FROM
bd_supplier s
LEFT JOIN org_orgs oo ON s.pk_org = oo.pk_org
LEFT JOIN org_group og ON s.pk_group = og.pk_group
WHERE
s.dr = 0
) t
~~~ ~~~
## 部门 ## 部门
~~~sql ~~~sql
CREATE VIEW V_UAPBD_QUERYSYNC_DEPT AS create view V_UAPBD_QUERYSYNC_DEPT as
SELECT SELECT
d.CODE, d.CODE,
d.NAME, d.NAME,
d.ENABLESTATE, d.ENABLESTATE,
d.PK_DEPT, d.PK_DEPT,
oo.code AS org_code, oo.code AS org_code,
oo.name AS org_name, oo.name AS org_name,
og.code AS group_code, og.code AS group_code,
og.name AS group_name, og.name AS group_name,
d.ts AS TS CASE
WHEN d.TS IS NULL
AND d.MODIFIEDTIME IS NULL THEN to_char(TO_DATE(sysdate, 'YYYY-MM-DD HH24:MI:SS'))
ELSE GREATEST(
COALESCE(d.TS, '2000-01-01 00:00:00'),
COALESCE(d.MODIFIEDTIME, '2000-01-01 00:00:00'))
END AS ts
FROM FROM
org_dept d org_dept d
LEFT JOIN org_orgs oo ON d.pk_org = oo.pk_org LEFT JOIN org_orgs oo ON d.pk_org = oo.pk_org
LEFT JOIN org_group og ON d.pk_group = og.pk_group LEFT JOIN org_group og ON d.pk_group = og.pk_group
WHERE WHERE
d.dr = 0; d.dr = 0
~~~ ~~~
## 仓库 ## 仓库
~~~sql ~~~sql
CREATE VIEW V_UAPBD_QUERYSYNC_STORDOC AS create view V_UAPBD_QUERYSYNC_STORDOC as
SELECT SELECT
sd.CODE, sd.CODE,
sd.name, sd.name,
@ -145,11 +232,10 @@ SELECT
og.code AS group_code, og.code AS group_code,
og.name AS group_name, og.name AS group_name,
sd.ts AS TS sd.ts AS TS
FROM FROM
bd_stordoc sd bd_stordoc sd
LEFT JOIN org_stockorg so ON sd.pk_org = so.pk_stockorg LEFT JOIN org_stockorg so ON sd.pk_org = so.pk_stockorg
LEFT JOIN org_group og ON sd.pk_group = og.pk_group LEFT JOIN org_group og ON sd.pk_group = og.pk_group
WHERE WHERE
sd.dr = 0; sd.dr = 0
~~~ ~~~