修改多选
parent
a3542ab479
commit
98902bb0b3
|
@ -10,15 +10,15 @@
|
|||
<input widget="edit" name="phone" label="来电号码"/>
|
||||
<input widget="edit" name="custname" label="客户名称"/>
|
||||
<input widget="edit" name="empno" label="工号"/>
|
||||
<input widget="combox" name="company" label="税局" url="rush/bureau/getOrgListByUser"
|
||||
<input widget="combox" name="company" label="税局" url="rush/bureau/getOrgListByUser" multiSelect="true"
|
||||
emptyText="请选择" textField="text" valueField="id" allowInput="false"
|
||||
showNullItem="true" />
|
||||
|
||||
<input widget="combox" name="problem" label="问题分类" url="rush/bureau/getproblemList"
|
||||
<input widget="combox" name="problem" label="问题分类" url="rush/bureau/getproblemList" multiSelect="true"
|
||||
emptyText="请选择" textField="text" valueField="text" allowInput="false"
|
||||
showNullItem="true" />
|
||||
|
||||
<input widget="combox" name="diqu" label="地区" url="rush/bureau/getDiquListByUser"
|
||||
<input widget="combox" name="diqu" label="地区" url="rush/bureau/getDiquListByUser" multiSelect="true"
|
||||
emptyText="请选择" textField="text" valueField="id" allowInput="false"
|
||||
showNullItem="true" />
|
||||
<input name="callstate" widget=combox allowinput="f" style="width: 200px;" showNullItem="true"
|
||||
|
@ -26,7 +26,7 @@
|
|||
<input name="calltype" widget=combox allowinput="f" style="width: 200px;" showNullItem="true" multiSelect="true"
|
||||
data="[{id:'0',text:'12366'},{id:'1',text:'95113'},{id:'2',text:'精准查询'}]" emptyText="请选择" label="呼叫类型">
|
||||
|
||||
<input name="manyidu" widget=combox allowinput="f" style="width: 200px;" showNullItem="true"
|
||||
<input name="manyidu" widget=combox allowinput="f" style="width: 200px;" showNullItem="true" multiSelect="true"
|
||||
data="[{id:'1',text:'非常满意'},{id:'2',text:'满意'},{id:'3',text:'不满意'},{id:'4',text:'暂未评价'}]" emptyText="请选择" label="满意度">
|
||||
<a widget="button" iconCls="icon-search" onclick="search()">查询</a>
|
||||
<a widget="button" iconCls="icon-export" onclick="exportExl()">导出</a>
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,3 +1,3 @@
|
|||
#save ini
|
||||
#Wed Nov 22 00:59:05 CST 2023
|
||||
#Mon Nov 27 22:36:20 CST 2023
|
||||
deploystamp=1612237236000
|
||||
|
|
|
@ -0,0 +1,216 @@
|
|||
<html login="false" auth="false">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>录音操作</title>
|
||||
</head>
|
||||
<body>
|
||||
<div widget="toolbar" style="padding:5px;border:0;">
|
||||
<input name="start_time" widget=datechooser showTime="true" timeFormat="HH:mm:ss" format="yyyy-MM-dd" valueFormat="yyyy-MM-dd" allowinput="f" label="来电时间">
|
||||
<input name="end_time" widget=datechooser showTime="true" timeFormat="HH:mm:ss" format="yyyy-MM-dd" valueFormat="yyyy-MM-dd" allowinput="f" style="margin-left: -70px;" label="至">
|
||||
<input widget="edit" name="phone" label="来电号码"/>
|
||||
<input widget="edit" name="custname" label="客户名称"/>
|
||||
<input widget="edit" name="empno" label="工号"/>
|
||||
<input widget="combox" name="company" label="税局" url="rush/bureau/getOrgListByUser" multiSelect="true"
|
||||
emptyText="请选择" textField="text" valueField="id" allowInput="false"
|
||||
showNullItem="true" />
|
||||
|
||||
<input widget="combox" name="problem" label="问题分类" url="rush/bureau/getproblemList" multiSelect="true"
|
||||
emptyText="请选择" textField="text" valueField="text" allowInput="false"
|
||||
showNullItem="true" />
|
||||
|
||||
<input widget="combox" name="diqu" label="地区" url="rush/bureau/getDiquListByUser" multiSelect="true"
|
||||
emptyText="请选择" textField="text" valueField="id" allowInput="false"
|
||||
showNullItem="true" />
|
||||
<input name="callstate" widget=combox allowinput="f" style="width: 200px;" showNullItem="true"
|
||||
data="[{id:'0',text:'呼入'},{id:'1',text:'呼出'}]" emptyText="请选择" label="被叫主叫">
|
||||
<input name="calltype" widget=combox allowinput="f" style="width: 200px;" showNullItem="true" multiSelect="true"
|
||||
data="[{id:'0',text:'12366'},{id:'1',text:'95113'},{id:'2',text:'精准查询'}]" emptyText="请选择" label="呼叫类型">
|
||||
|
||||
<input name="manyidu" widget=combox allowinput="f" style="width: 200px;" showNullItem="true" multiSelect="true"
|
||||
data="[{id:'1',text:'非常满意'},{id:'2',text:'满意'},{id:'3',text:'不满意'},{id:'4',text:'暂未评价'}]" emptyText="请选择" label="满意度">
|
||||
<a widget="button" iconCls="icon-search" onclick="search()">查询</a>
|
||||
<a widget="button" iconCls="icon-export" onclick="exportExl()">导出</a>
|
||||
</div>
|
||||
<div widget="autosize">
|
||||
<div widget="datagrid" name="grid" style="width: 100%; height: 100%;" url="rush/bureau/getlistcrm" >
|
||||
<div type="indexcolumn" width="35" header="序号"></div>
|
||||
<div field="id" visible="id"></div>
|
||||
|
||||
<div field="caller_phone" width="50" header="来电号码" align="center" ></div>
|
||||
<div field="customer_name" width="50" header="公司名称" align="center" ></div>
|
||||
<div field="question_content" width="50" header="咨询内容" align="center" ></div>
|
||||
<div field="question_answer" width="50" header="解决办法" align="center" ></div>
|
||||
<div field="productname" width="50" header="问题类型" align="center" ></div>
|
||||
<div field="emp_no" width="30" header="工号" align="center"></div>
|
||||
<div field="name" width="30" header="姓名" align="center"></div>
|
||||
<div field="create_time" width="50" header="日期" align="center"></div>
|
||||
<div field="phone_num" width="50" header="电话号码" align="center"></div>
|
||||
<div field="start_time" width="70" header="来电时间" align="center"></div>
|
||||
<div field="end_time" width="70" header="结束时间" align="center"></div>
|
||||
<div field="record_duration" width="40" header="录音时长(秒)" align="center"></div>
|
||||
<!-- <div field="call_type" width="35" align="center" header="呼叫类型" ></div>-->
|
||||
<div field="call_type" width="35" renderer="callType" align="center" header="呼入/呼出" ></div>
|
||||
<!--<div field="down" width="40" header="下载" renderer="downRender" align="center"></div>-->
|
||||
<div field="play" width="40" header="调听" renderer="playRender" align="center"></div>
|
||||
<div field="orgname" width="40" header="地区" align="center" ></div>
|
||||
<div field="area_name" width="40" header="税局" align="center" ></div>
|
||||
<div field="calleeno" width="40" header="地号" align="center" ></div>
|
||||
<div field="manyidu" width="45" renderer="manyi" align="center" header="满意度" ></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var grid = aos.get('grid');
|
||||
var nowday=aos.formatDate(new Date(),"yyyy-MM-dd");
|
||||
|
||||
|
||||
function search(){
|
||||
var grid = aos.get('grid');
|
||||
var begindate=aos.get('start_time').getFormValue();
|
||||
var enddate=aos.get('end_time').getFormValue();
|
||||
if (begindate!="")
|
||||
{
|
||||
if (enddate=="")
|
||||
{aos.alert('请选择结束时间!');
|
||||
return ;
|
||||
}
|
||||
else{
|
||||
if (begindate>enddate)
|
||||
{
|
||||
aos.alert('开始日期必须早于结束日期!');
|
||||
}else{
|
||||
|
||||
var params={
|
||||
searchbegindate:begindate,
|
||||
searchenddate:enddate,
|
||||
phone:aos.get('phone').getValue(),
|
||||
custname:aos.get('custname').getValue(),
|
||||
empno:aos.get('empno').getValue(),
|
||||
manyi:aos.get('manyidu').getValue(),
|
||||
company:aos.get('company').getValue(),
|
||||
diqu:aos.get('diqu').getValue(),
|
||||
problem:aos.get('problem').getValue(),
|
||||
callstate:aos.get('callstate').getValue(),
|
||||
|
||||
calltype:aos.get('calltype').getValue()
|
||||
|
||||
};
|
||||
grid.load(params);
|
||||
}
|
||||
}
|
||||
}else if(enddate!="")
|
||||
{
|
||||
aos.alert('请选择开始时间!');
|
||||
return ;
|
||||
}else{
|
||||
var params={
|
||||
searchbegindate:begindate,
|
||||
searchenddate:enddate,
|
||||
phone:aos.get('phone').getValue(),
|
||||
custname:aos.get('custname').getValue(),
|
||||
empno:aos.get('empno').getValue(),
|
||||
manyi:aos.get('manyidu').getValue(),
|
||||
company:aos.get('company').getValue(),
|
||||
diqu:aos.get('diqu').getValue(),
|
||||
problem:aos.get('problem').getValue(),
|
||||
callstate:aos.get('callstate').getValue(),
|
||||
calltype:aos.get('calltype').getValue()};
|
||||
grid.load(params);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function playRender(e){
|
||||
var row=e.row;
|
||||
var value=row.play;
|
||||
if(value=='播放'){
|
||||
return "<a style=\"color:green;\" href='javascript:void(0)' onclick='showMyDialog(\""+ row.path +"\")'>"+value+"</a>";
|
||||
}else{
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function callType(e){
|
||||
var row=e.row;
|
||||
var value=row.call_type;
|
||||
if(value=='0'){
|
||||
return '<p style="color:red;">呼入</p>';
|
||||
}
|
||||
if(value=='1'){
|
||||
return '<p style="color:green;">呼出</p>';
|
||||
|
||||
}
|
||||
else{
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function manyi(e){
|
||||
var row=e.row;
|
||||
var value=row.manyidu;
|
||||
if(value=='3'){
|
||||
return '<p style="color:red;">不满意</p>';
|
||||
}
|
||||
if(value=='1'){
|
||||
return '<p style="color:green;">非常满意</p>';
|
||||
}
|
||||
if(value=='2'){
|
||||
return '<p style="color:blue;">满意</p>';
|
||||
}
|
||||
else{
|
||||
return '<p style="color:#8e4c3a;">暂未评价</p>';
|
||||
}
|
||||
}
|
||||
|
||||
function downRender(e){
|
||||
var row=e.row;
|
||||
var value=row.down;
|
||||
if(value=='下载'){
|
||||
return "<a href="+ row.path +">"+value+"</a>";
|
||||
}else{
|
||||
return value;
|
||||
}
|
||||
}
|
||||
function showMyDialog(video_path){
|
||||
var params ={};
|
||||
params["video_path"]=video_path;
|
||||
aos.showWindow('canvas/rush/record_rush_play',params,'800px', '400px', '录音播放', function(rtnValue){
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
function exportExl123(){
|
||||
var begindate=aos.get('start_time').getFormValue();
|
||||
var enddate=aos.get('end_time').getFormValue();
|
||||
alert(begindate)
|
||||
var initparam={
|
||||
searchbegindate:begindate,
|
||||
searchenddate:enddate,
|
||||
phone:aos.get('phone').getValue(),
|
||||
empno:aos.get('empno').getValue(),
|
||||
calltype:aos.get('calltype').getValue()};
|
||||
var base = document.getElementsByTagName("base")[0].href;
|
||||
var Eurl=base+"rush/bureau/exportRecoding";
|
||||
var Eurl = aos.addUrlParams(Eurl,initparam);
|
||||
window.location.href=encodeURI(Eurl);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function exportExl(){
|
||||
var base = document.getElementsByTagName("base")[0].href;
|
||||
window.location.href=base+"rush/bureau/exportRecoding?empno="+aos.get('empno').getValue()+"&searchbegindate="+aos.get('start_time').getFormValue()+"&searchenddate="+aos.get('end_time').getFormValue()+"&phone="+aos.get('phone').getValue()+"&calltype="+ encodeURI(encodeURI(aos.get('calltype').getValue()))+"&manyi="+ encodeURI(encodeURI(aos.get('manyidu').getValue()))+"&company="+ encodeURI(encodeURI(aos.get('company').getValue()))+"&custname="+ encodeURI(encodeURI(aos.get('custname').getValue()))+"&diqu="+ encodeURI(encodeURI(aos.get('diqu').getValue()))+"&problem="+ encodeURI(encodeURI(aos.get('problem').getValue()))+"&callstate="+ encodeURI(encodeURI(aos.get('callstate').getValue()));
|
||||
|
||||
}
|
||||
</script>
|
||||
</html>
|
|
@ -24,6 +24,216 @@ public class BureauAction {
|
|||
private static Logger logger = Logger.getLogger(BureauAction.class);
|
||||
|
||||
|
||||
@Request.Post("getlistcrm")
|
||||
public Map getlistcrm(Params params) {
|
||||
String searchbegindate = params.getString("searchbegindate");
|
||||
String searchenddate = params.getString("searchenddate");
|
||||
String phone = params.getString("phone");
|
||||
String empno = params.getString("empno");
|
||||
String calltype = params.getString("calltype");
|
||||
String manyi = params.getString("manyi");
|
||||
String company = params.getString("company");
|
||||
String custname = params.getString("custname");
|
||||
String diqu = params.getString("diqu");
|
||||
String callstate = params.getString("callstate");
|
||||
String problem = params.getString("problem");
|
||||
String timeSql = "";
|
||||
String typeSql = "";
|
||||
String phoneSql = "";
|
||||
String empnoSql = "";
|
||||
//String manyiSql = "";
|
||||
StringBuffer manyiSql = new StringBuffer();
|
||||
// String companySql = "";
|
||||
StringBuffer companySql = new StringBuffer();
|
||||
String custnameSql="";
|
||||
StringBuffer diquSql = new StringBuffer();
|
||||
//String diquSql="";
|
||||
StringBuffer problemSql = new StringBuffer();
|
||||
//String problemSql="";
|
||||
String callstateSql="";
|
||||
String pinjie="";
|
||||
String noRight=" CRM_SM_TEL_RECORD s ";
|
||||
String right=
|
||||
" ( select * from ( select CALLID ,PRODUCTNAME,CUSTOMER_ID,QUESTION_ID,\n" +
|
||||
" QUESTION_ANSWER,CUSTOMER_NAME,CUSTOMER_TAX_ID,tel ,MOBILE ,PERSON_TEL, question_content,\n" +
|
||||
" CONTACT,TEL_DATE ,TEL_PERSON,ENTRY_PERSON ,TEL_RECORD_ID,RECODER_ID,ENTRY_DATE,ORGID,ORGNAME,\n" +
|
||||
" \n" +
|
||||
" row_number() over ( PARTITION BY red.customer_id ORDER BY red.entry_date ) as rn from \n" +
|
||||
" CRM_SM_TEL_RECORD red ) where rn=1 ) s ";
|
||||
|
||||
String userId = SessionHelper.getCurrentUserId();
|
||||
params.put("userId", userId);
|
||||
|
||||
//添加精准查询
|
||||
if (calltype != null) {
|
||||
String[] callArrray = calltype.split(",");
|
||||
|
||||
if (callArrray.length == 3) {
|
||||
//分组查询 查全部
|
||||
pinjie=right;
|
||||
}
|
||||
if (callArrray.length == 2) {
|
||||
if (calltype.contains("2")) {
|
||||
if (calltype.contains("0")) {
|
||||
typeSql = " and CALLERNO='12366'";
|
||||
}
|
||||
if (calltype.contains("1")) {
|
||||
typeSql = " and CALLERNO!='12366'";
|
||||
}
|
||||
pinjie=right;
|
||||
} else {
|
||||
pinjie=noRight;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (callArrray.length == 1) {
|
||||
if (calltype.contains("2")) {
|
||||
pinjie=right;
|
||||
}
|
||||
else{
|
||||
if (calltype.contains("0")) {
|
||||
typeSql = " and CALLERNO='12366'";
|
||||
}
|
||||
if (calltype.contains("1")) {
|
||||
typeSql = " and CALLERNO!='12366'";
|
||||
}
|
||||
pinjie=noRight;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
else{
|
||||
pinjie=noRight;
|
||||
}
|
||||
|
||||
String sql = " SELECT c.CALLID, c.CALLEENO,c.CALLERNO phone_num ,c.AGENTID emp_no,c.BEGINTIME start_time,c.ENDTIME end_time,to_char(c.BEGINTIME,'yyyy-mm-dd') create_time, " +
|
||||
"c.SECONDS record_duration ,REGEXP_REPLACE( REGEXP_REPLACE(c.FILENAME,'Z:\\\\1',''),'\\\\','/') path ,c.CALLTYPE call_type,c.NAME,s.TEL_RECORD_ID,s.RECODER_ID," +
|
||||
"s.ENTRY_DATE,s.ORGID,s.ORGNAME orgname,d.city_name area_name,c.satisfaction manyidu,s.PRODUCTNAME,s.CUSTOMER_ID,s.QUESTION_ID," +
|
||||
"s.QUESTION_ANSWER,s.CUSTOMER_NAME,s.CUSTOMER_TAX_ID,s.tel ,s.MOBILE caller_phone,s.PERSON_TEL, s.question_content," +
|
||||
"s.CONTACT,s.TEL_DATE ,s.TEL_PERSON,s.ENTRY_PERSON ,'播放' AS play ,'下载' as down FROM " +pinjie+
|
||||
"LEFT JOIN CALLSYS_TRECORDFAILINFO c ON c.CALLID = s.CALLID " +
|
||||
" left join tel_dic_city d on c.calleeno=d.callee_no " +
|
||||
" where 1=1 ";
|
||||
|
||||
|
||||
if (searchbegindate != null && searchenddate != null) {
|
||||
timeSql = " and to_char(c.BEGINTIME,'yyyy-mm-dd')>='" + searchbegindate + "' and to_char(c.BEGINTIME,'yyyy-mm-dd')<='" + searchenddate + "'";
|
||||
}
|
||||
|
||||
if (phone != null) {
|
||||
phoneSql = " and (s.MOBILE like '%" + phone + "%' or c.CALLERNO='" + phone + "')";
|
||||
}
|
||||
if (empno != null) {
|
||||
empnoSql = " and c.AGENTID like '%" + empno + "%'";
|
||||
}
|
||||
if (manyi != null) {
|
||||
String[] manyiArrray = manyi.split(",");
|
||||
if(manyi.contains("4")){
|
||||
if(manyiArrray.length==1) {
|
||||
manyiSql.append(" and c.satisfaction is null ") ;
|
||||
}
|
||||
if(manyiArrray.length>1&manyiArrray.length<4){
|
||||
manyiSql.append(" and ( c.satisfaction in (");
|
||||
for(int i=0;i<manyiArrray.length;i++){
|
||||
manyiSql.append("'"+ manyiArrray[i]+"'");
|
||||
if (i < manyiArrray.length - 1) {
|
||||
manyiSql.append(",");
|
||||
}
|
||||
}
|
||||
manyiSql.append(") or c.satisfaction is null )");
|
||||
}
|
||||
if(manyiArrray.length==4){
|
||||
manyiSql.append("");
|
||||
}
|
||||
}
|
||||
else{
|
||||
manyiSql.append(" and c.satisfaction in (");
|
||||
for(int i=0;i<manyiArrray.length;i++){
|
||||
manyiSql.append("'"+ manyiArrray[i]+"'");
|
||||
if (i < manyiArrray.length - 1) {
|
||||
manyiSql.append(",");
|
||||
}
|
||||
}
|
||||
manyiSql.append(")");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (company != null) {
|
||||
|
||||
companySql.append(" and d.city_name in (");
|
||||
String[] companyArrray = company.split(",");
|
||||
for(int i=0;i<companyArrray.length;i++){
|
||||
companySql.append("'"+ companyArrray[i]+"'");
|
||||
if (i < companyArrray.length - 1) {
|
||||
companySql.append(",");
|
||||
}
|
||||
}
|
||||
companySql.append(")");
|
||||
// companySql = " and d.city_name='" + company + "'";
|
||||
|
||||
}
|
||||
if (custname != null) {
|
||||
custnameSql = " and s.CUSTOMER_NAME like '%" + custname + "%'";
|
||||
|
||||
}
|
||||
if (callstate != null) {
|
||||
callstateSql = " and c.CALLTYPE='" + callstate + "'";
|
||||
}
|
||||
|
||||
if (diqu != null) {
|
||||
diquSql.append(" and s.ORGID in (");
|
||||
String[] diquArrray = diqu.split(",");
|
||||
for(int i=0;i<diquArrray.length;i++){
|
||||
diquSql.append("'"+ diquArrray[i]+"'");
|
||||
if (i < diquArrray.length - 1) {
|
||||
diquSql.append(",");
|
||||
}
|
||||
}
|
||||
diquSql.append(")");
|
||||
|
||||
// diquSql = " and s.ORGID='" + diqu + "'";
|
||||
|
||||
}
|
||||
if (problem != null) {
|
||||
problemSql.append(" and s.PRODUCTNAME in (");
|
||||
String[] problemArrray = problem.split(",");
|
||||
for(int i=0;i<problemArrray.length;i++){
|
||||
problemSql.append("'"+ problemArrray[i]+"'");
|
||||
if (i < problemArrray.length - 1) {
|
||||
problemSql.append(",");
|
||||
}
|
||||
}
|
||||
problemSql.append(")");
|
||||
// problemSql = " and s.PRODUCTNAME='" + problem + "'";
|
||||
|
||||
}
|
||||
|
||||
Map map = DbHelper.getDbService().queryPageMapList(sql + timeSql + typeSql + phoneSql + empnoSql + manyiSql + companySql+custnameSql+diquSql+problemSql+callstateSql+" order by c.BEGINTIME", params);
|
||||
List<Map> records = (List<Map>) map.get("records");
|
||||
for (Map m : records) {
|
||||
m.put("path", "http://10.1.1.54:8082" + m.get("path"));
|
||||
if (m.get("path") == null) {
|
||||
m.put("play", "无录音");
|
||||
m.put("path", "");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Request.Post("getlist")
|
||||
public Map getlist(Params params) {
|
||||
String searchbegindate = params.getString("searchbegindate");
|
||||
|
|
Loading…
Reference in New Issue