修改多选

master
zxf 2023-11-28 23:10:26 +08:00
parent a3542ab479
commit 98902bb0b3
6 changed files with 431 additions and 5 deletions

View File

@ -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>

View File

@ -1,3 +1,3 @@
#save ini
#Wed Nov 22 00:59:05 CST 2023
#Mon Nov 27 22:36:20 CST 2023
deploystamp=1612237236000

View File

@ -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>

View File

@ -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");