zoukankan      html  css  js  c++  java
  • sql_insert_2017/11/1

    create or replace procedure yuchuli_insert is
    begin
        ---预处理新增
        declare
            --标记地税过来的脏数据
            cursor isallnull is
                select qybm
                  from gh_dsqyxx
                 where (shxydm is null and nsrsbh is null and jsjdm is null);
            --统一社会信用重复标识
            cursor tyshxydmData is
                select djxh from GH_DSQYXX_TEMP t where t.isdirtydata = '1';
            --纳税人识别号重复标识
            cursor nsrsbhData is
                select djxh from GH_DSQYXX_TEMP t where t.isdirtydata = '2';
        
            isallnullFlag varchar2(1) := 0;
            tyshxydmFlag  varchar2(1) := 0;
            nsrsbhFlag    varchar2(1) := 0;
            -----c.新增用户和核实表
            cursor yg is
                select t.* ,qyghgx.GHDM,
                       qyghgx.GHMC,
                       qyghgx.GHLX,
                       qyghgx.ZHLX,
                       qyghgx.QYGHRS,
                       qyghgx.JHZT,
                       qyghgx.JHSJ,
                       qyghgx.SHSJ,
                       qyghgx.JFLCBL,
                       qyghgx.GHDM1,
                       qyghgx.BL1,
                       qyghgx.GHDM2,
                       qyghgx.BL2,
                       qyghgx.GHDM3,
                       qyghgx.BL3,
                       qyghgx.GHDM4,
                       qyghgx.BL4,
                       qyghgx.GHDM5,
                       qyghgx.BL5,
                       qyghgx.GHDM6,
                       qyghgx.BL6,
                       qyghgx.QYJC,
                       qyghgx.sffq
                  from GH_QYXX t
                  left join GH_QYGHGX qyghgx
                    on t.qybm = qyghgx.qybm
                 where t.isxz = '1';
        
        begin
            --------标记脏数据
            ---组织机构代码、社会统一社会信用、税务登记账号全部为空
            update gh_dsqyxx set isdirtydata = '0'; ----1.初始化数据
        
            update gh_dsqyxx qyxx
               set qyxx.isdirtydata = '1'
             where (shxydm is null and nsrsbh is null and zzjgdm is null);
        
            for rc in isallnull loop
                if (isallnullFlag = 0) then
                    isallnullFlag := 1;
                end if;
            end loop;
            --通知总工会
            if (isallnullFlag = 1) then
                insert into GH_XTXX
                    (ID,
                     TITLE,
                     CONTENT,
                     YGLXID,
                     TYPE,
                     CJSJ,
                     CZRYDM,
                     YWLX,
                     QYGHDM)
                values
                    (seq_xtxx.nextval,
                     '预处理数据有问题',
                     '组织机构代码、社会统一社会信用、税务登记账号全部为空',
                     '1',
                     '0',
                     sysdate,
                     '预处理',
                     '0',
                     '1');
            
                insert into YUCHULI_MARK
                values
                    (SYS_GUID(), '通知总工会', sysdate);
                commit;
            end if;
        
            --删除临时表数据
            execute immediate 'truncate table gh_dsqyxx_temp';
        
            --社会统一信用代码重复
            insert into gh_dsqyxx_temp
                (djxh, isdirtydata)
                select n.djxh, '1'
                  from (select row_number() over(partition by t.shxydm order by t.xgrq desc) as rown,
                               t.*
                          from gh_dsqyxx t
                         where t.shxydm is not null) n
                 where n.rown > 1;
        
            insert into YUCHULI_MARK
            values
                (SYS_GUID(),
                 'insert into gh_dsqyxx_temp社会统一信用代码重复',
                 sysdate);
            commit;
            ---社会统一信用代码有重复发送通知
            for rc in tyshxydmData loop
                if (tyshxydmFlag = 0) then
                    tyshxydmFlag := 1;
                end if;
            end loop;
            if (tyshxydmFlag = 1) then
                insert into GH_XTXX
                    (ID,
                     TITLE,
                     CONTENT,
                     YGLXID,
                     TYPE,
                     CJSJ,
                     CZRYDM,
                     YWLX,
                     QYGHDM)
                values
                    (seq_xtxx.nextval,
                     '预处理数据有问题',
                     '社会统一信用代码有重复的',
                     '1',
                     '0',
                     sysdate,
                     '预处理',
                     '0',
                     '1');
            
                insert into YUCHULI_MARK
                values
                    (SYS_GUID(), '社会统一信用代码有重复发送通知', sysdate);
                commit;
            end if;
        
            ---税务登记证号重复
            insert into gh_dsqyxx_temp
                (djxh, isdirtydata)
                select n.djxh, '2'
                  from (select row_number() over(partition by t.nsrsbh order by t.xgrq desc) as rown,
                               t.*
                          from gh_dsqyxx t
                         where t.shxydm is null
                           and t.nsrsbh is not null) n
                 where n.rown > 1;
        
            insert into YUCHULI_MARK
            values
                (SYS_GUID(),
                 'insert into gh_dsqyxx_temp ---税务登记证号重复',
                 sysdate);
            commit;
            ---税务登记证号重复发送通知
            for rc in nsrsbhData loop
                if (nsrsbhFlag = 0) then
                    nsrsbhFlag := 1;
                end if;
            end loop;
            if (nsrsbhFlag = 1) then
                insert into GH_XTXX
                    (ID,
                     TITLE,
                     CONTENT,
                     YGLXID,
                     TYPE,
                     CJSJ,
                     CZRYDM,
                     YWLX,
                     QYGHDM)
                values
                    (seq_xtxx.nextval,
                     '预处理数据有问题',
                     '税务登记证号有重复的',
                     '1',
                     '0',
                     sysdate,
                     '预处理',
                     '0',
                     '1');
            
                insert into YUCHULI_MARK
                values
                    (SYS_GUID(), '---税务登记证号重复发送通知', sysdate);
                commit;
            end if;
        
            --更新地税企业信息的isdirtydata数据
            update gh_dsqyxx t
               set t.isdirtydata =
                   (select m.isdirtydata
                      from gh_dsqyxx_temp m
                     where m.djxh = t.djxh)
             where t.djxh in (select djxh from gh_dsqyxx_temp);
        
            insert into YUCHULI_MARK
            values
                (SYS_GUID(), '--更新地税企业信息的isdirtydata数据', sysdate);
            commit;
            --在地税企业信息表中加入企业编码
            update gh_dsqyxx t
               set t.qybm =
                   (select m.qybm
                      from gh_qyxx m
                     where m.tyshxydm = t.shxydm
                       and rownum = 1)
             where t.shxydm is not null;
        
            insert into YUCHULI_MARK
            values
                (SYS_GUID(),
                 '--在地税企业信息表中加入企业编码tyshxydm',
                 sysdate);
            commit;
            update gh_dsqyxx t
               set t.qybm =
                   (select m.qybm
                      from gh_qyxx m
                     where m.nsrsbh = t.nsrsbh
                       and rownum = 1)
             where t.shxydm is null;
        
            insert into YUCHULI_MARK
            values
                (SYS_GUID(), '--在地税企业信息表中加入企业编码nsrsbh', sysdate);
            commit;
            ------1、新增企业
            -----a、增加gh_qyxx
            update gh_qyxx set isxz = '0'; ----初始化数据
            insert into gh_qyxx
                (QYBM, ----1、企业编码
                 QYMC, ----2、企业名称
                 JSJDM, ----3、计算机代码
                 TYSHXYDM, --4、统一社会信用代码
                 DJZCLXDM, --5、登记注册类型代码
                 ZZJGDM, ---6、组织机构代码
                 JYDZ, --7、经营地址
                 JYDZYB, --8实际经营地址邮编
                 ZCDZ, ---9注册地址
                 ZCDZYB, --10注册地址邮编
                 JYDZLXDM, ---11经营地址联系电话
                 SWJGZZJGDM, ---12主管地税代码
                 SCJXDM, ---13所处街乡代码
                 NSRZTMC, --14纳税人状态
                 GJBZHYDM, ---15国家标准行业代码
                 KYDJRQ, --16税务登记日期
                 SWDJLXMC, --17税务登记名称
                 SJQYMC, ---18实际企业名称
                 SJJYDZ, ---19实际经营地址
                 SJJYDZYB, ---20实际经营地址邮编
                 QYZT, ---21企业状态 2未进生产库 3进入生产库    
                 GSRS, --22个税人数
                 ISTC, ---23是否已剔除 0未剔除 1已剔除
                 NSRSBH, --24纳税人识别号(税务登记证号)
                 ISXZ ---25是否新增  0否 1是
                 )
                select CONCAT('A', seq_qybm.nextval) as qybm, ----1、企业编码
                       qyxx.nsrmc as qymc, ----2、企业名称
                       qyxx.jsjdm, ---3、计算机代码
                       qyxx.shxydm as TYSHXYDM, ---4、统一社会信用代码
                       qyxx.djzclxdm, ----5、登记注册类型代码
                       qyxx.zzjgdm1, ---6、组织机构代码
                       qyxx.jydz, --7、经营地址
                       qyxx.jydzyb, ---8、经营地址邮编
                       qyxx.zcdz, ---9、注册地址
                       qyxx.zcdzyb, ---10、注册地址邮编   
                       qyxx.jydzlxdm, ---11、经营地址联系电话
                       CASE
                           WHEN qyxx.zgswsdm is not null THEN
                            qyxx.zgswsdm
                           else
                            qyxx.zgswjdm
                       end as SWJGZZJGDM, ---12主管地税代码
                       qyxx.scjxdm, ---13、所属街乡代码
                       qyxx.nsrzt as NSRZTMC, --14、纳税人状态
                       qyxx.gjbzhydm, -----15、国家标准行业代码
                       qyxx.kydjrq, ---16、税务登记日期
                       qyxx.swdjlxmc, ---17、税务登记种类
                       qyxx.nsrmc as SJQYMC, ---18、纳税人名称
                       null as SJJYDZ, ---19、实际经营地址
                       null as SJJYDZYB, ---20、实际经营地址邮编
                       '0' as QYZT, ---21、企业状态 2未进生产库 3进入生产库
                       qyxx.zgrs as gsrs, -----22、职工人数
                       '0' as ISTC, ---23是否已剔除 0未剔除 1已剔除
                       qyxx.nsrsbh, ------24、纳税人识别号
                       '1' as ISXZ ---25是否新增  0否 1是
                  from (select *
                          from gh_dsqyxx A WHERE a.qybm is null and a.isdirtydata = '0') qyxx;
        
            insert into YUCHULI_MARK
            values
                (SYS_GUID(), '--新增企业', sysdate);
            commit;
            ----b、增加gh_qyghgx
            insert into gh_qyghgx
                (qybm, ---企业编码
                 jhzt, ---建会状态
                 ghdm, --- 企业工会代码
                 ghlx, ----工会类型0产业1区域    默认1,
                 ghdm1,
                 ghdm2,
                 ghdm3,
                 ghdm4,
                 ghdm5,
                 ghdm6,
                 qyjc,
                 drrq)
                select qyxx.qybm,
                       '18' as jhzt,
                       --CONCAT('B', seq_qybm.nextval) as ghdm,
                       nvl(scjx.ZGGHDM,
                       'scjxZgghdm' )as ghdm,
                       '1' as ghlx,
                       nvl(scjx.ghdm1,
                           (select ghdm1
                              from GH_ZD_SCJX
                             where instr(scjxdm, substr(qyxx.scjxdm, 0, 6)) > 0
                               and rownum = 1)) as ghdm1,
                       nvl(scjx.ghdm2,
                           (select ghdm2
                              from GH_ZD_SCJX
                             where instr(scjxdm, substr(qyxx.scjxdm, 0, 6)) > 0
                               and rownum = 1)) as ghdm2,
                       nvl(scjx.zgghdm,
                           (select zgghdm
                              from GH_ZD_SCJX
                             where instr(scjxdm, substr(qyxx.scjxdm, 0, 6)) > 0
                               and rownum = 1)) as ghdm3,
                       '0' as ghdm4,
                       '0' as ghdm5,
                       '0' as ghdm6,
                       '4' as qyjc,
                       sysdate as drrq
                  from gh_qyxx qyxx
                  left join GH_ZD_SCJX scjx
                    on qyxx.scjxdm = scjx.scjxdm
                 where isxz = '1';
        
            insert into YUCHULI_MARK
            values
                (SYS_GUID(), '--新增企业工会关系', sysdate);
            commit;
            -----c.新增用户和核实数据
            for rc in yg loop
                ---员工
                insert into GH_JC_YG
                    (YGDM, YHM, MM, BZ, YGZT)
                values
                    (CONCAT('Y', seq_ygdm.nextval),
                     CASE
                         WHEN rc.tyshxydm is not null THEN
                          rc.tyshxydm
                         WHEN rc.nsrsbh is not null THEN
                          rc.nsrsbh
                         else
                          rc.jsjdm
                     end,
                     /* CONCAT(CASE
                         WHEN rc.tyshxydm is not null THEN
                          substr(rc.tyshxydm, 0, 7)
                         WHEN rc.nsrsbh is not null THEN
                          substr(rc.nsrsbh, 0, 7)
                         else
                          substr(rc.jsjdm, 0, 7)
                     end,
                     TRUNC(DBMS_RANDOM.VALUE(10000000, 99999999))),*/
                     md5('1'),
                     rc.qymc,
                     '1');
                ---员工 企业关系
                insert into GH_JC_YGBMGX
                    (YGBMGXDM, YGDM, QYGHDM, YGLX, BZ)
                values
                    (CONCAT('Y', seq_ygdm.Currval),
                     CONCAT('Y', seq_ygdm.Currval),
                     rc.qybm,
                     '0',
                     rc.qymc);
                --员工 菜单
                insert into GH_JC_YGJSGX
                    (YGJSGXDM, YGDM, JSDM)
                values
                    (CONCAT('J', seq_ygdm.Currval),
                     CONCAT('Y', seq_ygdm.Currval),
                     '3');
            
                ------插入核实表中数据
                insert into GH_HS
                    (YWLSDM,
                     QYBM,
                     HZLX,
                     LXR,
                     LXDH,
                     KHH,
                     KHZH,
                     KHMC,
                     CJHSZT,
                     JHZTDM,
                     QYGHMC,
                     QYGHRS,
                     SJJYDZ,
                     JHSJ,
                     SHSJ,
                     CZRYDM,
                     CZSJ,
                     ZGGHDM,
                     ZHLX,
                     QYMC,
                     SFZC,
                     JFLCBL,
                     BL1,
                     BL2,
                     BL3,
                     BL4,
                     BL5,
                     BL6,
                     ISFIRST,
                     XEZFH)
                values
                    (SEQ_YWLS.NEXTVAL,
                     rc.QYBM,
                     '0',
                     rc.LXR,
                     rc.LXDH,
                     rc.KHH,
                     rc.KHZH,
                     rc.KHMC,
                     '0',
                     rc.JHZT,
                     rc.GHMC,
                     rc.QYGHRS,
                     rc.SJJYDZ,
                     rc.JHSJ,
                     rc.SHSJ,
                     '预处理',
                     sysdate,
                     CASE WHEN rc.QYJC = '2' THEN rc.GHDM1 WHEN rc.QYJC = '3' THEN
                     rc.GHDM2 WHEN rc.QYJC = '4' THEN rc.GHDM3 WHEN
                     rc.QYJC = '5' THEN rc.GHDM4 WHEN rc.QYJC = '6' THEN
                     rc.GHDM5 else rc.GHDM5 end,
                     rc.ZHLX,
                     rc.QYMC,
                     '0',
                     rc.JFLCBL,
                     rc.BL1,
                     rc.BL2,
                     rc.BL3,
                     rc.BL4,
                     rc.BL5,
                     rc.BL6,
                     '1',
                     rc.XEZFH);
            end loop;
        
            insert into YUCHULI_MARK
            values
                (SYS_GUID(), '--员工核实', sysdate);
            commit;
        
            ----更新地税企业信息SKSSY
            update gh_dsgsgz tt
               set tt.skssy = substr(tt.skssy, 2, 1)
             WHERE tt.skssy like '0%';
        
            ----地税个税加入企业编码
            update gh_dsgsgz t
               set t.qybm =
                   (select m.qybm
                      from gh_qyxx m
                     where m.tyshxydm = t.shxydm
                       and rownum = 1)
             where t.shxydm is not null;
        
            update gh_dsgsgz t
               set t.qybm =
                   (select m.qybm
                      from gh_qyxx m
                     where m.nsrsbh = t.nsrsbh
                       and rownum = 1)
             where t.shxydm is null;
        
            -------g.新增地税个税数据
            ----增量地税信息
            insert into gh_qygsgz
                (GZDM, --  工资代码
                 QYBM, --  企业编码
                 SKSSN, --税款所属年
                 SKSSY, --  税款所属月
                 ZGRS, --职工人数
                 GZZE ---职工工资总额
                 )
                select CONCAT('D', SEQ_GSGZDM.nextval) as gzdm,
                       dsgsgz.qybm,
                       dsgsgz.skssn,
                       dsgsgz.skssy,
                       dsgsgz.zgrs,
                       dsgsgz.gzze
                  from gh_dsgsgz dsgsgz
                 where not exists (select *
                          from gh_qygsgz
                         where qybm = dsgsgz.qybm
                           and skssn = dsgsgz.skssn
                           and skssy = dsgsgz.skssy);
        
            insert into YUCHULI_MARK
            values
                (SYS_GUID(), '增量地税信息', sysdate);
            commit;
        end;

    end yuchuli_insert;

  • 相关阅读:
    mac 格式化U盘
    SSD接口详解,再也不会买错固态硬盘了
    详解Paste deploy
    (实用)Ubuntu Linux静态IP网络配置
    Python WSGI开发随笔
    利用CA私钥和证书创建中间CA
    使用OpenSSL创建自己的CA root certificate
    创建自己的PKI公/私密钥对和公钥证书
    openssl创建自己的CA certificate
    Keystone中间件WSGI环境变量总结
  • 原文地址:https://www.cnblogs.com/523823-wu/p/7768203.html
Copyright © 2011-2022 走看看