using System; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using WX.CRM.Common; using WX.CRM.IBLL.Base; using WX.CRM.IBLL.Wx; using WX.CRM.Model.Entity; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.WeiXin { public class MonthSettlementGrouperController : BaseController { private readonly IWX_BALANCE _balance; private readonly IBAS_COMPLIANCE _BasCompliance; private readonly IBAS_SHEBAO _basShebao; public MonthSettlementGrouperController(IWX_BALANCE balance, IBAS_COMPLIANCE _basCompliance, IBAS_SHEBAO basShebao) { _balance = balance; _BasCompliance = _basCompliance; _basShebao = basShebao; } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_主管工资查询)] [AuthorizeSession(HasRight = true)] public ActionResult Index() { ToolBar tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.订单分成导出, userRightId); tool.AllowButton(toolbtn); tool.AddOtherButton("Other2", "导出", "icon-export", "ExportAllPage_Click", true); ViewBag.ToolBar = tool; try { Table tab = new Table("tablist1"); tab.AddHeadCol("eid", "", "工号"); tab.AddHeadCol("uname", "", "姓名"); tab.AddHeadCol("gname", "", "组别"); tab.AddHeadCol("leadertype", "", "类型"); tab.AddHeadCol("isdismiss", "", "在/离职"); tab.AddHeadCol("workday", "", "出勤天数"); tab.AddHeadCol("dixing", "", "底薪"); tab.AddHeadCol("PerformanceAmount", "", "业绩额"); tab.AddHeadCol("UserPerformanceAmount", "", "个人业绩"); tab.AddHeadCol("PerformanceAmount2", "", "计算业绩"); tab.AddHeadCol("commissionratio", "", "业绩额提成比例"); tab.AddHeadCol("OrderCount", "", "单量"); tab.AddHeadCol("ordercountratio", "", "单量提成比例"); tab.AddHiddenHeadCol("orderRate", "出单人数"); tab.AddHiddenHeadCol("orderCommissionRate", "出单提成比例"); tab.AddHiddenHeadCol("chuqinGroupRate", "缺勤人数"); tab.AddHiddenHeadCol("chuqinGroupCommissionRate", "全勤提成比例"); tab.AddHiddenHeadCol("dismissRate", "离职人数"); tab.AddHiddenHeadCol("dismissCommissionRate", "无离职提成比例"); tab.AddHeadCol("allratio", "", "总比例"); tab.AddHeadCol("AllPerformanceAmount", "", "本月提成金额"); tab.AddHeadCol("yingshou", "", "本月应付金额"); tab.AddHeadCol("yuliu", "", "本月预留金额"); tab.AddHeadCol("fanhuan", "", "预留返还金额"); tab.AddHeadCol("tuikuan", "", "退款"); tab.AddHeadCol("deductions", "", "扣款缺勤"); tab.AddHeadCol("reward", "", "全勤"); tab.AddHeadCol("shishou", "", "本月实付金额"); tab.AddHeadCol("shishou2", "", "财务实付金额"); tab.AddHeadCol("hascertificate", "", "有证"); tab.AddHeadCol("compliance", "", "合规人员"); tab.AddHeadRow(); Table tab2 = new Table("tablist2"); tab2.AddHeadCol("eid", "", "工号"); tab2.AddHeadCol("uname", "", "姓名"); tab2.AddHeadCol("gname", "", "组别"); tab2.AddHeadCol("leadertype", "", "类型"); tab2.AddHeadCol("isdismiss", "", "在/离职"); tab2.AddHeadCol("tousu", "", "投诉"); tab2.AddHeadCol("chufa", "", "处罚"); tab2.AddHeadCol("chuqin", "", "出勤率"); //tab2.AddHeadCol("dixing", "", "底薪"); tab2.AddHeadCol("PerformanceAmount", "", "业绩额"); tab2.AddHeadCol("commissionratio", "", "业绩额提成比例"); tab2.AddHeadCol("OrderCount", "", "单量"); tab2.AddHeadCol("ordercountratio", "", "单量提成比例"); tab2.AddHeadCol("allratio", "", "总比例"); tab2.AddHeadCol("AllPerformanceAmount", "", "本月提成金额"); tab2.AddHeadCol("yingshou", "", "本月应付金额"); tab2.AddHeadCol("yuliu", "", "本月预留金额"); tab2.AddHeadCol("fanhuan", "", "预留返还金额"); tab2.AddHeadCol("tuikuan", "", "退款"); tab2.AddHeadCol("shishou", "", "本月实付金额"); tab2.AddHeadCol("shishou2", "", "财务实付金额"); tab2.AddHeadCol("hascertificate", "", "有证"); tab2.AddHeadRow(); ViewBag.gridTable = tab.GetTable(); ViewBag.gridTable2 = tab2.GetTable(); ViewBag.inneruserid = UserId; ViewBag.userGroupId = userGroupId; ViewBag.saleDeptId = saleDeptId; ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId); } catch (Exception ex) { LogHelper.Error(ex); } return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_主管工资查询)] [AuthorizeSession(HasRight = true)] public JsonResult Index(int year, int month, string columns) { try { var yearmonth = new DateTime(year, month, 1); var table = new Table(columns, true); var list = _balance.GetSaleGrouperWageQuery(yearmonth).Tables[0].ToList(); list = list.OrderBy(p => p.EID).ToList(); var complianceList = _BasCompliance.GetList(); var shebaoList = _basShebao.GetList(); foreach (var item in list) { var shebao = shebaoList.Any(p => p.EID == item.EID); table.AddCol(item.EID); table.AddCol(item.UNAME); table.AddCol(item.GNAME); table.AddCol(item.LEADERTYPE < 10 ? "主任" : "经理"); table.AddCol(string.Format("{0}", item.ISDISMISS.Value == 1 ? "离职" : "在职")); table.AddCol(item.WORKDAY); table.AddCol(item.DIXING); table.AddCol(item.PERFORMANCEAMOUNT); table.AddCol(item.UserPerformanceAmount); table.AddCol(item.PERFORMANCEAMOUNT - item.UserPerformanceAmount); table.AddCol(item.COMMISSIONRATIO + "%"); table.AddCol(item.ORDERCOUNT); table.AddCol(item.ORDERCOUNTRATIO + "%"); table.AddHiddenCol((item.ORDERRATE.HasValue ? item.ORDERRATE.Value : 0).ToString()); table.AddHiddenCol((item.ORDERCOMMISSIONRATE.HasValue ? item.ORDERCOMMISSIONRATE.Value : 0).ToString() + "%"); table.AddHiddenCol((item.CHUQINGROUPRATE.HasValue ? item.CHUQINGROUPRATE.Value : 0).ToString()); table.AddHiddenCol((item.CHUQINGROUPCOMMISSIONRATE.HasValue ? item.CHUQINGROUPCOMMISSIONRATE.Value : 0).ToString() + "%"); table.AddHiddenCol((item.DISMISSRATE.HasValue ? item.DISMISSRATE.Value : 0).ToString()); table.AddHiddenCol((item.DISMISSCOMMISSIONRATE.HasValue ? item.DISMISSCOMMISSIONRATE.Value : 0).ToString() + "%"); table.AddCol(item.LEADERTYPE < 10 ? string.Format("{0}", item.ALLRATIO + "%", item.ORDERRATE.HasValue ? item.ORDERRATE.Value : 0, item.ORDERCOMMISSIONRATE.HasValue ? item.ORDERCOMMISSIONRATE.Value : 0, item.CHUQINGROUPRATE.HasValue ? item.CHUQINGROUPRATE.Value : 0, item.CHUQINGROUPCOMMISSIONRATE.HasValue ? item.CHUQINGROUPCOMMISSIONRATE.Value : 0, item.DISMISSRATE.HasValue ? item.DISMISSRATE.Value : 0, item.DISMISSCOMMISSIONRATE.HasValue ? item.DISMISSCOMMISSIONRATE.Value : 0) : item.ALLRATIO + "%"); table.AddCol(item.ALLPERFORMANCEAMOUNT); table.AddCol(item.YINGSHOU); table.AddCol(item.YULIU); table.AddCol(item.FANHUAN); if (item.TUIKUAN <= 0) table.AddCol(item.TUIKUAN); else table.AddCol(string.Format("{1}", item.GID, item.TUIKUAN, yearmonth, item.EID)); table.AddCol(item.DEDUCTIONS); table.AddCol(item.REWARD); table.AddCol(item.SHISHOU); table.AddCol(item.shishou2); table.AddCol(item.HasCertificate == 1 ? "有" : "无"); table.AddCol(complianceList.Any(p => p.EID == item.EID) ? "是" + (shebao ? "(社保)" : string.Empty) : "否" + (shebao ? "(社保)" : string.Empty)); table.AddRow(); } table.AddCol("合计:"); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(list.Sum(p => p.DIXING)); table.AddCol(list.Sum(p => p.PERFORMANCEAMOUNT)); table.AddCol(list.Sum(p => p.UserPerformanceAmount)); table.AddCol(list.Sum(p => p.PERFORMANCEAMOUNT - p.UserPerformanceAmount)); table.AddCol(""); table.AddCol(list.Sum(p => p.ORDERCOUNT)); table.AddCol(""); table.AddHiddenCol(""); table.AddHiddenCol(""); table.AddHiddenCol(""); table.AddHiddenCol(""); table.AddHiddenCol(""); table.AddHiddenCol(""); table.AddCol(""); table.AddCol(list.Sum(p => p.ALLPERFORMANCEAMOUNT)); table.AddCol(list.Sum(p => p.YINGSHOU)); table.AddCol(list.Sum(p => p.YULIU)); table.AddCol(list.Sum(p => p.FANHUAN)); table.AddCol(list.Sum(p => p.TUIKUAN)); table.AddCol(list.Sum(p => p.DEDUCTIONS)); table.AddCol(list.Sum(p => p.REWARD)); table.AddCol(list.Sum(p => p.SHISHOU)); table.AddCol(list.Sum(p => p.shishou2)); table.AddCol(""); table.AddCol(""); table.AddRow(); var json = new { rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } catch (Exception ex) { LogHelper.Error("MonthSettlementController/Index:" + ex.Message + ex.StackTrace); return JsonHandler.ManageMessage(ex.Message, false); } } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_主管工资查询)] [AuthorizeSession(HasRight = true)] public JsonResult Index2(string year, string month, string columns) { try { var yearmonth = new DateTime(int.Parse(year), int.Parse(month), 01); var table = new Table(columns, true); var list = _balance.GetSaleGrouperSiglenWageQuery(yearmonth).Tables[0].ToList(); list = list.OrderBy(p => p.EID).ToList(); foreach (var item in list) { table.AddCol(item.EID); table.AddCol(item.UNAME); table.AddCol(item.GNAME); table.AddCol(item.LEADERTYPE < 10 ? "主任" : "经理"); table.AddCol(string.Format("{0}", item.ISDISMISS.Value == 1 ? "离职" : "在职")); table.AddCol(item.TOUSU); table.AddCol(item.CHUFA); table.AddCol(item.CHUQIN + "%"); //table.AddCol(item.DIXING); table.AddCol(item.PERFORMANCEAMOUNT); table.AddCol(item.COMMISSIONRATIO + "%"); table.AddCol(item.ORDERCOUNT); table.AddCol(item.ORDERCOUNTRATIO + "%"); table.AddCol(item.ALLRATIO + "%"); table.AddCol(item.ALLPERFORMANCEAMOUNT); table.AddCol(item.YINGSHOU); table.AddCol(item.YULIU); table.AddCol(item.FANHUAN); table.AddCol(item.TUIKUAN); table.AddCol(item.SHISHOU); table.AddCol(item.shishou2); table.AddCol(item.HasCertificate == 1 ? "有" : "无"); table.AddRow(); } table.AddCol("合计:"); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(list.Sum(p => p.PERFORMANCEAMOUNT)); table.AddCol(""); table.AddCol(list.Sum(p => p.ORDERCOUNT)); table.AddCol(""); table.AddCol(""); table.AddCol(list.Sum(p => p.ALLPERFORMANCEAMOUNT)); table.AddCol(list.Sum(p => p.YINGSHOU)); table.AddCol(list.Sum(p => p.YULIU)); table.AddCol(list.Sum(p => p.FANHUAN)); table.AddCol(list.Sum(p => p.TUIKUAN)); table.AddCol(list.Sum(p => p.SHISHOU)); table.AddCol(list.Sum(p => p.shishou2)); table.AddCol(""); table.AddRow(); var json = new { rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } catch (Exception ex) { LogHelper.Error("MonthSettlementController/Index:" + ex.Message + ex.StackTrace); return JsonHandler.ManageMessage(ex.Message, false); } } [AuthorizeRedirect(Roles = InitRights.CONST_主管工资查询)] [AuthorizeSession(HasRight = true)] public FileResult Export(string year, string month) { var yearmonth = new DateTime(int.Parse(year), int.Parse(month), 01); string checkedFilds = Server.UrlDecode(Request.Cookies["checkedFilds"].Value); string checkedTitle = Server.UrlDecode(Request.Cookies["checkedTitles"].Value); Request.Cookies.Remove("checkedFilds");//用完后删除cookies Request.Cookies.Remove("checkedTitles");//用完后删除cookies var list = _balance.GetSaleGrouperWageQuery(yearmonth).Tables[0].ToList(); list = list.OrderBy(p => p.EID).ToList(); var complianceList = _BasCompliance.GetList(); var export = new List(); foreach (var item in list) { var info = new SaleUserWageExport { eid = item.EID, uname = item.UNAME, gname = item.GNAME, leadertype = item.LEADERTYPE < 10 ? "主任" : "经理", isdismiss = item.ISDISMISS.Value == 1 ? "离职" : "在职", tousu = item.TOUSU, chufa = item.CHUFA, chuqin = item.CHUQIN + "%", workday = item.WORKDAY.GetValueOrDefault(0), dixing = item.DIXING, PerformanceAmount = item.PERFORMANCEAMOUNT, UserPerformanceAmount = item.UserPerformanceAmount, PerformanceAmount2 = item.PERFORMANCEAMOUNT - item.UserPerformanceAmount, commissionratio = item.COMMISSIONRATIO.ToString() + "%", OrderCount = item.ORDERCOUNT, ordercountratio = item.ORDERCOUNTRATIO.ToString() + "%", allratio = item.ALLRATIO.ToString() + "%", AllPerformanceAmount = item.ALLPERFORMANCEAMOUNT, yingshou = item.YINGSHOU, yuliu = item.YULIU, fanhuan = item.FANHUAN, tuikuan = item.TUIKUAN, deductions = item.DEDUCTIONS.GetValueOrDefault(0), reward = item.REWARD.GetValueOrDefault(0), shishou = item.SHISHOU, shishou2 = item.shishou2, hascertificate = item.HasCertificate == 1 ? "有" : "无", compliance = complianceList.Any(p => p.EID == item.EID) ? "是" : "否", orderRate = (item.ORDERRATE.HasValue ? item.ORDERRATE.Value.ToString() : string.Empty) + "%", orderCommissionRate = (item.ORDERCOMMISSIONRATE.HasValue ? item.ORDERCOMMISSIONRATE.Value.ToString() : string.Empty) + "%", chuqinGroupRate = (item.CHUQINGROUPRATE.HasValue ? item.CHUQINGROUPRATE.Value.ToString() : string.Empty) + "%", chuqinGroupCommissionRate = (item.CHUQINGROUPCOMMISSIONRATE.HasValue ? item.CHUQINGROUPCOMMISSIONRATE.Value.ToString() : string.Empty) + "%", dismissRate = (item.DISMISSRATE.HasValue ? item.DISMISSRATE.Value.ToString() : string.Empty) + "%", dismissCommissionRate = (item.DISMISSCOMMISSIONRATE.HasValue ? item.DISMISSCOMMISSIONRATE.Value.ToString() : string.Empty) + "%" }; export.Add(info); } return File(ExcelHelper.ExportListModelToExcel(export, "组长工资实时报表", 60000, checkedFilds, checkedTitle, null), "application/ms-excel", PageRequest.GetDlownLoadName("组长工资实时报表.xls")); } [AuthorizeRedirect(Roles = InitRights.CONST_主管工资查询)] [AuthorizeSession(HasRight = true)] public FileResult Export2(string year, string month) { var yearmonth = new DateTime(int.Parse(year), int.Parse(month), 01); string checkedFilds = Server.UrlDecode(Request.Cookies["checkedFilds"].Value).Replace("[dixing]", "").Replace("[workday]", ""); string checkedTitle = Server.UrlDecode(Request.Cookies["checkedTitles"].Value).Replace("底薪,", "").Replace("出勤天数", ""); Request.Cookies.Remove("checkedFilds");//用完后删除cookies Request.Cookies.Remove("checkedTitles");//用完后删除cookies var list = _balance.GetSaleGrouperSiglenWageQuery(yearmonth).Tables[0].ToList(); list = list.OrderBy(p => p.EID).ToList(); var export = new List(); foreach (var item in list) { var info = new SaleUserWageExport2 { eid = item.EID, uname = item.UNAME, gname = item.GNAME, leadertype = item.LEADERTYPE < 10 ? "主任" : "经理", isdismiss = item.ISDISMISS.Value == 1 ? "离职" : "在职", tousu = item.TOUSU, chufa = item.CHUFA, chuqin = item.CHUQIN + "%", PerformanceAmount = item.PERFORMANCEAMOUNT, commissionratio = item.COMMISSIONRATIO.ToString() + "%", OrderCount = item.ORDERCOUNT, ordercountratio = item.ORDERCOUNTRATIO.ToString() + "%", allratio = item.ALLRATIO.ToString() + "%", AllPerformanceAmount = item.ALLPERFORMANCEAMOUNT, yingshou = item.YINGSHOU, yuliu = item.YULIU, fanhuan = item.FANHUAN, tuikuan = item.TUIKUAN, shishou = item.SHISHOU, shishou2 = item.shishou2, hascertificate = item.HasCertificate == 1 ? "有" : "无" }; export.Add(info); } return File(ExcelHelper.ExportListModelToExcel(export, "组长个人工资实时报表", 60000, checkedFilds, checkedTitle, null), "application/ms-excel", PageRequest.GetDlownLoadName("组长个人工资实时报表.xls")); } private class SaleUserWageExport { public decimal eid { get; set; } public string uname { get; set; } public string gname { get; set; } public decimal? tousu { get; set; } public decimal? chufa { get; set; } public string chuqin { get; set; } public decimal dixing { get; set; } public decimal PerformanceAmount { get; set; } public string commissionratio { get; set; } public decimal OrderCount { get; set; } public string ordercountratio { get; set; } public string allratio { get; set; } public decimal AllPerformanceAmount { get; set; } public decimal yingshou { get; set; } public decimal yuliu { get; set; } public decimal fanhuan { get; set; } public decimal tuikuan { get; set; } public decimal shishou { get; set; } public decimal workday { get; set; } public decimal deductions { get; set; } public decimal reward { get; set; } public string isdismiss { get; set; } public string compliance { get; set; } public string orderRate { get; set; } public string orderCommissionRate { get; set; } public string chuqinGroupRate { get; set; } public string chuqinGroupCommissionRate { get; set; } public string dismissRate { get; set; } public string dismissCommissionRate { get; set; } public string leadertype { get; set; } public decimal UserPerformanceAmount { get; set; } public decimal PerformanceAmount2 { get; set; } public decimal shishou2 { get; set; } public string hascertificate { get; set; } } private class SaleUserWageExport2 { public decimal eid { get; set; } public string uname { get; set; } public string gname { get; set; } public decimal? tousu { get; set; } public decimal? chufa { get; set; } public string chuqin { get; set; } public decimal PerformanceAmount { get; set; } public string commissionratio { get; set; } public decimal OrderCount { get; set; } public string ordercountratio { get; set; } public string allratio { get; set; } public decimal AllPerformanceAmount { get; set; } public decimal yingshou { get; set; } public decimal yuliu { get; set; } public decimal fanhuan { get; set; } public decimal tuikuan { get; set; } public decimal shishou { get; set; } public string isdismiss { get; set; } public string leadertype { get; set; } public decimal shishou2 { get; set; } public string hascertificate { get; set; } } } }