ComplianceServer/oldcode/WEB/Controllers/WeiXin/AuditPerformanceByGrouperTh...

464 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.Wx;
using WX.CRM.Model.Entity;
using WX.CRM.WebHelper;
namespace WX.CRM.WEB.Controllers.WeiXin
{
public class AuditPerformanceByGrouperThreeController : BaseController
{
private readonly IWX_BALANCESALEGROUPERAUDIT3 _balancesalegrouperaudit;
public AuditPerformanceByGrouperThreeController(IWX_BALANCESALEGROUPERAUDIT3 balancesalegrouperaudit)
{
_balancesalegrouperaudit = balancesalegrouperaudit;
}
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_主管业绩确认)]
[AuthorizeSession(HasRight = false)]
public ActionResult Index()
{
try
{
ToolBar tb = new ToolBar();
string[] balance = new ToolButtonView().ToolButtonRight(InitRights., userRightId);
tb.AllowButton(balance);
tb.AddOtherButton("Other1", "导出", "icon-export", "BtnExportAll_Click", true);
tb.AddOtherButton("Other3", "批量确认", "icon-check", "", true);
ViewBag.ToolBar = tb;
Table tab = new Table("tablist1");
tab.AddHiddenHeadCol("pkid", "ID");
tab.AddHiddenHeadCol("balancebatchid", "batchid");
tab.AddHeadCol("month", "", "结算年月");
//tab.AddHeadCol("ctime", "", "结算时间");
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("status", "", "确认状态");
tab.AddHiddenHeadCol("audittime", "确认时间");
tab.AddHiddenHeadCol("auditbyusername", "确认人");
tab.AddHiddenHeadCol("remark", "确认说明");
tab.AddHeadRow();
Table tab2 = new Table("tablist2");
tab2.AddHiddenHeadCol("pkid", "ID");
tab2.AddHiddenHeadCol("balancebatchid", "batchid");
tab2.AddHeadCol("month", "", "结算年月");
//tab2.AddHeadCol("ctime", "", "结算时间");
tab2.AddHeadCol("eid", "", "工号");
tab2.AddHeadCol("uname", "", "姓名");
tab2.AddHeadCol("gname", "", "组别");
tab2.AddHeadCol("leadertype", "", "类型");
tab2.AddHeadCol("isdismiss", "", "在/离职");
//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.AddHeadCol("status", "", "确认状态");
tab2.AddHiddenHeadCol("audittime", "确认时间");
tab2.AddHiddenHeadCol("auditbyusername", "确认人");
tab2.AddHiddenHeadCol("remark", "确认说明");
tab2.AddHeadRow();
ViewBag.RptList = tab.GetTable();
ViewBag.RptList2 = 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 = false)]
public JsonResult Index(decimal? groupId, string balanceCode, string status, string columns)
{
try
{
decimal[] g = new decimal[2];
//if (groupId.HasValue)
//{
// groupId = userGroupId;
//}
g[0] = userGroupId;
if (Eid == 6091)
{
g[1] = 1327115322;
}
var roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
DateTime? mcode = null;
if (!string.IsNullOrEmpty(balanceCode))
{
balanceCode = balanceCode + "-01";
mcode = DateTime.Parse(balanceCode);
}
Table table = new Table(columns, true);
var list = (roleCodes.Contains("[CW]") || roleCodes.Contains("[SDZJ]")) ? _balancesalegrouperaudit.GetAutitList(null, mcode, status, null).Where(p => p.TYPE == 1) : _balancesalegrouperaudit.GetAutitList(g, mcode, status, UserId).Where(p => p.TYPE == 1);
decimal batchId = 0;
if (list.Any())
batchId = (from p in list select p.BALANCEBATCHID).Max();
list = list.Where(p => p.BALANCEBATCHID == batchId);
foreach (var item in list)
{
table.AddHiddenCol(item.PKID);
table.AddHiddenCol(item.BALANCEBATCHID);
table.AddCol(item.MONTH.ToString("yyyy-MM"));
//table.AddCol(item.CTIME);
table.AddCol(item.EID);
table.AddCol(item.UNAME);
table.AddCol(item.GNAME);
table.AddCol(item.LEADERTYPE.HasValue ? item.LEADERTYPE < 10 ? "主任" : "经理" : "");
table.AddCol(item.ISDISMISS.HasValue ? 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.HasValue && 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);
//table.AddCol(item.TUIKUAN);
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, mcode, 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(string.Format("<a href='javascript:void(0)' onclick='Show2(\"{1}\",\"{2}\",\"{3}\")'>{0}</a>", item.STATUS, item.AUDITTIME.HasValue ? item.AUDITTIME.Value.ToShortDateString() : "", item.AUDITBYUSERNAME, item.REMARK));
table.AddHiddenCol(item.AUDITTIME.HasValue ? item.AUDITTIME.Value.ToShortDateString() : "");
table.AddHiddenCol(item.AUDITBYUSERNAME);
table.AddHiddenCol(item.REMARK);
table.AddRow();
}
var json = new
{
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error("AuditPerformanceByUserController:Index" + ex.Message + ex.StackTrace);
return JsonHandler.ManageMessage(ex.Message, false);
}
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_主管业绩确认)]
[AuthorizeSession(HasRight = false)]
public JsonResult Index2(decimal? groupId, string balanceCode, string status, string columns)
{
try
{
decimal[] g = new decimal[2];
//if (groupId.HasValue)
//{
// groupId = userGroupId;
//}
g[0] = userGroupId;
if (Eid == 6091)
{
g[1] = 1327115322;
}
var roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
DateTime? mcode = null;
if (!string.IsNullOrEmpty(balanceCode))
{
balanceCode = balanceCode + "-01";
mcode = DateTime.Parse(balanceCode);
}
Table table = new Table(columns, true);
IEnumerable<WX_BALANCESALEGROUPERAUDIT3> list;
if (roleCodes.Contains("CW") || roleCodes.Contains("SDZJ"))
list = _balancesalegrouperaudit.GetAutitList(null, mcode, status, null).Where(p => p.TYPE == 2);
else
list = _balancesalegrouperaudit.GetAutitList(g, mcode, status, UserId).Where(p => p.TYPE == 2);
var batchId = (from p in list select p.BALANCEBATCHID).Max();
list = list.Where(p => p.BALANCEBATCHID == batchId);
foreach (var item in list)
{
table.AddHiddenCol(item.PKID);
table.AddHiddenCol(item.BALANCEBATCHID);
table.AddCol(item.MONTH.ToString("yyyy-MM"));
//table.AddCol(item.CTIME);
table.AddCol(item.EID);
table.AddCol(item.UNAME);
table.AddCol(item.GNAME);
table.AddCol(item.LEADERTYPE.HasValue ? item.LEADERTYPE < 10 ? "主任" : "经理" : "");
table.AddCol(item.ISDISMISS.HasValue ? string.Format("{0}", item.ISDISMISS.Value == 1 ? "<span style='color:red'>离职</span>" : "在职") : "未知");
//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.AddCol(string.Format("<a href='javascript:void(0)' onclick='Show2(\"{1}\",\"{2}\",\"{3}\")'>{0}</a>", item.STATUS, item.AUDITTIME.HasValue ? item.AUDITTIME.Value.ToShortDateString() : "", item.AUDITBYUSERNAME, item.REMARK));
table.AddHiddenCol(item.AUDITTIME.HasValue ? item.AUDITTIME.Value.ToShortDateString() : "");
table.AddHiddenCol(item.AUDITBYUSERNAME);
table.AddHiddenCol(item.REMARK);
table.AddRow();
}
var json = new
{
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error("AuditPerformanceByUserController:Index" + ex.Message + ex.StackTrace);
return JsonHandler.ManageMessage(ex.Message, false);
}
}
[AuthorizeRedirect(Roles = InitRights.CONST_主管业绩确认)]
[AuthorizeSession(HasRight = false)]
public FileResult Export(decimal? groupId, string balanceCode, string monStatus)
{
DateTime? mcode = null;
if (!string.IsNullOrEmpty(balanceCode))
{
balanceCode = balanceCode + "-01";
mcode = DateTime.Parse(balanceCode);
}
decimal[] g = new decimal[2];
//if (groupId.HasValue)
//{
// groupId = userGroupId;
//}
g[0] = userGroupId;
if (Eid == 6091)
{
g[1] = 1327115322;
}
string checkedFilds = PageRequest.GetQueryString("checkedFilds");
string checkedTitle = PageRequest.GetQueryString("checkedTitles");
var roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
List<WX_BALANCESALEGROUPERAUDIT3> list;
if (roleCodes.Contains("CW") || roleCodes.Contains("[SDZJ]"))
list = _balancesalegrouperaudit.GetAutitList(null, mcode, monStatus, null).Where(p => p.TYPE == 1).ToList();
else
list = _balancesalegrouperaudit.GetAutitList(g, mcode, monStatus, UserId).Where(p => p.TYPE == 1).ToList();
var export = new List<WX_BALANCESALEGROUPERAUDIT_EXPORT>();
foreach (var item in list)
{
var info = new WX_BALANCESALEGROUPERAUDIT_EXPORT()
{
MONTH = item.MONTH,
EID = item.EID,
UNAME = item.UNAME,
GNAME = item.GNAME,
ISDISMISS = item.ISDISMISS.GetValueOrDefault(0) == 1 ? "离职" : "在职",
TOUSU = item.TOUSU.GetValueOrDefault(0),
CHUFA = item.CHUFA.GetValueOrDefault(0),
CHUQIN = item.CHUQIN.GetValueOrDefault(0) + "%",
WORKDAY = item.WORKDAY.GetValueOrDefault(0),
DIXING = item.DIXING,
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,
DEDUCTIONS = item.DEDUCTIONS.GetValueOrDefault(0),
REWARD = item.REWARD.GetValueOrDefault(0),
STATUS = item.STATUS,
AUDITBYUSERNAME = item.AUDITBYUSERNAME,
AUDITTIME = item.AUDITTIME,
REMARK = item.REMARK
};
export.Add(info);
}
return File(ExcelHelper.ExportListModelToExcel<WX_BALANCESALEGROUPERAUDIT_EXPORT>(export, "员工业绩确认", 60000, checkedFilds, checkedTitle, null), "application/ms-excel", PageRequest.GetDlownLoadName("员工业绩确认.xls"));
}
/// <summary>
/// /*确认业绩*/
/// </summary>
/// <returns></returns>
[AuthorizeSession(HasRight = false)]
public JsonResult GetAuditPerformance()
{
try
{
string pkid = Request["PKID"];
string sta = Request["PSTATUS"];
string remark = Request["REMARK"];
string _eid = Request["EID"];
decimal _pkid = 0;
int _sta = 0;
if (!string.IsNullOrEmpty(pkid))
_pkid = decimal.Parse(pkid);
if (!string.IsNullOrEmpty(sta))
_sta = int.Parse(sta);
if (_eid != InnerUserHelper.Instance.GetEid(UserId))
return Json(new { result = 1, remark = "只能确认自已的业绩!" }, JsonRequestBehavior.AllowGet);
_balancesalegrouperaudit.AuditPerformanceGrouper(_pkid, _sta, remark, UserId, UserName);
var lis = new { result = 1, remark = "确认成功!" };
return Json(lis, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
var lis = new { result = 0, remark = ex.Message };
return Json(lis, JsonRequestBehavior.AllowGet);
}
}
/// <summary>
/// /*批量确认业绩*/
/// </summary>
/// <returns></returns>
[AuthorizeSession(HasRight = false)]
public JsonResult BatchAuditPerformance()
{
try
{
string balanceCode = Request["balanceCode"];
DateTime _balanceCode = DateTime.Now;
if (!string.IsNullOrEmpty(balanceCode))
{
_balanceCode = DateTime.Parse(balanceCode);
}
_balancesalegrouperaudit.AuditBatchPerformanceGrouper(_balanceCode, UserId, UserName);
var lis = new { result = 1, remark = "批量确认成功!" };
return Json(lis, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
var lis = new { result = 0, remark = ex.Message };
return Json(lis, JsonRequestBehavior.AllowGet);
}
}
public class WX_BALANCESALEGROUPERAUDIT_EXPORT
{
public decimal PKID { get; set; }
public decimal INNERUSERID { get; set; }
public decimal EID { get; set; }
public string UNAME { get; set; }
public decimal? GID { get; set; }
public string GNAME { 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 YINGSHOU { get; set; }
public decimal YULIU { get; set; }
public decimal FANHUAN { get; set; }
public decimal TUIKUAN { get; set; }
public decimal SHISHOU { get; set; }
public DateTime CTIME { get; set; }
public DateTime MONTH { get; set; }
public decimal BALANCEBATCHID { get; set; }
public string STATUS { get; set; }
public DateTime? AUDITTIME { get; set; }
public decimal? AUDITBYUSERID { get; set; }
public string AUDITBYUSERNAME { get; set; }
public string REMARK { get; set; }
public decimal ALLPERFORMANCEAMOUNT { get; set; }
public decimal? TOUSU { get; set; }
public decimal? CHUFA { get; set; }
public string CHUQIN { get; set; }
public decimal TYPE { get; set; }
public decimal? WORKDAY { get; set; }
public decimal? DEDUCTIONS { get; set; }
public decimal? REWARD { get; set; }
public string ISDISMISS { get; set; }
public decimal? ORDERRATE { get; set; }
public decimal? CHUQINGROUPRATE { get; set; }
public decimal? DISMISSRATE { get; set; }
public decimal? ORDERCOMMISSIONRATE { get; set; }
public decimal? CHUQINGROUPCOMMISSIONRATE { get; set; }
public decimal? DISMISSCOMMISSIONRATE { get; set; }
public decimal LEADERTYPE { get; set; }
public decimal UserPerformanceAmount { get; set; }
public decimal shishou2 { get; set; }
public decimal HasCertificate { get; set; }
public decimal PERFORMANCEAMOUNT2 { get; set; }
}
}
}