create or replace PROCEDURE YXQVALID ( WARN_DAYS IN NUMBER --提前提醒天数 , ADMIN_ID IN NUMBER --管理员ID , TXNR1 IN VARCHAR2 --即将过期的提醒内容 , TXNR2 IN VARCHAR2 --已经过期的提醒内容 , TXNR3 IN VARCHAR2 --附证第一次年审的提醒内容 , TXNR4 IN VARCHAR2 --附证第二次年审的提醒内容 , BUS_TYPE_JYR IN VARCHAR2 --附证过期提醒类型 , BUS_TYPE_NS IN VARCHAR2 --年审提醒类型 , BUS_TYPE_ZC IN VARCHAR2 --自查提醒类型 , BUS_TYPE_DC IN VARCHAR2 --督查提醒类型 , BUS_TYPE_JYRZYCS_DC IN VARCHAR2 --经营人作业场所提醒类型 , ROLE_TYPE_DC IN VARCHAR2 --督查人员类型 , SZD IN NUMBER --所在地 ) AS BEGIN DECLARE strsql VARCHAR2(500); --执行语句 JYR_ID NUMBER; --经营人ID JYR_BAFZRQ DATE; --经营人附证到期日期 ZC_ID NUMBER; --自查ID DC_ID NUMBER; --督查ID GKJYR VARCHAR2(200); --港口经营人名称 DCDW VARCHAR2(100); --港口经营人名称 JCSJ VARCHAR2(20); --检查时间 USER_ID NUMBER; --用户ID GZTX_SIZE NUMBER; --工作提醒条数 TXNR VARCHAR2(500); --提醒内容 CURSOR CUR_EXPIRED_FZ IS SELECT ID,BAFZRQ FROM T_YJPT_JYRJCXX WHERE BAFZRQ9; --附证过期的经营人 CURSOR CUR_NS_JYR_1 IS SELECT ID FROM T_YJPT_JYRJCXX jyr WHERE jyr.RECORD_STATUS<>9 AND EXISTS (SELECT 1 FROM T_YJPT_GKWXHWZYFZBLHHZ hz WHERE hz.JYR=jyr.ID AND hz.RECORD_STATUS =2 AND hz.FZSJ IS NOT NULL AND ADD_MONTHS(hz.FZSJ,13)>SYSDATE AND ADD_MONTHS(hz.FZSJ,12)9));--需要进行第一次年审的经营人 CURSOR CUR_NS_JYR_2 IS SELECT ID FROM T_YJPT_JYRJCXX jyr WHERE jyr.RECORD_STATUS<>9 AND EXISTS (SELECT 1 FROM T_YJPT_GKWXHWZYFZBLHHZ hz WHERE hz.JYR=jyr.ID AND hz.RECORD_STATUS =2 AND hz.FZSJ IS NOT NULL AND ADD_MONTHS(hz.FZSJ,25)>SYSDATE AND ADD_MONTHS(hz.FZSJ,24)9)); --需要进行第二次年审的经营人 CURSOR CUR_EXPIRED_ZC IS SELECT zc.ID,jyr.ID,jyr.GKJYR,TO_CHAR(zc.JCSJ,'yyyy-mm-dd') FROM T_YJPT_ZCYH yh JOIN T_YJPT_ZC zc ON yh.SSZC= zc.ID JOIN T_YJPT_JYRJCXX jyr ON zc.QYMC=jyr.ID WHERE yh.JHWCSJ<=TRUNC(SYSDATE, 'DD') AND yh.MQZT='-1' AND yh.RECORD_STATUS<>9 AND zc.RECORD_STATUS<>9 AND jyr.RECORD_STATUS<>9; --到期的自查隐患 CURSOR CUR_EXPIRED_DC IS SELECT dc.ID,jyr.ID,jyr.GKJYR,TO_CHAR(dc.SJ,'yyyy-mm-dd'),dc.DCDW FROM T_YJPT_DC dc JOIN T_YJPT_JYRJCXX jyr ON dc.BDCDW=jyr.ID WHERE dc.JHWCSJ<=TRUNC(SYSDATE, 'DD') AND dc.MQZT='-1' AND dc.RECORD_STATUS<>9 AND jyr.RECORD_STATUS<>9; --到期的督查 CURSOR CUR_EXPIRED_ZYCS IS SELECT distinct jyr.ID,jyr.GKJYR FROM T_YJPT_DC dc JOIN T_YJPT_JYRJCXX jyr ON dc.BDCDW=jyr.ID WHERE dc.JHWCSJ<=TRUNC(SYSDATE, 'DD') AND dc.MQZT='-1' AND dc.RECORD_STATUS<>9 AND jyr.RECORD_STATUS<>9; --到期的督查 CURSOR CUR_JYR_ADMIN(JYRID IN NUMBER) IS SELECT DISTINCT u.ID FROM T_YJPT_USER u WHERE RECORD_STATUS<>9 AND JYRRYXXID=JYRID AND EXISTS (SELECT 1 FROM T_YJPT_ROLE_USER ru WHERE ru.USERID= u.ID AND ru.ROLEID=2); --经营人管理员 CURSOR CUR_ROLE_USER(R_TYPE IN VARCHAR2) IS SELECT DISTINCT u.ID FROM T_YJPT_USER u WHERE RECORD_STATUS<>9 AND EXISTS (SELECT 1 FROM T_YJPT_ROLE_USER ru JOIN T_YJPT_ROLE r ON ru.ROLEID=r.ID WHERE ru.USERID= u.ID AND r.ROLE_TYPE=R_TYPE); --督查类型人员 BEGIN --附证到期提醒 OPEN CUR_EXPIRED_FZ; LOOP FETCH CUR_EXPIRED_FZ INTO JYR_ID,JYR_BAFZRQ; EXIT WHEN CUR_EXPIRED_FZ%NOTFOUND; OPEN CUR_JYR_ADMIN(JYR_ID); LOOP FETCH CUR_JYR_ADMIN INTO USER_ID; EXIT WHEN CUR_JYR_ADMIN%NOTFOUND; --附证到期提醒是否存在 strsql := 'SELECT COUNT(*) FROM T_YJPT_GZTX WHERE BDID='||JYR_ID||' AND BUSTYPE='''||BUS_TYPE_JYR||''' AND JSR='||USER_ID||' AND TXZT=''Y'''; --DBMS_OUTPUT.PUT_LINE(strsql); EXECUTE IMMEDIATE strsql into GZTX_SIZE; IF(GZTX_SIZE=0) THEN IF(JYR_BAFZRQ