create or replace procedure callbackAgentOutBound_proc(
temp_e_startDate varchar2,--执行开始时间
temp_e_endDate varchar2,--执行结束时间
temp_s_startDate varchar2,--分配开始时间
temp_s_endDate varchar2,--分配结束时间
temp_act varchar2,--活动(ID,可多选)
temp_org varchar2,--营业部(编号,可多选)
temp_userId varchar2,--坐席(编号,可多选)
p_user_id varchar2, --登录用户
temp_user_org varchar2, --座席部门
act_group varchar2, --分组类别<0默认人员分组,1活动分组>
report_cur_type out report_cur.report_cursor_type)
as
/**********************************************************/
/*功能:座席回访记录汇总表 */
/*版本:4.0.0.0 */
/*关联版本: */
/*创建人:wangkx */
/*创建时间:2012-07-30 */
/*
主要表:asv_tsk_detail_agent,
涉及其他表:act_list,tsys_user,asv_tsk_execute,
数据库:pms_1024,
服务器IP:192.168.72.35
V4.0.0.1 2013-05-09 modify wangxn: 系统出基线包
V4.0.0.4 2013-03-25 modify liusm: [M201401160047]增加数据权限
V4.0.0.5 2014-07-18 modify lumin11193: 将任务状态,外呼状态修改成可扩展
V4.0.3.7 2016-09-28 modify huwy18730: 增加查询条件(act_group为1按活动分组,act_group为0按座席分组,默认0)
*/

sqlCall varchar2(16000);
e_startDate varchar2(50);
e_endDate varchar2(50);
s_startDate varchar2(50);
s_endDate varchar2(50);
userId varchar2(2000);
act varchar(2000);
e_betweenTime varchar2(1000):= ' ';
s_betweenTime varchar2(1000):=' ';
str_split varchar2(5) := ',';
act_condition varchar2(4000):=' ';
org_condition varchar2(10000):=' ';
userorg_condition varchar2(10000):=' ';
user_condition varchar2(10000):=' ';
tableA varchar2(8000):=' ';
tableB varchar2(8000):=' ';
tableC varchar2(8000):=' ';
v_param_value varchar2(30000) := ' ';

v_user_auth_str varchar2(1000) := '';
v_cust_auth_str varchar2(1000) := '';
v_auth_sqlB varchar2(1000) := '';
v_auth_sqlA varchar2(1000) := '';
v_auth_sqlC varchar2(1000) := '';

/******************************************************/
begin
--记录传入参数
v_param_value := '@temp_user_org='||nvl(temp_user_org,'')||'@p_user_id='||nvl(p_user_id,'') ||'@temp_e_startDate=' || nvl(temp_e_startDate,'') || '@temp_e_endDate=' || nvl(temp_e_endDate,'') || '@temp_s_startDate=' || nvl(temp_s_startDate,'')
|| '@temp_s_endDate=' || nvl(temp_s_endDate,'') || '@temp_act=' || nvl(temp_act,'') || '@temp_org=' || nvl(temp_org,'')|| '@temp_userId=' || nvl(temp_userId,'')||'@act_group='||nvl(act_group,'');
LOG_RP_PROC(v_param_value,'','','callbackAgentOutBound_V4.0.2.3','callbackAgentOutBound_proc: 座席回访记录汇总-表输入参数');

--按活动分组需要显示活动名称
if act_group='1' then
tableA := 'select '''' user_name,a.act_id,a.act_name,
nvl((select dic.dict_item_name from tsys_dict_item dic where dic.dict_entry_code = ''ASV_ACT_RESULT'' and dic.dict_item_code = atda.asv_act_result),''未执行'')status,
count(1) cou,
''act_result'' act_result
from asv_tsk_detail_agent atda,act_list a where atda.act_id = a.act_id ';

tableB := 'select '''' user_name,aa.act_id,aa.act_name,
(select dic.dict_item_name from tsys_dict_item dic where dic.dict_entry_code = ''ASV_TSK_STATUS'' and dic.dict_item_code = atdas.asv_tsk_status) status,
count(1) cou,
''tsk_status'' act_result
from asv_tsk_detail_agent atdas,act_list aa where atdas.act_id = aa.act_id ';

tableC :='select '''' user_name,ac.act_id,ac.act_name,
atdac.asv_tsk_status status,
count(1) cou,
''be_overdue'' act_result
from asv_tsk_detail_agent atdac, act_list ac, act_part_member apm
where atdac.act_id = ac.act_id
and atdac.act_tsk_id = apm.act_auto_id(+)
and apm.hope_end_time != 0 and trim(apm.hope_end_time) is not null
and ((rpad(apm.hope_end_time, 14, 9) < rpad(atdac.act_tsk_execute_dt, 14, 0) )
or (atdac.act_tsk_execute_dt = 0 and to_number(to_char(sysdate,''yyyyMMddhhmiss'')) > rpad(apm.hope_end_time, 14, 9))
) ';
else
tableA := 'select atda.act_tsk_execute_id,'''' as act_id,'''' as act_name,
nvl((select dic.dict_item_name from tsys_dict_item dic where dic.dict_entry_code = ''ASV_ACT_RESULT'' and dic.dict_item_code = atda.asv_act_result),''未执行'')status,
count(1) cou,
''act_result'' act_result
from asv_tsk_detail_agent atda,act_list a where atda.act_id = a.act_id ';

tableB := 'select atdas.act_tsk_execute_id,'''' as act_id,'''' as act_name,
(select dic.dict_item_name from tsys_dict_item dic where dic.dict_entry_code = ''ASV_TSK_STATUS'' and dic.dict_item_code = atdas.asv_tsk_status) status,
count(1) cou,
''tsk_status'' act_result
from asv_tsk_detail_agent atdas,act_list aa where atdas.act_id = aa.act_id ';

tableC :='select atdac.act_tsk_execute_id,'''' as act_id,'''' as act_name,
atdac.asv_tsk_status status,
count(1) cou,
''be_overdue'' act_result
from asv_tsk_detail_agent atdac, act_list ac, act_part_member apm
where atdac.act_id = ac.act_id
and atdac.act_tsk_id = apm.act_auto_id(+)
and apm.hope_end_time != 0 and trim(apm.hope_end_time) is not null
and ((rpad(apm.hope_end_time, 14, 9) < rpad(atdac.act_tsk_execute_dt, 14, 0) )
or (atdac.act_tsk_execute_dt = 0 and to_number(to_char(sysdate,''yyyyMMddhhmiss'')) > rpad(apm.hope_end_time, 14, 9))
) ';
end if;

--执行时间 表字段:asv_tsk_detail_agent.act_tsk_execute_dt
if temp_e_startDate is not null then
e_startDate :=to_char(to_date(temp_e_startDate,'yyyy-mm-dd'),'yyyymmdd');
tableA:=tableA||' and atda.act_tsk_execute_dt >= to_number('''|| RPad( e_startDate, 12,'0') ||''')';
tableB:=tableB||' and atdas.act_tsk_execute_dt >= to_number('''|| RPad( e_startDate, 12,'0') ||''')';
tableC:=tableC||' and atdac.act_tsk_execute_dt >= to_number('''|| RPad( e_startDate, 12,'0') ||''')';
end if;

if temp_e_endDate is not null then
e_endDate := to_char(to_date(temp_e_endDate,'yyyy-mm-dd'),'yyyymmdd');
tableA:=tableA||' and atda.act_tsk_execute_dt <= to_number('''|| RPad(e_endDate,12,'9') || ''')';
tableB:=tableB||' and atdas.act_tsk_execute_dt <= to_number('''|| RPad(e_endDate,12,'9') || ''')';
tableC:=tableC||' and atdac.act_tsk_execute_dt <= to_number('''|| RPad(e_endDate,12,'9') || ''')';
end if;

--分配时间 表字段:asv_tsk_detail_agent.act_tsk_distribution_dt
if temp_s_startDate is not null then
s_startDate := to_char(to_date(temp_s_startDate,'yyyy-mm-dd'),'yyyymmdd');
tableA:=tableA||' and atda.act_tsk_distribution_dt >= to_number('''|| RPad( s_startDate, 12,'0') ||''')';
tableB:=tableB||' and atdas.act_tsk_distribution_dt >= to_number('''|| RPad( s_startDate, 12,'0') ||''')';
tableC:=tableC||' and atdac.act_tsk_distribution_dt >= to_number('''|| RPad( s_startDate, 12,'0') ||''')';
end if;

if temp_s_endDate is not null then
s_endDate := to_char(to_date(temp_s_endDate,'yyyy-mm-dd'),'yyyymmdd');
tableA:=tableA||' and atda.act_tsk_distribution_dt <= to_number('''||RPad(s_endDate,12,'9') || ''')';
tableB:=tableB||' and atdas.act_tsk_distribution_dt <= to_number('''||RPad(s_endDate,12,'9') || ''')';
tableC:=tableC||' and atdac.act_tsk_distribution_dt <= to_number('''||RPad(s_endDate,12,'9') || ''')';
end if;

--营业部
if temp_org is null then
org_condition:=' ';
else
tableA:=tableA||' and atda.act_customer_depart in ('''|| replace(temp_org,',',''',''') || ''')';
tableB:=tableB||' and atdas.act_customer_depart in ('''|| replace(temp_org,',',''',''') || ''')';
tableC:=tableC||' and atdac.act_customer_depart in ('''|| replace(temp_org,',',''',''') || ''')';
end if;
--活动
if temp_act is null then
act_condition:=' ';
else
tableA:=tableA||' and atda.act_id in('||temp_act || ')';
tableB:=tableB||' and atdas.act_id in('||temp_act || ')';
tableC:=tableC||' and atdac.act_id in('||temp_act || ')';
end if;

--座席
if temp_userId is null then
user_condition:=' ';
else
userId := trim(both ',' from temp_userId);
tableA:=tableA||' and atda.act_tsk_execute_id in('''|| replace(userId,',',''',''') || ''')';
tableB:=tableB||' and atdas.act_tsk_execute_id in('''|| replace(userId,',',''',''') || ''')';
tableC:=tableC||' and atdac.act_tsk_execute_id in('''|| replace(userId,',',''',''') || ''')';
end if;
--座席部门
if temp_user_org is null then
userorg_condition:=' ';
else
userorg_condition := 'select user_id from tsys_user where org_id in ('''|| replace(temp_user_org,',',''',''') || ''')';
tableA:=tableA||' and atda.act_tsk_execute_id in('||userorg_condition||')';
tableB:=tableB||' and atdas.act_tsk_execute_id in('||userorg_condition||')';
tableC:=tableC||' and atdac.act_tsk_execute_id in('||userorg_condition||')';
end if;

-- 数据权限
v_user_auth_str := pkg_sys_dataright.fn_sys_getAuthUsers(p_user_id,'ASV');
if v_user_auth_str <> 'ALL_RIGHT' then
--v_auth_sqlA := ' and (a.act_create_id in ( ' || v_user_auth_str || ' ) or ( a.act_id in ( select act_id from act_execute_department where dep_code = ( select org_id from tsys_user where user_id = ''' || p_user_id || ''' ) ) ) )';
--v_auth_sqlB := ' and (aa.act_create_id in ( ' || v_user_auth_str || ' ) or ( aa.act_id in ( select act_id from act_execute_department where dep_code = ( select org_id from tsys_user where user_id = ''' || p_user_id || ''' ) ) ) )';
v_auth_sqlA := ' and atda.act_tsk_execute_id in (' ||v_user_auth_str || ')';
v_auth_sqlB := ' and atdas.act_tsk_execute_id in (' ||v_user_auth_str || ')';
v_auth_sqlC := ' and atdac.act_tsk_execute_id in (' ||v_user_auth_str || ')';
end if;

v_cust_auth_str := pkg_sys_dataright.fn_sys_getAuthBranchs(p_user_id,'CM_CUSTOMER');

if v_cust_auth_str <> 'ALL_RIGHT' then
v_auth_sqlA := v_auth_sqlA || ' and atda.act_customer_depart in (' || v_cust_auth_str || ')';
v_auth_sqlB := v_auth_sqlB || ' and atdas.act_customer_depart in (' || v_cust_auth_str || ')';
v_auth_sqlC := v_auth_sqlC || ' and atdac.act_customer_depart in (' || v_cust_auth_str || ')';
end if;

tableA := tableA || v_auth_sqlA;
tableB := tableB || v_auth_sqlB;
tableC := tableC || v_auth_sqlC;

--增加分组(act_group为1时,分组条件增加按活动分组)
if act_group='1' then
tableA := tableA||' group by a.act_id,a.act_name, atda.asv_act_result';
tableB := tableB||' group by aa.act_id,aa.act_name, atdas.asv_tsk_status';
tableC := tableC||' group by atdac.act_tsk_execute_id,ac.act_id,ac.act_name, atdac.asv_tsk_status';
else
tableA := tableA||' group by atda.act_tsk_execute_id, atda.asv_act_result';
tableB := tableB||' group by atdas.act_tsk_execute_id, atdas.asv_tsk_status';
tableC := tableC||' group by atdac.act_tsk_execute_id, atdac.asv_tsk_status';
end if;
/*********************************************************************************************************************/

sqlCall:=tableA || ' union all ' ||tableB || ' union all ' || tableC;

if act_group='0' then
sqlCall:=' select u.user_name||''[''||u.user_id||'']'' as user_name, t.* from ' ||
'(select * from ('||sqlCall||') ) t, tsys_user u ' ||
'where t.act_tsk_execute_id = u.user_id';
end if;

-- 调用公共读写日志过程
LOG_RP_PROC(tableA,'','','V4.0.3.7tableA','座席回访记录汇总表A');
LOG_RP_PROC(tableB,'','','V4.0.3.7tableB','座席回访记录汇总表B');
LOG_RP_PROC(tableC,'','','V4.0.3.7tableC','座席回访记录汇总表C');
LOG_RP_PROC(sqlCall,'','','V4.0.3.7table','座席回访记录汇总表');
open report_cur_type for sqlCall;
end callbackAgentOutBound_proc;
/

转载于:https://www.cnblogs.com/jungege/p/5983840.html

快意报表存储过程标准写法相关推荐

  1. 单例模式的标准写法、注意事项、作用及测试

    最新最准确内容建议直接访问原文:单例模式 主要介绍单例模式的标准写法.注意事项.作用.测试,以Java语言为例,下面代码是目前见过最好的写法: public class Singleton {priv ...

  2. 有关 Form 的一些代码的标准写法

    有关 Form 的一些代码的标准写法时间:2009-10-23 21:00:05来源:网络 作者:未知 点击:44次 有关 Form 的一些代码的标准写法----------------------- ...

  3. SQL学习(二)之四大查询语句以及标准写法

    SQL四大查询语句--增删改查 增-INSERT INSERT INTO 表 (字段列表) VALUES(值列表) INSERT INTO `user_table` (`ID`, `username` ...

  4. $.ajax()参数详解及标准写法

    1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...

  5. oracle的标准写法,oracle 表连接特有写法与标准写法

    oracle里表连接支持标准写法,但也有oracle特殊的写法,这两种写法在某些场景下会有差异,推荐使用标准写法,这里只是介绍表连接标准语法及了解oracle的特殊写法. 标准连接语法: select ...

  6. 09_$.ajax()参数详解及标准写法

    1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址.2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如p ...

  7. MySQL 存储过程的写法

    最近因为公司需要做将Oracle 转换为MySQL,其中包含存储过程,所以就对MySQL存储过程的写法做了一些研究. DROP PROCEDURE IF EXISTS ch_passw;   CREA ...

  8. 1一9数字行书写法_数字1-9的标准写法-1~9的书写格式

    数字 1-9 的标准写法 要求:用田字格本书写,数字 1 - 9 书写时占左边格. 1 :从日字格的右上角附近起笔,画斜线到左下角附近. 2 :起笔碰左线,然后向上向右碰线,略成半圆,斜线到左下角,碰 ...

  9. jquery向服务器发送ajax请求标准写法

    jquery向服务器发送ajax请求标准写法 $.ajax({url:"url路径", //请求的url地址dataType:"json", //返回的数据格式 ...

最新文章

  1. [论文收集] ICSOC 2008 论文
  2. Java 条件运算符
  3. centos7下安装mysql5.6_Linux-CentOS7下安装mysql5.6常见问题解决!
  4. android 录音原始文件_音频采集:Android基于AudioRecord的实现
  5. 微软希望每个人有自己的人工智能朋友
  6. Android 系统(180)---Android.mk入门
  7. linux 查询wwid命令,Linux磁盘及分区之wwid和uuid
  8. MultipartFile转为File
  9. 【总结——HTTP协议】
  10. 3S基础知识:MapInfo使用MapX开发实现若干小功能
  11. SSM实现毕业设计管理系统
  12. 1、结构化、面向对象程序设计差别、类基本概念
  13. 为什么孩子上学越来越难了?
  14. 挂断电话的实现(即类似于电话号码黑名单)
  15. Hook DirectX 在War3 魔兽争霸界面写屏
  16. GEE实现图像随机森林分类
  17. 登录和第三方授权(Cookie和Authorization)
  18. 4、Reading Rasa Source Code —— Domain 解析
  19. 移动互联网时代,浅谈旅行社的转型升级
  20. CoCa: Contrastive Captioners are Image-Text Foundation Models翻译

热门文章

  1. 函数计算工具链新成员 —— Fun Local 发布啦
  2. Linux IPv6 地址配置
  3. Linux服务器-使用mysql
  4. 【每日学习Mybatis中基础】trim标签使用
  5. JavaScript原型链以及Object,Function之间的关系
  6. 【WPF】鼠标拖拽功能DragOver和Drop
  7. bzoj 3028 生成函数
  8. C# 类型实例化的语法糖--unity下诡异结果
  9. 从opensuse 12.3 升级到 opensuse13.1体验
  10. 添加非oracle用户到dba, oinstall组