using BLL; using Model; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.Script.Serialization; using System.Web.SessionState; namespace FineUIPro.Web.common { /// /// main1 的摘要说明 /// public class main1 : IHttpHandler, IRequiresSessionState { public static Model.FCLDB db = Funs.DB; JavaScriptSerializer j = new JavaScriptSerializer(); private void ResponseError(HttpContext context) { // 出错了 context.Response.StatusCode = 500; context.Response.Write("Error occurred!"); } public void ProcessRequest(HttpContext context) { string strJson = string.Empty; string action = context.Request.Form["action"]; string Contractor = context.Request.Form["Contractor"] != null ? context.Request.Form["Contractor"].Trim() : ""; string FO_NO = context.Request.Form["FO_NO"] != null ? context.Request.Form["FO_NO"].Trim() : ""; if (action == "mainkpi") { string start = string.IsNullOrEmpty(context.Request.Form["startTime"]) ? DateTime.Now.AddYears(-1).ToString("yyyy-MM") + "-1" : context.Request.Form["startTime"].Replace("/", "-") + "-1"; string end = string.IsNullOrEmpty(context.Request.Form["endTime"]) ? DateTime.Now.ToString("yyyy-MM") + "-1" : context.Request.Form["endTime"].Replace("/", "-") + "-1"; MainKpi mKpi = new MainKpi(); //kpi1 string kpi1xAxis = string.Empty; string kpi1serieshze = string.Empty; string kpi1serieshzl = string.Empty; string kpi1DateEnd = "100"; //kpi2 string kpi2serieshze = string.Empty; string kpi2serieshzl = string.Empty; string kpi2series = string.Empty; //kpi3 string kpi3xAxis = string.Empty;//名称 string kpi3seriesSsr = string.Empty;//金额 string kpi3serieshzl = string.Empty;//利率 string kpi3DateEnd = "100";//显示占比 int sYear = int.Parse(start.Split('-')[0]); int sMonth = int.Parse(start.Split('-')[1]); int eYear = int.Parse(end.Split('-')[0]); int eMonth = int.Parse(end.Split('-')[1]); DateTime stDate = DateTime.Parse(start); DateTime enDate = LastDayOfMonth(DateTime.Parse(end)); int sumMonth = (eYear - sYear) * 12 + (eMonth - sMonth); if (sumMonth > 10) { kpi1DateEnd = (sumMonth > 10 && sumMonth < 20) ? "60" : (sumMonth > 20 && sumMonth < 30) ? "40" : sumMonth > 30 ? "30" : "20"; } //根据FoNo计算 var ContractFoNoList = Funs.DB.ContractorKpiView.Where(p => p.Contract_No == FO_NO).ToList(); //KPI2根据SES计算(因为DateMonth是string类型,lambda里面string类型无法进行>=和<=) var ContractSesDt = SQLHelper.GetDataTableRunText("SELECT Quotation as Hze,(case when Deduction>0 then Deduction/Quotation*100 else 0 end) as Hzl,SES from ContractorKpi0View where Contract_No='" + FO_NO + "' and DateMonth>='" + stDate.ToString("yyyy-MM") + "' and DateMonth<='" + enDate.ToString("yyyy-MM") + "'", new SqlParameter[0]); var ContractSesList = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(ContractSesDt)); //KPI3获取数据 var ConractDepDt = SQLHelper.GetDataTableRunText("SELECT Section,SUM(Net_Value) as NumVal,(case when SUM(Deduction)>0 then (SUM(Deduction)/SUM(Quotation)*100) else 0 end) as Rate from ContractorKpi0View as a where a.Contract_No='" + FO_NO + "' and a.DateMonth>='" + stDate.ToString("yyyy-MM") + "' and a.DateMonth<='" + enDate.ToString("yyyy-MM") + "' and isnull(Section,'')!='' group by a.Section ORDER BY Section asc", new SqlParameter[0]); var ContractDepList = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(ConractDepDt)); #region kpi1 for (DateTime dt = DateTime.Parse(start); dt <= DateTime.Parse(end); dt = dt.AddMonths(1)) { kpi1xAxis += string.IsNullOrEmpty(kpi1xAxis) ? dt.ToString("yyyy-MM") : "," + dt.ToString("yyyy-MM"); if (ContractFoNoList.Count > 0) { var kpiContractModel = ContractFoNoList.FirstOrDefault(p => p.DateMonth == dt.ToString("yyyy-MM")); if (kpiContractModel != null) { if (kpiContractModel.Deduction.Value < 0) { kpiContractModel.Deduction = 0; } if (decimal.Parse(kpiContractModel.Rate) < 0) kpiContractModel.Rate = "0"; kpi1serieshze += string.IsNullOrEmpty(kpi1serieshze) ? string.Format("{0:N}", kpiContractModel.Deduction.Value) : "," + string.Format("{0:N}", kpiContractModel.Deduction.Value); kpi1serieshzl += string.IsNullOrEmpty(kpi1serieshzl) ? decimal.Parse(kpiContractModel.Rate).ToString("0.##") : "," + decimal.Parse(kpiContractModel.Rate).ToString("0.##"); } else { kpi1serieshze += string.IsNullOrEmpty(kpi1serieshze) ? "0" : ",0"; kpi1serieshzl += string.IsNullOrEmpty(kpi1serieshzl) ? "0" : ",0"; } } else { kpi1serieshze += string.IsNullOrEmpty(kpi1serieshze) ? "0" : ",0"; kpi1serieshzl += string.IsNullOrEmpty(kpi1serieshzl) ? "0" : ",0"; } } #endregion #region kpi2 if (ContractSesList.Count > 0) { kpi2serieshze = string.Join(",", ContractSesList.Select(p => p.Hze).ToList()); kpi2serieshzl = string.Join(",", ContractSesList.Select(p => decimal.Parse(p.Hzl).ToString("0.##")).ToList()); kpi2series = string.Join(",", ContractSesList.Select(p => p.SES).ToList()); } #endregion #region KPI3 if (ContractDepList.Count > 0) { //名称 kpi3xAxis = string.Join(",", ContractDepList.Select(p => p.Section).ToList()); //金额 kpi3seriesSsr = string.Join(",", ContractDepList.Select(p => p.NumVal.ToString("0.##")).ToList()); //利率 kpi3serieshzl = string.Join(",", ContractDepList.Select(p => p.Rate.ToString("0.##")).ToList()); //显示占比 if (ContractDepList.Count > 10) { kpi3DateEnd = (ContractDepList.Count > 10 && ContractDepList.Count < 20) ? "60" : (ContractDepList.Count > 20 && ContractDepList.Count < 30) ? "40" : (ContractDepList.Count > 30 && ContractDepList.Count < 35) ? "30" : "20"; } } #endregion mKpi.Kpi1json = kpi1xAxis + "||" + kpi1serieshze + "||" + kpi1serieshzl + "||" + kpi1DateEnd; mKpi.Kpi2json = kpi2serieshze + "||" + kpi2serieshzl + "||" + kpi2series; mKpi.Kpi3json = kpi3xAxis + "||" + kpi3seriesSsr + "||" + kpi3serieshzl + "||" + kpi3DateEnd; strJson = j.Serialize(mKpi); } if (action == "kpir") { string rStart = string.IsNullOrEmpty(context.Request.Form["startTime"]) ? DateTime.Now.AddMonths(-11).ToString("yyyy-MM") + "-01" : DateTime.Parse(context.Request.Form["startTime"].Replace("/", "-")).ToString("yyyy-MM") + "-01"; string rEnd = string.IsNullOrEmpty(context.Request.Form["endTime"]) ? DateTime.Now.ToString("yyyy-MM") + "-01" : DateTime.Parse(context.Request.Form["endTime"].Replace("/", "-")).ToString("yyyy-MM") + "-01"; LKPR kpir = new LKPR(); string kpirlegend = string.Empty; string kpirxAxis = string.Empty; string kpirUser = string.Empty; string kpirDep = string.Empty; string kpirAll = string.Empty; var kpi1DateEnd = "100"; int sYear = int.Parse(rStart.Split('-')[0]); int sMonth = int.Parse(rStart.Split('-')[1]); int eYear = int.Parse(rEnd.Split('-')[0]); int eMonth = int.Parse(rEnd.Split('-')[1]); DateTime stDate = DateTime.Parse(rStart); DateTime enDate = LastDayOfMonth(DateTime.Parse(rEnd)); int sumMonth = (eYear - sYear) * 12 + (eMonth - sMonth); if (sumMonth > 10) { kpi1DateEnd = (sumMonth > 10 && sumMonth < 20) ? "60" : (sumMonth > 20 && sumMonth < 30) ? "40" : sumMonth > 30 ? "30" : "20"; kpi1DateEnd = sumMonth <= 12 ? "100": (sumMonth > 12 && sumMonth < 20) ? "70" : (sumMonth > 20 && sumMonth < 30) ? "50" : sumMonth > 30 ? "30" : "20"; } var kpirDt = SQLHelper.RunSqlString("exec FN_SumScore '" + rStart + "','" + rEnd + "','" + FO_NO + "'", "KPIR"); var KpiRList = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kpirDt.Tables[0])); if (KpiRList.Count > 0) { for (DateTime dt = DateTime.Parse(rStart); dt <= DateTime.Parse(rEnd); dt = dt.AddMonths(1)) { var userScore = KpiRList.FirstOrDefault(p => p.DataMonth == dt.ToString("yyyy-MM")); kpirxAxis += string.IsNullOrEmpty(kpirxAxis) ? dt.ToString("yyyy-MM") : "," + dt.ToString("yyyy-MM"); kpirUser += string.IsNullOrEmpty(kpirUser) ? (userScore != null ? userScore.UserScore.ToString("0.##") : "0") : (userScore != null ? "," + userScore.UserScore.ToString("0.##") : ",0"); kpirDep += string.IsNullOrEmpty(kpirDep) ? (userScore != null ? userScore.DepScore.ToString("0.##") : "0") : (userScore != null ? "," + userScore.DepScore.ToString("0.##") : ",0"); kpirAll += string.IsNullOrEmpty(kpirAll) ? (userScore != null ? userScore.AllScore.ToString("0.##") : "0") : (userScore != null ? "," + userScore.AllScore.ToString("0.##") : ",0"); } } else { for (DateTime dt = DateTime.Parse(rStart); dt <= DateTime.Parse(rEnd); dt = dt.AddMonths(1)) { kpirUser += string.IsNullOrEmpty(kpirUser) ? "0" : ",0"; kpirDep += string.IsNullOrEmpty(kpirDep) ? "0" : ",0"; kpirAll += string.IsNullOrEmpty(kpirAll) ? "0" : ",0"; } } kpir.kpirJson = kpirlegend + "||" + kpirxAxis + "||" + kpi1DateEnd + "||" + kpirUser + "||" + kpirDep + "||" + kpirAll; strJson = j.Serialize(kpir); } if (action == "kpi") { string start = string.IsNullOrEmpty(context.Request.Form["startTime"]) ? DateTime.Now.AddYears(-1).ToString("yyyy-MM") + "-1" : context.Request.Form["startTime"].Replace("/", "-") + "-1"; string end = string.IsNullOrEmpty(context.Request.Form["endTime"]) ? DateTime.Now.ToString("yyyy-MM") + "-1" : context.Request.Form["endTime"].Replace("/", "-") + "-1"; KPI kpiModel = new KPI(); //kpi4 string kpi4xAxis = string.Empty; string kpi4serieshze = string.Empty; string kpi4serieshzl = string.Empty; string kpi4DateEnd = "100"; //kpi5 string kpi5serieshze = string.Empty; string kpi5serieshzl = string.Empty; string kpi5series = string.Empty; string titleName = string.Empty; //kpi6 string kpi6xAxis = string.Empty; string kpi6seriesSsr = string.Empty; string kpi6serieshzl = string.Empty; string kpi6DateEnd = "100"; //kpi7 string kpi7xAxis = string.Empty; string kpi7seriesSsr = string.Empty; string kpi7Count = string.Empty; string kpi7DateEnd = "100"; string kpi7titleName = string.Empty; //kpi8 string kpi8xAxis = string.Empty; string kpi8ssrCost = string.Empty; string kpi8DateEnd = "100"; string kpi8titleName = string.Empty; //KPI9 string kpi9legendDate = string.Empty; string kpi9xAxis = string.Empty; string kpi9DateEnd = "100"; //KPIOther string kpioxAxis = string.Empty; string kpioserieshze = string.Empty; string kpioserieshzl = string.Empty; string kpioDateEnd = "100"; int sYear = int.Parse(start.Split('-')[0]); int sMonth = int.Parse(start.Split('-')[1]); int eYear = int.Parse(end.Split('-')[0]); int eMonth = int.Parse(end.Split('-')[1]); DateTime stDate = DateTime.Parse(start); DateTime enDate = LastDayOfMonth(DateTime.Parse(end)); //kpi获取数据sql var kpiDt = SQLHelper.RunSqlString("exec FN_Kpi '" + stDate.ToString("yyyy-MM") + "','" + enDate.ToString("yyyy-MM") + "','0'", "KPI"); #region kpi4 var Kpi4List = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kpiDt.Tables[0])); if (Kpi4List.Count > 0) { var kpi4Order = Kpi4List.OrderBy(x => x.DateMonth); kpi4xAxis = string.Join(",", kpi4Order.Select(p => p.DateMonth).ToList()); kpi4serieshze = string.Join(",", kpi4Order.Select(p => p.NumVal.ToString("0.#")).ToList()); kpi4serieshzl = string.Join(",", kpi4Order.Select(p => p.Rate.ToString("0.#")).ToList()); //if (Kpi4List.Count > 10) //{ // kpi4DateEnd = (Kpi4List.Count > 10 && Kpi4List.Count < 20) ? "60" : (Kpi4List.Count > 20 && Kpi4List.Count < 30) ? "40" : (Kpi4List.Count > 30 && Kpi4List.Count < 40) ? "30" : "20"; //} } #endregion #region kpi5 var Kpi5List = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kpiDt.Tables[2])); if (Kpi5List.Count > 0) { kpi5serieshze = string.Join(",", Kpi5List.Select(p => p.NumVal.ToString("0.##")).ToList()); kpi5serieshzl = string.Join(",", Kpi5List.Select(p => p.Rate.ToString("0.##")).ToList()); kpi5series = string.Join(",", Kpi5List.Select(p => p.Contract_No + "(" + p.Contractor + ")").ToList()); titleName = "Overall Dedcution Cost:" + kpiDt.Tables[1].Rows[0]["dSumDeduction"] + ",Overall Deduction Rate:" + (100.0 * float.Parse(kpiDt.Tables[1].Rows[0]["dSumDeduction"].ToString()) / float.Parse(kpiDt.Tables[1].Rows[0]["dSumQuotation"].ToString())).ToString("#.##") + "%,Average Deduction Rate:" + decimal.Parse(kpiDt.Tables[1].Rows[0]["dAverageDeductionRate"].ToString()).ToString("0.##") + "%"; } #endregion #region KPI6,KPI7 var Kpi6List = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kpiDt.Tables[3])); if (Kpi6List.Count > 0) { kpi6xAxis = string.Join(",", Kpi6List.Select(p => p.Section).ToList()); kpi6seriesSsr = string.Join(",", Kpi6List.Select(p => p.NumVal.ToString("0.#")).ToList()); kpi6serieshzl = string.Join(",", Kpi6List.Select(p => p.Rate.ToString("0.#")).ToList()); kpi7xAxis = string.Join(",", Kpi6List.Select(p => p.Section).ToList()); kpi7seriesSsr = string.Join(",", Kpi6List.Select(p => p.NetVal.ToString("0.#")).ToList()); kpi7Count = string.Join(",", Kpi6List.Select(p => p.SesNum).ToList()); kpi7titleName = "User Sample Analyse \n SSR Cost: " + Kpi6List.Sum(p => p.NetVal) + " RMB/SSR Count: " + Kpi6List.Sum(p => p.SesNum) + ""; //kpi6DateEnd = kpi7DateEnd = Kpi6List.Count > 20 && Kpi6List.Count < 30 ? "60" : Kpi6List.Count > 30 && Kpi6List.Count < 40 ? "40" : Kpi6List.Count > 40 && Kpi6List.Count < 50 ? "30" : "20"; } #endregion #region KPI8 var Kpi8List = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kpiDt.Tables[4])); var Kpi8Top20List = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kpiDt.Tables[5])); if (Kpi8List.Count > 0) { kpi8xAxis = string.Join(",", Kpi8List.Select(p => p.Contractor).ToList()); kpi8ssrCost = string.Join(",", Kpi8List.Select(p => (p.NetVal / 1000).ToString("0.##")).ToList()); kpi8DateEnd = Kpi8List.Count > 5 && Kpi8List.Count < 10 ? "60" : Kpi8List.Count > 10 && Kpi8List.Count < 15 ? "40" : Kpi8List.Count > 15 && Kpi8List.Count < 20 ? "30" : Kpi8List.Count > 20 && Kpi8List.Count < 25 ? "20" : Kpi8List.Count > 25 && Kpi8List.Count < 30 ? "10" : "5"; var topVal = Kpi8Top20List.Count > 0 ? Kpi8Top20List.Sum(p => p.NetVal).ToString("0.##") : "0"; kpi8titleName = "Contractor Cost \n All Contractor Cost: " + Kpi8List.Sum(p => p.NetVal).ToString("0.##") + " RMB/The TOP 20 Contractor Cost: " + topVal + " RMB"; } #endregion #region KPI9 var Kpi9List = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kpiDt.Tables[6])); var kpiDis = Kpi9List.Select(p => p.Dis).Distinct().ToList(); var KpiDepCount = Kpi9List.GroupBy(p => p.Section).Count(); List zbList = new List(); if (Kpi9List.Count > 0) { foreach (var itemDis in kpiDis) { ZBKPI zbModel = new ZBKPI(); zbModel.name = itemDis; foreach (var item in Kpi9List.Select(p => p.Section).Distinct().ToList()) { var DepNetVal = Kpi9List.Where(p => p.Section == item).Sum(p => p.NetVal); var DisNetVal = Kpi9List.Where(p => p.Section == item && p.Dis.Contains(itemDis)).Sum(p => p.NetVal); var disVal = DisNetVal > 0 ? Round((float)(DisNetVal / DepNetVal) * 100, 2) : 0; zbModel.data.Add(disVal); } zbList.Add(zbModel); } kpi9legendDate = string.Join(",", kpiDis); kpi9xAxis = string.Join(",", Kpi9List.Select(p => p.Section).Distinct().ToList()); //kpi9DateEnd = KpiDepCount > 10 && KpiDepCount < 20 ? "60" : KpiDepCount > 20 && KpiDepCount < 30 ? "40" : KpiDepCount > 30 && KpiDepCount < 40 ? "30" : "20"; } #endregion #region KPIOther var KpiOtherList = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kpiDt.Tables[7])); if (KpiOtherList.Count > 0) { kpioxAxis = string.Join(",", KpiOtherList.Select(p => p.Dis).ToList()); kpioserieshze = string.Join(",", KpiOtherList.Select(p => (p.NumVal < 0 ? 0 : p.NumVal).ToString("0.#")).ToList()); kpioserieshzl = string.Join(",", KpiOtherList.Select(p => (p.Rate < 0 ? 0 : p.Rate).ToString("0.#")).ToList()); //kpioDateEnd = KpiOtherList.Count > 10 && KpiOtherList.Count < 20 ? "60" : KpiOtherList.Count > 20 && KpiOtherList.Count < 30 ? "40" : KpiOtherList.Count > 30 && KpiOtherList.Count < 40 ? "30" : "20"; } #endregion kpiModel.Kpi4json = kpi4xAxis + "||" + kpi4serieshze + "||" + kpi4serieshzl + "||" + kpi4DateEnd; kpiModel.Kpi5json = kpi5serieshze + "||" + kpi5serieshzl + "||" + kpi5series + "||" + titleName; kpiModel.Kpi6json = kpi6xAxis + "||" + kpi6seriesSsr + "||" + kpi6serieshzl + "||" + kpi6DateEnd; kpiModel.Kpi7json = kpi7xAxis + "||" + kpi7seriesSsr + "||" + kpi7Count + "||" + kpi7DateEnd + "||" + kpi7titleName; kpiModel.Kpi8json = kpi8xAxis + "||" + kpi8ssrCost + "||" + kpi8DateEnd + "||" + kpi8titleName; kpiModel.Kpi9json = kpi9legendDate + "||" + kpi9xAxis + "||" + kpi9DateEnd; kpiModel.kpi9series = zbList; kpiModel.Kpiojson = kpioxAxis + "||" + kpioserieshze + "||" + kpioserieshzl + "||" + kpioDateEnd; strJson = j.Serialize(kpiModel); } if (action == "kpisearchdep") { string start = string.IsNullOrEmpty(context.Request.Form["startTime"]) ? DateTime.Now.AddYears(-1).ToString("yyyy-MM") + "-1" : context.Request.Form["startTime"].Replace("/", "-") + "-1"; string end = string.IsNullOrEmpty(context.Request.Form["endTime"]) ? DateTime.Now.ToString("yyyy-MM") + "-1" : context.Request.Form["endTime"].Replace("/", "-") + "-1"; string kpitype = context.Request.Form["kpitype"]; KPI kpiModel = new KPI(); //KPI9 string kpi9legendDate = string.Empty; string kpi9xAxis = string.Empty; string kpi9DateEnd = "100"; int sYear = int.Parse(start.Split('-')[0]); int sMonth = int.Parse(start.Split('-')[1]); int eYear = int.Parse(end.Split('-')[0]); int eMonth = int.Parse(end.Split('-')[1]); DateTime stDate = DateTime.Parse(start); DateTime enDate = LastDayOfMonth(DateTime.Parse(end)); //kpi获取数据sql var kpiDt = SQLHelper.RunSqlString("exec FN_Kpi '" + stDate.ToString("yyyy-MM") + "','" + enDate.ToString("yyyy-MM") + "','" + kpitype + "'", "KPI"); #region KPI9 var Kpi9List = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kpiDt.Tables[0])); var kpiDis = Kpi9List.Select(p => p.Dis).Distinct().ToList(); var KpiDepCount = Kpi9List.GroupBy(p => p.Section).Count(); List zbList = new List(); if (Kpi9List.Count > 0) { foreach (var itemDis in kpiDis) { ZBKPI zbModel = new ZBKPI(); zbModel.name = itemDis; foreach (var item in Kpi9List.Select(p => p.Section).Distinct().ToList()) { var DepNetVal = Kpi9List.Where(p => p.Section == item).Sum(p => p.NetVal); var DisNetVal = Kpi9List.Where(p => p.Section == item && p.Dis.Contains(itemDis)).Sum(p => p.NetVal); var disVal = DisNetVal > 0 ? Round((float)(DisNetVal / DepNetVal) * 100, 2) : 0; zbModel.data.Add(disVal); } zbList.Add(zbModel); } kpi9legendDate = string.Join(",", kpiDis); kpi9xAxis = string.Join(",", Kpi9List.Select(p => p.Section).Distinct().ToList()); //kpi9DateEnd = KpiDepCount > 10 && KpiDepCount < 20 ? "60" : KpiDepCount > 20 && KpiDepCount < 30 ? "40" : KpiDepCount > 30 && KpiDepCount < 40 ? "30" : "100"; } #endregion kpiModel.Kpi9json = kpi9legendDate + "||" + kpi9xAxis + "||" + kpi9DateEnd; kpiModel.kpi9series = zbList; strJson = j.Serialize(kpiModel); } context.Response.Write(strJson); } #region KPI图Model /// /// MainKpi /// public class MainKpi { public string Kpi1json { get; set; } = string.Empty; public string Kpi2json { get; set; } = string.Empty; public string Kpi3json { get; set; } = string.Empty; } /// /// 右边的KPI /// public class LKPR { public string kpirJson { get; set; } = string.Empty; } /// /// KPI /// public class KPI { public string Kpi4json { get; set; } = string.Empty; public string Kpi5json { get; set; } = string.Empty; public string Kpi6json { get; set; } = string.Empty; public string Kpi7json { get; set; } = string.Empty; public string Kpi8json { get; set; } = string.Empty; public string Kpi9json { get; set; } = string.Empty; public List kpi9series { get; set; } = new List(); public string Kpiojson { get; set; } = string.Empty; } /// /// 占比柱状图 /// public class ZBKPI { public string name { get; set; } = string.Empty; public string type { get; set; } = "bar"; public string stack { get; set; } = "tb"; public string barWidth { get; set; } = "30"; public List data { get; set; } = new List(); } #endregion #region KPI数据Model /// /// kpi2中,datatable转换list /// public class KpiSesNo { /// /// 核准率 /// public string Hzl { get; set; } /// /// 核准额 /// public string Hze { get; set; } /// /// ses /// public string SES { get; set; } } /// /// KPI3,KPI6,KPI7中 承包商部门分布 /// public class KPIConDep { /// /// 部门名称 /// public string Section { get; set; } = string.Empty; /// /// 核减率 /// public decimal Rate { get; set; } /// /// 核减额 /// public decimal NumVal { get; set; } /// /// 合同SES数量 /// public int SesNum { get; set; } = 0; /// /// Net_Value /// public decimal NetVal { get; set; } } /// /// KPI4中按月实体 /// public class KpiMonth { /// /// 数值 /// public decimal NumVal { get; set; } /// /// 利率 /// public decimal Rate { get; set; } /// /// 月份 /// public string DateMonth { get; set; } } /// /// KPI5实体 /// public class KPI5Contract { /// /// 利率 /// public decimal Rate { get; set; } /// /// 额度 /// public decimal NumVal { get; set; } /// /// 合同号 /// public string Contract_No { get; set; } = string.Empty; /// /// 承包商名称 /// public string Contractor { get; set; } = string.Empty; } /// /// KPI8实体 /// public class KPI8Contract { /// /// 承包商名称 /// public string Contractor { get; set; } /// /// 承包商数值 /// public decimal NetVal { get; set; } } /// /// KPI9实体 /// public class KPI9Dep { /// /// 部门 /// public string Section { get; set; } /// /// 类型 /// public string Dis { get; set; } /// /// 数值 /// public decimal NetVal { get; set; } } /// /// KPIOther实体 /// public class KPIOther { /// /// 部门 /// public string Dis { get; set; } /// /// 数值 /// public decimal NumVal { get; set; } /// /// 利率 /// public decimal Rate { get; set; } } /// /// 右边的KPI实体 /// public class KPIRScore { public string NewGuid { get; set; } public string Contract_No { get; set; } public string DataMonth { get; set; } public decimal UserScore { get; set; } public decimal DepScore { get; set; } public decimal AllScore { get; set; } } #endregion public bool IsReusable { get { return false; } } /// /// 取得某月的第一天 /// /// 要取得月份第一天的时间 /// private DateTime FirstDayOfMonth(DateTime datetime) { return datetime.AddDays(1 - datetime.Day); } /// /// 取得某月的最后一天 /// /// 要取得月份最后一天的时间 /// private DateTime LastDayOfMonth(DateTime datetime) { return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1); } public static float Round(float score, int pointCount) { try { return Convert.ToSingle(Math.Round(Convert.ToDecimal(score), pointCount, MidpointRounding.AwayFromZero)); } catch { return Convert.ToSingle(Math.Round(score, pointCount)); } } } }