TG.WXCRM.V4/WEB/Controllers/WeiXin/WxResourceReportController.cs

1250 lines
60 KiB
C#
Raw Permalink 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 Aop.Api.Domain;
using CRM.Core.DTO;
using Newtonsoft.Json;
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.Common.Layui;
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;
private readonly IBAS_BUSINESSLINE_Q _bussinessLies;
public WxResourceReportController(IWX_WORKACCOUNT wxWorkaccount, IWX_WORKACCOUNT_ONLINELOG wxWorkaccountOnlinelog, ICACHE_Q _cacheQ, IUserServices userComBo, IBAS_BUSINESSLINE_Q businessLine_q)
{
_wxWorkaccount = wxWorkaccount;
_wxWorkaccountOnlinelog = wxWorkaccountOnlinelog;
this.cacheQ = _cacheQ;
this._userComBo = userComBo;
this._bussinessLies = businessLine_q;
}
[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);
ToolBar tool = new ToolBar();
string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights., userRightId);
tool.AllowButton(toolbtn);
tool.AddOtherButton("Other1", "预警值配置", "icon-add", "Other1_Click", true);
tool.AddOtherButton("Other2", "预警模板管理", "icon-export", "Other2_Click", true);
tool.AddOtherButton("Other3", "预警通知人员配置", "icon-edit", "Other3_Click", false);
ViewBag.ToolBar = tool;
tab.isFloatHead = true;
Pager pager = new Pager() { page = 1, rows = 1000 };
tab.AddHeadCol("uname", "", "客服");
tab.AddHeadCol("gname", "", "组别");
var statusTitle = "指员工在接粉周期内的最大资源 &#10";
statusTitle += "量.该字段仅用于做预警通知. &#10";
tab.AddTipHeadCol("maxnum", "", "最大资源量", "/image/icon/tip.png", statusTitle);
tab.AddHeadCol("templatename", "", "预警模板");
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("wx_amount_unionid", "", "加微数(工号去重)", true);
x++;
tab.AddHeadCol("wx_rate_unionid", "", "加微率(工号去重)", 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, string 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>();
/* if (!string.IsNullOrWhiteSpace(deptId) && string.IsNullOrWhiteSpace(groupId))
{
var deptids = deptId.Split(',');
foreach(var dept in deptids)
{
var did = Convert.ToDecimal(dept);
var users = _userComBo.GetUserComBoSSO(deptId, groupId, userId);
userIdlist.AddRange(users.Select(m => m.UserId).ToList());
}
}else if (!string.IsNullOrWhiteSpace(groupId))
{
}*/
var users = _userComBo.GetUserComBoSSO(deptId, groupId, userId);
userIdlist = users.Select(n=>n.UserId).Distinct().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);
List<WranReportListModel> warnSetList = new List<WranReportListModel>();
if (list.Count > 0)
{
warnSetList = _wxWorkaccount.GetWarnSettingByEid(list.Select(n => n.EID).ToList());
}
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (var item in list)
{
table.AddCol($"{item.EID}-{item.UNAME}");
table.AddCol(item.GNAME);
var set = warnSetList.FirstOrDefault(n => n.Eid == item.EID);
table.AddCol(set?.MaxNum);
table.AddCol(set?.Name);
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.WX_AMOUNT_UNIONID.ToString());
table.AddCol($"{item.WX_RATE_UNIONID.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("");
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 wxdisUnionid = list.Sum(m => m.WX_AMOUNT_UNIONID);//
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(wxdisUnionid);
var wxdisUnionidRate = regAmount == 0 ? 0 : (wxdisUnionid / regAmount * 100);
table.AddCol($"{wxdisUnionidRate.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, string 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.GetUserComBoSSO(deptId, groupId, userId);
userIdlist = users.Select(m => m.UserId).ToList();
var list = _wxWorkaccount.GetUserWorkStatistics(pager, userIdlist, stime.Value, etime.Value, hideQuit ?? false);
List<WranReportListModel> warnSetList = new List<WranReportListModel>();
if (list.Count > 0)
{
warnSetList = _wxWorkaccount.GetWarnSettingByEid(list.Select(n => n.EID).ToList());
}
foreach (var item in list)
{
item.UNAME = $"{item.EID}-{item.UNAME}";
var set = warnSetList.FirstOrDefault(n => n.Eid == item.EID);
item.TemplateName = set?.Name;
item.MaxNum = set?.MaxNum;
}
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.WX_AMOUNT_UNIONID = list.Sum(m => m.WX_AMOUNT_UNIONID);
//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 wxdisrateunionid = regAmount == 0 ? 0 : (sum.WX_AMOUNT_UNIONID / 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.WX_RATE_UNIONID = wxdisrateunionid;
//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"));
}
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other2)]
public ActionResult TemplateList()
{
return View();
}
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other1)]
public ActionResult EditWarnSetting()
{
ViewBag.eid = Eid;
var line = _bussinessLies.GetBusinessLineByRoot(UserId);
var dto = new GetWarnningTemplateDto();
if (line.Count > 0)
{
dto.DeptId = string.Join(",", line.Select(n => n.BUSINESSID));
}
List<SelectListItem> deptList = new List<SelectListItem>();
foreach (var item in line)
{
deptList.Add(new SelectListItem { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString() });
}
ViewBag.deptList = deptList;
ViewBag.deptid = deptList.FirstOrDefault()?.Value;
var url = cacheQ.GetValue_Parameter("Core_ZxdService_WebApi");
ViewBag.webapi = url;
var layUidata = new LayuiData<TemplateListModel>();
if (line.Count >= 0)
{
dto.DeptId = string.Join(",", line.Select(n => n.BUSINESSID));
}
return View();
}
[HttpPost]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other1)]
public JsonResult EditWarnSetting(CreateOrEditSettingDto model)
{
bool result = false;
retMsg ret = new retMsg() { result = result, retcode = 200 };
try
{
if(model.MaxNum.HasValue && model.MaxNum <= 0)
{
ret.retmsg = "最大资源量必须大于0";
return Json(ret);
}
/*if (!model.templateId.HasValue)
{
ret.retmsg = "模板不能为空";
return Json(ret);
}*/
if (string.IsNullOrWhiteSpace(model.Participant))
{
ret.retmsg = "人员不能为空";
return Json(ret);
}
model.Eid = Eid.ToString();
var eidFilter = model.Participant.Split(',').Select(n => Convert.ToDecimal(n)).ToList();
var userList = cacheQ.GetUserList().Where(n => eidFilter.Contains(n.EID));
List<WarnUserInfo> warnUserInfoList = new List<WarnUserInfo>();
foreach (var user in userList)
{
WarnUserInfo warnUser = new WarnUserInfo
{
Eid = user.EID,
Name = user.UNAME
};
warnUserInfoList.Add(warnUser);
}
model.WarnUserInfo = warnUserInfoList;
ret.result = _wxWorkaccount.AddWarnSetting(model);
}
catch(Exception ex)
{
ret.retmsg = ex.Message;
}
return Json(ret);
}
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other2)]
public ActionResult AddTemplate()
{
var line = _bussinessLies.GetBusinessLineByRoot(UserId);
List<SelectListItem> deptList = new List<SelectListItem>();
foreach (var item in line)
{
deptList.Add(new SelectListItem { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString() });
}
ViewBag.deptList = deptList;
TemplateListModel temp = _wxWorkaccount.GetNewTemplateListModel(deptList.Select(x => x.Value).FirstOrDefault());
if (temp == null) temp = new TemplateListModel();
if (temp.PeriodFrom.HasValue)
{
temp.PeriodFromShow = temp.PeriodFrom.Value.ToString("yyyy-MM-dd");
}
if (temp.PeriodTo.HasValue)
{
temp.PeriodToShow = temp.PeriodTo.Value.ToString("yyyy-MM-dd");
}
return View(temp);
}
[HttpPost]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other2)]
public JsonResult AddTemplate(TemplateListModel model)
{
retMsg ret = new retMsg();
ValidationErrors errors = new ValidationErrors();
if (model.TemplateName.Length > 20)
{
ret = new retMsg() { result = false, retcode = 200, retmsg = "模板名称不能超过20个字符" };
return Json(ret);
}
if(model.PeriodFrom.HasValue && model.PeriodTo.HasValue && DateTime.Compare(model.PeriodFrom.Value, model.PeriodTo.Value) >0)
{
ret = new retMsg() { result = false, retcode = 200, retmsg = "接粉周期开始时间不能小于结束时间!" };
return Json(ret);
}
bool result = _wxWorkaccount.AddTemplate(model);
ret = new retMsg() { result = result, retcode = 200, retmsg = "设置成功!" };
return Json(ret);
}
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other2)]
public ActionResult EditTemplate(int Id)
{
var temp = GetTemplate(Id);
if (temp.PeriodFrom.HasValue)
{
temp.PeriodFromShow = temp.PeriodFrom.Value.ToString("yyyy-MM-dd");
}
if (temp.PeriodTo.HasValue)
{
temp.PeriodToShow = temp.PeriodTo.Value.ToString("yyyy-MM-dd");
}
temp.TemplateSettingDetail = JsonConvert.DeserializeObject<List<TemplateSettingDetail>>(temp.PrewarningValue);
var line = _bussinessLies.GetBusinessLineByRoot(UserId);
List<SelectListItem> deptList = new List<SelectListItem>();
foreach (var item in line)
{
if(temp.DeptId == item.BUSINESSID)
{
deptList.Add(new SelectListItem { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString(), Selected=true });
}
else
{
deptList.Add(new SelectListItem { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString() });
}
}
ViewBag.deptList = deptList;
return View(temp);
}
private TemplateListModel GetTemplate(int Id)
{
return _wxWorkaccount.GetTemplate(Id);
}
public JsonResult GetTemplateJson(int Id)
{
var temp = GetTemplate(Id);
var ret = new retMsgNew<TemplateListModel>() { result = true, data = temp, retcode = 200, retmsg = "设置成功!" };
return Json(ret, JsonRequestBehavior.AllowGet);
}
[HttpPost]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other2)]
public JsonResult EditTemplate(TemplateListModel model)
{
bool result = _wxWorkaccount.AddTemplate(model);
retMsg ret = new retMsg() { result = result, retcode = 200, retmsg = "设置成功!" };
return Json(ret);
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public JsonResult GetWarnnTemplateHtmlListByName(Laypage pager, GetWarnningTemplateDto dto)
{
var layUidata = new LayuiData<TemplateListModel>();
if (dto.Name != null)
{
dto.Name = dto.Name.Trim();
}
var line = _bussinessLies.GetBusinessLineByRoot(UserId);
if (line.Count >= 0)
{
dto.DeptId = string.Join(",", line.Select(n => n.BUSINESSID));
}
try
{
List<TemplateListModel> list = _wxWorkaccount.GetTemplateList(pager, dto);
foreach(var item in list)
{
item.DeptName = line.FirstOrDefault(n => n.BUSINESSID == item.DeptId)?.BUSINESSNAME;
}
layUidata.msg = "数据加载成功";
layUidata.code = 0;
layUidata.data = list;
layUidata.count = pager.count;
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
layUidata.SetFail(1, "出现错误!" + ex.Message);
}
return Json(layUidata);
}
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other1)]
public ActionResult ImportEmployee()
{
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public JsonResult SearchEmployee(string id)
{
string[] _ids = id.Replace("\r\n", ",").Replace("\r", ",").Replace("\n", ",").Split(',');
var userList = cacheQ.GetUserList();
var innerGroupList = cacheQ.GetGroupList();
var deptList = cacheQ.GetList_InnerUserGroup();
var saleList = cacheQ.GetList_SalesDepartMent();
var users = userList.Where(n => _ids.Contains(Convert.ToString(n.EID))).ToList();
var notInPeople = _ids.Where(n => !users.Select(s => s.EID.ToString()).Contains(n));
SearchEmployeeModel res = new SearchEmployeeModel();
res.NotInPeople = string.Join(",",notInPeople);
res.Count = users.Count();
res.NotCount = notInPeople.Count();
foreach (var item in users)
{
EmployeeModel model = new EmployeeModel
{
Eid = item.EID,
Pkid = item.PKID,
Uname = item.UNAME
};
var map = deptList.FirstOrDefault(n => n.INNERUSERID == item.PKID);
if (map != null&&map.GID.HasValue)
{
model.DeptName = innerGroupList.FirstOrDefault(n => n.GID == map.GID)?.GNAME;
}else if(map != null && map.DEPTID.HasValue)
{
model.DeptName = saleList.FirstOrDefault(n => n.SALEDEPTID == map.DEPTID)?.DEPTNAME;
}
res.EmployeeModels.Add(model);
}
bool result = true;
retMsgNew<SearchEmployeeModel> ret = new retMsgNew<SearchEmployeeModel>() { result = result, retcode = 200, data = res };
return Json(ret);
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public JsonResult SearchEmployeeIndex(Laypage pager, string txtoldId)
{
var layUidata = new LayuiData<EmployeeModel>();
if (string.IsNullOrWhiteSpace(txtoldId))
{
return Json(layUidata);
}
try
{
var _ids = txtoldId.Replace("\r\n", ",").Replace("\r", ",").Replace("\n", ",").Split(',').Where(n => !string.IsNullOrWhiteSpace(n)).Select(n=>n.Trim()).ToList();
var userList = cacheQ.GetUserList();
var innerGroupList = cacheQ.GetGroupList();
var deptList = cacheQ.GetList_InnerUserGroup();
var saleList = cacheQ.GetList_SalesDepartMent();
var users = userList.Where(n => _ids.Contains(Convert.ToString(n.EID))).ToList();
pager.count = users.Count();
var notInPeople = _ids.Where(n => !users.Select(s => s.EID.ToString()).Contains(n));
/* var data = users.Skip((pager.page - 1) * pager.limit).Take(pager.limit).ToList();//重新分页
*/
List<EmployeeModel> list = new List<EmployeeModel>();
foreach (var item in users)
{
EmployeeModel model = new EmployeeModel
{
Eid = item.EID,
Pkid = item.PKID,
Uname = item.UNAME
};
var map = deptList.FirstOrDefault(n => n.INNERUSERID == item.PKID);
if (map != null && map.GID.HasValue)
{
model.DeptName = innerGroupList.FirstOrDefault(n => n.GID == map.GID)?.GNAME;
}
else if (map != null && map.DEPTID.HasValue)
{
model.DeptName = saleList.FirstOrDefault(n => n.SALEDEPTID == map.DEPTID)?.DEPTNAME;
}
list.Add(model);
}
layUidata.msg = $"共查询出{users.Count()}条数据,有{notInPeople.Count()}条未查询出";
if (notInPeople.Count()>0)
{
layUidata.msg += $"({string.Join(",", notInPeople)})";
}
layUidata.code = 0;
layUidata.data = list;
layUidata.count = pager.count;
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
layUidata.SetFail(1, "出现错误!" + ex.Message);
}
return Json(layUidata);
}
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other3)]
public ActionResult WarnUserList()
{
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public JsonResult GetWarnUserList(Laypage pager, GetWarnningUserDto dto)
{
var layUidata = new LayuiData<WarnUserList>();
var line = _bussinessLies.GetBusinessLineByRoot(UserId);
if (line.Count >= 0)
{
dto.DeptId = string.Join(",", line.Select(n => n.BUSINESSID));
}
try
{
var list = _wxWorkaccount.GetWarnUser(pager, dto);
var users = cacheQ.GetUserList();
users = users.Where(x => x.ISDISMISS != 1).ToList();
var groups = cacheQ.GetGroupList();
groups.Where(x => x.IS_DELETED != 1).ToList();
var userGroups = cacheQ.GetList_InnerUserGroup();
foreach (var item in list)
{
var groupNames = new List<string>();
item.DeptName = line.FirstOrDefault(n => n.BUSINESSID == item.DeptId)?.BUSINESSNAME;
foreach(var group in groups)
{
var userGroupList = userGroups.Where(x => x.GID == group.GID).ToList();
var userList = users.Where(x => userGroupList.Select(y => y.INNERUSERID).Contains(x.PKID)).ToList();
var eids = userList.Select(x => x.EID).ToList();
if (eids.Any() && eids.All(t => item.ParticipantIds.Distinct().Any(b => b == t)))
{
groupNames.Add(group.GNAME);
item.ParticipantIds.RemoveAll(x => eids.Contains(x));
}
}
if (item.ParticipantIds.Any())
{
var userNames = users.Where(x => item.ParticipantIds.Contains(x.EID)).Select(x => x.UNAME).ToList();
groupNames.AddRange(userNames);
}
item.Participant = string.Join(",", groupNames);
}
layUidata.msg = "数据加载成功";
layUidata.code = 0;
layUidata.data = list;
layUidata.count = pager.count;
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
layUidata.SetFail(1, "出现错误!" + ex.Message);
}
return Json(layUidata);
}
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other2)]
public ActionResult EditWarnUser(string code)
{
var line = _bussinessLies.GetBusinessLineByRoot(UserId);
var model = _wxWorkaccount.GetWarnUserModel(code);
var url = cacheQ.GetValue_Parameter("Core_ZxdService_WebApi");
ViewBag.webapi = url;
ViewBag.Eid = Eid;
List<SelectListItem> deptList = new List<SelectListItem>();
foreach (var item in line)
{
if (model.Deptid == item.BUSINESSID)
{
deptList.Add(new SelectListItem { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString(), Selected = true });
}
/* else
{
deptList.Add(new SelectListItem { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString() });
}*/
}
ViewBag.deptList = deptList;
var setting = cacheQ.GetValue_Parameter("EarlyWarningSetting");
var setObject = new EarlyWarningSetting();
if (!string.IsNullOrWhiteSpace(setting))
{
setObject = JsonConvert.DeserializeObject<EarlyWarningSetting>(setting);
}
EarlyWarningUser temp = new EarlyWarningUser()
{
AppId = setObject.AppId,
CropId = setObject.Cropid,
CropName = setObject?.CropName
};
model.AppId = setObject.AppId;
model.CropId = setObject.Cropid;
model.CropName = setObject?.CropName;
return View(model);
}
[HttpGet]
public JsonResult DeleteWarnUser(string code)
{
_wxWorkaccount.DeleteWarnUser(code);
return Json(new { result = true, message = "删除成功!" }, JsonRequestBehavior.AllowGet);
}
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_员工日常工作报表, InitToolBar.CONST_Other3)]
public ActionResult AddWarnUser()
{
var url = cacheQ.GetValue_Parameter("Core_ZxdService_WebApi");
ViewBag.webapi = url;
ViewBag.Eid = Eid;
var line = _bussinessLies.GetBusinessLineByRoot(UserId);
List<SelectListItem> deptList = new List<SelectListItem>();
foreach (var item in line)
{
deptList.Add(new SelectListItem { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString() });
}
ViewBag.deptList = deptList;
var setting = cacheQ.GetValue_Parameter("EarlyWarningSetting");
var setObject = new EarlyWarningSetting();
if (!string.IsNullOrWhiteSpace(setting))
{
setObject = JsonConvert.DeserializeObject<EarlyWarningSetting>(setting);
}
EarlyWarningUser temp = new EarlyWarningUser()
{
AppId = setObject.AppId,
CropId = setObject.Cropid,
CropName = setObject?.CropName
};
return View(temp);
}
#endregion
#region 3
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_员工日常工作报表)]
public ActionResult UserWorkReport3()
{
string tableId = "tablist";
Table tab = new Table(tableId);
tab.isFloatHead = true;
Pager pager = new Pager() { page = 1, rows = 1000 };
tab.AddHeadCol("uname", "", "客服");
tab.AddHeadCol("gname", "", "组别");
int x = 8;
tab.AddHeadCol("wx_total", "", "加微数", true);
x++;
tab.AddHeadCol("wx_total_re_dep", "", "加微去重(部门去重)", 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("reg_total_pc", "", "PC注册人数", true);
x++;
tab.AddHeadCol("reg_rate_pc", "", "PC注册率", true);
x++;
tab.AddHeadCol("reg_total_app", "", "APP注册人数", true);
x++;
tab.AddHeadCol("reg_rate_app", "", "APP注册率", true);
x++;
tab.AddHeadCol("deal_total", "", "成交人数", true);
x++;
tab.AddHeadCol("deal_rate", "", "成交率", true);
x++;
tab.AddHeadCol("deal_total_m0", "", "当月成交人数", 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, string 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.GetUserComBoSSO(deptId, groupId, userId);
userIdlist = users.Select(m => m.UserId).ToList();
if (string.IsNullOrEmpty(pager.order))
{
pager.order = "desc";
pager.sort = "wx_amount";
}
//获取当前登录用户的渠道段
string deptid = "";//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);
var deptIds = users.GroupBy(m => m.DeptId)
.Where(m=>m.Key!=null)
.Select(m => Convert.ToDecimal(m.Key)).ToList();
var line = _bussinessLies.GetBusinessLineByAnyUser(deptIds);
var deptidList = deptInfos.Where(n => line.Select(m=>m.COMPANYCODE).Contains(n.DeptCode));
if (deptidList.Any()) {
deptid = string.Join(",", deptidList.Select(m=>m.DeptId));
}
else {
deptid = 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);
table.AddCol(item.WX_TOTAL_RE_DEP);
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.REG_TOTAL_PC);
table.AddCol($"{item.REG_RATE_PC.ToString("f2")}%");
table.AddCol(item.REG_TOTAL_APP);
table.AddCol($"{item.REG_RATE_APP.ToString("f2")}%");
table.AddCol(item.DEAL_TOTAL);
table.AddCol($"{item.DEAL_RATE.ToString("f2")}%");
table.AddCol(item.DEAL_TOTAL_M0);
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, string 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.GetUserComBoSSO(deptId, groupId, userId);
userIdlist = users.Select(m => m.UserId).ToList();
if (string.IsNullOrEmpty(pager.order))
{
pager.order = "desc";
pager.sort = "wx_amount";
}
//获取当前登录用户的渠道段
string deptid = "";//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);
var deptIds = users.GroupBy(m => m.DeptId)
.Where(m => m.Key != null)
.Select(m => Convert.ToDecimal(m.Key)).ToList();
var line = _bussinessLies.GetBusinessLineByAnyUser(deptIds);
var deptidList = deptInfos.Where(n => line.Select(m => m.COMPANYCODE).Contains(n.DeptCode));
if (deptidList.Any())
{
deptid = string.Join(",", deptidList.Select(m => m.DeptId));
}
else
{
deptid = 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; }
}
public class SearchEmployeeModel
{
public int Count { get; set; }
public int NotCount { get; set; }
public string NotInPeople { get; set; }
public List<EmployeeModel> EmployeeModels { get; set; } = new List<EmployeeModel>();
}
public class EmployeeModel
{
public decimal Eid { get; set; }
public decimal Pkid { get; set; }
public string Uname { get; set; }
public string DeptName { get; set; }
}
}