A类干部信息查询 BBS管理 B类干部信息查询 HR管理员授权 HR后台管理 代理人授权管理 待您处理的工作 待审核应聘简历
待审批假单 待审批员工卡申请 岗位编制配置管理 岗位基础库设置 关键岗位储备查询 核心工作流设置 机/岗数据清理
机构管理员设置 假日信息设定 架构岗位配置查询 角色管理 今日寿星 今日温馨提示 考勤后台管理 考勤审批跟踪
考勤薪酬接口 离职A类干部信息查询 离职B类干部信息查询 临时用户授权 流程信息设定 模块资源管理 模块资源管理
您的发展计划 您的个人草稿箱 您的未完成任务 人才库搜索 人力成本报表 人力预算执行报表 人力资源mis报表
人力资源基表设置 人事信息发布 申请办理出国出境签证 申请调整关键岗位储备 申请调整员工薪酬 申请发布招聘信息
申请户口迁移 申请离职/辞职 申请请假 申请员工卡 申请中止员工合同 特殊审批流程设定 通用审批流程设定
投入产出指标 未完成工作跟踪 我的岗位说明书 我的个人档案 我的后台管理 我的能力档案 我的请假记录
下属出勤明细查询 下属打卡明细查询 下属岗位说明书查询 下属资料查询 薪酬区间设置 薪资自助查询
新人推荐 信息自助查询 已审批假单 已审批员工卡申请 已完成工作查阅 已完成任务查阅 异常考勤统计报表
员工岗位匹配管理 员工管理 员工合同情况查询 员工兼岗权重管理 员工卡审批跟踪 员工卡审批跟踪(管理员)
员工卡信息统计 员工离岗或离职 员工敏感档案查询 员工薪酬查询 月度假单统计 增删修改岗位管理
招聘平台栏目管理 制卡地点配置 资源类型管理 自定义报表 自助服务申请 自助统计分析 组管理
组织架构管理(旧)组织架构配置管理
HR管理 KPI公式管理 报表管理 常见问题解答 导入 工作代理授权 工作代理授权 观察期管理 观察期人员KPI管理
绩效反馈意见 绩效反馈意见 绩效问责考核 绩效问责排名 绩效信息查询 计划查询 计划管理 计划结构管理 角色管理(临时)
阶段性考核 进度查询 考核结果查询 考核权重管理 考核状态查询 考核状态管理 考核组管理 模板管理 年底自评
年度工作计划 年度计划确认 年度评价查询 排名审批 排名组管理 权限管理(临时) 三年问责内容上传
删除排名数据 审批流程设置 问题上报 问责指标胜任线调整 系统操作手册 系统操作演示 系统管理
系统提示(含待完成事项) 下属观察期管理 下属绩效管理 下载IE6.0 用户管理 邮件管理 员工考核信息查询
月度工作汇报 月度工作考核 月度汇报查询 月度进度查询 重新登录 自我绩效管理

解决方案 »

  1.   

    procedure GET_MONTH_DATA(user_id   IN VARCHAR2, ----用户名
                               year      in varchar2, ---查询的年
                               month     in varchar2, ---查询的月
                               flag      in varchar2, ---是否为最新状态('0'代表是,'1'代表否)
                               query_way in varchar2, ---已考核人还是被考人的方式查询('0'代表考核人,'1'代表被考核人,'2'代表按年月查询)                       
                               seq_num   out varchar2) ---输出的报表标示
       is
      
        type c_cursor is ref cursor;
        c c_cursor;
        d c_cursor;
        e c_cursor;
        f c_cursor;
        g c_cursor;
        h c_cursor;
        i c_cursor;
        j c_cursor;
        k c_cursor;
        l c_cursor;
      
        v_sql             varchar2(2000);
        v_user_id         e_eva_group_user.user_id%type;        --用户ID
        v_eva_group_id    e_eva_group_user.eva_group_id%type;   --考核组ID
        v_eva_group_name  e_eva_group.eva_group_name%type;      --考核组名称
        v_emp_name        w_user_info.emp_name%type;            --用户名称
        v_dept_name       dept_info.DEPT_NAME%type;             --部门名称
        v_plan_his_id     e_plan_info_his.plan_his_id%type;     --计划号
        v_plan_old_his_id e_plan_info_his.plan_his_id%type;     --老计划号
        v_plan_count      number;                               --计划总数
        v_plan_old_cout   number;                               --老计划总数
        v_month           e_state_node.month%type;              --月份
        v_old_month       e_state_node.month%type;              --老月份
        v_seq_query_id    number;                               --seq ID
        v_self_score      e_evaluate_sum.score%type;            --自评分
        v_P_eva_score     e_evaluate_sum.score%type;            --主考核人分
      begin
            --首先取出表的seq ID存入变量v_seq_query_id
            v_sql := 'select e_seq_month_data.nextval from dual';
            open j for v_sql;
            loop
                fetch j into v_seq_query_id;
                exit when j%notfound;
            end loop;
            close j;
            
            --如果当前是最新状态
            if flag = '0' then 
               --取得本人及下属人员的基本信息
               v_sql := ' select t.user_id ,t.eva_group_id ,w.emp_name ,di.DEPT_NAME ,eeg.eva_group_name ' ||           
                        ' from e_eva_group_user t,w_user_info w ,emp_info ei ,dept_info di ,e_eva_group eeg ' ||
                        ' where t.role = ''E'' '||   
                        '        and t.user_id = w.user_id ' || 
                        '        and ei.empno = w.empno ' ||
                        '        and ei.deptno = di.DEPTNO ' || 
                        '        and eeg.eva_group_id = t.eva_group_id ' ||
                        '        and t.end_date is null ' ||
                        '        and eeg.end_date is null ' ||
                        '        and t.user_id =:a ' ||
                   
                        ' union ' ||
                   
                        ' select distinct t.user_id ,t.eva_group_id ,w.emp_name ,di.DEPT_NAME ,eeg.eva_group_name ' ||
                        ' from e_eva_group_user t,w_user_info w ,emp_info ei ,dept_info di ,e_eva_group eeg ' ||
                        ' where t.role = ''E'' ' ||
                        '       and t.user_id = w.user_id ' ||
                        '       and ei.empno = w.empno ' ||
                        '       and ei.deptno = di.DEPTNO ' ||
                        '       and eeg.eva_group_id = t.eva_group_id ' ||
                        '       and exists ' ||
                        '           (select a.eva_group_id ' ||
                        '            from e_eva_group_user a ' ||
                        '            where a.user_id =:b ' ||
                        '                  and a.role in (''P'',''S'') ' ||
                        '                  and a.eva_group_id = t.eva_group_id ' ||
                        '                  and a.end_date is null) ' ||
                        '        and eeg.end_date is null ' ||
                        '       and t.end_date is null ';
      

  2.   

    v_sql := ' select t.plan_his_id from e_plan_info_his t where t.year =:a and t.user_id =:b and  t.eva_group_id =:c and t.status =''1''';                    
                                            open h for v_sql using to_char(sysdate, 'yyyy') - 1, v_user_id, v_eva_group_id;
                                            loop
                                                fetch h into v_plan_old_his_id;
                                                exit when h%notfound;
                                                --取去年最新提交的月度汇报
                                                v_sql := ' select max(month) from e_state_node e where e.state_id in (''M00001'',''M00002'') and e.plan_his_id =:a  and e.status =''1''';
                                                open i for v_sql using v_plan_old_his_id;
                                                loop
                                                    fetch i into v_old_month;
                                                    exit when i%notfound;                                            end loop;
                                                close i;
                                                    --判断去年是否有月度汇报
                                                    if v_old_month is null then
                                                       --如果去年也没有月度汇报,将插一些数据到e_query_month_data表
                                                       v_sql := ' insert into e_query_month_data (query_id, query_in_column1, query_in_column2, query_in_column3, query_in_column4, query_in_column5, ' ||
                                                                '                                 query_out_column1, query_out_column2, query_out_column3, query_out_column4, query_out_column5, ' ||
                                                                '                                 query_out_column6, query_out_column7, query_out_column8, query_out_column9, query_out_column10, lcu, lcd) ' ||
                                                                ' values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q,:r) ';
                                                       execute immediate v_sql using v_seq_query_id, user_id, year, month, flag, query_way, v_user_id, v_emp_name, v_eva_group_id, v_eva_group_name, v_dept_name, to_char(sysdate, 'yyyy'), '未做计划', '', '','',user_id, sysdate;  
                                                    else
                                                       --如果去年有月度汇报,取去年自评分
                                                       v_sql := ' select b.score ' ||
                                                                ' from e_report_info a ,e_report_sum b ' ||
                                                                ' where a.plan_his_id =:a ' ||
                                                                '       and a.month =:b ' ||
                                                                '       and b.rpt_id = a.rpt_id ' ||
                                                                '       and b.user_id =:c ';
                                                       open k for v_sql using v_plan_old_his_id, v_old_month, v_user_id;
                                                       loop
                                                           fetch k into v_self_score;
                                                           exit when k%notfound;
                    
                                                       end loop;
                                                       close k;
                                           --如果去年有月度汇报,取去年主考核人打的分
                                                           v_sql := ' select b.score ' ||
                                                                    ' from e_report_info a ,e_report_sum b ,e_eva_group_user eegu ,e_node_detail enn ,e_state_node esn ' ||
                                                                    ' where a.plan_his_id =:a ' ||
                                                                    '       and a.month =:b ' ||
                                                                    '       and b.rpt_id = a.rpt_id ' ||
                                                                    '       and b.user_id = eegu.user_id ' ||
                                                                    '       and eegu.eva_group_id =:c ' ||
                                                                    '       and eegu.role = ''P'' ' ||
                                                                    '       and esn.state_id = ''M00003'' ' ||
                                                                    '       and esn.month = a.month ' ||
                                                                    '       and esn.plan_his_id = a.plan_his_id ' ||
                                                                    '       and esn.node_id = enn.node_id ' ||
                                                                    '       and enn.op_type = ''Y''';
                                                           open l for v_sql using v_plan_old_his_id, v_old_month, v_eva_group_id;
                                                           loop
                                                               fetch l into v_P_eva_score;
                                                               exit when l%notfound; 
                                                              end loop;
                                                           close l;
                                                             --如果去年有月度汇报,同样将插一些数据到e_query_month_data表
                                                               v_sql :=' insert into e_query_month_data (query_id ,query_in_column1, query_in_column2, query_in_column3, query_in_column4, query_in_column5, ' ||
                                                                       '                                 query_out_column1, query_out_column2, query_out_column3, query_out_column4, query_out_column5, ' ||
                                                                       '                                 query_out_column6, query_out_column7, query_out_column8, query_out_column9, query_out_column10, lcu, lcd) ' ||
                                                                       ' values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q,:r) ';
                                                               execute immediate v_sql using  v_seq_query_id, user_id, year, month, flag, query_way, v_user_id, v_emp_name, v_eva_group_id, v_eva_group_name, v_dept_name, to_char(sysdate, 'yyyy')-1, v_old_month, v_self_score, v_P_eva_score, v_plan_old_his_id, user_id, sysdate;                                                                                                          
                                                    end if;                                            
                                            end loop;