Basf_FCL/FCL/FineUIPro.Web/common/main.ashx.cs

642 lines
32 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// main1 的摘要说明
/// </summary>
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<List<KpiSesNo>>(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<List<KPIConDep>>(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<List<KPIRScore>>(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<List<KpiMonth>>(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<List<KPI5Contract>>(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<List<KPIConDep>>(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<List<KPI8Contract>>(JsonConvert.SerializeObject(kpiDt.Tables[4]));
var Kpi8Top20List = JsonConvert.DeserializeObject<List<KPI8Contract>>(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<List<KPI9Dep>>(JsonConvert.SerializeObject(kpiDt.Tables[6]));
var kpiDis = Kpi9List.Select(p => p.Dis).Distinct().ToList();
var KpiDepCount = Kpi9List.GroupBy(p => p.Section).Count();
List<ZBKPI> zbList = new List<ZBKPI>();
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<List<KPIOther>>(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<List<KPI9Dep>>(JsonConvert.SerializeObject(kpiDt.Tables[0]));
var kpiDis = Kpi9List.Select(p => p.Dis).Distinct().ToList();
var KpiDepCount = Kpi9List.GroupBy(p => p.Section).Count();
List<ZBKPI> zbList = new List<ZBKPI>();
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
/// <summary>
/// MainKpi
/// </summary>
public class MainKpi
{
public string Kpi1json { get; set; } = string.Empty;
public string Kpi2json { get; set; } = string.Empty;
public string Kpi3json { get; set; } = string.Empty;
}
/// <summary>
/// 右边的KPI
/// </summary>
public class LKPR
{
public string kpirJson { get; set; } = string.Empty;
}
/// <summary>
/// KPI
/// </summary>
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<ZBKPI> kpi9series { get; set; } = new List<ZBKPI>();
public string Kpiojson { get; set; } = string.Empty;
}
/// <summary>
/// 占比柱状图
/// </summary>
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<float> data { get; set; } = new List<float>();
}
#endregion
#region KPI数据Model
/// <summary>
/// kpi2中datatable转换list
/// </summary>
public class KpiSesNo
{
/// <summary>
/// 核准率
/// </summary>
public string Hzl { get; set; }
/// <summary>
/// 核准额
/// </summary>
public string Hze { get; set; }
/// <summary>
/// ses
/// </summary>
public string SES { get; set; }
}
/// <summary>
/// KPI3,KPI6,KPI7中 承包商部门分布
/// </summary>
public class KPIConDep
{
/// <summary>
/// 部门名称
/// </summary>
public string Section { get; set; } = string.Empty;
/// <summary>
/// 核减率
/// </summary>
public decimal Rate { get; set; }
/// <summary>
/// 核减额
/// </summary>
public decimal NumVal { get; set; }
/// <summary>
/// 合同SES数量
/// </summary>
public int SesNum { get; set; } = 0;
/// <summary>
/// Net_Value
/// </summary>
public decimal NetVal { get; set; }
}
/// <summary>
/// KPI4中按月实体
/// </summary>
public class KpiMonth
{
/// <summary>
/// 数值
/// </summary>
public decimal NumVal { get; set; }
/// <summary>
/// 利率
/// </summary>
public decimal Rate { get; set; }
/// <summary>
/// 月份
/// </summary>
public string DateMonth { get; set; }
}
/// <summary>
/// KPI5实体
/// </summary>
public class KPI5Contract
{
/// <summary>
/// 利率
/// </summary>
public decimal Rate { get; set; }
/// <summary>
/// 额度
/// </summary>
public decimal NumVal { get; set; }
/// <summary>
/// 合同号
/// </summary>
public string Contract_No { get; set; } = string.Empty;
/// <summary>
/// 承包商名称
/// </summary>
public string Contractor { get; set; } = string.Empty;
}
/// <summary>
/// KPI8实体
/// </summary>
public class KPI8Contract
{
/// <summary>
/// 承包商名称
/// </summary>
public string Contractor { get; set; }
/// <summary>
/// 承包商数值
/// </summary>
public decimal NetVal { get; set; }
}
/// <summary>
/// KPI9实体
/// </summary>
public class KPI9Dep
{
/// <summary>
/// 部门
/// </summary>
public string Section { get; set; }
/// <summary>
/// 类型
/// </summary>
public string Dis { get; set; }
/// <summary>
/// 数值
/// </summary>
public decimal NetVal { get; set; }
}
/// <summary>
/// KPIOther实体
/// </summary>
public class KPIOther
{
/// <summary>
/// 部门
/// </summary>
public string Dis { get; set; }
/// <summary>
/// 数值
/// </summary>
public decimal NumVal { get; set; }
/// <summary>
/// 利率
/// </summary>
public decimal Rate { get; set; }
}
/// <summary>
/// 右边的KPI实体
/// </summary>
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;
}
}
/// <summary>
/// 取得某月的第一天
/// </summary>
/// <param name="datetime">要取得月份第一天的时间</param>
/// <returns></returns>
private DateTime FirstDayOfMonth(DateTime datetime)
{
return datetime.AddDays(1 - datetime.Day);
}
/// <summary>
/// 取得某月的最后一天
/// </summary>
/// <param name="datetime">要取得月份最后一天的时间</param>
/// <returns></returns>
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));
}
}
}
}