Oracle 樹結構複雜場景模擬---------》如果登陸人是公司領導那麼就無所謂過濾責任部門,如果登陸人非公司級領導,那麼就當前登陸人的部門為責任部門查詢自己部門的資料
-
-
- 表設計,首先確定的是樹結構表,假設是某一個公司確定是一個專案主項資訊,包含欄位有,責任部門,責任員工,編輯狀態 ,計劃型別,編制狀態,完成情況
-
CREATE TABLE BAI_PROJECT_PLAN(
BAI_PROJECT_PLAN_ID VARCHAR2(32) PRIMARY KEY ,
BAI_PROJECT_PLAN_P_ID VARCHAR2(32) ,
BAI_ROOT_PROJECT_PLAN_ID
BAI_PROJECT_PLAN_NAME VARCHAR2(225) ,
HOST_DEPT_NAME VARCHAR2(225) ,
HOST_DEPT_CODE VARCHAR2(32) ,
PROJECT_PLAN_STATUS VARCHAR(2),
BAI_PLAN_TYPE VARCHAR2(2)
);
insert
(BAI_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_P_ID,
BAI_ROOT_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_NAME,
HOST_DEPT_NAME,
HOST_DEPT_CODE,
PROJECT_PLAN_STATUS,
BAI_PLAN_TYPE)
values
('A36DABCA0616496BBD016F787613E22D',
'root',
'A36DABCA0616496BBD016F787613E22D',
'投資計劃測試1207',
'資訊科技部',
'4147',
'7',
'1');
insert into BAI_PROJECT_PLAN
(BAI_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_P_ID,
BAI_ROOT_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_NAME,
HOST_DEPT_NAME,
HOST_DEPT_CODE,
PROJECT_PLAN_STATUS,
BAI_PLAN_TYPE)
values
('20171207193248967000100000500000',
'20171207193248967000100000300000',
'A36DABCA0616496BBD016F787613E22D',
'工藝主項1',
'資訊科技部',
'4147',
'7',
'1');
insert into BAI_PROJECT_PLAN
(BAI_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_P_ID,
BAI_ROOT_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_NAME,
HOST_DEPT_NAME,
HOST_DEPT_CODE,
PROJECT_PLAN_STATUS,
BAI_PLAN_TYPE)
values
('20171207193248967000100000600000',
'20171207193248967000100000200000',
'A36DABCA0616496BBD016F787613E22D',
'輔樓',
'企業發展部',
'4021',
'7',
'1');
insert into BAI_PROJECT_PLAN
(BAI_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_P_ID,
BAI_ROOT_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_NAME,
HOST_DEPT_NAME,
HOST_DEPT_CODE,
PROJECT_PLAN_STATUS,
BAI_PLAN_TYPE)
values
('366C12DFC2A241D7AECBA60553A6624E',
'A36DABCA0616496BBD016F787613E22D',
'A36DABCA0616496BBD016F787613E22D',
'投資計劃基本資訊',
'資訊科技部',
'4147',
'7',
'1');
insert into BAI_PROJECT_PLAN
(BAI_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_P_ID,
BAI_ROOT_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_NAME,
HOST_DEPT_NAME,
HOST_DEPT_CODE,
PROJECT_PLAN_STATUS,
BAI_PLAN_TYPE)
values
('20171207193248967000100000300000',
'A36DABCA0616496BBD016F787613E22D',
'A36DABCA0616496BBD016F787613E22D',
'RX-2017-0736立項測試1201-007',
'資訊科技部',
'4147',
'7',
'1');
insert into BAI_PROJECT_PLAN
(BAI_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_P_ID,
BAI_ROOT_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_NAME,
HOST_DEPT_NAME,
HOST_DEPT_CODE,
PROJECT_PLAN_STATUS,
BAI_PLAN_TYPE)
values
('20171207193248967000100000400000',
'20171207193248967000100000500000',
'A36DABCA0616496BBD016F787613E22D',
'中央空調',
'經營管理部',
'4025',
'7',
'1');
insert into BAI_PROJECT_PLAN
(BAI_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_P_ID,
BAI_ROOT_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_NAME,
HOST_DEPT_NAME,
HOST_DEPT_CODE,
PROJECT_PLAN_STATUS,
BAI_PLAN_TYPE)
values
('20171207193248967000100000100000',
'20171207193248967000100000200000',
'A36DABCA0616496BBD016F787613E22D',
'主樓',
'資訊科技部',
'4147',
'7',
'1');
insert into BAI_PROJECT_PLAN
(BAI_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_P_ID,
BAI_ROOT_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_NAME,
HOST_DEPT_NAME,
HOST_DEPT_CODE,
PROJECT_PLAN_STATUS,
BAI_PLAN_TYPE)
values
('20171207193248967000100000200000',
'20171207193248967000100000300000',
'A36DABCA0616496BBD016F787613E22D',
'建築主項',
'經營管理部',
'4025',
'7',
'1');
-
-
- 查詢條件,如果公司領導是公司級領導就不過濾責任部門
-
SELECT BAI_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_P_ID,
BAI_ROOT_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_NAME,
HOST_DEPT_NAME,
HOST_DEPT_CODE,
PROJECT_PLAN_STATUS,
BAI_PLAN_TYPE
FROM BAI_PROJECT_PLAN
WHERE BAI_PROJECT_PLAN_ID IN
(SELECT BAI_PROJECT_PLAN_ID
FROM (SELECT T.BAI_PROJECT_PLAN_ID, T.BAI_PROJECT_PLAN_P_ID
FROM BAI_PROJECT_PLAN T
WHERE T.BAI_ROOT_PROJECT_PLAN_ID =
'A36DABCA0616496BBD016F787613E22D') A
START WITH A.BAI_PROJECT_PLAN_ID IN (SELECT P.BAI_PROJECT_PLAN_ID
FROM BAI_PROJECT_PLAN P
WHERE P.BAI_ROOT_PROJECT_PLAN_ID =
'A36DABCA0616496BBD016F787613E22D'
--AND P.HOST_DEPT_CODE = '4147'
)
CONNECT BY PRIOR A.BAI_PROJECT_PLAN_P_ID = A.BAI_PROJECT_PLAN_ID)
-
-
- 查詢條件,如果公司領導是非公司級領導就過濾責任部門
-
SELECT BAI_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_P_ID,
BAI_ROOT_PROJECT_PLAN_ID,
BAI_PROJECT_PLAN_NAME,
HOST_DEPT_NAME,
HOST_DEPT_CODE,
PROJECT_PLAN_STATUS,
BAI_PLAN_TYPE
FROM BAI_PROJECT_PLAN
WHERE BAI_PROJECT_PLAN_ID IN
(SELECT BAI_PROJECT_PLAN_ID
FROM (SELECT T.BAI_PROJECT_PLAN_ID, T.BAI_PROJECT_PLAN_P_ID
FROM BAI_PROJECT_PLAN T
WHERE T.BAI_ROOT_PROJECT_PLAN_ID =
'A36DABCA0616496BBD016F787613E22D') A
START WITH A.BAI_PROJECT_PLAN_ID IN
(SELECT P.BAI_PROJECT_PLAN_ID
FROM BAI_PROJECT_PLAN P
WHERE P.BAI_ROOT_PROJECT_PLAN_ID =
'A36DABCA0616496BBD016F787613E22D'
AND P.HOST_DEPT_CODE = '4147')
CONNECT BY PRIOR A.BAI_PROJECT_PLAN_P_ID = A.BAI_PROJECT_PLAN_ID)