using Newtonsoft.Json; using System; using System.Data; using System.Web; using System.Web.Mvc; using YTSoft.BaseCallCenter.Model; using YTSoft.BaseCallCenter.MVCWeb.Models; namespace YTSoft.BaseCallCenter.MVCWeb.Controllers { public class QualityManagementController : BaseController { // // GET: /QualityManagement/ //通话记录 BLL.T_Call_CallRecords_All recordBLL = new BLL.T_Call_CallRecords_All(); //用户列表 BLL.T_Sys_UserAccount userBLL = new BLL.T_Sys_UserAccount(); //指标分类 BLL.T_QC_IndexCategory qcindexBLL = new BLL.T_QC_IndexCategory(); //列表分类 BLL.T_QC_IndexBase qcindexbaseBLL = new BLL.T_QC_IndexBase(); /// /// 初始化列表 /// /// /// //指标分类 public ActionResult TargetManagementList() { WorkOrderMyModel model = new WorkOrderMyModel(); return View(model); } public ActionResult QCIndexEdit() { WorkOrderMyModel model = new WorkOrderMyModel(); return View(model); } //指标列表 public ActionResult QCIndexList() { WorkOrderMyModel model = new WorkOrderMyModel(); return View(model); } //质检评分 public ActionResult QualityTestScore() { WorkOrderMyModel model = new WorkOrderMyModel(); Model.T_Sys_UserAccount viewModel = new Model.T_Sys_UserAccount(); //获取用户列表 viewModel.UserList = userBLL.GetModelList("F_RemindFlag=0"); return View(viewModel); } //质检结果 public ActionResult QcResultList() { WorkOrderMyModel model = new WorkOrderMyModel(); return View(model); } // // GET: /QualityManagement/Details/5 /// /// 获取通话记录 /// /// 当前页码 /// 每页数据量 /// 查询条件 /// [ActionName("CallRecordData")] [HttpGet] public string CallRecordData(DateTime? NowDateTime, int page, int limit, string callnumber, string usercode, string callType, string callStatus,string userid) { //数据结果集 ResponseData dataModel = new ResponseData(); string sql = " and FilePath<>''"; if (!string.IsNullOrEmpty(callnumber)) { sql += " and CallNumber like '%" + callnumber + "%'"; } if (!string.IsNullOrEmpty(usercode)) { sql += " and userid ='" + usercode + "'"; } if (!string.IsNullOrEmpty(userid)) { sql += " and userid ='" + userid + "'"; } if (!string.IsNullOrEmpty(callType)) { sql += " and CallType =" + callType; } if (!string.IsNullOrEmpty(callStatus)) { sql += " and CallState =" + callStatus; } DataTable dt = new DataTable(); int recordCount = 0; Model.PageData pageModel = new Model.PageData(); dt = BLL.PagerBLL.GetListPager( "T_Call_CallRecords", "CallRecordsId", @"*,CONVERT(varchar,BeginTime, 120 ) as BeginTimeNew,CONVERT(varchar,TalkStartTime, 120 ) as TalkStartTimeNew,CONVERT(varchar,TalkEndTime, 120 ) as TalkEndTimeNew,CONVERT(varchar,TalkStartTime, 120 ) as TalkStartTimeNew,CONVERT(varchar,TalkEndTime, 120 ) as TalkEndTimeNew, replace(replace(FilePath,'\','/'),'"+GetSysconfig("newFilePath") +"','"+ GetSysconfig("newPlayPath") + "') as fileurl", sql, "ORDER BY CallRecordsId desc", limit, page, true, out recordCount); dataModel.code = 0; dataModel.count = recordCount; dataModel.data = dt; string json = JsonConvert.SerializeObject(dataModel); return json; } // GET: /QualityManagement/Details/5 /// /// 获取质检结果 /// /// 当前页码 /// 每页数据量 /// 查询条件 /// [ActionName("QCResultCallRecordData")] [HttpGet] public string QCResultCallRecordData(DateTime? NowDateTime, int page, int limit, string callnumber, string usercode, string callType, string callStatus, string userid) { //数据结果集 ResponseData dataModel = new ResponseData(); string sql = " and F_QCState<>0 and FilePath<>''"; if (!string.IsNullOrEmpty(callnumber)) { sql += " and CallNumber like '%" + callnumber + "%'"; } if (!string.IsNullOrEmpty(usercode)) { sql += " and userid ='" + usercode + "'"; } if (!string.IsNullOrEmpty(userid)) { sql += " and userid ='" + userid + "'"; } if (!string.IsNullOrEmpty(callType)) { sql += " and CallType =" + callType; } if (!string.IsNullOrEmpty(callStatus)) { sql += " and CallState =" + callStatus; } DataTable dt = new DataTable(); int recordCount = 0; Model.PageData pageModel = new Model.PageData(); dt = BLL.PagerBLL.GetListPager( "T_Call_CallRecords", "CallRecordsId", @"*,CONVERT(varchar,BeginTime, 120 ) as BeginTimeNew,CONVERT(varchar,TalkStartTime, 120 ) as TalkStartTimeNew,CONVERT(varchar,TalkEndTime, 120 ) as TalkEndTimeNew,CONVERT(varchar,TalkStartTime, 120 ) as TalkStartTimeNew,CONVERT(varchar,TalkEndTime, 120 ) as TalkEndTimeNew , replace(replace(FilePath,'\','/'),'" + GetSysconfig("newFilePath") + "','" + GetSysconfig("newPlayPath") + "') as fileurl ", sql, "ORDER BY CallRecordsId desc", limit, page, true, out recordCount); dataModel.code = 0; dataModel.count = recordCount; dataModel.data = dt; string json = JsonConvert.SerializeObject(dataModel); return json; } /// /// 获取分类数据 /// /// 当前页码 /// 每页数据量 /// [ActionName("QCindexDate")] [HttpGet] public string QCindexDate(DateTime? NowDateTime, int page, int limit, int? parentId) { //数据结果集 ResponseData dataModel = new ResponseData(); string sql = ""; if (parentId != null) { sql += " and F_ParentId=" + parentId; } DataTable dt = new DataTable(); int recordCount = 0; Model.PageData pageModel = new Model.PageData(); dt = BLL.PagerBLL.GetListPager( "T_QC_IndexCategory", "F_CategoryId", "* ,(CASE F_DeleteFlag WHEN 1 THEN '启用' WHEN 0 THEN '禁用' ELSE NULL END ) as F_DeleteFlag", sql, "ORDER BY F_CategoryId ", limit, page, true, out recordCount); dataModel.code = 0; dataModel.count = recordCount; dataModel.data = dt; return JsonConvert.SerializeObject(dataModel); } /// /// 获取列表数据 /// /// 当前页码 /// 每页数据量 /// [ActionName("QCindexbaseDate")] [HttpGet] public string QCindexbaseDate( int page, int limit, int? parentId) { //数据结果集 ResponseData dataModel = new ResponseData(); string sql = ""; if (parentId != null) { sql += " and F_ParentId=" + parentId; } DataTable dt = new DataTable(); int recordCount = 0; Model.PageData pageModel = new Model.PageData(); dt = BLL.PagerBLL.GetListPager( "T_QC_IndexBase", "F_IndexId", "* ,(CASE F_DeleteFlag WHEN 1 THEN '启用' WHEN 0 THEN '禁用' ELSE NULL END ) as F_DeleteFlag", sql, "ORDER BY F_IndexId ", limit, page, true, out recordCount); dataModel.code = 0; dataModel.count = recordCount; dataModel.data = dt; return JsonConvert.SerializeObject(dataModel); } #region 获取指标树 BLL.T_Sys_RoleInfo roleBLL = new BLL.T_Sys_RoleInfo(); public class DicSeaarchModel { public string RootCode { get; set; } } /// /// 初始化字典结构 /// /// /// public ActionResult MenuTree(string rootCode) { DicSeaarchModel model = new DicSeaarchModel(); model.RootCode = rootCode; return View(model); } ///通过部门父级节点获取数据 /// /// /// public string QCGetMenuJsonModel(int parentId) { return Newtonsoft.Json.JsonConvert.SerializeObject(qcindexBLL.GetMenuJsonModel(parentId)); } ///通过部门父级节点获取数据 /// /// /// public string QCindexGetMenuJsonModel(int parentId) { return Newtonsoft.Json.JsonConvert.SerializeObject(qcindexbaseBLL.GetMenuJsonModel(parentId)); } #endregion /// ///指标分类编辑 /// /// 类型1、新增 2、修改 /// /// public ActionResult TargetManagementEdit(int? categoryId ,int? IndexCategoryId, int editType ) { try { Model.T_QC_IndexCategory viewModel = new Model.T_QC_IndexCategory(); //当前对象实体1新增,2编辑 if (editType == 1) { viewModel.F_ParentId = IndexCategoryId; viewModel.F_Sort = 1; } else { Model.T_QC_IndexCategory callModel = qcindexBLL.GetModel(int.Parse(categoryId.ToString())); viewModel = callModel; } //获取指标分类 viewModel.IndexCategoryList = qcindexBLL.GetModelList("F_ParentId=0"); return View(viewModel); } catch { return View(); } } /// /// 保存编辑 /// /// /// [AcceptVerbs(HttpVerbs.Post)] public bool SaveCategoryData(T_QC_IndexCategory qcaModel, string Fl_CategoryId, string F_ParentId ) { //当前对象实体 if (qcaModel.F_CategoryId > 0) { Model.T_QC_IndexCategory qccateModel = qcindexBLL.GetModel(qcaModel.F_CategoryId); if (Convert.ToInt32(F_ParentId) > 0) { qccateModel.F_ParentId = Convert.ToInt32(Fl_CategoryId); } else { qccateModel.F_ParentId = 0; } //qccateModel.F_CategoryName = F_CategoryName; //qccateModel.F_Sort= Convert.ToInt32( F_Sort); return qcindexBLL.Update(qccateModel); } else { return qcindexBLL.Add(qcaModel) > 0; } } /// /// 删除功能 /// /// /// [AcceptVerbs(HttpVerbs.Get)] public bool DeleteIndexCateData(int categoryId) { return qcindexBLL.Delete(categoryId); } /// /// 保存编辑 /// /// /// [AcceptVerbs(HttpVerbs.Post)] public bool SaveQuaData(T_Call_CallRecords_All quaModel,string F_QCScore,string F_QCRemark) { //当前对象实体 if (quaModel.CallRecordsId > 0) { Model.T_Call_CallRecords_All qcModel = recordBLL.GetModel(quaModel.CallRecordsId); switch (F_QCRemark) { case "1": qcModel.F_QCRemark ="非常满意"; qcModel.F_QCState = 1; break; case "2": qcModel.F_QCRemark = "基本满意"; qcModel.F_QCState = 2; break; case "3": qcModel.F_QCRemark = "不满意"; qcModel.F_QCState = 3; break; default: qcModel.F_QCRemark = " "; qcModel.F_QCState = 0; break; } if (Convert.ToInt32(F_QCScore)>0) { qcModel.F_QCScore = Convert.ToInt32( F_QCScore); } else { qcModel.F_QCScore = 0; } qcModel.F_QCTime = DateTime.Now; return recordBLL.Update(qcModel); } else { return recordBLL.Add(quaModel) > 0; } } /// /// 听取录音 /// /// public ActionResult QCVoicePlay(string type, string callid, int callrecordsid) { Models.QCVoicePlayModel model = new QCVoicePlayModel(); model.playpath = ""; model.downpath = ""; try { if (callrecordsid != 0) { Model.T_Call_CallRecords_All callModel = recordBLL.GetModel(callrecordsid); model.CallRecordsId = callModel.CallRecordsId; model.CallId = callModel.CallId; model.CallNumber = callModel.CallNumber; model.UserId = callModel.UserId; model.UserCode = callModel.UserCode; model.UserName = callModel.UserName; model.TalkLongTime = callModel.TalkLongTime; model.TalkStartTime = callModel.TalkStartTime; model.TalkEndTime = callModel.TalkEndTime; model.F_QCRemark = callModel.F_QCRemark; model.F_QCScore = Convert.ToInt32( callModel.F_QCScore); model.F_QCState = callModel.F_QCState; } model.playpath = QCGetSrc(type, callid); if (type == "0") { model.downpath = model.playpath.Replace("playbyappid", "downbyappid"); } else { model.downpath = model.playpath.Replace("playvoicemail", "downvoicemail"); } } catch { } return View(model); } /// /// 听取录音 /// /// public ActionResult QCVoicePlayNew(string type, string callid, int callrecordsid) { Models.QCVoicePlayModel model = new QCVoicePlayModel(); model.playpath = ""; model.downpath = ""; try { if (callrecordsid != 0) { Model.T_Call_CallRecords_All callModel = recordBLL.GetModel(callrecordsid); model.CallRecordsId = callModel.CallRecordsId; model.CallId = callModel.CallId; model.CallNumber = callModel.CallNumber; model.UserId = callModel.UserId; model.UserCode = callModel.UserCode; model.UserName = callModel.UserName; model.TalkLongTime = callModel.TalkLongTime; model.TalkStartTime = callModel.TalkStartTime; model.TalkEndTime = callModel.TalkEndTime; model.F_QCRemark = callModel.F_QCRemark; model.F_QCScore = Convert.ToInt32(callModel.F_QCScore); model.F_QCState = callModel.F_QCState; } model.playpath = callid; model.downpath = model.playpath; } catch { } return View(model); } /// /// 质检结果 /// /// public ActionResult QCShowVoicePlay(string type, string callid, int callrecordsid) { Models.QCVoicePlayModel model = new QCVoicePlayModel(); model.playpath = ""; model.downpath = ""; try { if (callrecordsid != 0) { Model.T_Call_CallRecords_All callModel = recordBLL.GetModel(callrecordsid); model.CallRecordsId = callModel.CallRecordsId; model.CallId = callModel.CallId; model.CallNumber = callModel.CallNumber; model.UserId = callModel.UserId; model.UserCode = callModel.UserCode; model.UserName = callModel.UserName; model.TalkLongTime = callModel.TalkLongTime; model.TalkStartTime = callModel.TalkStartTime; model.TalkEndTime = callModel.TalkEndTime; model.F_QCRemark = callModel.F_QCRemark; model.F_QCScore = Convert.ToInt32(callModel.F_QCScore); model.F_QCState = callModel.F_QCState; } model.playpath = QCGetSrc(type, callid); if (type == "0") { model.downpath = model.playpath.Replace("playbyappid", "downbyappid"); } else { model.downpath = model.playpath.Replace("playvoicemail", "downvoicemail"); } } catch { } return View(model); } /// /// 新质检结果 /// /// public ActionResult QCShowVoicePlayNew(string type, string callid, int callrecordsid) { Models.QCVoicePlayModel model = new QCVoicePlayModel(); model.playpath = ""; model.downpath = ""; try { if (callrecordsid != 0) { Model.T_Call_CallRecords_All callModel = recordBLL.GetModel(callrecordsid); model.CallRecordsId = callModel.CallRecordsId; model.CallId = callModel.CallId; model.CallNumber = callModel.CallNumber; model.UserId = callModel.UserId; model.UserCode = callModel.UserCode; model.UserName = callModel.UserName; model.TalkLongTime = callModel.TalkLongTime; model.TalkStartTime = callModel.TalkStartTime; model.TalkEndTime = callModel.TalkEndTime; model.F_QCRemark = callModel.F_QCRemark; model.F_QCScore = Convert.ToInt32(callModel.F_QCScore); model.F_QCState = callModel.F_QCState; } //replace(replace(FilePath, '\',' / '),'" + GetSysconfig("newFilePath") + "','" + GetSysconfig("newPlayPath") + "')" model.playpath = callid; model.downpath = model.playpath; } catch { } return View(model); } public string QCGetSrc(string type, string callid) { string res = ""; try { string para = "PlayPath"; if (type == "0") { para = "PlayPath"; } else { para = "PlayLeaveVoice"; } BLL.T_Sys_SystemConfig bll_T_Sys_SystemConfig = new BLL.T_Sys_SystemConfig(); string CTIserverIP = bll_T_Sys_SystemConfig.GetParamValueByParamCode(para);//CTIIP string path = callid; if (path.IndexOf(":") < 0) { res = CTIserverIP + path; } else { res = path.Replace("D:", CTIserverIP); } res = HttpUtility.HtmlEncode(res); } catch { } return res; } } }