ComplianceServer/oldcode/WEB/Controllers/WeiXin/WxResourceReportController.cs

688 lines
36 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using WX.CRM.BLL.Application.UserComBox;
using WX.CRM.BLL.Base;
using WX.CRM.Common;
using WX.CRM.IBLL.Util;
using WX.CRM.IBLL.Wx;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
using WX.CRM.WEB.Handler;
using WX.CRM.WebHelper;
namespace WX.CRM.WEB.Controllers.WeiXin
{
public class WxResourceReportController : BaseController
{
private readonly IWX_WORKACCOUNT _wxWorkaccount;
private readonly IWX_WORKACCOUNT_ONLINELOG _wxWorkaccountOnlinelog;
private readonly IUserServices _userComBo;
private ICACHE_Q cacheQ;
public WxResourceReportController(IWX_WORKACCOUNT wxWorkaccount, IWX_WORKACCOUNT_ONLINELOG wxWorkaccountOnlinelog, ICACHE_Q _cacheQ, IUserServices userComBo)
{
_wxWorkaccount = wxWorkaccount;
_wxWorkaccountOnlinelog = wxWorkaccountOnlinelog;
this.cacheQ = _cacheQ;
this._userComBo = userComBo;
}
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_微信推广资源统计)]
public ActionResult Index()
{
ControlResource.JudgeSYQ();
Table tab = new Table("tablist");
tab.AddHiddenHeadCol("jobusername", "jobusername");
tab.AddHiddenHeadCol("inneruserid", "inneruserid");
tab.AddHeadCol("eid", "", "工号");
tab.AddHeadCol("uname", "", "姓名");
tab.AddHiddenHeadCol("gid", "gid");
tab.AddHeadCol("gname", "", "组别");
tab.AddHeadCol("isdismiss", "", "在/离职");
int x = 8;
tab.AddHeadCol("nottuiguang", "", "线下资源数", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("tuiguang", "", "推广资源数", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("blackcount", "", "拉黑资源数", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("consume", "", "资源损耗率", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("unvalidResCount", "", "无响应资源数", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("unvalidReslv", "", "无响应率", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("validResCount", "", "有效沟通资源数", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("validReslv", "", "有效沟通率", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("useResCount", "", "使用资源数", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("useReslv", "", "使用资源率", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("OrderCount", "", "资源成交数", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("PerformanceAmount", "", "总成交额", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("chenjiaoday", "", "平均成交周期", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("chengjiaolv", "", "成交率", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("validReschengjiaolv", "", "有效资源成交率", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
//tab.AddHeadCol("communicatemonth", "", "本月沟通资源数", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
//x++;
tab.AddHeadCol("CurTimeAmount", "", "区间成交额", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("communicateday1", "", "今日沟通资源数", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("communicateday1lv", "", "今日沟通率", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("onlinerate", "", "近3日在线率", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
x++;
tab.AddHeadCol("curonlinerate", "", "时间段内在线率", "sortTable('tablist'," + x + ",'float');", "cursor:pointer");
tab.AddHeadRow();
ViewBag.RptList = tab.GetHead();
ViewBag.inneruserid = UserId;
ViewBag.userGroupId = userGroupId;
ViewBag.saleDeptId = saleDeptId;
ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
ViewBag.DeptCode = cacheQ.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.Sys_Environment_DeptCode);
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_微信推广资源统计)]
public JsonResult Index(QueryUserComboDto usercomboDto, DateTime? sTime, DateTime? eTime, DateTime? cjTime1, DateTime? cjTime2, bool curMonth, decimal? resType, string isdismiss, string columns)
{
ControlResource.JudgeSYQ();
try
{
if (sTime == null || eTime == null)
{
return JsonHandler.ManageMessage("参数错误!", false);
}
Table table = new Table(columns, true);
eTime = eTime.Value.AddDays(1);
cjTime2 = cjTime2.Value.AddDays(1);
var d2 = DateTime.Parse(DateTime.Now.ToShortDateString());
var d1 = d2.AddDays(-3);
var workAccountList = _wxWorkaccount.GetList();
//在线率
var onlineList = _wxWorkaccountOnlinelog.GetList(string.Empty, sTime.Value.ToString(), eTime.Value.ToString());
//3日在线率
var online3DayList = _wxWorkaccountOnlinelog.GetList(string.Empty, d1.ToString(), d2.ToString());
//_wxWorkaccount.GenWxResourceCount();
var list = _wxWorkaccount.GetWxResourceReport(usercomboDto, sTime.Value, eTime.Value, curMonth ? 1 : 0, resType, cjTime1, cjTime2);
if (!string.IsNullOrEmpty(isdismiss))
{
list = list.Where(p => p.isdismiss == isdismiss).ToList();
}
foreach (var item in list)
{
var jobusernameArr = workAccountList.Where(p => p.INNERUSERID == item.inneruserid).Select(p => p.USERNAME).ToList();
var onlineInfoSum = onlineList.Where(p => jobusernameArr.Contains(p.USERNAME)).Sum(p => p.ONLINERATE);
var onlineInfoCount = onlineList.Count(p => jobusernameArr.Contains(p.USERNAME));
var online3DayInfoSum = online3DayList.Where(p => jobusernameArr.Contains(p.USERNAME)).Sum(p => p.ONLINERATE);
var online3DayInfoCount = online3DayList.Count(p => jobusernameArr.Contains(p.USERNAME));
var allResourceCount = item.tuiguang + item.nottuiguang;
table.AddHiddenCol(string.Join(",", jobusernameArr));
table.AddHiddenCol(item.inneruserid);
table.AddCol(item.eid);
table.AddCol(item.uname);
table.AddHiddenCol(item.gid);
table.AddCol(item.gname);
table.AddCol(item.isdismiss);
table.AddCol(item.nottuiguang);
table.AddCol(item.tuiguang);
table.AddCol(item.blackcount);
table.AddCol(allResourceCount > 0 ? string.Format("{0:p}", item.blackcount / allResourceCount) : "0%");
table.AddCol(item.unvalidResCount);
table.AddCol(allResourceCount > 0 ? string.Format("{0:p}", item.unvalidResCount / allResourceCount) : "0%");
table.AddCol(item.validResCount);
table.AddCol(allResourceCount > 0 ? string.Format("{0:p}", item.validResCount / allResourceCount) : "0%");
table.AddCol(item.useResCount);
table.AddCol(allResourceCount > 0 ? string.Format("{0:p}", item.useResCount / allResourceCount) : "0%");
table.AddCol(item.OrderCount);
table.AddCol(item.PerformanceAmount);
table.AddCol(item.OrderCount > 0 ? string.Format("{0:f}", item.chenjiaoday / item.OrderCount) : "0");
table.AddCol(allResourceCount > 0 ? string.Format("{0:p}", item.OrderCount / allResourceCount) : "0%");
table.AddCol(allResourceCount > 0 && (item.validResCount / allResourceCount) > 0 ? string.Format("{0:p}", (item.OrderCount / allResourceCount) / (item.validResCount / allResourceCount)) : "0%");
table.AddCol(item.CurTimeAmount);
table.AddCol(item.day1);
table.AddCol(allResourceCount > 0 ? string.Format("{0:p}", item.day1 / allResourceCount) : "0%");
table.AddCol(online3DayInfoCount > 0 ? string.Format("{0:p}", online3DayInfoSum / online3DayInfoCount) : "0%");
table.AddCol(onlineInfoCount > 0 ? string.Format("{0:p}", onlineInfoSum / onlineInfoCount) : "0%");
table.AddRow();
}
if (list.Count > 0)
{
var sumResourceCount = list.Sum(p => p.nottuiguang) + list.Sum(p => p.tuiguang);
table.AddHiddenCol("");
table.AddHiddenCol("");
table.AddCol("合计:");
table.AddCol("");
table.AddHiddenCol("");
table.AddCol("");
table.AddCol("");
table.AddCol(list.Sum(p => p.nottuiguang));
table.AddCol(list.Sum(p => p.tuiguang));
table.AddCol(list.Sum(p => p.blackcount));
table.AddCol(sumResourceCount > 0 ? string.Format("{0:p}", list.Sum(p => p.blackcount) / sumResourceCount) : "0%");
table.AddCol(list.Sum(p => p.unvalidResCount));
table.AddCol(sumResourceCount > 0 ? string.Format("{0:p}", list.Sum(p => p.unvalidResCount) / sumResourceCount) : "0%");
table.AddCol(list.Sum(p => p.validResCount));
table.AddCol(sumResourceCount > 0 ? string.Format("{0:p}", list.Sum(p => p.validResCount) / sumResourceCount) : "0%");
table.AddCol(list.Sum(p => p.useResCount));
table.AddCol(sumResourceCount > 0 ? string.Format("{0:p}", list.Sum(p => p.useResCount) / sumResourceCount) : "0%");
table.AddCol(list.Sum(p => p.OrderCount));
table.AddCol(list.Sum(p => p.PerformanceAmount));
table.AddCol(list.Sum(p => p.OrderCount) > 0 ? string.Format("{0:f}", list.Sum(p => p.chenjiaoday) / list.Sum(p => p.OrderCount)) : "0");
table.AddCol(sumResourceCount > 0 ? string.Format("{0:p}", list.Sum(p => p.OrderCount) / sumResourceCount) : "0%");
table.AddCol(sumResourceCount > 0 && list.Sum(p => p.validResCount) / sumResourceCount > 0 ? string.Format("{0:p}", (list.Sum(p => p.OrderCount) / sumResourceCount) / (list.Sum(p => p.validResCount) / sumResourceCount)) : "0%");
table.AddCol(list.Sum(p => p.CurTimeAmount));
table.AddCol(list.Sum(p => p.day1));
table.AddCol(sumResourceCount > 0 ? string.Format("{0:p}", list.Sum(p => p.day1) / sumResourceCount) : "0%");
table.AddCol("");
table.AddCol("");
table.AddFootRow();
}
var json = new
{
rowsList = table.GetRows(),
foot = table.GetFoot()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error("WxResourceReportController:Index" + ex.Message + ex.StackTrace);
return JsonHandler.ManageMessage(ex.Message, false);
}
}
[AuthorizeRedirect(Roles = InitRights.CONST_微信推广资源统计)]
public FileResult Export(QueryUserComboDto usercomboDto, DateTime? sTime, DateTime? eTime, DateTime? cjTime1, DateTime? cjTime2, bool curMonth, decimal? resType)
{
ControlResource.JudgeSYQ();
var checkedFilds = PageRequest.GetQueryString("checkedFilds");
var checkedTitle = PageRequest.GetQueryString("checkedTitles");
eTime = eTime.Value.AddDays(1);
var d2 = DateTime.Parse(DateTime.Now.ToShortDateString());
var d1 = d2.AddDays(-3);
var workAccountList = _wxWorkaccount.GetList();
var onlineList = _wxWorkaccountOnlinelog.GetList(string.Empty, sTime.Value.ToString(), eTime.Value.ToString());
var online3DayList = _wxWorkaccountOnlinelog.GetList(string.Empty, d1.ToString(), d2.ToString());
var list = _wxWorkaccount.GetWxResourceReport(usercomboDto, sTime.Value, eTime.Value, curMonth ? 1 : 0, resType, cjTime1, cjTime2);
var data = new List<WxResourceReportExport>();
foreach (var item in list)
{
var jobusernameArr = workAccountList.Where(p => p.INNERUSERID == item.inneruserid).Select(p => p.USERNAME).ToList();
var onlineInfoSum = onlineList.Where(p => jobusernameArr.Contains(p.USERNAME)).Sum(p => p.ONLINERATE);
var onlineInfoCount = onlineList.Count(p => jobusernameArr.Contains(p.USERNAME));
var online3DayInfoSum = online3DayList.Where(p => jobusernameArr.Contains(p.USERNAME)).Sum(p => p.ONLINERATE);
var online3DayInfoCount = online3DayList.Count(p => jobusernameArr.Contains(p.USERNAME));
var allResourceCount = item.tuiguang + item.nottuiguang;
data.Add(new WxResourceReportExport()
{
eid = item.eid,
uname = item.uname,
gname = item.gname,
isdismiss = item.isdismiss,
tuiguang = item.tuiguang,
nottuiguang = item.nottuiguang,
blackcount = item.blackcount,
consume = allResourceCount > 0 ? string.Format("{0:p}", item.blackcount / allResourceCount) : "0%",
unvalidResCount = item.unvalidResCount,
unvalidReslv = allResourceCount > 0 ? string.Format("{0:p}", item.unvalidResCount / allResourceCount) : "0%",
validResCount = item.validResCount,
validReslv = allResourceCount > 0 ? string.Format("{0:p}", item.validResCount / allResourceCount) : "0%",
useResCount = item.useResCount,
useReslv = allResourceCount > 0 ? string.Format("{0:p}", item.useResCount / allResourceCount) : "0%",
OrderCount = item.OrderCount,
PerformanceAmount = item.PerformanceAmount,
chenjiaoday = item.OrderCount > 0 ? decimal.Parse(string.Format("{0:f}", item.chenjiaoday / item.OrderCount)) : 0,
chengjiaolv = allResourceCount > 0 ? string.Format("{0:p}", item.OrderCount / allResourceCount) : "0%",
validReschengjiaolv = allResourceCount > 0 && (item.validResCount / allResourceCount) > 0 ? string.Format("{0:p}", (item.OrderCount / allResourceCount) / (item.validResCount / allResourceCount)) : "0%",
CurTimeAmount = item.CurTimeAmount,
//communicatemonth = item.communicatemonth,
communicateday1 = item.communicateday1,
communicateday1lv = allResourceCount > 0 ? string.Format("{0:p}", item.day1 / allResourceCount) : "0%",
//communicateday3 = allResourceCount - item.communicateday3 - item.communicateday1 + item.day3,
//communicateday3lv = allResourceCount > 0 ? string.Format("{0:p}", item.day3 / allResourceCount) : "0%",
//communicateday6 = allResourceCount - item.communicateday6 - item.communicateday1 + item.day6,
//communicateday6lv = allResourceCount > 0 ? string.Format("{0:p}", item.day6 / allResourceCount) : "0%",
//communicateday12 = allResourceCount - item.communicateday12 - item.communicateday1 + item.day12,
//communicateday12lv = allResourceCount > 0 ? string.Format("{0:p}", item.day12 / allResourceCount) : "0%",
//communicateday24 = allResourceCount - item.communicateday24 - item.communicateday1 + item.day24,
//msgcount = item.msgcount > 0 ? decimal.Parse(string.Format("{0:p}", allResourceCount / item.msgcount)) : 0,
onlinerate = online3DayInfoCount > 0 ? string.Format("{0:p}", online3DayInfoSum / online3DayInfoCount) : "0%",
curonlinerate = onlineInfoCount > 0 ? string.Format("{0:p}", onlineInfoSum / onlineInfoCount) : "0%"
});
}
return File(ExcelHelper.ExportListModelToExcel<WxResourceReportExport>(data, "微信推广资源统计", 60000, checkedFilds, checkedTitle, null), "application/ms-excel", PageRequest.GetDlownLoadName("微信推广资源统计.xls"));
}
public class WxResourceReportExport
{
public decimal eid { get; set; }
public string uname { get; set; }
public string gname { get; set; }
public string isdismiss { get; set; }
public decimal tuiguang { get; set; }
public decimal nottuiguang { get; set; }
public decimal blackcount { get; set; }
public decimal PerformanceAmount { get; set; }
public decimal OrderCount { get; set; }
public string consume { get; set; }
public decimal chenjiaoday { get; set; }
public string chengjiaolv { get; set; }
public string validReschengjiaolv { get; set; }
public decimal communicatemonth { get; set; }
public decimal communicateday1 { get; set; }
public string communicateday1lv { get; set; }
public decimal communicateday3 { get; set; }
public string communicateday3lv { get; set; }
public decimal communicateday6 { get; set; }
public string communicateday6lv { get; set; }
public decimal communicateday12 { get; set; }
public string communicateday12lv { get; set; }
public decimal communicateday24 { get; set; }
public decimal msgcount { get; set; }
public string onlinerate { get; set; }
public string curonlinerate { get; set; }
public decimal validResCount { get; set; }
public string validReslv { get; set; }
public decimal unvalidResCount { get; set; }
public string unvalidReslv { get; set; }
public decimal CurTimeAmount { get; set; }
public decimal useResCount { get; set; }
public string useReslv { get; set; }
}
#region
public ActionResult UserWorkReportTab() {
return View();
}
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public ActionResult UserWorkReport()
{
string tableId = "tablist";
Table tab = new Table(tableId);
Pager pager = new Pager() { page = 1, rows = 1000 };
tab.AddHeadCol("uname", "", "客服");
tab.AddHeadCol("gname", "", "组别");
int x = 8;
tab.AddHeadCol("total_amount", "", "资源分配数", true);
x++;
tab.AddHeadCol("reg_amount", "", "注册分配数(推广)", true);
x++;
tab.AddHeadCol("reg_f_amount", "", "注册分配数(非推广)", true);
x++;
tab.AddHeadCol("act_amount", "", "报名分配数", true);
x++;
tab.AddHeadCol("other_amount", "", "其他分配数", true);
x++;
tab.AddHeadCol("wx_amount", "", "加微数", true);
x++;
tab.AddHeadCol("wx_rate", "", "加微率", true);
x++;
tab.AddHeadCol("wx_amount_distinct", "", "加微数(去重)", true);
x++;
tab.AddHeadCol("wx_rate_distinct", "", "加微率(去重)", true);
//x++;
//tab.AddHeadCol("del_amount", "", "删除数", true);
//x++;
//tab.AddHeadCol("del_rate", "", "删除率", true);
x++;
tab.AddHeadCol("explain_amount", "", "讲解数", true);
x++;
tab.AddHeadCol("explain_rate", "", "讲解率", true);
x++;
tab.AddHeadCol("open_amount", "", "报价数", true);
x++;
tab.AddHeadCol("open_rate", "", "报价率", true);
x++;
tab.AddHeadCol("deal_amount", "", "成交人数", true);
x++;
tab.AddHeadCol("deal_rate", "", "成交率", true);
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "10,20,50,1000");
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public JsonResult UserWorkReport(Pager pager, decimal? companyId, decimal? deptId, string groupId, decimal? userId, DateTime? stime, DateTime? etime, bool? hideQuit, string columns)
{
try
{
if (stime == null || etime == null)
{
return JsonHandler.ManageMessage("参数错误!", false);
}
List<decimal> userIdlist = new List<decimal>();
var users = _userComBo.GetUserComBo(companyId, deptId, groupId, userId);
userIdlist = users.Select(m => m.UserId).ToList();
if (string.IsNullOrEmpty(pager.order))
{
pager.order = "desc";
pager.sort = "total_amount";
}
var list = _wxWorkaccount.GetUserWorkStatistics(pager, userIdlist, stime.Value, etime.Value, hideQuit ?? false);
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (var item in list)
{
table.AddCol($"{item.EID}-{item.UNAME}");
table.AddCol(item.GNAME);
table.AddCol(item.TOTAL_AMOUNT.ToString());
table.AddCol(item.REG_AMOUNT.ToString());
table.AddCol(item.REG_F_AMOUNT.ToString());
table.AddCol(item.ACT_AMOUNT.ToString());
table.AddCol(item.OTHER_AMOUNT.ToString());
table.AddCol(item.WX_AMOUNT.ToString());
table.AddCol($"{item.WX_RATE.ToString("f2")}%");
table.AddCol(item.WX_AMOUNT_DISTINCT.ToString());
table.AddCol($"{item.WX_RATE_DISTINCT.ToString("f2")}%");
//table.AddCol(item.DEL_AMOUNT.ToString());
//table.AddCol(item.DEL_RATE.ToString());
table.AddCol(item.EXPLAIN_AMOUNT.ToString());
table.AddCol($"{item.EXPLAIN_RATE.ToString("f2")}%");
table.AddCol(item.OPEN_AMOUNT.ToString());//意向单
table.AddCol(item.OPEN_RATE.ToString());
table.AddCol(item.DEAL_AMOUNT.ToString());//
table.AddCol($"{item.DEAL_RATE.ToString("f2")}%");//
table.AddRow();
}
//汇总
table.AddCol("合计");
table.AddCol("合计");
table.AddCol(list.Sum(m => m.TOTAL_AMOUNT));
var regAmount = list.Sum(m => m.REG_AMOUNT);
var wxAmount= list.Sum(m => m.WX_AMOUNT);//加微数量
var wxdisAmount = list.Sum(m => m.WX_AMOUNT_DISTINCT);//加微数量
var expAmount = list.Sum(m => m.EXPLAIN_AMOUNT);
var dealAmount = list.Sum(m => m.DEAL_AMOUNT);
var delAmount = list.Sum(m => m.DEL_RATE);
var openAmount = list.Sum(m => m.OPEN_AMOUNT);
table.AddCol(regAmount);
table.AddCol(list.Sum(m => m.REG_F_AMOUNT));
table.AddCol(list.Sum(m => m.ACT_AMOUNT));
table.AddCol(list.Sum(m => m.OTHER_AMOUNT));
table.AddCol(wxAmount);
var wxrate = regAmount == 0 ? 0 : (wxAmount / regAmount * 100);
table.AddCol($"{wxrate.ToString("f2")}%");//加微率
table.AddCol(wxdisAmount);
var wxdisrate = regAmount == 0 ? 0 : (wxdisAmount / regAmount * 100);
table.AddCol($"{wxdisrate.ToString("f2")}%");//加微率 去重
//table.AddCol(delAmount);//删除
//var delrate = regAmount == 0 ? 0 : (delAmount / regAmount * 100);
//table.AddCol($"{delrate.ToString("f2")}%");//加微率 去重
table.AddCol(expAmount);
var exprate = regAmount == 0 ? 0 : (expAmount / regAmount * 100);
table.AddCol($"{exprate.ToString("f2")}%");
table.AddCol(openAmount);//意向单
var openrate = regAmount == 0 ? 0 : (openAmount / regAmount * 100);
table.AddCol($"{openrate.ToString("f2")}%");
table.AddCol(dealAmount);//
var dealrate = regAmount == 0 ? 0 : (dealAmount / regAmount * 100);
table.AddCol($"{dealrate.ToString("f2")}%");//
table.AddRow();
var json = new
{
rowsList = table.GetRows(),
totalPages = pager.totalPages,
totalRows = pager.totalRows
//foot = table.GetFoot()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error("WxResourceReportController:Index" + ex.Message + ex.StackTrace);
return JsonHandler.ManageMessage(ex.Message, false);
}
}
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public FileResult UserWorkReportExport(Pager pager, decimal? companyId, decimal? deptId, string groupId, decimal? userId, DateTime? stime, DateTime? etime, bool? hideQuit)
{
var checkedFilds = PageRequest.GetQueryString("checkedFilds");
var checkedTitle = PageRequest.GetQueryString("checkedTitles");
List<decimal> userIdlist = new List<decimal>();
if (string.IsNullOrEmpty(pager.order))
{
pager.order = "desc";
pager.sort = "total_amount";
}
var users = _userComBo.GetUserComBo(companyId, deptId, groupId, userId);
userIdlist = users.Select(m => m.UserId).ToList();
var list = _wxWorkaccount.GetUserWorkStatistics(pager, userIdlist, stime.Value, etime.Value, hideQuit ?? false);
foreach (var item in list)
{
item.UNAME = $"{item.EID}-{item.UNAME}";
}
TMP_DANGSAN_DATA_REPORT sum = new TMP_DANGSAN_DATA_REPORT();
//汇总
sum.UNAME = "合计";
sum.GNAME = "合计";
var regAmount = list.Sum(m => m.REG_AMOUNT);
sum.TOTAL_AMOUNT = list.Sum(m => m.TOTAL_AMOUNT);
sum.REG_AMOUNT = regAmount;
sum.ACT_AMOUNT = list.Sum(m => m.ACT_AMOUNT);
sum.OTHER_AMOUNT = list.Sum(m => m.OTHER_AMOUNT);
sum.DEAL_AMOUNT = list.Sum(m => m.DEAL_AMOUNT);
sum.ACT_AMOUNT = list.Sum(m => m.ACT_AMOUNT);
sum.OTHER_AMOUNT = list.Sum(m => m.OTHER_AMOUNT);
sum.WX_AMOUNT = list.Sum(m => m.WX_AMOUNT);
sum.WX_AMOUNT_DISTINCT = list.Sum(m => m.WX_AMOUNT_DISTINCT);
//sum.DEL_AMOUNT = list.Sum(m => m.DEL_AMOUNT);
sum.EXPLAIN_AMOUNT = list.Sum(m => m.EXPLAIN_AMOUNT);
sum.DEAL_AMOUNT = list.Sum(m => m.DEAL_AMOUNT);
var exprate = regAmount == 0 ? 0 : (sum.EXPLAIN_AMOUNT / regAmount * 100);
var dealrate = regAmount == 0 ? 0 : (sum.DEAL_AMOUNT / regAmount * 100);
var wxrate = regAmount == 0 ? 0 : (sum.WX_AMOUNT / regAmount * 100);//加微率
var wxdisrate = regAmount == 0 ? 0 : (sum.WX_AMOUNT_DISTINCT / regAmount * 100);//加微率去重
var delrate = regAmount == 0 ? 0 : (sum.DEL_AMOUNT / regAmount * 100);//删除率
var openrate = regAmount == 0 ? 0 : (sum.OPEN_AMOUNT / regAmount * 100);//删除率
sum.EXPLAIN_RATE = exprate;
sum.DEAL_RATE = dealrate;
sum.WX_RATE = wxrate;
sum.WX_RATE_DISTINCT = wxdisrate;
//sum.DEL_RATE = delrate;
sum.OPEN_RATE = openrate;
list.Add(sum);
return File(ExcelHelper.ExportListModelToExcel<TMP_DANGSAN_DATA_REPORT>(list, "员工日常工作报表", 60000, checkedFilds, checkedTitle, null), "application/ms-excel", PageRequest.GetDlownLoadName("员工日常工作报表.xls"));
}
#endregion
#region 3
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public ActionResult UserWorkReport3()
{
string tableId = "tablist";
Table tab = new Table(tableId);
Pager pager = new Pager() { page = 1, rows = 1000 };
tab.AddHeadCol("uname", "", "客服");
tab.AddHeadCol("gname", "", "组别");
int x = 8;
tab.AddHeadCol("wx_total_re", "", "加微数", true);
x++;
tab.AddHeadCol("wx_total", "", "加微数(去重)", true);
x++;
tab.AddHeadCol("del_total", "", "删除数", true);
x++;
tab.AddHeadCol("del_rate", "", "删除率", true);
x++;
tab.AddHeadCol("reg_total", "", "注册人数", true);
x++;
tab.AddHeadCol("reg_rate", "", "注册率", true);
x++;
tab.AddHeadCol("deal_total", "", "成交人数", true);
x++;
tab.AddHeadCol("deal_rate", "", "成交率", true);
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "10,20,50,1000");
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public JsonResult UserWorkReport3(Pager pager, decimal? companyId, decimal? deptId, string groupId, decimal? userId,string uname,string eid, DateTime? stime, DateTime? etime, bool? hideQuit, string columns)
{
try
{
if (stime == null || etime == null)
{
return JsonHandler.ManageMessage("参数错误!", false);
}
List<decimal> userIdlist = new List<decimal>();
var users = _userComBo.GetUserComBo(companyId, deptId, groupId, userId);
userIdlist = users.Select(m => m.UserId).ToList();
if (string.IsNullOrEmpty(pager.order))
{
pager.order = "desc";
pager.sort = "wx_amount";
}
//获取当前登录用户的渠道段
int deptid = 0;//cms 部门id
BAS_PARAMETER_BL paramter_bl = new BAS_PARAMETER_BL();
var settingStr = paramter_bl.GetModel_Patameter("SalesLeadsDeptSetting");
List<DeptInfo> deptInfos = JsonHelper.JsonDivertToObj<List<DeptInfo>>(settingStr.PARAVALUE);
deptid = deptInfos.FirstOrDefault(n => n.DeptCode == saleDeptCode)?.DeptId ?? Convert.ToInt32(Utility.GetSettingByKey("CmsApi_Dept"));
//deptid = Convert.ToInt32(Utility.GetSettingByKey("CmsApi_Dept"));
var list = _wxWorkaccount.GetMediareport(pager, userIdlist, deptid, uname, eid,stime.Value, etime.Value, hideQuit ?? false);
Table table = new Table(columns, true);
foreach (var item in list)
{
table.AddCol($"{item.EID}-{item.UNAME}");
table.AddCol(item.GNAME);
table.AddCol(item.WX_TOTAL_RE);
table.AddCol(item.WX_TOTAL);
table.AddCol(item.DEL_TOTAL);
table.AddCol($"{item.DEL_RATE.ToString("f2")}%");
table.AddCol(item.REG_TOTAL);
table.AddCol($"{item.REG_RATE.ToString("f2")}%");
table.AddCol(item.DEAL_TOTAL);
table.AddCol($"{item.DEAL_RATE.ToString("f2")}%");
table.AddRow();
}
var json = new
{
rowsList = table.GetRows()
//foot = table.GetFoot()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error("WxResourceReportController:Index" + ex.Message + ex.StackTrace);
return JsonHandler.ManageMessage(ex.Message, false);
}
}
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public FileResult UserWorkReport3Export(Pager pager, decimal? companyId, decimal? deptId, string groupId, decimal? userId, string uname, string eid, DateTime? stime, DateTime? etime, bool? hideQuit)
{
var checkedFilds = PageRequest.GetQueryString("checkedFilds");
var checkedTitle = PageRequest.GetQueryString("checkedTitles");
List<decimal> userIdlist = new List<decimal>();
var users = _userComBo.GetUserComBo(companyId, deptId, groupId, userId);
userIdlist = users.Select(m => m.UserId).ToList();
if (string.IsNullOrEmpty(pager.order))
{
pager.order = "desc";
pager.sort = "wx_amount";
}
//获取当前登录用户的渠道段
int deptid = 0;//cms 部门id
BAS_PARAMETER_BL paramter_bl = new BAS_PARAMETER_BL();
var settingStr = paramter_bl.GetModel_Patameter("SalesLeadsDeptSetting");
List<DeptInfo> deptInfos = JsonHelper.JsonDivertToObj<List<DeptInfo>>(settingStr.PARAVALUE);
deptid = deptInfos.FirstOrDefault(n => n.DeptCode == saleDeptCode)?.DeptId ?? Convert.ToInt32(Utility.GetSettingByKey("CmsApi_Dept"));
// deptid = Convert.ToInt32(Utility.GetSettingByKey("CmsApi_Dept"));
var list = _wxWorkaccount.GetMediareport(pager, userIdlist, deptid, uname, eid, stime.Value, etime.Value, hideQuit ?? false);
foreach (var item in list)
{
if(item.UNAME!="合计")
item.UNAME = $"{item.EID}-{item.UNAME}";
}
return File(ExcelHelper.ExportListModelToExcel<UserWorkReport3View>(list, "新媒体资源工作报表", 60000, checkedFilds, checkedTitle, null), "application/ms-excel", PageRequest.GetDlownLoadName("新媒体资源工作报表.xls"));
}
#endregion
}
public class DeptInfo {
public string DeptCode { get; set; }
public int DeptId { get; set; }
public string DeptName { get; set; }
}
}