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 AuditPerformanceByUserController : BaseController { private readonly IWX_BALANCESALEUSERAUDIT _balancesaleuseraudit; private readonly IWX_BALANCESALEUSER _balancesaleuser; public AuditPerformanceByUserController(IWX_BALANCESALEUSERAUDIT balancesaleuseraudit, IWX_BALANCESALEUSER balancesaleuser) { _balancesaleuseraudit = balancesaleuseraudit; _balancesaleuser = balancesaleuser; } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_员工业绩确认)] [AuthorizeSession(HasRight = false)] public ActionResult Index() { 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; string tableId = "tablist"; Table tab = new Table(tableId); 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("isdismiss", "", "在/离职"); tab.AddHeadCol("tousu", "", "投诉"); tab.AddHeadCol("chufa", "", "处罚"); tab.AddHeadCol("chuqin", "", "出勤率"); tab.AddHeadCol("workday", "", "出勤天数"); tab.AddHeadCol("dixing", "", "底薪"); tab.AddHeadCol("PerformanceAmount", "", "业绩额"); tab.AddHeadCol("commissionratio", "", "业绩额提成比例"); tab.AddHeadCol("OrderCount", "", "单量"); tab.AddHeadCol("ordercountratio", "", "单量提成比例"); 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("status", "", "确认状态"); tab.AddHiddenHeadCol("audittime", "确认时间"); tab.AddHiddenHeadCol("auditbyusername", "确认人"); tab.AddHiddenHeadCol("remark", "确认说明"); tab.AddHeadRow(); ViewBag.RptList = tab.GetHead(); //ViewBag.inneruserid = UserId; //ViewBag.userGroupId = userGroupId; //ViewBag.saleDeptId = saleDeptId; //ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId); return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_员工业绩确认)] [AuthorizeSession(HasRight = false)] public JsonResult Index(string saleDeptId, string groupId, string userId, string balanceCode, string status, string columns) { try { var roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId); DateTime? mcode = null; decimal uId = UserId; if (!string.IsNullOrEmpty(userId)) { decimal.TryParse(userId, out uId); } if (!string.IsNullOrEmpty(balanceCode)) { balanceCode = balanceCode + "-01"; mcode = DateTime.Parse(balanceCode); } Table table = new Table(columns, true); IList list; if (roleCodes.Contains("[CW]") || roleCodes.Contains("[ZJZL]") || roleCodes.Contains("[ZJ]")) list = _balancesaleuseraudit.GetAutitList(string.Empty, 0, mcode, status); else list = _balancesaleuseraudit.GetAutitList(groupId, uId, mcode, status); decimal batchId = 0; if (list.Any()) batchId = (from p in list select p.BALANCEBATCHID).Max(); list = list.Where(p => p.BALANCEBATCHID == batchId).ToList(); var month = DateTime.Parse("2017-08-01"); foreach (var item in list) { decimal gangwei = 0; decimal zhengshu = 0; var dixing = item.DIXING; //这两个人考证通过,过程里面直接在底薪+200,所以这里需要-200 //if (item.EID == 6039 || item.EID == 6063) //{ // dixing = dixing - 200; // zhengshu = 200; //} //if (dixing >= 2400 && dixing < 2600) // gangwei = 200; //else if (dixing >= 2600 && dixing < 2800) // gangwei = 400; //else if (dixing >= 2800) // gangwei = 600; 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.ISDISMISS.HasValue ? string.Format("{0}", item.ISDISMISS.Value == 1 ? "离职" : "在职") : "未知"); table.AddCol(item.TOUSU); table.AddCol(item.CHUFA); table.AddCol(item.CHUQIN + "%"); table.AddCol(item.WORKDAY); table.AddCol(item.DIXING); //table.AddCol(string.Format("{1}", gangwei, item.DIXING, zhengshu)); 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); if (item.TUIKUAN <= 0) table.AddCol(item.TUIKUAN); else table.AddCol(string.Format("{1}", item.INNERUSERID, item.TUIKUAN, mcode)); table.AddCol(item.DEDUCTIONS); table.AddCol(item.REWARD); table.AddCol(item.SHISHOU); 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); } } [AuthorizeSession(HasRight = false)] public FileResult Export(string saleDeptId, string groupId, string userId, string balanceCode, string status) { var roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId); DateTime? mcode = null; decimal uId = UserId; if (!string.IsNullOrEmpty(userId)) { decimal.TryParse(userId, out uId); } if (!string.IsNullOrEmpty(balanceCode)) { balanceCode = balanceCode + "-01"; mcode = DateTime.Parse(balanceCode); } string checkedFilds = PageRequest.GetQueryString("checkedFilds"); string checkedTitle = PageRequest.GetQueryString("checkedTitles"); IList list; if (roleCodes.Contains("CW") || roleCodes.Contains("ZJZL")) list = _balancesaleuseraudit.GetAutitList(string.Empty, 0, mcode, status); else list = _balancesaleuseraudit.GetAutitList(string.Empty, uId, mcode, status); var batchId = (from p in list select p.BALANCEBATCHID).Max(); list = list.Where(p => p.BALANCEBATCHID == batchId).ToList(); var export = new List(); foreach (var item in list) { var info = new WX_BALANCESALEUSERAUDITEXPORT() { 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); /*确认业绩*/ _balancesaleuseraudit.AuditPerformanceUser(_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 + "-01"); } /*批量确认业绩*/ _balancesaleuseraudit.AuditBatchPerformanceUser(_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); } } private class WX_BALANCESALEUSERAUDITEXPORT { public DateTime month { get; set; } 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? workday { 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? deductions { get; set; } public decimal? reward { get; set; } public decimal? shishou { get; set; } public string status { get; set; } public DateTime? audittime { get; set; } public string auditbyusername { get; set; } public string remark { get; set; } public string isdismiss { get; set; } } } }