TG.WXCRM.V4/WEB/Controllers/WeiXin/MonthSettlementGrouperContr...

447 lines
24 KiB
C#

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<WX_BALANCESALEGROUPER>();
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 ? "<span style='color:red'>离职</span>" : "在职"));
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("<a href='javascirpt:void(0)' onclick='Show({1},{2},{3},{4},{5},{6})'>{0}</a>", 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("<a href='javascript:void(0)' onclick='GetRefundInfo({0},\"{2}\",{3});'>{1}</a>", 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<WX_BALANCESALEGROUPER>();
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 ? "<span style='color:red'>离职</span>" : "在职"));
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<WX_BALANCESALEGROUPER>();
list = list.OrderBy(p => p.EID).ToList();
var complianceList = _BasCompliance.GetList();
var export = new List<SaleUserWageExport>();
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<SaleUserWageExport>(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<WX_BALANCESALEGROUPER>();
list = list.OrderBy(p => p.EID).ToList();
var export = new List<SaleUserWageExport2>();
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<SaleUserWageExport2>(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; }
}
}
}