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 ? "离职" : "在职") : "未知"); 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("{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); //table.AddCol(item.TUIKUAN); if (item.TUIKUAN <= 0) table.AddCol(item.TUIKUAN); else table.AddCol(string.Format("{1}", 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("{0}", 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 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 ? "离职" : "在职") : "未知"); //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("{0}", 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 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(); 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(export, "员工业绩确认", 60000, checkedFilds, checkedTitle, null), "application/ms-excel", PageRequest.GetDlownLoadName("员工业绩确认.xls")); } /// /// /*确认业绩*/ /// /// [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); } } /// /// /*批量确认业绩*/ /// /// [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; } } } }