ComplianceServer/oldcode/WEB/Controllers/Res/DistributeController.cs

1092 lines
53 KiB
C#

using Ninject;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web.Mvc;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.IBLL.Res;
using WX.CRM.Model.Enum;
using WX.CRM.WebHelper;
namespace WX.CRM.WEB.Controllers.Res
{
public class DistributeController : BaseController
{
private IRES_DISTRIBUTE_Q distributeBiz_Q;
ValidationErrors errors = new ValidationErrors();
[Inject]
public CACHE_BL cache_BL { get; set; }
[Inject]
public IRES_RESOURCETYPE_Q resourceTypeBiz_Q { get; set; }
public DistributeController(IRES_DISTRIBUTE_Q _distributeBiz_Q)
{
this.distributeBiz_Q = _distributeBiz_Q;
}
#region
/// <summary>
/// 我的活动资源分配
/// </summary>
/// <returns></returns>
public ActionResult MyActivityResDsb()
{
ToolBar tool = new ToolBar();
var flag = cache_BL.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.Sys_CanExportAllocate);
if (flag == "1")
{
tool.AllowButton("Other2");
//tool.AddOtherButton("Other1", "查看明细", "icon-details", "ResDetails_Click", true);
tool.AddOtherButton("Other2", "导出明细", "icon-export", "ExportDetails_Click", true);
//tool.AddOtherButton("Other3", "导出手机号码", "icon-export", "ExportPhone_Click", true);
}
else
{
tool.AllowButton("Other2");
//tool.AddOtherButton("Other1", "查看明细", "icon-details", "ResDetails_Click", true);
tool.AddOtherButton("Other2", "导出明细", "icon-export", "ExportDetails_Click", true);
}
ViewBag.ToolBar = tool;
//table
Pager pager = new Pager() { page = 1, rows = 10 };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("map_PKID", "", "PKID");
tab.AddHeadCol("map_PICI", "", "批次");
tab.AddHeadCol("RESID", "", "客户ID");
tab.AddHeadCol("SALESID", "", "客服");
tab.AddHeadCol("CUSTOMERCATEGORY", "", "分类");
tab.AddHeadCol("ResourceTypeName", "", "资源类型");
tab.AddHeadCol("ActivityName", "", "活动名称");
tab.AddHeadCol("HASACTIVE", "", "是否工单");
tab.AddHeadCol("LASTACTIVETIME", "", "工单最后时间");
tab.AddHeadCol("LASTCALLTIME", "", "录音最后时间");
tab.AddHeadCol("map_CREATEUSER", "", "分配人");
tab.AddHeadCol("DisTime", "", "分配时间");
//tab.AddHeadCol("map_SALESREMARK", "", "附言");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetTable() + Pagination.GetPage(pager, tableId, "10,20,50");
ViewBag.inneruserid = UserId;
ViewBag.userGroupId = userGroupId;
ViewBag.saleDeptId = saleDeptId;
ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
var category = cache_BL.GetList_SubComType(ComType.CustomerCategory).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPENAME }).ToList();
category.Insert(0, new SelectListItem() { Text = string.Empty, Value = string.Empty });
ViewBag.category = category;
return View();
}
#endregion
#region
[HttpPost]
/// <summary>
/// 按照条件获取数据
/// </summary>
/// <param name="pager"></param>
/// <param name="queryStr"></param>
/// <returns></returns>
public JsonResult GetHtmlList(Pager pager, string columns, string category, decimal? saleDeptId, string groupId, decimal? userId, DateTime? sTime, DateTime? eTime, string resid)
{
string pici = Request.Form["pici"];
List<WX.CRM.Model.Entity.RES_DISTRIBUTE_Extend> list = distributeBiz_Q.GetList(ref pager, pici, 0, category, saleDeptId, groupId, userId, sTime, eTime, resid);
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (WX.CRM.Model.Entity.RES_DISTRIBUTE_Extend model in list)
{
var color = string.Empty;
if (model.LASTACTIVETIME > model.DisTime || model.LASTCALLTIME > model.DisTime)
color = "style =\"color:green\"";
var a = string.Format("<a href=\"javascript:parent.parent.ChildAddTab('{0}', '{1}', '')\" " + color + ">{2}</a>", "客户详细", "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.ResId, model.ResId);
table.AddCol(model.res_Distribute.PKID);
table.AddCol(model.res_Distribute.PICI);
table.AddCol(a);
table.AddCol(InnerUserHelper.Instance.EidAndName(model.SALESID));
table.AddCol(model.CUSTOMERCATEGORY);
table.AddCol(model.ResourceTypeName);
table.AddCol(model.ActivityName);
table.AddCol(model.HASACTIVE);
table.AddCol(model.LASTACTIVETIME);
table.AddCol(model.LASTCALLTIME);
table.AddCol(InnerUserHelper.Instance.EidAndName(model.res_Distribute.CREATEUSER));
table.AddCol(model.DisTime);
//table.AddCol(model.res_Distribute.SALESREMARK);
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
#endregion
#region
[HttpGet]
public ActionResult DistributeDetail()
{
Pager pager = new Pager() { page = 1, rows = 10 };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("RESID", "", "客户ID");
tab.AddHeadCol("HASACTIVE", "", "是否工单");
tab.AddHeadCol("", "", "工单最后时间");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "8,10,15,20");
return View();
}
#endregion
#region html列表获取
[HttpPost]
/// <summary>
/// 资源明细 列表
/// </summary>
/// <param name="pager"></param>
/// <param name="queryStr"></param>
/// <returns></returns>
public JsonResult GetDetailHtmlList(Pager pager, string columns)
{
decimal id = Convert.ToDecimal(Request.QueryString["id"]);
List<WX.CRM.Model.Entity.CACHE_RES_RESOURCE_COUNT> list = distributeBiz_Q.GetDetail_Distribute(ref pager, id, UserId);
Table table = new Table(columns, true);
foreach (WX.CRM.Model.Entity.CACHE_RES_RESOURCE_COUNT model in list)
{
var resid = string.Format("<a href=\"javascript:parent.parent.ChildAddTab('{0}', '{1}', '')\">{2}</a>"
, "客户详细"
, "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.map_RESID
, model.map_RESID);
table.AddCol(resid);
table.AddCol(model.map_HASACTIVE);
//table.AddCol(model.map_HASBOCE);
//table.AddCol(model.map_HASGJS);
//table.AddCol(model.map_HASUSERNAME);
table.AddCol(model.LASTACTIVETIME);
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
#endregion
#region
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_分配资源历史查询)]
public ActionResult ResDistributeHis()
{
ToolBar tool = new ToolBar();
tool.AllowButton("Other2");
tool.AddOtherButton("Other2", "导出", "icon-export", "ExportDetails_Click", true);
//table
Pager pager = new Pager() { page = 1, rows = 20 };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("map_PKID", "", "PKID");
tab.AddHeadCol("map_PICI", "", "批次");
tab.AddHeadCol("RESID", "", "客户ID");
tab.AddHeadCol("SALESID", "", "客服");
tab.AddHeadCol("CUSTOMERCATEGORY", "", "分类");
tab.AddHeadCol("ResourceTypeName", "", "资源类型");
tab.AddHeadCol("ActivityName", "", "活动名称");
tab.AddHeadCol("HASACTIVE", "", "是否工单");
tab.AddHeadCol("LASTACTIVETIME", "", "工单最后时间");
tab.AddHeadCol("LASTCALLTIME", "", "录音最后时间");
tab.AddHeadCol("RECYCLETIME", "", "回收时间");
tab.AddHeadCol("map_CREATEUSER", "", "分配人");
tab.AddHeadCol("DisTime", "", "分配时间");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetTable() + Pagination.GetPage(pager, tableId, "10,20,50");
ViewBag.inneruserid = UserId;
ViewBag.userGroupId = userGroupId;
ViewBag.saleDeptId = saleDeptId;
ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
var category = cache_BL.GetList_SubComType(ComType.CustomerCategory).Select(item => new SelectListItem() { Text = item.SUBTYPENAME, Value = item.SUBTYPENAME }).ToList();
category.Insert(0, new SelectListItem() { Text = string.Empty, Value = string.Empty });
ViewBag.category = category;
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_分配资源历史查询)]
public JsonResult ResDistributeHis(Pager pager, string columns, string pici, string category, decimal? saleDeptId, string groupId, decimal? userId, DateTime? sTime, DateTime? eTime, string resid, decimal? isrecycle, DateTime? r1Time, DateTime? r2Time, decimal? hasGt)
{
List<WX.CRM.Model.Entity.RES_DISTRIBUTE_Extend> list = distributeBiz_Q.GetListByHis(ref pager, pici, 0, category, saleDeptId, groupId, userId, sTime, eTime, resid, isrecycle, r1Time, r2Time, hasGt);
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (WX.CRM.Model.Entity.RES_DISTRIBUTE_Extend model in list)
{
var color = string.Empty;
//if (model.LASTACTIVETIME > model.res_Distribute.CTIME || model.LASTCALLTIME > model.res_Distribute.CTIME)
if (model.LASTACTIVETIME > model.DisTime || model.LASTCALLTIME > model.DisTime)
color = "style =\"color:green\"";
if (model.RECYCLETIME.HasValue)
color = "style =\"color:red\"";
var a = string.Format("<a href=\"javascript:parent.parent.ChildAddTab('{0}', '{1}', '')\" " + color + ">{2}</a>", "客户详细", "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.ResId, model.ResId);
table.AddCol(model.res_Distribute.PKID);
table.AddCol(model.res_Distribute.PICI);
table.AddCol(a);
table.AddCol(InnerUserHelper.Instance.EidAndName(model.SALESID));
table.AddCol(model.CUSTOMERCATEGORY);
table.AddCol(model.ResourceTypeName);
table.AddCol(model.ActivityName);
table.AddCol(model.HASACTIVE);
table.AddCol(model.LASTACTIVETIME);
table.AddCol(model.LASTCALLTIME);
table.AddCol(model.RECYCLETIME);
table.AddCol(InnerUserHelper.Instance.EidAndName(model.res_Distribute.CREATEUSER));
table.AddCol(model.DisTime);
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
public FileResult ExportResDistributeHis(string category, decimal? saleDeptId, string groupId, decimal? userId, DateTime? sTime, DateTime? eTime, string resid, decimal? isrecycle, DateTime? r1Time, DateTime? r2Time, decimal? hasGt)
{
string pici = Request.Form["pici"];
Pager pager = new Pager() { page = 1, rows = int.MaxValue };
string checkFilds = "[map_PICI][RESID][SALESID][CUSTOMERCATEGORY][ResourceTypeName][ActivityName][HASACTIVE][LASTACTIVETIME][RECYCLETIME][map_CREATEUSER][DisTime]";
var checkTitles = "批次,客户ID,客服,分类,资源类型,活动名称,是否工单,工单最后时间,回收时间,分配人,分配时间";
var list = distributeBiz_Q.GetListByHis(ref pager, pici, 0, category, saleDeptId, groupId, userId, sTime, eTime, resid, isrecycle, r1Time, r2Time, hasGt);
string contentType = "application/ms-excel";
System.IO.Stream stream = ExcelHelper.ExportListModelToExcel<WX.CRM.Model.Entity.RES_DISTRIBUTE_Extend>(list, "资源明细", 50000, checkFilds, checkTitles, DataFormart);
string fileName = PageRequest.GetDlownLoadName("资源历史明细导出" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ".xls");
return File(stream, contentType, fileName);
}
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_分配资源效果统计)]
public ActionResult ResDistributeHisEffect()
{
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("PICI", "", "批次");
tab.AddHeadCol("disleader", "", "分配人");
tab.AddHeadCol("RESTYPEID", "", "分配类型");
tab.AddHeadCol("STIME", "", "分配时间");
tab.AddHeadCol("DISCOUNT", "", "分配数量");
tab.AddHeadCol("recycleCount", "", "回收数量");
tab.AddHeadCol("ALLCALL", "", "呼出数");
tab.AddHeadCol("uncancall", "", "未接通");
tab.AddHeadCol("allcancall", "", "非有效接通");
tab.AddHeadCol("cancall", "", "有效接通");
tab.AddHeadCol("htl", "", "呼通率");
tab.AddHeadCol("memo", "", "工单数");
if (companyCode == "DNZZ")
tab.AddHeadCol("jihuo", "", "激活");
else
tab.AddHeadCol("fuwu", "", "服务");
tab.AddHeadCol("weixin", "", "加好友");
tab.AddHeadCol("jiangjie", "", "讲解");
tab.AddHeadCol("yixiang", "", "意向");
tab.AddHeadCol("firstorder", "", "下单");
tab.AddHeadCol("xdl", "", "下单率");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetTable();
List<SelectListItem> lis = new List<SelectListItem>();
var rlis = resourceTypeBiz_Q.GetList();
lis.Add(new SelectListItem() { Value = "", Text = "-请选择-" });
foreach (var obj in rlis)
{
lis.Add(new SelectListItem() { Value = string.Format("{0}", obj.RESTYPEID), Text = obj.TYPENAME });
}
ViewBag.slt_ResourctType = lis;
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_分配资源效果统计)]
public JsonResult ResDistributeHisEffect(string columns, string pici, decimal? restypeid, DateTime? stime, DateTime? etime)
{
if (etime.HasValue)
etime = etime.Value.AddDays(1);
var tab = new Table(columns, true);
var resourceType = cache_BL.GetResourceType();
var ds = distributeBiz_Q.GetResDistributeHisEffect(pici, restypeid, stime, etime);
if (ds != null && ds.Tables[0] != null)
{
var data = ds.Tables[0].ToList<ResDistributeHisEffectView>();
foreach (var item in data)
{
var resTypeModel = resourceType.FirstOrDefault(p => p.RESTYPEID == item.RESTYPEID);
var resTypeName = string.Empty;
if (resTypeModel != null)
{
item.RESTYPENAME = resTypeModel.TYPENAME;
}
}
foreach (var item in data)
{
tab.AddCol(item.PICI);
tab.AddCol(InnerUserHelper.Instance.EidAndName(item.disleader));
tab.AddCol(item.RESTYPENAME);
tab.AddCol(item.STIME);
tab.AddCol(item.DISCOUNT);
tab.AddCol(item.RECYCLECOUNT);
tab.AddCol(item.ALLCALL);
tab.AddCol(item.UNCANCALL);
tab.AddCol(item.ALLCANCALL);
tab.AddCol(item.CANCALL);
tab.AddCol(item.ALLCALL > 0 ? string.Format("{0:p}", item.CANCALL / item.ALLCALL) : "0%");
tab.AddCol(item.MEMO);
if (companyCode == "DNZZ")
tab.AddCol(item.JIHUO);
else
tab.AddCol(item.FUWU);
tab.AddCol(item.WEIXIN);
tab.AddCol(item.JIANGJIE);
tab.AddCol(item.YIXIANG);
tab.AddCol(item.FIRSTORDER);
tab.AddCol(item.DISCOUNT > 0 ? string.Format("{0:p}", item.FIRSTORDER / item.DISCOUNT) : "0%");
tab.AddRow();
}
tab.AddCol("合计:");
tab.AddCol("");
tab.AddCol("");
tab.AddCol("");
tab.AddCol(data.Sum(p => p.DISCOUNT));
tab.AddCol(data.Sum(p => p.RECYCLECOUNT));
tab.AddCol(data.Sum(p => p.ALLCALL));
tab.AddCol(data.Sum(p => p.UNCANCALL));
tab.AddCol(data.Sum(p => p.ALLCANCALL));
tab.AddCol(data.Sum(p => p.CANCALL));
tab.AddCol(data.Sum(p => p.ALLCALL) > 0 ? string.Format("{0:p}", data.Sum(p => p.CANCALL) / data.Sum(p => p.ALLCALL)) : "0%");
tab.AddCol(data.Sum(p => p.MEMO));
if (companyCode == "DNZZ")
tab.AddCol(data.Sum(p => p.JIHUO));
else
tab.AddCol(data.Sum(p => p.FUWU));
tab.AddCol(data.Sum(p => p.WEIXIN));
tab.AddCol(data.Sum(p => p.JIANGJIE));
tab.AddCol(data.Sum(p => p.YIXIANG));
tab.AddCol(data.Sum(p => p.FIRSTORDER));
tab.AddCol(data.Sum(p => p.DISCOUNT) > 0 ? string.Format("{0:p}", data.Sum(p => p.FIRSTORDER) / data.Sum(p => p.DISCOUNT)) : "0%");
tab.AddRow();
}
return Json(new { rowsList = tab.GetRows() }, JsonRequestBehavior.AllowGet);
}
public FileResult ExportResDistributeHisEffect(string pici, decimal? restypeid, DateTime? stime, DateTime? etime)
{
if (etime.HasValue)
etime = etime.Value.AddDays(1);
var checkFilds = "[PICI][disleader][RESTYPENAME][STIME][DISCOUNT][RECYCLECOUNT][ALLCALL][UNCANCALL][ALLCANCALL][cancall][htl][memo][fuwu][jihuo][weixin][jiangjie][yixiang][firstorder][xdl]";
if (companyCode != "DNZZ")
checkFilds = checkFilds.Replace("[jihuo]", "");
else
checkFilds = checkFilds.Replace("[fuwu]", "");
var checkTitles = "批次,分配人,分配类型,分配时间,分配数量,回收数量,呼出数,未接通,非有效接通,有效接通,呼通率,工单数,服务,激活,加好友,讲解,意向,下单,下单率";
if (companyCode != "DNZZ")
checkTitles = checkTitles.Replace("激活,", "");
else
checkTitles = checkTitles.Replace("服务,", "");
var resourceType = cache_BL.GetResourceType();
var ds = distributeBiz_Q.GetResDistributeHisEffect(pici, restypeid, stime, etime);
if (ds != null && ds.Tables[0] != null)
{
var data = ds.Tables[0].ToList<ResDistributeHisEffectView>();
foreach (var item in data)
{
var resTypeModel = resourceType.FirstOrDefault(p => p.RESTYPEID == item.RESTYPEID);
var resTypeName = string.Empty;
if (resTypeModel != null)
{
item.RESTYPENAME = resTypeModel.TYPENAME;
}
item.htl = item.ALLCALL > 0 ? string.Format("{0:p}", item.CANCALL / item.ALLCALL) : "0%";
item.xdl = item.DISCOUNT > 0 ? string.Format("{0:p}", item.FIRSTORDER / item.DISCOUNT) : "0%";
}
string contentType = "application/ms-excel";
System.IO.Stream stream = ExcelHelper.ExportListModelToExcel<ResDistributeHisEffectView>(data, "分配资源效果", 50000, checkFilds, checkTitles, DataFormart);
string fileName = PageRequest.GetDlownLoadName("分配资源效果导出" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ".xls");
return File(stream, contentType, fileName);
}
return null;
}
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_分配资源效果统计)]
public ActionResult ResAllcoteLogEffect()
{
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("RESTYPEID", "", "分配类型");
tab.AddHeadCol("STIME", "", "分配时间");
tab.AddHeadCol("DISCOUNT", "", "分配数量");
tab.AddHeadCol("recycleCount", "", "回收数量");
tab.AddHeadCol("ALLCALL", "", "呼出数");
tab.AddHeadCol("uncancall", "", "未接通");
tab.AddHeadCol("allcancall", "", "非有效接通");
tab.AddHeadCol("cancall", "", "有效接通");
tab.AddHeadCol("htl", "", "呼通率");
tab.AddHeadCol("memo", "", "工单数");
if (companyCode == "DNZZ")
tab.AddHeadCol("jihuo", "", "激活");
else
tab.AddHeadCol("fuwu", "", "服务");
tab.AddHeadCol("weixin", "", "加好友");
tab.AddHeadCol("jiangjie", "", "讲解");
tab.AddHeadCol("yixiang", "", "意向");
tab.AddHeadCol("firstorder", "", "下单");
tab.AddHeadCol("xdl", "", "下单率");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetTable();
ViewBag.inneruserid = UserId;
ViewBag.userGroupId = userGroupId;
ViewBag.saleDeptId = saleDeptId;
ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
List<SelectListItem> lis = new List<SelectListItem>();
var rlis = resourceTypeBiz_Q.GetList();
lis.Add(new SelectListItem() { Value = "", Text = "-请选择-" });
foreach (var obj in rlis)
{
lis.Add(new SelectListItem() { Value = string.Format("{0}", obj.RESTYPEID), Text = obj.TYPENAME });
}
ViewBag.slt_ResourctType = lis;
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_分配资源效果统计)]
public JsonResult ResAllcoteLogEffect(string columns,string saleDeptId, string groupId, decimal? userId, decimal? restypeid, DateTime? stime, DateTime? etime)
{
if (etime.HasValue)
etime = etime.Value.AddDays(1);
var tab = new Table(columns, true);
var resourceType = cache_BL.GetResourceType();
var ds = distributeBiz_Q.GetResAllcoteLogEffect(saleDeptId,groupId, userId, restypeid, stime, etime);
if (ds != null && ds.Tables[0] != null)
{
var data = ds.Tables[0].ToList<ResAllcoteLogEffectView>();
foreach (var item in data)
{
var resTypeModel = resourceType.FirstOrDefault(p => p.RESTYPEID == item.RESTYPEID);
var resTypeName = string.Empty;
if (resTypeModel != null)
{
item.RESTYPENAME = resTypeModel.TYPENAME;
}
}
foreach (var item in data)
{
tab.AddCol(item.RESTYPENAME);
tab.AddCol(item.STIME);
tab.AddCol(item.DISCOUNT);
tab.AddCol(item.RECYCLECOUNT);
tab.AddCol(item.ALLCALL);
tab.AddCol(item.UNCANCALL);
tab.AddCol(item.ALLCANCALL);
tab.AddCol(item.CANCALL);
tab.AddCol(item.ALLCALL > 0 ? string.Format("{0:p}", item.CANCALL / item.ALLCALL) : "0%");
tab.AddCol(item.MEMO);
if (companyCode == "DNZZ")
tab.AddCol(item.JIHUO);
else
tab.AddCol(item.FUWU);
tab.AddCol(item.WEIXIN);
tab.AddCol(item.JIANGJIE);
tab.AddCol(item.YIXIANG);
tab.AddCol(item.FIRSTORDER);
tab.AddCol(item.DISCOUNT > 0 ? string.Format("{0:p}", item.FIRSTORDER / item.DISCOUNT) : "0%");
tab.AddRow();
}
tab.AddCol("合计:");
tab.AddCol("");
tab.AddCol(data.Sum(p => p.DISCOUNT));
tab.AddCol(data.Sum(p => p.RECYCLECOUNT));
tab.AddCol(data.Sum(p => p.ALLCALL));
tab.AddCol(data.Sum(p => p.UNCANCALL));
tab.AddCol(data.Sum(p => p.ALLCANCALL));
tab.AddCol(data.Sum(p => p.CANCALL));
tab.AddCol(data.Sum(p => p.ALLCALL) > 0 ? string.Format("{0:p}", data.Sum(p => p.CANCALL) / data.Sum(p => p.ALLCALL)) : "0%");
tab.AddCol(data.Sum(p => p.MEMO));
if (companyCode == "DNZZ")
tab.AddCol(data.Sum(p => p.JIHUO));
else
tab.AddCol(data.Sum(p => p.FUWU));
tab.AddCol(data.Sum(p => p.WEIXIN));
tab.AddCol(data.Sum(p => p.JIANGJIE));
tab.AddCol(data.Sum(p => p.YIXIANG));
tab.AddCol(data.Sum(p => p.FIRSTORDER));
tab.AddCol(data.Sum(p => p.DISCOUNT) > 0 ? string.Format("{0:p}", data.Sum(p => p.FIRSTORDER) / data.Sum(p => p.DISCOUNT)) : "0%");
tab.AddRow();
}
return Json(new { rowsList = tab.GetRows() }, JsonRequestBehavior.AllowGet);
}
public FileResult ExportResAllcoteLogEffect(string saleDeptId, string groupId, decimal? userId, decimal? restypeid, DateTime? stime, DateTime? etime)
{
if (etime.HasValue)
etime = etime.Value.AddDays(1);
var checkFilds = "[RESTYPENAME][STIME][DISCOUNT][RECYCLECOUNT][ALLCALL][UNCANCALL][ALLCANCALL][cancall][htl][memo][fuwu][jihuo][weixin][jiangjie][yixiang][firstorder][xdl]";
if (companyCode != "DNZZ")
checkFilds = checkFilds.Replace("[jihuo]", "");
else
checkFilds = checkFilds.Replace("[fuwu]", "");
var checkTitles = "分配类型,分配时间,分配数量,回收数量,呼出数,未接通,非有效接通,有效接通,呼通率,工单数,服务,激活,加好友,讲解,意向,下单,下单率";
if (companyCode != "DNZZ")
checkTitles = checkTitles.Replace("激活,", "");
else
checkTitles = checkTitles.Replace("服务,", "");
var resourceType = cache_BL.GetResourceType();
var ds = distributeBiz_Q.GetResAllcoteLogEffect(saleDeptId,groupId, userId, restypeid, stime, etime);
if (ds != null && ds.Tables[0] != null)
{
var data = ds.Tables[0].ToList<ResAllcoteLogEffectView>();
foreach (var item in data)
{
var resTypeModel = resourceType.FirstOrDefault(p => p.RESTYPEID == item.RESTYPEID);
var resTypeName = string.Empty;
if (resTypeModel != null)
{
item.RESTYPENAME = resTypeModel.TYPENAME;
}
item.htl = item.ALLCALL > 0 ? string.Format("{0:p}", item.CANCALL / item.ALLCALL) : "0%";
item.xdl = item.DISCOUNT > 0 ? string.Format("{0:p}", item.FIRSTORDER / item.DISCOUNT) : "0%";
}
string contentType = "application/ms-excel";
System.IO.Stream stream = ExcelHelper.ExportListModelToExcel(data, "分配资源效果", 50000, checkFilds, checkTitles, DataFormart);
string fileName = PageRequest.GetDlownLoadName("分配资源效果导出" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ".xls");
return File(stream, contentType, fileName);
}
return null;
}
#endregion
#region
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_资源分配统计)]
public ActionResult DistributeCount()
{
var tab = new Table("tablist");
tab.AddHeadCol("ctime", "", "分配日期");
tab.AddHeadCol("salesid", "", "客服");
tab.AddHeadCol("allcount", "", "接收资源数");
tab.AddHeadCol("uncount", "", "未使用资源数");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead();
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_资源分配统计)]
public JsonResult DistributeCount(DateTime sTime, DateTime eTime, string columns)
{
var tab = new Table(columns, true);
//var eTime = sTime.AddDays(1);
var list = distributeBiz_Q.Res_DistributeCount(sTime, eTime.AddDays(1)).Tables[0].ToList<DistributeCountView>();
foreach (var item in list)
{
tab.AddCol(sTime.ToShortDateString() + "-" + eTime.ToShortDateString());
tab.AddCol(InnerUserHelper.Instance.EidAndName(item.SalesId));
tab.AddCol(item.AllCount);
tab.AddCol(string.Format("<a href='javascript:void(0)' onclick='GetUnCount(\"{0}\",\"{3}\",{1});'>{2}</a>", sTime.ToShortDateString(), item.SalesId, item.UnCount, eTime.ToShortDateString()));
tab.AddRow();
}
var json = new { rowsList = tab.GetRows() };
return Json(json, JsonRequestBehavior.AllowGet);
}
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_资源分配统计)]
public ActionResult DistributeUnCount()
{
var tab = new Table("tablist");
tab.AddHeadCol("resid", "", "客户ID");
//tab.AddHeadCol("cname", "", "名称");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead();
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_资源分配统计)]
public JsonResult DistributeUnCount(DateTime stime, DateTime etime, decimal saleid, string columns)
{
var tab = new Table(columns, true);
//var eTime = stime.AddDays(1);
var list = distributeBiz_Q.Res_DistributeUnCount(stime, etime.AddDays(1), saleid).Tables[0].ToList<DistributeUnCountView>();
foreach (var item in list)
{
var resid = string.Format("<a href=\"javascript:parent.parent.ChildAddTab('{0}', '{1}', '')\">{2}</a>", "客户详细", "/Csvr/CustomerInfo/CustomerDetail?resid=" + item.ResId, item.ResId);
tab.AddCol(resid);
//tab.AddCol(item.CName);
tab.AddRow();
}
var json = new { rowsList = tab.GetRows() };
return Json(json, JsonRequestBehavior.AllowGet);
}
#endregion
#region
/// <summary>
/// 导出所有信息
/// </summary>
/// <returns></returns>
public FileResult ExportDistributeDetails(string category, decimal? saleDeptId, string groupId, decimal? userId, DateTime? sTime, DateTime? eTime, string resid)
{
string pici = Request.Form["pici"];
Pager pager = new Pager() { page = 1, rows = int.MaxValue };
string checkFilds = "[map_PICI][RESID][SALESID][CUSTOMERCATEGORY][ResourceTypeName][ActivityName][HASACTIVE][LASTACTIVETIME][map_CREATEUSER][DisTime]";
var checkTitles = "批次,客户ID,客服,分类,资源类型,活动名称,是否工单,工单最后时间,分配人,分配时间";
var list = distributeBiz_Q.GetList(ref pager, pici, 0, category, saleDeptId, groupId, userId, sTime, eTime, resid);
string contentType = "application/ms-excel";
System.IO.Stream stream = ExcelHelper.ExportListModelToExcel<WX.CRM.Model.Entity.RES_DISTRIBUTE_Extend>(list, "资源明细", 50000, checkFilds, checkTitles, DataFormart);
string fileName = PageRequest.GetDlownLoadName("资源明细导出" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ".xls");
return File(stream, contentType, fileName);
}
public ActionResult ExportTxtMobile(decimal DISTRIBUTEID)
{
var flag = cache_BL.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.Sys_CanExportAllocate);
if (flag == "1")
{
try
{
List<string> list = distributeBiz_Q.GetFBMobile(DISTRIBUTEID, UserId);
string fileName = PageRequest.GetDlownLoadName("手机号码导出" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ".xls");
Response.Clear();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("content-disposition", "attachment;filename=" + fileName + ".txt;");
//Response.Write("这里是要输出的内容|输出的内容\r\n");
// 读取数据库,循环
foreach (var item in list)
{
Response.Write(item + "\r\n");
}
Response.Flush();
Response.End();
}
catch { }
}
return View();
}
//委托进行数据格式化
protected string DataFormart(string key, object value)
{
string nvalue = "";
switch (key)
{
case "map_HASMEMO":
if (Convert.ToString(value) == "0")
nvalue = "否";
else
nvalue = "是";
break;
case "map_HASBOCE":
if (Convert.ToString(value) == "0")
nvalue = "否";
else
nvalue = "是";
break;
case "map_HASGJS":
if (Convert.ToString(value) == "0")
nvalue = "否";
else
nvalue = "是";
break;
case "map_HASUSERNAME":
if (Convert.ToString(value) == "0")
nvalue = "否";
else
nvalue = "是";
break;
case "SALESID":
nvalue = InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value));
break;
case "map_CREATEUSER":
nvalue = InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value));
break;
case "FirstPkid":
nvalue = InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value));
break;
case "SecondPkid":
nvalue = InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value));
break;
case "ThreePkid":
nvalue = InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value));
break;
case "disleader":
nvalue = InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value));
break;
case "FirstTimeLengthZero":
nvalue = value.ToString() == "1" ? "是" : "否";
break;
case "FirstTimeLengthMinute":
nvalue = value.ToString() == "1" ? "是" : "否";
break;
case "SecondTimeLengthZero":
nvalue = value.ToString() == "1" ? "是" : "否";
break;
case "SecondTimeLengthMinute":
nvalue = value.ToString() == "1" ? "是" : "否";
break;
case "ThreeTimeLengthZero":
nvalue = value.ToString() == "1" ? "是" : "否";
break;
case "ThreeTimeLengthMinute":
nvalue = value.ToString() == "1" ? "是" : "否";
break;
default: return Convert.ToString(value);
}
return nvalue;
}
#endregion
#region
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_分配历史资源统计)]
public ActionResult DistributeHisCount()
{
ToolBar tool = new ToolBar();
tool.AllowButton("Other1");
tool.AddOtherButton("Other1", "导出", "icon-export", "ExportHis_Click", true);
ViewBag.ToolBar = tool;
var tab = new Table("tablist");
tab.AddHeadCol("salesid", "", "客服");
tab.AddHeadCol("group", "", "组别");
tab.AddHeadCol("disCount", "", "分配资源数");
tab.AddHeadCol("recycleCount", "", "回收数量");
tab.AddHeadCol("ALLCALL", "", "呼出数");
tab.AddHeadCol("uncancall", "", "未接通");
tab.AddHeadCol("allcancall", "", "非有效接通");
tab.AddHeadCol("cancall", "", "有效接通");
tab.AddHeadCol("htl", "", "呼通率");
tab.AddHeadCol("memo", "", "工单数");
if (companyCode == "DNZZ")
tab.AddHeadCol("jihuo", "", "激活");
else
tab.AddHeadCol("fuwu", "", "服务");
tab.AddHeadCol("weixin", "", "加好友");
tab.AddHeadCol("jiangjie", "", "讲解");
tab.AddHeadCol("yixiang", "", "意向");
tab.AddHeadCol("regnum", "", "注册资源分配数");
tab.AddHeadCol("activenum", "", "活动报名分配数");
tab.AddHeadCol("tgnum", "", "诊股推广分配数");
tab.AddHeadCol("collectnum", "", "活动报名收藏数");
tab.AddHeadCol("ordernum", "", "开单资源");
tab.AddHeadCol("orderrate", "", "开单率");
tab.AddHeadRow();
ViewBag.inneruserid = UserId;
ViewBag.userGroupId = userGroupId;
ViewBag.saleDeptId = saleDeptId;
ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
ViewBag.gridTable = tab.GetHead();
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_分配历史资源统计)]
public JsonResult DistributeHisCount(DateTime sTime, DateTime eTime, string columns)
{
var tab = new Table(columns, true);
string saleDeptId = Request["saleDeptId"];
string groupId = Request["groupId"];
string innerUserId = Request["userId"];
var ds = distributeBiz_Q.GetDistbuteHisCount(sTime, eTime, saleDeptId, groupId, innerUserId);
var userGroup = cache_BL.GetList_InnerUserGroup();
DataTable dt = new DataTable();
if (ds != null && ds.Tables[0] != null)
{
dt = ds.Tables[0];
foreach (DataRow item in dt.Rows)
{
var uid = Convert.ToDecimal(item["salesid"]);
var group = userGroup.Find(p => p.INNERUSERID == uid);
decimal? gid = null;
if (group != null)
gid = group.GID;
tab.AddCol(InnerUserHelper.Instance.EidAndName(uid));
tab.AddCol(InnerUserHelper.Instance.GetGroupName(gid));
var total = Convert.ToDouble(item["disCount"]);
tab.AddCol(total);
tab.AddCol(item["recycleCount"]);
tab.AddCol(item["ALLCALL"]);
tab.AddCol(item["uncancall"]);
tab.AddCol(item["allcancall"]);
tab.AddCol(item["cancall"]);
tab.AddCol(Convert.ToDecimal(item["ALLCALL"]) > 0 ? string.Format("{0:p}", Convert.ToDecimal(item["cancall"]) / Convert.ToDecimal(item["ALLCALL"])) : "0%");
tab.AddCol(item["memo"]);
if (companyCode == "DNZZ")
tab.AddCol(item["jihuo"]);
else
tab.AddCol(item["fuwu"]);
//tab.AddCol(item["weixin"]);
tab.AddCol(item["weixinnew"]);//新增字段
tab.AddCol(item["jiangjie"]);
tab.AddCol(item["yixiang"]);
tab.AddCol(item["regnum"]);
tab.AddCol(item["activenum"]);
tab.AddCol(item["tgnum"]);
tab.AddCol(item["collectnum"]);
tab.AddCol(item["ordernum"]);
if (total != 0)
{
tab.AddCol(string.Format("{0:F}%", Convert.ToDouble(item["ordernum"]) / total * 100));
}
else
{
tab.AddCol("0.00%");
}
tab.AddRow();
}
if (ds.Tables[0].Rows.Count > 0)
{
tab.AddCol("合计:");
tab.AddCol("");
tab.AddCol(ds.Tables[0].Compute("Sum(disCount)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(recycleCount)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(ALLCALL)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(uncancall)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(allcancall)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(cancall)", "true"));
tab.AddCol(Convert.ToDecimal(ds.Tables[0].Compute("Sum(ALLCALL)", "true")) > 0 ? string.Format("{0:P}%", Convert.ToDecimal(ds.Tables[0].Compute("Sum(cancall)", "true")) / Convert.ToDecimal(ds.Tables[0].Compute("Sum(ALLCALL)", "true"))) : string.Empty);
tab.AddCol(ds.Tables[0].Compute("Sum(memo)", "true"));
if (companyCode == "DNZZ")
tab.AddCol(ds.Tables[0].Compute("Sum(jihuo)", "true"));
else
tab.AddCol(ds.Tables[0].Compute("Sum(fuwu)", "true"));
//tab.AddCol(ds.Tables[0].Compute("Sum(weixin)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(weixinnew)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(jiangjie)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(yixiang)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(regnum)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(activenum)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(tgnum)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(collectnum)", "true"));
tab.AddCol(ds.Tables[0].Compute("Sum(ordernum)", "true"));
tab.AddCol(Convert.ToDecimal(ds.Tables[0].Compute("Sum(num)", "true")) > 0 ? string.Format("{0:P}%", Convert.ToDecimal(ds.Tables[0].Compute("Sum(ordernum)", "true")) / Convert.ToDecimal(ds.Tables[0].Compute("Sum(num)", "true"))) : string.Empty);
tab.AddRow();
}
}
var json = new { rowsList = tab.GetRows() };
return Json(json, JsonRequestBehavior.AllowGet);
}
#endregion
#region
public ActionResult ExportDistributeHisCount(DateTime sTime, DateTime eTime, string columns)
{
string saleDeptId = Request["saleDeptId"];
string groupId = Request["groupId"];
string innerUserId = Request["userId"];
string checkFilds = "[salesid][group][disCount][recycleCount][ALLCALL][uncancall][allcancall][cancall][htl][memo][fuwu][jihuo][weixinnew][jiangjie][yixiang][regnum][activenum][collectnum][ordernum][orderrate]";
if (companyCode != "DNZZ")
checkFilds = checkFilds.Replace("[jihuo]", "");
else
checkFilds = checkFilds.Replace("[fuwu]", "");
string checkTitles = "客服,组别,分配资源数,回收数量,呼出数,未接通,非有效接通,有效接通,呼通率,工单数,服务,激活,加好友,讲解,意向,注册资源分配数,活动报名分配数,活动报名收藏数,开单资源,开单率";
if (companyCode != "DNZZ")
checkTitles = checkTitles.Replace("激活,", "");
else
checkTitles = checkTitles.Replace("服务,", "");
var ds = distributeBiz_Q.GetDistbuteHisCount(sTime, eTime, saleDeptId, groupId, innerUserId);
var userGroup = cache_BL.GetList_InnerUserGroup();
List<WX.CRM.Model.Entity.RES_DISTRIBUTE_HisCount_Extend> list = new List<Model.Entity.RES_DISTRIBUTE_HisCount_Extend>();
DataTable dt = new DataTable();
if (ds != null && ds.Tables[0] != null)
{
dt = ds.Tables[0];
foreach (DataRow item in dt.Rows)
{
var uid = Convert.ToDecimal(item["salesid"]);
var group = userGroup.Find(p => p.INNERUSERID == uid);
decimal? gid = null;
if (group != null)
gid = group.GID;
WX.CRM.Model.Entity.RES_DISTRIBUTE_HisCount_Extend model = new Model.Entity.RES_DISTRIBUTE_HisCount_Extend
{
salesid = InnerUserHelper.Instance.EidAndName(uid),
group = InnerUserHelper.Instance.GetGroupName(gid),
disCount = Convert.ToDecimal(item["disCount"]),
recycleCount = Convert.ToDecimal(item["recycleCount"]),
ALLCALL = Convert.ToDecimal(item["ALLCALL"]),
uncancall = Convert.ToDecimal(item["uncancall"]),
allcancall = Convert.ToDecimal(item["allcancall"]),
cancall = Convert.ToDecimal(item["cancall"]),
htl = Convert.ToDecimal(item["ALLCALL"]) > 0 ? string.Format("{0:p}", Convert.ToDecimal(item["cancall"]) / Convert.ToDecimal(item["ALLCALL"])) : "0%",
memo = Convert.ToDecimal(item["memo"]),
jihuo = Convert.ToDecimal(item["jihuo"]),
fuwu = Convert.ToDecimal(item["fuwu"]),
weixin = Convert.ToDecimal(item["weixin"]),
jiangjie = Convert.ToDecimal(item["jiangjie"]),
yixiang = Convert.ToDecimal(item["yixiang"]),
regnum = Convert.ToDecimal(item["regnum"]),
activenum = Convert.ToDecimal(item["activenum"]),
collectnum = Convert.ToDecimal(item["collectnum"]),
ordernum = Convert.ToDecimal(item["ordernum"]),
orderrate = Convert.ToDecimal(item["num"]) == 0 ? "0.00%" : string.Format("{0:F}%", Convert.ToDecimal(item["ordernum"]) / Convert.ToDecimal(item["num"]) * 100)
};
list.Add(model);
}
}
string contentType = "application/ms-excel";
System.IO.Stream stream = ExcelHelper.ExportListModelToExcel<WX.CRM.Model.Entity.RES_DISTRIBUTE_HisCount_Extend>(list, "手工分配历史资源统计", 50000, checkFilds, checkTitles, null);
string fileName = PageRequest.GetDlownLoadName("手工分配历史资源统计" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ".xls");
return File(stream, contentType, fileName);
}
#endregion
private class DistributeCountView
{
public DateTime CTime { get; set; }
public decimal SalesId { get; set; }
public decimal AllCount { get; set; }
public decimal UnCount { get; set; }
}
private class DistributeUnCountView
{
public string ResId { get; set; }
public string CName { get; set; }
}
private class ResDistributeHisEffectView
{
public string PICI { get; set; }
public decimal RESTYPEID { get; set; }
public string RESTYPENAME { get; set; }
public DateTime STIME { get; set; }
public decimal DISCOUNT { get; set; }
public decimal RECYCLECOUNT { get; set; }
public decimal ALLCALL { get; set; }
public decimal UNCANCALL { get; set; }
public decimal ALLCANCALL { get; set; }
public decimal CANCALL { get; set; }
public string htl { get; set; }
public decimal MEMO { get; set; }
public decimal WEIXIN { get; set; }
public decimal FIRSTORDER { get; set; }
public decimal JIHUO { get; set; }
public decimal JIANGJIE { get; set; }
public decimal YIXIANG { get; set; }
public decimal FUWU { get; set; }
public string xdl { get; set; }
public decimal disleader { get; set; }
}
private class ResAllcoteLogEffectView
{
public decimal RESTYPEID { get; set; }
public string RESTYPENAME { get; set; }
public DateTime STIME { get; set; }
public decimal DISCOUNT { get; set; }
public decimal RECYCLECOUNT { get; set; }
public decimal ALLCALL { get; set; }
public decimal UNCANCALL { get; set; }
public decimal ALLCANCALL { get; set; }
public decimal CANCALL { get; set; }
public string htl { get; set; }
public decimal MEMO { get; set; }
public decimal WEIXIN { get; set; }
public decimal FIRSTORDER { get; set; }
public decimal JIHUO { get; set; }
public decimal JIANGJIE { get; set; }
public decimal YIXIANG { get; set; }
public decimal FUWU { get; set; }
public string xdl { get; set; }
}
private class ResCallTopThreeView
{
public string ResId { get; set; }
public DateTime CTime { get; set; }
public decimal? FirstPkid { get; set; }
public string FirstGName { get; set; }
public DateTime? FirstTime { get; set; }
public decimal FirstTimeLengthZero { get; set; }
public decimal FirstTimeLengthMinute { get; set; }
public decimal? SecondPkid { get; set; }
public string SecondGName { get; set; }
public DateTime? SecondTime { get; set; }
public decimal SecondTimeLengthZero { get; set; }
public decimal SecondTimeLengthMinute { get; set; }
public decimal? ThreePkid { get; set; }
public string ThreeGName { get; set; }
public DateTime? ThreeTime { get; set; }
public decimal ThreeTimeLengthZero { get; set; }
public decimal ThreeTimeLengthMinute { get; set; }
}
private class UserCallTopThreeView
{
public string GName { get; set; }
public decimal SALESID { get; set; }
public DateTime CTime { get; set; }
public string ResId { get; set; }
public DateTime? FirstTime { get; set; }
public decimal FirstTimeLengthZero { get; set; }
public decimal FirstTimeLengthMinute { get; set; }
public DateTime? SecondTime { get; set; }
public decimal SecondTimeLengthZero { get; set; }
public decimal SecondTimeLengthMinute { get; set; }
public DateTime? ThreeTime { get; set; }
public decimal ThreeTimeLengthZero { get; set; }
public decimal ThreeTimeLengthMinute { get; set; }
}
}
}