public Dictionary <string, object> GetPieChart(string ProjectID)
        {
            var sql = @"select Sum(FactReceiptValue) as SumRecepitValue, Sum(FactInvoiceValue) as SumInvoiceValue,ProjectInfo as ProjectInfoID,
ProjectInfoName from S_C_ManageContract_ReceiptObj
where ProjectInfo='{0}'
group by ProjectInfo,ProjectInfoName";

            var dataSource = new DataTable();

            dataSource.Columns.Add("nameField");
            dataSource.Columns.Add("valueField", typeof(decimal));

            var receiptValue         = 0m;
            var invoiceValue         = 0m;
            var remainInvoiceValue   = 0m;
            var remaintContractValue = 0m;
            var db = SQLHelper.CreateSqlHelper(ConnEnum.Market);
            var dt = db.ExecuteDataTable(String.Format(sql, ProjectID));

            if (dt.Rows.Count > 0)
            {
                receiptValue       = dt.Rows[0]["SumRecepitValue"] == null || dt.Rows[0]["SumRecepitValue"] == DBNull.Value ? 0m : Convert.ToDecimal(dt.Rows[0]["SumRecepitValue"]);
                invoiceValue       = dt.Rows[0]["SumInvoiceValue"] == null || dt.Rows[0]["SumInvoiceValue"] == DBNull.Value ? 0m : Convert.ToDecimal(dt.Rows[0]["SumInvoiceValue"]);
                remainInvoiceValue = (invoiceValue - receiptValue) < 0 ? 0m : invoiceValue - receiptValue;
            }
            sql = @"select Sum(ProjectValue) as ContractValue,ProjectID  from S_C_ManageContract_ProjectRelation
where ProjectID='{0}' group by ProjectID";
            dt  = db.ExecuteDataTable(String.Format(sql, ProjectID));
            if (dt.Rows.Count > 0)
            {
                var contractValue = dt.Rows[0]["ContractValue"] == null || dt.Rows[0]["ContractValue"] == DBNull.Value ? 0m : Convert.ToDecimal(dt.Rows[0]["ContractValue"]);
                remaintContractValue = (contractValue - receiptValue - remainInvoiceValue) < 0 ? receiptValue : contractValue - receiptValue - remainInvoiceValue;
            }

            var contractRemainRow = dataSource.NewRow();

            contractRemainRow["nameField"]  = "剩余合同额";
            contractRemainRow["valueField"] = remaintContractValue;
            dataSource.Rows.Add(contractRemainRow);

            var invoiceRemainRow = dataSource.NewRow();

            invoiceRemainRow["nameField"]  = "应收款";
            invoiceRemainRow["valueField"] = remainInvoiceValue;
            dataSource.Rows.Add(invoiceRemainRow);

            var receiptRow = dataSource.NewRow();

            receiptRow["nameField"]  = "已收款";
            receiptRow["valueField"] = receiptValue;
            dataSource.Rows.Add(receiptRow);

            var chart   = HighChartHelper.CreatePieChart("项目总体情况分析", "金额", dataSource);
            var result  = chart.Render();
            var credits = new Dictionary <string, object>();

            credits.SetValue("enabled", false);
            result.SetValue("credits", credits);
            return(result);
        }
        /// <summary>
        /// 月度费用分布
        /// </summary>
        /// <returns></returns>
        private Dictionary <string, object> GetContractReimbursementChartData(string costUnitArr)
        {
            var sourceDt = this.SQLDB.ExecuteDataTable(string.Format(@"select sum(ApplyValue) ApplyValue,BelongMonth from
                                      (select S_EP_ReimbursementApply.*,detail.ApplyValue,month(ApplyDate) BelongMonth from S_EP_ReimbursementApply
                                      left join 
                                      (select sum(isnull(ApplyValue,0)) ApplyValue,S_EP_ReimbursementApplyID 
                                      from S_EP_ReimbursementApply_Details group by S_EP_ReimbursementApplyID) detail
                                      on detail.S_EP_ReimbursementApplyID = S_EP_ReimbursementApply.ID                                       
                                      where S_EP_ReimbursementApply.FlowPhase = 'End' and year(getdate()) = year(ApplyDate)
                                      ) tmp where ProjectInfo in ('{0}') group by BelongMonth", costUnitArr));

            DataTable newDt = new DataTable();

            newDt.Columns.Add(new DataColumn("BelongMonth", typeof(string)));
            newDt.Columns.Add(new DataColumn("ApplyValue", typeof(decimal)));
            for (int i = 1; i <= 12; i++)
            {
                var resRow = newDt.NewRow();
                resRow["BelongMonth"] = i.ToString() + "月";
                resRow["ApplyValue"]  = 0;

                var row = sourceDt.Select("BelongMonth=" + i).FirstOrDefault();
                if (row != null && row["ApplyValue"] != null && row["ApplyValue"] != DBNull.Value)
                {
                    resRow["ApplyValue"] = (decimal)row["ApplyValue"];
                }
                newDt.Rows.Add(resRow);
            }

            var columnChart = HighChartHelper.CreateColumnChart("", newDt, "BelongMonth", new string[] { "报销费用" }, new string[] { "ApplyValue" });

            return(columnChart.Render());
        }
Beispiel #3
0
        public JsonResult GetAllList()
        {
            string projectInfoID = this.Request["ProjectInfoID"];
            var    projectInfo   = this.GetEntityByID <S_I_ProjectInfo>(projectInfoID);

            if (projectInfo == null)
            {
                throw new Formula.Exceptions.BusinessException("没有找到指定的项目对象");
            }
            var marketDBContext = Formula.FormulaHelper.GetEntities <Market.Logic.Domain.MarketEntities>();
            var project         = marketDBContext.S_I_Project.FirstOrDefault(d => d.ID == projectInfo.MarketProjectInfoID);

            if (project == null)
            {
                throw new Formula.Exceptions.BusinessException("未能找到指定的项目对象");
            }
            string sql    = @"select SubjectName,SubjectCode,Sum(CostValue) as CostValue,ProjectID
from dbo.S_FC_CostInfo where ProjectID='{0}'
group by SubjectName,SubjectCode,ProjectID";
            var    db     = SQLHelper.CreateSqlHelper(ConnEnum.Market);
            var    mainDt = db.ExecuteDataTable(String.Format(sql, project.ID));
            var    result = new Dictionary <string, object>();

            result["data"] = mainDt;
            var pieChart  = HighChartHelper.CreatePieChart("项目成本分析", "成本金额(元)", mainDt, "SubjectName", "CostValue");
            var chartData = pieChart.Render();
            var credits   = new Dictionary <string, object>();

            credits.SetValue("enabled", false);
            chartData.SetValue("credits", credits);
            result["pieChartData"] = chartData;
            return(Json(result));
        }
Beispiel #4
0
        public Dictionary <string, object> GetPieChartData(string belongYear, string projectID)
        {
            string sql = @"select * from (select SubjectName,SubjectCode,Sum(CostValue) as CostValue,
BelongYear,ProjectID from dbo.S_FC_CostInfo
group by SubjectName,SubjectCode,BelongYear,ProjectID) tableInfo where 1=1";

            if (!String.IsNullOrEmpty(belongYear))
            {
                sql += " and BelongYear='" + belongYear + "'";
            }
            if (!String.IsNullOrEmpty(projectID))
            {
                sql += " and ProjectID='" + projectID + "'";
            }
            var db       = SQLHelper.CreateSqlHelper(ConnEnum.Market);
            var dt       = db.ExecuteDataTable(sql);
            var pieChart = HighChartHelper.CreatePieChart(belongYear + "成本科目分布", "成本金额(元)", dt, "SubjectName", "CostValue");

            var chartOption = pieChart.Render();
            var credits     = new Dictionary <string, object>();

            credits.SetValue("enabled", false);
            chartOption.SetValue("credits", credits);
            return(chartOption);
        }
Beispiel #5
0
        public Dictionary <string, object> GetYearChartData(string belongYear)
        {
            var    depts      = EnumBaseHelper.GetEnumDef("System.ManDept").EnumItem;
            string sql        = @"select Sum(ToA1) as ToA1,
BelongYear,BelongMonth  from S_EP_PublishInfo 
left join S_I_ProjectInfo on S_EP_PublishInfo.ProjectInfoID=S_I_ProjectInfo.ID
where ChargeDeptID in ('" + string.Join("','", depts.Select(a => a.Code).ToArray()) + @"') and PublishTime is not null and BelongYear='{0}' group by BelongYear,BelongMonth";
            var    db         = SQLHelper.CreateSqlHelper(ConnEnum.Project);
            var    dt         = db.ExecuteDataTable(String.Format(sql, belongYear));
            var    dataSource = new DataTable();

            dataSource.Columns.Add("BelongYear", typeof(string));
            dataSource.Columns.Add("BelongMonth", typeof(string));
            dataSource.Columns.Add("ToA1", typeof(decimal));
            dataSource.Columns.Add("SumToA1", typeof(decimal));
            var sumValue = 0m;

            for (int i = 1; i <= 12; i++)
            {
                var row = dataSource.NewRow();
                row["BelongMonth"] = i + "月";
                row["BelongYear"]  = belongYear;
                var value     = 0m;
                var monthRows = dt.Select("BelongMonth = '" + i.ToString() + "'");
                if (monthRows.Length > 0)
                {
                    value = monthRows[0]["ToA1"] == null || monthRows[0]["ToA1"] == DBNull.Value ? 0m : Convert.ToDecimal(monthRows[0]["ToA1"]);
                }
                sumValue      += value;
                row["SumToA1"] = sumValue;
                row["ToA1"]    = value;
                dataSource.Rows.Add(row);
            }
            #region 生成图表
            var yAxies = new List <yAxis>();
            var y1     = new yAxis {
                MiniValue = 0, TitleInfo = new Dictionary <string, object>(), Lable = new Dictionary <string, object>()
            };
            y1.TitleInfo.SetValue("text", "折合A1数");
            y1.Lable.SetValue("format", "{value}张");
            yAxies.Add(y1);

            var serDefines = new List <Series>();


            var costSer = new Series {
                Name = "当月出图", Field = "ToA1", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };
            var sumCostSer = new Series {
                Name = "累计出图", Field = "SumToA1", Type = "spline", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };
            serDefines.Add(costSer);
            serDefines.Add(sumCostSer);

            var chart = HighChartHelper.CreateColumnXYChart(belongYear + "年度出图分析", "", dataSource, "BelongMonth", yAxies, serDefines, null);
            return(chart);

            #endregion
        }
Beispiel #6
0
        private Dictionary <string, object> GetPieChartOption()
        {
            var result   = this.createPieSql();
            var dt       = this.SqlHelper.ExecuteDataTable(result[0]);
            var pieChart = HighChartHelper.CreatePieChart("", result[1], dt);

            return(pieChart.Render());
        }
Beispiel #7
0
        private Dictionary <string, object> GetChartOption(string customerID, int startYear, int endYear)
        {
            var    dt           = this.GetChartData(customerID, startYear, endYear);
            string seriesNames  = "计划收款,到款金额,开票金额";
            string seriesFields = "PlanReceiptValue,ReceiptValue,InvoiceValue";
            var    columChart   = HighChartHelper.CreateColumnChart("", dt, "Title", seriesNames.Split(','), seriesFields.Split(','));

            return(columChart.Render());
        }
Beispiel #8
0
        public Dictionary <string, object> GetYearChartData(string belongYear, string projectID)
        {
            string sql        = @"select Sum(CostValue) as CostValue,
BelongYear,BelongMonth,ProjectID  from S_FC_CostInfo where ProjectID='{0}' 
and BelongYear='{1}' group by BelongYear,BelongMonth,ProjectID";
            var    db         = SQLHelper.CreateSqlHelper(ConnEnum.Market);
            var    dt         = db.ExecuteDataTable(String.Format(sql, projectID, belongYear));
            var    dataSource = new DataTable();

            dataSource.Columns.Add("BelongYear", typeof(string));
            dataSource.Columns.Add("BelongMonth", typeof(string));
            dataSource.Columns.Add("CostValue", typeof(decimal));
            dataSource.Columns.Add("SumCostValue", typeof(decimal));
            var sumValue = 0m;

            for (int i = 1; i <= 12; i++)
            {
                var row = dataSource.NewRow();
                row["BelongMonth"] = i + "月";
                row["BelongYear"]  = belongYear;
                var value     = 0m;
                var monthRows = dt.Select("BelongMonth = '" + i.ToString() + "'");
                if (monthRows.Length > 0)
                {
                    value = monthRows[0]["CostValue"] == null || monthRows[0]["CostValue"] == DBNull.Value ? 0m : Convert.ToDecimal(monthRows[0]["CostValue"]);
                }
                sumValue           += value;
                row["SumCostValue"] = sumValue;
                row["CostValue"]    = value;
                dataSource.Rows.Add(row);
            }
            #region 生成图表
            var yAxies = new List <yAxis>();
            var y1     = new yAxis {
                MiniValue = 0, TitleInfo = new Dictionary <string, object>(), Lable = new Dictionary <string, object>()
            };
            y1.TitleInfo.SetValue("text", "成本金额");
            y1.Lable.SetValue("format", "{value}元");
            yAxies.Add(y1);

            var serDefines = new List <Series>();


            var costSer = new Series {
                Name = "实际成本", Field = "CostValue", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };
            var sumCostSer = new Series {
                Name = "累计成本", Field = "SumCostValue", Type = "spline", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };
            serDefines.Add(costSer);
            serDefines.Add(sumCostSer);

            var chart = HighChartHelper.CreateColumnXYChart(belongYear + "年度成本分析", "", dataSource, "BelongMonth", yAxies, serDefines, null);
            return(chart);

            #endregion
        }
Beispiel #9
0
        public override JsonResult GetList(QueryBuilder qb)
        {
            string sql          = @"select * from (select ID as ID,Name as DeptName,SortIndex,{1},0 as Summary,0 as Avg
from S_A_Org where  Type='{0}' ) TableInfo ";
            string fields       = String.Empty;
            string seriesNames  = String.Empty;
            string seriesFields = String.Empty;

            qb.PageSize = 0;
            var orgService       = FormulaHelper.GetService <IOrgService>();
            var mistakeLevelEnum = EnumBaseHelper.GetEnumDef("Project.MistakeLevel").EnumItem.ToList();

            foreach (var item in mistakeLevelEnum)
            {
                fields       += " 0 as " + item.Code + ",";
                seriesFields += item.Code + ",";
                seriesNames  += item.Name + ",";
            }
            var db          = SQLHelper.CreateSqlHelper(ConnEnum.Base);
            var dt          = db.ExecuteDataTable(String.Format(sql, OrgType.ManufactureDept.ToString(), fields.TrimEnd(',')));
            var mistakeList = this.entities.Set <S_AE_Mistake>().Where(qb).ToList();

            foreach (DataRow deptRow in dt.Rows)
            {
                double mistakeSum = 0;
                var    deptID     = deptRow["ID"].ToString();
                foreach (var item in mistakeLevelEnum)
                {
                    var count = mistakeList.Count(d => d.DeptID == deptID && d.MistakeLevel == item.Code);
                    mistakeSum        += count;
                    deptRow[item.Code] = count;
                }
                deptRow["Summary"] = mistakeSum;
                double userCount = orgService.GetOrgUsers(deptRow["ID"].ToString()).Count;
                double avg       = 0;
                if (userCount > 0)
                {
                    avg = Math.Round(Convert.ToDouble(mistakeSum / userCount), 2);
                }
                deptRow["Avg"] = avg;
            }
            var result = new List <Dictionary <string, object> >();

            var data = new Dictionary <string, object>();

            data.SetValue("data", dt);
            var pieChart = HighChartHelper.CreatePieChart("部门质量问题分析", "错误", dt, "DeptName", "Summary");

            data.SetValue("PieChart", pieChart.Render());
            var columnChart = HighChartHelper.CreateColumnChart("部门质量问题分类分析", dt, "DeptName", seriesNames.TrimEnd(',').Split(',')
                                                                , seriesFields.TrimEnd(',').Split(','));

            data.SetValue("ColumnChart", columnChart.Render());
            return(Json(data));
        }
Beispiel #10
0
        public Dictionary <string, object> GetColumnChart(S_I_ProjectInfo projectInfo)
        {
            var majorList   = projectInfo.GetMajors();
            var picFileType = EnumBaseHelper.GetEnumDef("Project.PublicationType").EnumItem.ToList();
            var dataSource  = new DataTable();

            dataSource.Columns.Add("MajorName");
            var seriesNames  = "出图费用(元)";
            var seriesFields = "CostValue";

            //foreach (var item in picFileType)
            //{
            //    dataSource.Columns.Add(item.Code, typeof(decimal));
            //    seriesNames += item.Name + "折A1,";
            //    seriesFields += item.Code + ",";
            //}
            dataSource.Columns.Add("CostValue", typeof(decimal));

            string sql             = @"select SUM(CostValue) CostValue,Extend5 MajorValue from S_FC_CostInfo
where ProjectID = '" + projectInfo.MarketProjectInfoID + "' and SubjectCode = 'PublishFee' group by Extend5";
            var    marketSqlHepler = SQLHelper.CreateSqlHelper(ConnEnum.Market);
            var    dt = marketSqlHepler.ExecuteDataTable(sql);

            foreach (var major in majorList)
            {
                var row = dataSource.NewRow();
                row["MajorName"] = major.GetValue("Name");
                //foreach (var item in picFileType)
                //{
                //    var value = 0m;
                //    var list = dt.Select("MajorValue='" + major.GetValue("Value") + "' and PublishType='" + item.Code + "'");
                //    if (list.Length > 0)
                //    {
                //        value = list[0]["ToA1"] == null || list[0]["ToA1"] == DBNull.Value ? 0m : Convert.ToDecimal(list[0]["ToA1"]);
                //    }
                //    row[item.Code] = value;
                //}
                var value = 0m;
                var list  = dt.Select("MajorValue='" + major.GetValue("Value") + "'");
                if (list.Length > 0)
                {
                    value = list[0]["CostValue"] == null || list[0]["CostValue"] == DBNull.Value ? 0m : Convert.ToDecimal(list[0]["CostValue"]);
                }
                row["CostValue"] = value;
                dataSource.Rows.Add(row);
            }
            var chart   = HighChartHelper.CreateColumnChart("各专业出图费用统计", dataSource, "MajorName", seriesNames.TrimEnd(',').Split(','), seriesFields.TrimEnd(',').Split(','));
            var result  = chart.Render();
            var credits = new Dictionary <string, object>();

            credits.SetValue("enabled", false);
            result.SetValue("credits", credits);
            return(result);
        }
Beispiel #11
0
        private Dictionary <string, object> GetColumnChartOption()
        {
            var sql       = @"select ID,Name from dbo.S_A_Org where  Type='ManufactureDept' order by SortIndex";
            var baseSqlDB = SQLHelper.CreateSqlHelper(ConnEnum.Base);
            var mainDt    = baseSqlDB.ExecuteDataTable(sql);

            mainDt.Columns.Add("CurrentYearReceiptValue", typeof(decimal));  //当年实际收款金额
            mainDt.Columns.Add("CurrentYearContractValue", typeof(decimal)); //当年已签合同金额
            mainDt.Columns.Add("ContractValue", typeof(decimal));            //待签合同金额
            mainDt.Columns.Add("RemainContractValue", typeof(decimal));      //合同余额
            mainDt.Columns.Add("ReceivableValue", typeof(decimal));          //应收款

            //当年实际到款
            sql = @"select Sum(Amount) as ReceiptValue,ReceiptMasterUnitID from S_C_Receipt
where BelongYear='" + DateTime.Now.Year + "' group by ReceiptMasterUnitID";
            var currentReceiptDt = this.SqlHelper.ExecuteDataTable(sql);

            //当年已签合同
            sql = @"select Sum(ContractRMBAmount) as ContractValue,ProductionUnitID from dbo.S_C_ManageContract
where BelongYear='" + DateTime.Now.Year + "' and IsSigned = '" + ContractIsSigned.Signed + "' group by ProductionUnitID";
            var currentContractDt = this.SqlHelper.ExecuteDataTable(sql);

            //当前合同余额
            sql = @"select Sum(isnull(ContractRMBAmount,0) - isnull(SummaryReceiptValue,0)- isnull(SummaryBadDebtValue,0)) as RemainContractValue,ProductionUnitID from S_C_ManageContract
where BelongYear='" + DateTime.Now.Year + "' and IsSigned = '" + ContractIsSigned.Signed + "' group by ProductionUnitID";
            var currentRemainContractDt = this.SqlHelper.ExecuteDataTable(sql);

            //当前待签合同金额
            sql = @"select Sum(ContractRMBAmount) as ContractValue,ProductionUnitID from dbo.S_C_ManageContract
where (IsSigned != '" + ContractIsSigned.Signed + "' or IsSigned is null) group by ProductionUnitID";
            var contractDt = this.SqlHelper.ExecuteDataTable(sql);

            //当前应收款
            sql = @"select Sum(isnull(SummaryInvoiceValue,0) - isnull(SummaryReceiptValue,0)) as ReceivableValue,ProductionUnitID from S_C_ManageContract
where BelongYear='" + DateTime.Now.Year + "' and IsSigned = '" + ContractIsSigned.Signed + "' group by ProductionUnitID";
            var receivableDt = this.SqlHelper.ExecuteDataTable(sql);

            foreach (DataRow item in mainDt.Rows)
            {
                item["CurrentYearReceiptValue"]  = GetDataSourceValue(currentReceiptDt, "ReceiptValue", "ReceiptMasterUnitID", item["ID"].ToString());
                item["CurrentYearContractValue"] = GetDataSourceValue(currentContractDt, "ContractValue", "ProductionUnitID", item["ID"].ToString());
                item["RemainContractValue"]      = GetDataSourceValue(currentRemainContractDt, "RemainContractValue", "ProductionUnitID", item["ID"].ToString());
                item["ContractValue"]            = GetDataSourceValue(contractDt, "ContractValue", "ProductionUnitID", item["ID"].ToString());
                item["ReceivableValue"]          = GetDataSourceValue(receivableDt, "ReceivableValue", "ProductionUnitID", item["ID"].ToString());
            }

            string series      = "当年实际收款金额,当年已签合同金额,待签合同金额,当前合同余额,当前应收款";
            string serieFields = "CurrentYearReceiptValue,CurrentYearContractValue,ContractValue,RemainContractValue,ReceivableValue";
            var    columChart  = HighChartHelper.CreateColumnChart("", mainDt, "Name", series.Split(','), serieFields.Split(','));

            columChart.Is3D           = false;
            columChart.TitleInfo.Text = "";
            return(columChart.Render());
        }
        private Dictionary <string, object> GetColumnChartOption(string projectInfoID, string series, string serieFields, string majorValue = "")
        {
            DataTable resDT = new DataTable();

            //var startDate = DateTime.Now.AddMonths(-5);
            for (var i = 0; i < 6; i++)
            {
                //var curYear = startDate.Year;
                //var curMonth = startDate.Month;
                var sql = @"select ProjectInfoID,(case when DateDiff(ww,CreateDate,getDate())=0 then '本周'
	when DateDiff(ww,CreateDate,getDate())=1 then '上周' 
	else '前'+cast(DateDiff(ww,CreateDate,getDate())+1 as nvarchar(20))+'周' end) as BelongWeek,
	count(0) as ProductNum,sum(isnull(PrintCount,0)) as PrintCount
from S_E_Product
where DateDiff(ww,CreateDate,getDate())={1}
	and ProjectInfoID='{0}' {2}
Group by DateDiff(ww,CreateDate,getDate()),ProjectInfoID";

                var majorValueSQL = "";
                if (!string.IsNullOrEmpty(majorValue))
                {
                    majorValueSQL = " and MajorValue='" + majorValue + "'";
                }
                sql = string.Format(sql, projectInfoID, i, majorValueSQL);
                var dt = this.SqlHelper.ExecuteDataTable(sql);
                if (dt.Rows.Count == 0)
                {
                    var curWeek = "";
                    switch (i)
                    {
                    case 0:
                        curWeek = "本周";
                        break;

                    case 1:
                        curWeek = "上周";
                        break;

                    default:
                        curWeek = "前" + (i + 1).ToString() + "周";
                        break;
                    }
                    dt.Rows.Add(projectInfoID, curWeek, 0, 0);
                }
                resDT.Merge(dt);
                //startDate = startDate.AddMonths(1);
            }

            var columChart = HighChartHelper.CreateColumnChart("", resDT, "BelongWeek", series.Split(','), serieFields.Split(','));

            columChart.Is3D           = false;
            columChart.TitleInfo.Text = "";
            return(columChart.Render());
        }
Beispiel #13
0
        public Dictionary <string, object> GetPieChart(string projectInfoID)
        {
            string sql     = @"select  Sum(ToA1) as ToA1,MajorName from S_EP_PublishInfo 
where ProjectInfoID='" + projectInfoID + "' and PublishTime is not null group by MajorName";
            var    dt      = this.SqlHelper.ExecuteDataTable(sql);
            var    chart   = HighChartHelper.CreatePieChart("各专业出图情况", "折A1张数", dt, "MajorName", "ToA1");
            var    result  = chart.Render();
            var    credits = new Dictionary <string, object>();

            credits.SetValue("enabled", false);
            result.SetValue("credits", credits);
            return(result);
        }
Beispiel #14
0
        public Dictionary <string, object> GetChartData(string Year, DataTable planReceiptDt, DataTable receiptDt, DataTable planPaymentDt, DataTable paymentDt)
        {
            var dt         = new DataTable();
            var series     = "PlanReceipt,Receipt,ReceiptDeviation,PlanPayment,Payment,PayDeviation";
            var serieNames = "计划收款,实际收款,收款偏差,计划付款,实际付款,付款偏差";

            dt.Columns.Add("Month");
            dt.Columns.Add("PlanReceipt", typeof(decimal));
            dt.Columns.Add("Receipt", typeof(decimal));
            dt.Columns.Add("PlanPayment", typeof(decimal));
            dt.Columns.Add("Payment", typeof(decimal));
            dt.Columns.Add("PayDeviation", typeof(decimal));
            dt.Columns.Add("ReceiptDeviation", typeof(decimal));

            var miniYValue = 0;

            for (int i = 1; i <= 12; i++)
            {
                var dataRow = dt.NewRow();
                dataRow["Month"] = i + "月";
                var planReceiptRows = planReceiptDt.Select("BelongMonth=" + i.ToString());
                dataRow["PlanReceipt"] = planReceiptRows.Length == 0 ? 0m : Convert.ToDecimal(planReceiptRows[0]["Value"]);

                var receiptRows = receiptDt.Select("BelongMonth=" + i.ToString());
                dataRow["Receipt"] = receiptRows.Length == 0 ? 0m : Convert.ToDecimal(receiptRows[0]["Value"]);

                var planPaymentRows = planPaymentDt.Select("BelongMonth=" + i.ToString());
                dataRow["PlanPayment"] = planPaymentRows.Length == 0 ? 0m : Convert.ToDecimal(planPaymentRows[0]["Value"]);

                var paymentRows = paymentDt.Select("BelongMonth=" + i.ToString());
                dataRow["Payment"] = paymentRows.Length == 0 ? 0m : Convert.ToDecimal(paymentRows[0]["Value"]);

                dataRow["PayDeviation"]     = Convert.ToDecimal(dataRow["PlanPayment"]) - Convert.ToDecimal(dataRow["Payment"]);
                dataRow["ReceiptDeviation"] = Convert.ToDecimal(dataRow["PlanReceipt"]) - Convert.ToDecimal(dataRow["Receipt"]);

                dt.Rows.Add(dataRow);

                if (miniYValue > Convert.ToInt32(dataRow["PayDeviation"]))
                {
                    miniYValue = Convert.ToInt32(dataRow["PayDeviation"]);
                }
                if (miniYValue > Convert.ToInt32(dataRow["ReceiptDeviation"]))
                {
                    miniYValue = Convert.ToInt32(dataRow["ReceiptDeviation"]);
                }
            }
            var columChart = HighChartHelper.CreateColumnChart(Year + "年计划收支分析", dt, "Month", serieNames.Split(','), series.Split(','));

            columChart.yAxisInfo.MiniValue = miniYValue;
            return(columChart.Render());
        }
        /// <summary>
        /// 科目费用分布
        /// </summary>
        /// <returns></returns>
        private Dictionary <string, object> GetContractSubjectPieData(string costUnitArr)
        {
            var sourceDt = this.SQLDB.ExecuteDataTable(string.Format(@"select sum(isnull(ApplyValue,0)) valueField, SubjectName nameField from S_EP_ReimbursementApply_Details detail
                                                       left join S_EP_ReimbursementApply apply on apply.ID = detail.S_EP_ReimbursementApplyID
                                                       where apply.FlowPhase = 'End' and ProjectInfo in ('{0}') group by SubjectName", costUnitArr));

            var chart   = HighChartHelper.CreatePieChart("", "", sourceDt);
            var result  = chart.Render();
            var credits = new Dictionary <string, object>();

            credits.SetValue("enabled", false);
            result.SetValue("credits", credits);
            return(result);
        }
        public JsonResult GetPieChartData(string ProjectInfoID, string ID, string Type = null)
        {
            if (String.IsNullOrEmpty(Type))
            {
            }
            var sql      = @"
select '已结算' ItemName,ISnull(SummaryCostQuantity,0) ItemValue from {2} where
ProjectInfoID='{0}' {1}
union 
select '未结算' ItemName,Quantity - ISnull(SummaryCostQuantity,0) ItemValue from {2} where
ProjectInfoID='{0}' {1}
";
            var whereStr = "";

            if (!String.IsNullOrEmpty(ID))
            {
                whereStr = String.Format("and ID='{0}'", ID);
            }
            else
            {
                whereStr = "and NodeType = 'Root'";
            }
            if (String.IsNullOrEmpty(Type))
            {
                sql = String.Format(sql, ProjectInfoID, whereStr, "S_C_CBS");
            }
            else
            {
                sql = String.Format(sql, ProjectInfoID, whereStr, "S_C_CBS_Budget");
            }
            var data = this.SqlHelper.ExecuteDataTable(sql);

            var result     = new Dictionary <string, object>();
            var chat       = HighChartHelper.CreatePieChart("项目定额工时结算情况分析", "项目定额工时结算情况分析", data, "ItemName", "ItemValue").Render();
            var plot       = (Dictionary <string, object>)chat["plotOptions"];
            var pie        = (Dictionary <string, object>)plot["pie"];
            var dataLabels = (Dictionary <string, object>)pie["dataLabels"];

            dataLabels.SetValue("format", "<b>{point.name}</b>: {point.percentage:.1f} %");
            pie.SetValue("dataLabels", dataLabels);
            plot.SetValue("pie", pie);
            chat.SetValue("plotOptions", plot);
            result["chartData"] = chat;

            return(Json(result));
        }
Beispiel #17
0
        public Dictionary <string, object> GetLineChartData(string Year, DataTable planReceiptDt, DataTable receiptDt, DataTable planPaymentDt, DataTable paymentDt)
        {
            var series     = "PlanCashFlow,CashFlow";
            var serieNames = "计划现金流,实际现金流";
            var dt         = new DataTable();

            dt.Columns.Add("Month");
            dt.Columns.Add("PlanCashFlow", typeof(decimal));
            dt.Columns.Add("CashFlow", typeof(decimal));
            var miniYValue = 0;

            for (int i = 1; i <= 12; i++)
            {
                var dataRow = dt.NewRow();
                dataRow["Month"] = i + "月";
                var planReceiptRows = planReceiptDt.Select("BelongMonth=" + i.ToString());
                var planReceipt     = planReceiptRows.Length == 0 ? 0m : Convert.ToDecimal(planReceiptRows[0]["Value"]);
                var planPaymentRows = planPaymentDt.Select("BelongMonth=" + i.ToString());
                var planPayment     = planPaymentRows.Length == 0 ? 0m : Convert.ToDecimal(planPaymentRows[0]["Value"]);
                dataRow["PlanCashFlow"] = planReceipt - planPayment;

                var receiptRows  = receiptDt.Select("BelongMonth=" + i.ToString());
                var receiptValue = receiptRows.Length == 0 ? 0m : Convert.ToDecimal(receiptRows[0]["Value"]);
                var paymentRows  = paymentDt.Select("BelongMonth=" + i.ToString());
                var paymentvalue = paymentRows.Length == 0 ? 0m : Convert.ToDecimal(paymentRows[0]["Value"]);
                dataRow["CashFlow"] = receiptValue - paymentvalue;
                dt.Rows.Add(dataRow);

                if (miniYValue > Convert.ToInt32(dataRow["CashFlow"]))
                {
                    miniYValue = Convert.ToInt32(dataRow["CashFlow"]);
                }
                if (miniYValue > Convert.ToInt32(dataRow["PlanCashFlow"]))
                {
                    miniYValue = Convert.ToInt32(dataRow["PlanCashFlow"]);
                }
            }

            var columChart = HighChartHelper.CreateColumnChart(Year + "年现金流分析", dt, "Month", serieNames.Split(','), series.Split(','));

            columChart.Chart.Type          = "line";
            columChart.yAxisInfo.MiniValue = miniYValue;
            return(columChart.Render());
        }
Beispiel #18
0
        public Dictionary <string, object> GetPieChartData(string belongYear)
        {
            var    depts = EnumBaseHelper.GetEnumDef("System.ManDept").EnumItem;
            string sql   = @"select * from (select Sum(ToA1) SumToA1,ChargeDeptID,ChargeDeptName,BelongYear from S_EP_PublishInfo
left join S_I_ProjectInfo on S_EP_PublishInfo.ProjectInfoID=S_I_ProjectInfo.ID
where PublishTime is not null
group by ChargeDeptID,ChargeDeptName,BelongYear ) tableInfo where ChargeDeptID in ('" + string.Join("','", depts.Select(a => a.Code).ToArray()) + @"') ";

            if (!String.IsNullOrEmpty(belongYear))
            {
                sql += " and BelongYear='" + belongYear + "'";
            }
            var db          = SQLHelper.CreateSqlHelper(ConnEnum.Project);
            var dt          = db.ExecuteDataTable(sql);
            var pieChart    = HighChartHelper.CreatePieChart(belongYear + "各部门出图", "出图量", dt, "ChargeDeptName", "SumToA1");
            var chartOption = pieChart.Render();
            var credits     = new Dictionary <string, object>();

            credits.SetValue("enabled", false);
            chartOption.SetValue("credits", credits);
            return(chartOption);
        }
        public Dictionary <string, object> GetPieChartData(string belongYear, string projectID)
        {
            string sql = @"select * from (select Sum(WorkHourValue) as WorkHourValue,ProjectID,BelongYear,MajorCode,MajorName from S_W_UserWorkHour
group by BelongYear,MajorCode,MajorName,ProjectID ) tableInfo where 1=1";

            if (!String.IsNullOrEmpty(belongYear))
            {
                sql += " and BelongYear='" + belongYear + "'";
            }
            if (!String.IsNullOrEmpty(projectID))
            {
                sql += " and ProjectID='" + projectID + "'";
            }
            var db          = SQLHelper.CreateSqlHelper(ConnEnum.HR);
            var dt          = db.ExecuteDataTable(sql);
            var pieChart    = HighChartHelper.CreatePieChart(belongYear + "专业工时分布", "工时", dt, "MajorName", "WorkHourValue");
            var chartOption = pieChart.Render();
            var credits     = new Dictionary <string, object>();

            credits.SetValue("enabled", false);
            chartOption.SetValue("credits", credits);
            return(chartOption);
        }
Beispiel #20
0
        private Dictionary <string, object> GetPieChartOption(int year, int month)
        {
            var startDate = new DateTime(year, month, 1);
            var endDate   = startDate.AddMonths(1).AddDays(-1);
            var day       = new WorkHourFO().GetWorkValue(startDate, endDate);

            var title = year.ToString() + "年" + month + "月 应填:{0}  已填:{1}  未填:{2}";

            string sql = @"select isnull(Sum(" + (workHourType != WorkHourSaveType.HD.ToString() ? "NormalValue" : "Round(isnull(NormalValue,0)/" + NormalHoursMax.ToString() + ",2)") + @"),0) as valueField,ProjectName as nameField from dbo.S_W_UserWorkHour
where UserID='{0}' and WorkHourDate>='{1}' and WorkHourDate<='{2}' group by ProjectName";
            var    dt  = this.SqlHelper.ExecuteDataTable(String.Format(sql, this.CurrentUserInfo.UserID, startDate, endDate));

            if (dt.Rows.Count == 0)
            {
                var row = dt.NewRow();
                row["valueField"] = day;
                row["nameField"]  = "未填工时";
                dt.Rows.Add(row);
                title = String.Format(title, day, 0, Convert.ToInt16(day));
            }
            else
            {
                var obj = Convert.ToDecimal(dt.Compute("Sum(valueField)", ""));
                if ((day - obj) > 0)
                {
                    var row = dt.NewRow();
                    row["valueField"] = day - obj;
                    row["nameField"]  = "未填工时";
                    dt.Rows.Add(row);
                }

                title = String.Format(title, day, Convert.ToInt16(obj), Convert.ToInt16(day - obj));
            }
            var pieChart = HighChartHelper.CreatePieChart(title, "工时", dt);

            return(pieChart.Render());
        }
Beispiel #21
0
        public override JsonResult GetList(QueryBuilder qb)
        {
            string projectInfoID = this.Request["ProjectInfoID"];
            var    list          = this.entities.Set <S_AE_Mistake>().Where(d => d.ProjectInfoID == projectInfoID).ToList();
            var    result        = new List <Dictionary <string, object> >();
            var    mistakeLevels = EnumBaseHelper.GetEnumDef("Project.MistakeLevel").EnumItem;
            string fields        = String.Empty;
            string seriesNames   = String.Empty;
            string seriesFields  = String.Empty;

            foreach (var item in mistakeLevels)
            {
                fields       += ", 0 as " + item.Code;
                seriesFields += item.Code + ",";
                seriesNames  += item.Name + ",";
            }

            //柱状图sql模型
            var sql = @"select distinct Name as MajorName,WBSValue,SortIndex {1},0 as Summary
from S_W_WBS wbs
where ProjectInfoID='{0}'
and WBSType = 'Major'
order by SortIndex";
            var dt  = this.SqlHelper.ExecuteDataTable(String.Format(sql, projectInfoID, fields));

            foreach (DataRow row in dt.Rows)
            {
                var wbsValue  = row["WBSValue"].ToString();
                var majorName = row["MajorName"].ToString();
                var dic       = new Dictionary <string, object>();
                dic.SetValue("MajorValue", wbsValue);
                dic.SetValue("MajorName", majorName);
                double mistakeSum = 0;
                foreach (var level in mistakeLevels)
                {
                    var mistakeCount = list.Count(d => d.MajorCode == wbsValue && d.MistakeLevel == level.Code);
                    dic.SetValue(level.Code, mistakeCount);
                    mistakeSum     += mistakeCount;
                    row[level.Code] = mistakeCount;
                }
                dic.SetValue("Summary", mistakeSum);
                result.Add(dic);
            }

            var data = new Dictionary <string, object>();

            data.SetValue("data", result);

            #region 创建柱状图

            var columnChart = HighChartHelper.CreateColumnChart("专业质量问题分析", dt, "MajorName", seriesNames.TrimEnd(',').Split(',')
                                                                , seriesFields.TrimEnd(',').Split(','));
            data.SetValue("ColumnChart", columnChart.Render());

            #endregion

            #region 创建饼图
            sql = @"select item.Code,item.Name,item.SortIndex,
	MisNum=(select count(0) from S_AE_Mistake mis 
			where mis.ProjectInfoID='{0}' and mis.MistakeLevel=item.Code)
from {1}.dbo.S_M_EnumDef def
left join {1}.dbo.S_M_EnumItem item
on def.ID=item.EnumDefID
where def.Code='Project.MistakeLevel'
order by item.SortIndex";
            dt  = this.SqlHelper.ExecuteDataTable(String.Format(sql, projectInfoID, SQLHelper.CreateSqlHelper(ConnEnum.Base).DbName));
            var pieChart = HighChartHelper.CreatePieChart("质量问题分类分析", "错误", dt, "Name", "MisNum");

            var chartOption = pieChart.Render();
            var credits     = new Dictionary <string, object>();
            credits.SetValue("enabled", false);
            chartOption.SetValue("credits", credits);
            #endregion
            data.SetValue("PieChart", chartOption);
            return(Json(data));
        }
Beispiel #22
0
        public JsonResult GetList(string StartDate, string EndDate)
        {
            var baseDB   = SQLHelper.CreateSqlHelper(ConnEnum.Base);
            var HrDB     = SQLHelper.CreateSqlHelper(ConnEnum.HR);
            var resultDt = new DataTable();

            resultDt.Columns.Add("DeptName");
            resultDt.Columns.Add("DeptID");
            resultDt.Columns.Add("UserCount", typeof(int));
            resultDt.Columns.Add("BaseWorkHour", typeof(decimal));
            resultDt.Columns.Add("Production", typeof(decimal));
            resultDt.Columns.Add("Other", typeof(decimal));
            resultDt.Columns.Add("SumWorkHour", typeof(decimal));
            resultDt.Columns.Add("AvgSumWorkHour", typeof(decimal));
            resultDt.Columns.Add("AvgProduction", typeof(decimal));
            resultDt.Columns.Add("ProductionScale", typeof(decimal));

            var deptSQL    = @"select ID,Name,UserCount,SortIndex from S_A_Org
left join (select Count(0) as UserCount,DeptID from dbo.S_A_User
where IsDeleted='0' group by DeptID) UserDeptInfo on S_A_Org.ID=UserDeptInfo.DeptID
where Type in ('ManufactureDept') order by SortIndex ";
            var mainDeptDt = baseDB.ExecuteDataTable(deptSQL);

            string sql = @"select * from (select UserDeptID,UserDeptName,BelongYear,BelongQuarter,BelongMonth,
isnull(Max(Production),0) as ProductionWorkHour,
isnull(Max(Other),0) as OtherWorkHour
from  (select  Sum(WorkHourValue) as WorkHourValue,DeptWorkHourType,
UserDeptID,UserDeptName,BelongYear,BelongMonth,BelongQuarter 
from (select case when WorkHourType='Production' then 'Production' else 'Other' end as DeptWorkHourType,* 
from S_W_UserWorkHour where 1=1 {0} ) S_W_UserWorkHour
group by  UserDeptID,UserDeptName,DeptWorkHourType,BelongYear,BelongMonth,BelongQuarter 
) as DeptWorkHourInfo
pivot(avg(WorkHourValue) for DeptWorkHourType in (Production,Other)) tableInfo
group by UserDeptID,UserDeptName,BelongYear,BelongQuarter,BelongMonth) TableInfo  ";

            if (String.IsNullOrEmpty(EndDate))
            {
                EndDate = DateTime.Now.ToShortDateString();
            }
            if (String.IsNullOrEmpty(StartDate))
            {
                StartDate = DateTime.Now.AddMonths(-1).ToShortDateString();
            }

            string whereStr     = " and WorkHourDate>='" + StartDate + "' and WorkHourDate <= '" + EndDate + "'";
            var    workHourDt   = HrDB.ExecuteDataTable(String.Format(sql, whereStr));
            var    standardWork = this.getStandardWorkHour(Convert.ToDateTime(StartDate), Convert.ToDateTime(EndDate));
            var    result       = new Dictionary <string, object>();

            foreach (DataRow dept in mainDeptDt.Rows)
            {
                var row = resultDt.NewRow();
                row["DeptName"] = dept["Name"];
                row["DeptID"]   = dept["ID"];
                var userCount = dept["UserCount"] == null || dept["UserCount"] == DBNull.Value ? 0 : Convert.ToInt32(dept["UserCount"]);
                row["UserCount"] = userCount;
                var standardWorkHour = dept["UserCount"] == null || dept["UserCount"] == DBNull.Value ? 0 : Convert.ToInt32(dept["UserCount"]) * standardWork;
                row["BaseWorkHour"] = standardWorkHour;
                var obj             = workHourDt.Compute("Sum(ProductionWorkHour)", " UserDeptID='" + dept["ID"] + "'");
                var productionValue = obj == null || obj == DBNull.Value ? 0m : Convert.ToDecimal(obj);
                obj = workHourDt.Compute("Sum(OtherWorkHour)", " UserDeptID='" + dept["ID"] + "'");
                var otherValue  = obj == null || obj == DBNull.Value ? 0m : Convert.ToDecimal(obj);
                var sumWorkHour = productionValue + otherValue;
                row["Production"]      = productionValue;
                row["Other"]           = otherValue;
                row["SumWorkHour"]     = productionValue + otherValue;
                row["AvgSumWorkHour"]  = userCount == 0 ? 0m : Math.Round((productionValue + otherValue) / userCount, 2);
                row["AvgProduction"]   = userCount == 0 ? 0m : Math.Round(productionValue / userCount, 2);
                row["ProductionScale"] = standardWorkHour == 0 ? 0 : Math.Round(productionValue * 100 / standardWorkHour, 2);
                resultDt.Rows.Add(row);
            }
            result.SetValue("data", resultDt);

            var yAxies = new List <yAxis>();
            var y1     = new yAxis {
                MiniValue = 0, TitleInfo = new Dictionary <string, object>(), Lable = new Dictionary <string, object>()
            };

            y1.TitleInfo.SetValue("text", "工时");
            y1.Lable.SetValue("format", "{value}");
            var y2 = new yAxis {
                MiniValue = 0, TitleInfo = new Dictionary <string, object>(), Lable = new Dictionary <string, object>()
            };

            y2.TitleInfo.SetValue("text", "项目负荷率");
            y2.Lable.SetValue("format", "{value}%"); y2.opposite = true;
            yAxies.Add(y1);
            yAxies.Add(y2);

            var serDefines    = new List <Series>();
            var productionSer = new Series {
                Name = "项目工时", Field = "Production", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };
            var otherer = new Series {
                Name = "非项目工时", Field = "Other", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };
            var productionScaleSer = new Series {
                Name = "项目负荷率", Field = "ProductionScale", Type = "spline", yAxis = 1, Tooltip = new Dictionary <string, object>()
            };

            productionScaleSer.Tooltip.SetValue("valueSuffix", "%");

            serDefines.Add(productionSer);
            serDefines.Add(otherer);
            serDefines.Add(productionScaleSer);
            var chart = HighChartHelper.CreateColumnXYChart("", "", resultDt, "DeptName", yAxies, serDefines, null);

            result.SetValue("chart", chart);
            return(Json(result));
        }
        public JsonResult GetAnalysisList()
        {
            string queryData = this.Request["QueryData"];
            var    startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            var    endDate   = startDate.AddMonths(1);

            if (!String.IsNullOrEmpty(queryData))
            {
                var query = JsonHelper.ToObject(queryData);
                if (!String.IsNullOrEmpty(query.GetValue("StartDate")))
                {
                    startDate = Convert.ToDateTime(query.GetValue("StartDate"));
                }
                if (!String.IsNullOrEmpty(query.GetValue("EndDate")))
                {
                    endDate = Convert.ToDateTime(query.GetValue("EndDate"));
                }
            }
            var dt     = CreateTable();
            var sql    = @"select Count(0) as WorkCount,UserInfo,ContactType from dbo.S_M_BusinessTrace
where RegisterDate>='{0}' and RegisterDate<='{1}'
group by UserInfo,ContactType";
            var dataDt = this.SqlHelper.ExecuteDataTable(String.Format(sql, startDate.ToString(), endDate.ToString()));

            foreach (DataRow row in dt.Rows)
            {
                var totalValue = 0m;
                var rows       = dataDt.Select("UserInfo='" + row["UserID"].ToString() + "'");
                foreach (DataRow item in rows)
                {
                    if (item["ContactType"] == null || item["ContactType"] == DBNull.Value || String.IsNullOrEmpty(item["ContactType"].ToString()))
                    {
                        continue;
                    }
                    var field = item["ContactType"].ToString() + "_Count";
                    var value = item["WorkCount"] == null || item["WorkCount"] == DBNull.Value ? 0m : Convert.ToDecimal(item["WorkCount"]);
                    row[field]  = value;
                    totalValue += value;
                }
                row["TotalValue"] = totalValue;
            }

            var result = new Dictionary <string, object>();

            result.SetValue("data", dt);
            #region 生成图表

            var series = string.Empty; var serieFields = string.Empty;
            var def   = EnumBaseHelper.GetEnumDef("EPC.SaleWorkContent");
            var items = def.EnumItem.ToList();
            foreach (var item in items)
            {
                series      += item.Name + ",";
                serieFields += item.Code + "_Count,";
            }
            series      = series.TrimEnd(',');
            serieFields = serieFields.TrimEnd(',');
            var columChart = HighChartHelper.CreateColumnChart("销售人员工作分析", dt, "UserName", series.Split(','), serieFields.Split(','));
            result.SetValue("chartData", columChart.Render());
            #endregion
            return(Json(result));
        }
Beispiel #24
0
        public JsonResult GetDeptContractList()
        {
            var dt = EnumBaseHelper.GetEnumTable("System.ManDept");

            dt.Columns.Add("ContractKPI", typeof(decimal));
            dt.Columns.Add("ContractValue", typeof(decimal));
            dt.Columns.Add("ContractComplateRate", typeof(decimal));
            dt.Columns.Add("UnContractValue", typeof(decimal));
            dt.Columns.Add("ContractKPIRemain", typeof(decimal));
            dt.Columns.Add("TimeRate", typeof(decimal));

            var belongYear  = String.IsNullOrEmpty(GetQueryString("BelongYear")) ? DateTime.Now.Year : Convert.ToInt32(GetQueryString("BelongYear"));
            var sql         = "select * from S_KPI_IndicatorOrg where IndicatorType = 'YearIndicator' and BelongYear= '{0}'";
            var indicatorDt = this.SqlHelper.ExecuteDataTable(String.Format(sql, belongYear));

            sql = @"select isnull(Sum(ContractRMBValue),0) as DataValue,ChargeDeptID,ChargeDeptName,BelongYear,BelongMonth,BelongQuarter
                    FROM(
                    SELECT ContractRMBValue,ProductionDept as ChargeDeptID,ProductionDeptName as ChargeDeptName,
                    YEAR(SignDate) AS BelongYear,MONTH(SignDate) AS BelongMonth,DATEPART(QUARTER,SignDate) AS BelongQuarter
                    FROM dbo.S_M_ContractInfo
                    WHERE ContractState='Sign'  AND YEAR(SignDate)='{0}'
                    )resulttable
                    GROUP BY ChargeDeptID,ChargeDeptName,BelongYear,BelongMonth,BelongQuarter ";
            var contractDt = this.SqlHelper.ExecuteDataTable(String.Format(sql, belongYear));

            sql = @"select isnull(Sum(ContractRMBValue),0) as DataValue,ChargeDeptID,ChargeDeptName,BelongYear,BelongMonth,BelongQuarter
                    FROM(
                    SELECT ContractRMBValue,ProductionDept as ChargeDeptID,ProductionDeptName as ChargeDeptName,
                    YEAR(SignDate) AS BelongYear,MONTH(SignDate) AS BelongMonth,DATEPART(QUARTER,SignDate) AS BelongQuarter
                    FROM dbo.S_M_ContractInfo
                    WHERE ContractState!='Sign' OR ContractState IS NULL
                    )resulttable
                    GROUP BY ChargeDeptID,ChargeDeptName,BelongYear,BelongMonth,BelongQuarter";
            var UncCntractDt = this.SqlHelper.ExecuteDataTable(sql);

            var sumKpi = 0m; var sumValue = 0m;

            foreach (DataRow row in dt.Rows)
            {
                var obj = indicatorDt.Compute("Sum(ContractValue)", "OrgID='" + row["value"] + "'");
                var kpi = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["ContractKPI"] = kpi;
                sumKpi            += kpi;
                obj = contractDt.Compute("Sum(DataValue)", "ChargeDeptID='" + row["value"] + "'");
                var value = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["ContractValue"]        = value;
                sumValue                   += value;
                row["ContractComplateRate"] = kpi == 0 ? 100 : Math.Round(value / kpi * 100, 2);

                obj = UncCntractDt.Compute("Sum(DataValue)", "ChargeDeptID='" + row["value"] + "'");
                row["UnContractValue"]   = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["ContractKPIRemain"] = kpi - value;
                row["TimeRate"]          = Math.Round(Convert.ToDecimal(DateTime.Now.DayOfYear) / 365 * 100);
            }
            var result = new Dictionary <string, object>();

            result.SetValue("data", dt);
            var sumData = new Dictionary <string, object>();

            sumData.SetValue("ContractComplateRate", sumKpi == 0 ? 100 : Math.Round(sumValue / sumKpi * 100, 2));
            result.SetValue("sumData", sumData);

            var yAxies = new List <yAxis>();
            var y1     = new yAxis {
                MiniValue = 0, TitleInfo = new Dictionary <string, object>(), Lable = new Dictionary <string, object>()
            };

            y1.TitleInfo.SetValue("text", "合同金额");
            y1.Lable.SetValue("format", "{value}元");
            var y2 = new yAxis {
                MiniValue = 0, TitleInfo = new Dictionary <string, object>(), Lable = new Dictionary <string, object>()
            };

            y2.TitleInfo.SetValue("text", "完成率");
            y2.Lable.SetValue("format", "{value}%"); y2.opposite = true;
            yAxies.Add(y1);
            yAxies.Add(y2);

            var serDefines    = new List <Series>();
            var ReceiptKPISer = new Series {
                Name = "合同目标", Field = "ContractKPI", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };

            ReceiptKPISer.Tooltip.SetValue("valueSuffix", "元");
            serDefines.Add(ReceiptKPISer);

            var ReceiptValueSer = new Series {
                Name = "已签订金额", Field = "ContractValue", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };

            ReceiptValueSer.Tooltip.SetValue("valueSuffix", "元");
            serDefines.Add(ReceiptValueSer);

            var CanReceiptValueSer = new Series {
                Name = "待签约金额", Field = "UnContractValue", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };

            CanReceiptValueSer.Tooltip.SetValue("valueSuffix", "元");
            serDefines.Add(CanReceiptValueSer);

            var RecepitComplateRateSer = new Series {
                Name = "完成率", Field = "ContractComplateRate", Type = "spline", yAxis = 1, Tooltip = new Dictionary <string, object>()
            };

            RecepitComplateRateSer.Tooltip.SetValue("valueSuffix", "%");
            serDefines.Add(RecepitComplateRateSer);

            //var TimeRateSer = new Series { Name = "时间", Field = "TimeRate", Type = "spline", yAxis = 1, Tooltip = new Dictionary<string, object>() };
            //TimeRateSer.Tooltip.SetValue("valueSuffix", "%");
            //serDefines.Add(TimeRateSer);

            var chart = HighChartHelper.CreateColumnXYChart(belongYear + "年各部门合同情况", "", dt, "text", yAxies, serDefines, null);

            result.SetValue("chart", chart);
            return(Json(result));
        }
Beispiel #25
0
        public JsonResult GetContractList(QueryBuilder qb, string Year)
        {
            var receiptSQL  = @"SELECT  ISNULL(SUM(ReceiptInfo.ReceiptValue), 0) AS Value ,
                                        ProductionDept
                                FROM    ( SELECT    S_M_Receipt.* ,
                                                    YEAR(ReceiptDate) AS BelongYear,
                                                    ProductionDept ,
                                                    ProductionDeptName
                                          FROM      S_M_Receipt
                                                    LEFT JOIN S_M_ContractInfo ON ContractInfo = S_M_ContractInfo.ID
                                        ) ReceiptInfo
                                WHERE   1 = 1 {0}
                                GROUP BY ProductionDept;";
            var invoiceSQL  = @"SELECT  ISNULL(SUM(ReceiptInfo.InvoiceValue), 0) AS Value ,
                                        ProductionDept
                                FROM    ( SELECT    S_M_Invoice.* ,
                                                    YEAR(InvoiceDate) AS BelongYear,
                                                    ProductionDept ,
                                                    ProductionDeptName
                                          FROM      S_M_Invoice
                                                    LEFT JOIN S_M_ContractInfo ON ContractInfo = S_M_ContractInfo.ID
                                        ) ReceiptInfo
                                WHERE   State = 'Normal' {0}
                                GROUP BY ProductionDept;";
            var contractSQL = @"SELECT  ISNULL(SUM(ContractRMBValue), 0) AS Value ,
                                        ISNULL(SUM(SumBadDebtValue), 0) AS BadValue ,
                                        YEAR(SignDate) AS BelongYear,
                                        ProductionDept
                                FROM    S_M_ContractInfo
                                WHERE   ContractState='Sign' {0}
                                GROUP BY ProductionDept;";

            string innerWhere = string.Empty;

            if (!String.IsNullOrEmpty(Year) && Year.ToLowerInvariant() != "all")
            {
                innerWhere += " and BelongYear in ('" + Year.Replace(",", "','") + "')";
            }
            receiptSQL  = String.Format(receiptSQL, innerWhere);
            invoiceSQL  = String.Format(invoiceSQL, innerWhere);
            contractSQL = String.Format(contractSQL, innerWhere);
            var receiptDt  = this.SqlHelper.ExecuteDataTable(receiptSQL);
            var invoiceDt  = this.SqlHelper.ExecuteDataTable(invoiceSQL);
            var contractDt = this.SqlHelper.ExecuteDataTable(contractSQL);

            var deptField     = "ProductionDept";
            var deptNameField = "ProductionDeptName";
            var resultDt      = CreateDefaultTable(qb, deptField, deptNameField);

            foreach (DataRow item in resultDt.Rows)
            {
                var receiptRow = receiptDt.Select("ProductionDept='" + item[deptField] + "'").FirstOrDefault();
                if (receiptRow != null)
                {
                    item["ReceiptValue"] = receiptRow["Value"];
                }
                var invoiceRow = invoiceDt.Select("ProductionDept='" + item[deptField] + "'").FirstOrDefault();
                if (invoiceRow != null)
                {
                    item["InvoiceValue"] = invoiceRow["Value"];
                }
                var contractRow = contractDt.Select("ProductionDept='" + item[deptField] + "'").FirstOrDefault();
                if (contractRow != null)
                {
                    item["ContractValue"] = contractRow["Value"];
                    item["BadDebtValue"]  = contractRow["BadValue"];
                }
                item["RemainValue"] = Convert.ToDecimal(item["ContractValue"]) -
                                      Convert.ToDecimal(item["ReceiptValue"]) - Convert.ToDecimal(item["BadDebtValue"]);
                item["ReciveableValue"] = Convert.ToDecimal(item["InvoiceValue"]) -
                                          Convert.ToDecimal(item["ReceiptValue"]) - Convert.ToDecimal(item["BadDebtValue"]);
            }

            var result = new Dictionary <string, object>();

            result.SetValue("data", resultDt);
            var series      = "合同总额,收款总额,开票总额,坏账总额,应收款总额,剩余合同额";
            var serieFields = "ContractValue,ReceiptValue,InvoiceValue,BadDebtValue,ReciveableValue,RemainValue";
            var chartData   = HighChartHelper.CreateColumnChart("", resultDt, deptNameField, series.Split(','), serieFields.Split(','));

            result.SetValue("chartData", chartData.Render());
            return(Json(result));
        }
Beispiel #26
0
        public JsonResult GetDeptReceiptList()
        {
            var dt = EnumBaseHelper.GetEnumTable("System.ManDept");

            dt.Columns.Add("ReceiptKPI", typeof(decimal));
            dt.Columns.Add("ReceiptValue", typeof(decimal));
            dt.Columns.Add("RecepitComplateRate", typeof(decimal));
            dt.Columns.Add("CanReceiptValue", typeof(decimal));
            dt.Columns.Add("RemaintContractValue", typeof(decimal));
            dt.Columns.Add("ReceiptKPIRemain", typeof(decimal));
            dt.Columns.Add("TimeRate", typeof(decimal));

            var belongYear  = String.IsNullOrEmpty(GetQueryString("BelongYear")) ? DateTime.Now.Year : Convert.ToInt32(GetQueryString("BelongYear"));
            var sql         = "select * from S_KPI_IndicatorOrg where IndicatorType = 'YearIndicator' and BelongYear= '{0}'";
            var indicatorDt = this.SqlHelper.ExecuteDataTable(String.Format(sql, belongYear));

            sql = @"SELECT  ISNULL(SUM(ReceiptInfo.ReceiptValue), 0) AS Value ,
                            ProductionDept,ProductionDeptName
                    FROM    ( SELECT    S_M_Receipt.* ,
					                    YEAR(ReceiptDate) AS BelongYear,
                                        ProductionDept ,
                                        ProductionDeptName
                              FROM      S_M_Receipt 
                                        LEFT JOIN S_M_ContractInfo ON ContractInfo = S_M_ContractInfo.ID
		                      WHERE YEAR(ReceiptDate)='{0}'
                            ) ReceiptInfo
                    WHERE   1 = 1
                    GROUP BY ProductionDept,ProductionDeptName;";
            var receiptDt = this.SqlHelper.ExecuteDataTable(String.Format(sql, belongYear));

            sql = @" select isnull(Sum(isnull(ReceiptValue,0)-isnull(FactReceiptValue,0)),0)  as DataValue,
ProductionDept as ChargeDeptID,ProductionDeptName as ChargeDeptName 
from dbo.S_M_ContractInfo_ReceiptObj left join dbo.S_M_ContractInfo 
on S_M_ContractInfo_ReceiptObj.S_M_ContractInfoID=S_M_ContractInfo.ID
  group by ProductionDept,ProductionDeptName";
            var canReceiptDt = this.SqlHelper.ExecuteDataTable(sql);

            sql = @"select Sum(isnull(ContractRMBValue,0)-isnull(SumReceiptValue,0)) as DataValue,ProductionDept as ChargeDeptID,ProductionDeptName as ChargeDeptName 
 from S_M_ContractInfo where ContractState='Sign' group by ProductionDept,ProductionDeptName";
            var remainContractDt = this.SqlHelper.ExecuteDataTable(sql);
            var sumKpi = 0m; var sumReceiptValue = 0m;

            foreach (DataRow row in dt.Rows)
            {
                var obj = indicatorDt.Compute("Sum(ReceiptValue)", "OrgID='" + row["value"] + "'");
                var kpi = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["ReceiptKPI"] = kpi;
                sumKpi           += kpi;
                obj = receiptDt.Compute("Sum(DataValue)", "ChargeDeptID='" + row["value"] + "'");
                var recepitValue = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["ReceiptValue"]        = recepitValue;
                sumReceiptValue           += recepitValue;
                row["RecepitComplateRate"] = kpi == 0 ? 100 : Math.Round(recepitValue / kpi * 100, 2);

                obj = canReceiptDt.Compute("Sum(DataValue)", "ChargeDeptID='" + row["value"] + "'");
                row["CanReceiptValue"]      = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["RemaintContractValue"] = remainContractDt.Compute("Sum(DataValue)", "ChargeDeptID='" + row["value"] + "'");
                row["ReceiptKPIRemain"]     = kpi - recepitValue;
                row["TimeRate"]             = Math.Round(Convert.ToDecimal(DateTime.Now.DayOfYear) / 365 * 100);
            }
            var result = new Dictionary <string, object>();

            result.SetValue("data", dt);
            var sumData = new Dictionary <string, object>();

            sumData.SetValue("RecepitComplateRate", sumKpi == 0 ? 100 : Math.Round(sumReceiptValue / sumKpi * 100, 2));
            result.SetValue("sumData", sumData);

            var yAxies = new List <yAxis>();
            var y1     = new yAxis {
                MiniValue = 0, TitleInfo = new Dictionary <string, object>(), Lable = new Dictionary <string, object>()
            };

            y1.TitleInfo.SetValue("text", "收款金额");
            y1.Lable.SetValue("format", "{value}元");
            var y2 = new yAxis {
                MiniValue = 0, TitleInfo = new Dictionary <string, object>(), Lable = new Dictionary <string, object>()
            };

            y2.TitleInfo.SetValue("text", "完成率");
            y2.Lable.SetValue("format", "{value}%"); y2.opposite = true;
            yAxies.Add(y1);
            yAxies.Add(y2);

            var serDefines    = new List <Series>();
            var ReceiptKPISer = new Series {
                Name = "收款目标", Field = "ReceiptKPI", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };

            ReceiptKPISer.Tooltip.SetValue("valueSuffix", "元");
            serDefines.Add(ReceiptKPISer);

            var ReceiptValueSer = new Series {
                Name = "已收款", Field = "ReceiptValue", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };

            ReceiptValueSer.Tooltip.SetValue("valueSuffix", "元");
            serDefines.Add(ReceiptValueSer);

            var CanReceiptValueSer = new Series {
                Name = "经营应收款", Field = "CanReceiptValue", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
            };

            CanReceiptValueSer.Tooltip.SetValue("valueSuffix", "元");
            serDefines.Add(CanReceiptValueSer);

            var RecepitComplateRateSer = new Series {
                Name = "完成率", Field = "RecepitComplateRate", Type = "spline", yAxis = 1, Tooltip = new Dictionary <string, object>()
            };

            RecepitComplateRateSer.Tooltip.SetValue("valueSuffix", "%");
            serDefines.Add(RecepitComplateRateSer);

            var chart = HighChartHelper.CreateColumnXYChart(belongYear + "年各部门收款情况", "", dt, "text", yAxies, serDefines, null);

            result.SetValue("chart", chart);
            return(Json(result));
        }
Beispiel #27
0
        public JsonResult GetDeptIndicatorList(string anlysisValue = "ReceiptValue")
        {
            var dt = EnumBaseHelper.GetEnumTable("System.ManDept");

            dt.Columns.Add("ContractKPI", typeof(decimal));
            dt.Columns.Add("ContractValue", typeof(decimal));
            dt.Columns.Add("ContractComplateRate", typeof(decimal));
            dt.Columns.Add("UnContractValue", typeof(decimal));
            dt.Columns.Add("ContractKPIRemain", typeof(decimal));
            dt.Columns.Add("ReceiptKPI", typeof(decimal));
            dt.Columns.Add("ReceiptValue", typeof(decimal));
            dt.Columns.Add("RecepitComplateRate", typeof(decimal));
            dt.Columns.Add("CanReceiptValue", typeof(decimal));
            dt.Columns.Add("RemaintContractValue", typeof(decimal));
            dt.Columns.Add("ReceiptKPIRemain", typeof(decimal));
            dt.Columns.Add("TimeRate", typeof(decimal));

            var belongYear  = String.IsNullOrEmpty(GetQueryString("BelongYear")) ? DateTime.Now.Year : Convert.ToInt32(GetQueryString("BelongYear"));
            var sql         = "select * from S_KPI_IndicatorOrg where IndicatorType = 'YearIndicator' and BelongYear= '{0}'";
            var indicatorDt = this.SqlHelper.ExecuteDataTable(String.Format(sql, belongYear));

            sql = @"SELECT  ISNULL(SUM(ReceiptInfo.ReceiptValue), 0) AS Value ,
                            ProductionDept,ProductionDeptName
                    FROM    ( SELECT    ReceiptValue,
                                        ProductionDept,ProductionDeptName
                              FROM      S_M_Receipt 
                                        LEFT JOIN S_M_ContractInfo ON ContractInfo = S_M_ContractInfo.ID
		                      WHERE YEAR(ReceiptDate)='{0}'
                            ) ReceiptInfo
                    WHERE   1 = 1
                    GROUP BY ProductionDept,ProductionDeptName; ";
            var receiptDt = this.SqlHelper.ExecuteDataTable(String.Format(sql, belongYear));

            sql = @"  select isnull(Sum(isnull(ReceiptValue,0)-isnull(FactReceiptValue,0)),0)  as DataValue,ProductionDept as ChargeDeptID,ProductionDeptName as ChargeDeptName 
                      FROM S_M_ContractInfo_ReceiptObj
                      left join S_M_ContractInfo on S_M_ContractInfo_ReceiptObj.S_M_ContractInfoID=S_M_ContractInfo.ID
                      group by ProductionDept,ProductionDeptName";
            var canReceiptDt = this.SqlHelper.ExecuteDataTable(sql);

            sql = @" select Sum(isnull(ContractRMBValue,0)-isnull(SumReceiptValue,0)) as DataValue,ProductionDept as ChargeDeptID,
                     ProductionDeptName as ChargeDeptName 
                     from S_M_ContractInfo where ContractState='Sign' group by ProductionDept,ProductionDeptName";
            var remainContractDt = this.SqlHelper.ExecuteDataTable(sql);

            sql = @" SELECT isnull(Sum(ContractRMBValue),0) as DataValue,ChargeDeptID,ChargeDeptName,BelongYear,BelongMonth,BelongQuarter
                     FROM
                    (select ContractRMBValue,ProductionDept as ChargeDeptID,ProductionDeptName as ChargeDeptName,
                    YEAR(SignDate) AS BelongYear,MONTH(SignDate) AS BelongMonth,DATEPART(QUARTER,SignDate) AS BelongQuarter
                    from S_M_ContractInfo 
                    WHERE ContractState='Sign' and YEAR(SignDate)='{0}')result
                    GROUP by BelongYear,BelongQuarter,BelongMonth,ChargeDeptID,ChargeDeptName ";
            var contractDt = this.SqlHelper.ExecuteDataTable(String.Format(sql, belongYear));

            sql = @"select isnull(Sum(ContractRMBValue),0) as DataValue,ChargeDeptID,ChargeDeptName,BelongYear,BelongMonth,BelongQuarter
                    FROM(
                    SELECT ContractRMBValue,ProductionDept as ChargeDeptID,ProductionDeptName as ChargeDeptName,
                    YEAR(SignDate) AS BelongYear,MONTH(SignDate) AS BelongMonth,DATEPART(QUARTER,SignDate) AS BelongQuarter
                    FROM dbo.S_M_ContractInfo
                    WHERE ContractState!='Sign' OR ContractState IS NULL
                    )resulttable
                    GROUP BY ChargeDeptID,ChargeDeptName,BelongYear,BelongMonth,BelongQuarter";
            var UncCntractDt = this.SqlHelper.ExecuteDataTable(sql);

            var sumReceptKpi = 0m; var sumReceiptValue = 0m; var sumContractKpi = 0m; var sumContractValue = 0m;

            foreach (DataRow row in dt.Rows)
            {
                var obj       = indicatorDt.Compute("Sum(ReceiptValue)", "OrgID='" + row["value"] + "'");
                var receptkpi = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["ReceiptKPI"] = receptkpi;
                sumReceptKpi     += receptkpi;
                obj = receiptDt.Compute("Sum(DataValue)", "ChargeDeptID='" + row["value"] + "'");
                var recepitValue = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["ReceiptValue"]        = recepitValue;
                sumReceiptValue           += recepitValue;
                row["RecepitComplateRate"] = receptkpi == 0 ? 100 : Math.Round(recepitValue / receptkpi * 100, 2);

                obj = canReceiptDt.Compute("Sum(DataValue)", "ChargeDeptID='" + row["value"] + "'");
                row["CanReceiptValue"]      = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["RemaintContractValue"] = remainContractDt.Compute("Sum(DataValue)", "ChargeDeptID='" + row["value"] + "'");
                row["ReceiptKPIRemain"]     = receptkpi - recepitValue;
                //row["TimeRate"] = Math.Round(Convert.ToDecimal(DateTime.Now.DayOfYear) / 365 * 100);

                obj = indicatorDt.Compute("Sum(ContractValue)", "OrgID='" + row["value"] + "'");
                var contractKpi = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["ContractKPI"] = contractKpi;
                sumContractKpi    += contractKpi;

                obj = contractDt.Compute("Sum(DataValue)", "ChargeDeptID='" + row["value"] + "'");
                var value = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["ContractValue"]        = value;
                sumContractValue           += value;
                row["ContractComplateRate"] = contractKpi == 0 ? 100 : Math.Round(value / contractKpi * 100, 2);

                obj = UncCntractDt.Compute("Sum(DataValue)", "ChargeDeptID='" + row["value"] + "'");
                row["UnContractValue"]   = obj == null || obj == DBNull.Value ? 0 : Convert.ToDecimal(obj);
                row["ContractKPIRemain"] = contractKpi - value;
            }
            var result = new Dictionary <string, object>();

            result.SetValue("data", dt);
            var sumData = new Dictionary <string, object>();

            sumData.SetValue("RecepitComplateRate", sumReceptKpi == 0 ? 100 : Math.Round(sumReceiptValue / sumReceptKpi * 100, 2));
            sumData.SetValue("ContractComplateRate", sumContractKpi == 0 ? 100 : Math.Round(sumReceiptValue / sumContractKpi * 100, 2));
            result.SetValue("sumData", sumData);

            #region 生成图表
            var yAxies = new List <yAxis>();
            var y1     = new yAxis {
                MiniValue = 0, TitleInfo = new Dictionary <string, object>(), Lable = new Dictionary <string, object>()
            };
            y1.TitleInfo.SetValue("text", "金额");
            y1.Lable.SetValue("format", "{value}元");
            var y2 = new yAxis {
                MiniValue = 0, TitleInfo = new Dictionary <string, object>(), Lable = new Dictionary <string, object>()
            };
            y2.TitleInfo.SetValue("text", "完成率");
            y2.Lable.SetValue("format", "{value}%"); y2.opposite = true;
            yAxies.Add(y1);
            yAxies.Add(y2);

            var serDefines = new List <Series>();
            if (anlysisValue == AnlysisValue.ReceiptValue.ToString())
            {
                var ReceiptKPISer = new Series {
                    Name = "收款目标", Field = "ReceiptKPI", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
                };
                ReceiptKPISer.Tooltip.SetValue("valueSuffix", "元");
                serDefines.Add(ReceiptKPISer);

                var ReceiptValueSer = new Series {
                    Name = "已收款", Field = "ReceiptValue", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
                };
                ReceiptValueSer.Tooltip.SetValue("valueSuffix", "元");
                serDefines.Add(ReceiptValueSer);

                var CanReceiptValueSer = new Series {
                    Name = "经营应收款", Field = "CanReceiptValue", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
                };
                CanReceiptValueSer.Tooltip.SetValue("valueSuffix", "元");
                serDefines.Add(CanReceiptValueSer);

                var RecepitComplateRateSer = new Series {
                    Name = "收款完成率", Field = "RecepitComplateRate", Type = "spline", yAxis = 1, Tooltip = new Dictionary <string, object>()
                };
                RecepitComplateRateSer.Tooltip.SetValue("valueSuffix", "%");
                serDefines.Add(RecepitComplateRateSer);
            }
            else
            {
                var contractKPISer = new Series {
                    Name = "合同目标", Field = "ContractKPI", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
                };
                contractKPISer.Tooltip.SetValue("valueSuffix", "元");
                serDefines.Add(contractKPISer);

                var contractValueSer = new Series {
                    Name = "已签订金额", Field = "ContractValue", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
                };
                contractValueSer.Tooltip.SetValue("valueSuffix", "元");
                serDefines.Add(contractValueSer);

                var unContractValueSer = new Series {
                    Name = "待签约金额", Field = "UnContractValue", Type = "column", yAxis = 0, Tooltip = new Dictionary <string, object>()
                };
                unContractValueSer.Tooltip.SetValue("valueSuffix", "元");
                serDefines.Add(unContractValueSer);

                var contractComplateRateSer = new Series {
                    Name = "合同完成率", Field = "ContractComplateRate", Type = "spline", yAxis = 1, Tooltip = new Dictionary <string, object>()
                };
                contractComplateRateSer.Tooltip.SetValue("valueSuffix", "%");
                serDefines.Add(contractComplateRateSer);
            }

            //var TimeRateSer = new Series { Name = "时间", Field = "TimeRate", Type = "spline", yAxis = 1, Tooltip = new Dictionary<string, object>() };
            //TimeRateSer.Tooltip.SetValue("valueSuffix", "%");
            //serDefines.Add(TimeRateSer);
            string title = belongYear + "年各部门收款完成情况";
            if (anlysisValue == AnlysisValue.ContractValue.ToString())
            {
                title = belongYear + "年各部门合同完成情况";
            }
            var chart = HighChartHelper.CreateColumnXYChart(title, "", dt, "text", yAxies, serDefines, null);
            result.SetValue("chart", chart);
            #endregion

            return(Json(result));
        }
Beispiel #28
0
        public JsonResult GetProjectList(QueryBuilder qb, string Year)
        {
            var receiptSQL  = @"SELECT isnull(Sum(RelationValue),0) as Value,ChargerDept FROM (
                                select * FROM(
                                select RelationValue,ChargerDept,YEAR(PlanDate) AS BelongYear
                                from S_M_Receipt_PlanRelation left join S_M_Receipt on S_M_ReceiptID = S_M_Receipt.ID
                                left join S_M_ContractInfo_ReceiptObj on ReceiptObjID = S_M_ContractInfo_ReceiptObj.ID
                                left join S_I_Engineering on  S_M_ContractInfo_ReceiptObj.ProjectInfo= S_I_Engineering.ID
                                )midTable
                                WHERE 1=1 {0})result
                                group by ChargerDept";
            var invoiceSQL  = @"select isnull(Sum(RelationValue),0) as Value,ChargerDept FROM(
                                SELECT * FROM (SELECT RelationValue,ChargerDept,YEAR(InvoiceDate) AS BelongYear,S_M_Invoice.State
                                from S_M_Invoice_ReceiptObjRelation left join S_M_Invoice on S_M_InvoiceID = S_M_Invoice.ID
                                left join S_M_ContractInfo_ReceiptObj on S_M_ReceiptObjID = S_M_ContractInfo_ReceiptObj.ID
                                left join S_I_Engineering on ProjectInfo = S_I_Engineering.ID
                                )midtable
                                where State = 'Normal' {0}
                                )result
                                group by ChargerDept";
            var contractSQL = @"select isnull(Sum(ReceiptValue),0) as Value,isnull(Sum(FactBadValue),0) as BadValue,ChargerDept FROM
                                (
                                SELECT * FROM (  
                                SELECT ReceiptValue,FactBadValue,S_I_Engineering.ChargerDept,YEAR(SignDate) AS BelongYear,ContractState
                                FROM S_M_ContractInfo_ReceiptObj
                                left join S_I_Engineering on ProjectInfo = S_I_Engineering.ID
                                left join S_M_ContractInfo on S_M_ContractInfo_ReceiptObj.S_M_ContractInfoID = S_M_ContractInfo.ID
                                )midTable
                                where ContractState='Sign' {0}
                                )result
                                group by ChargerDept";

            string innerWhere = string.Empty;

            if (!String.IsNullOrEmpty(Year) && Year.ToLowerInvariant() != "all")
            {
                innerWhere += " and BelongYear in ('" + Year.Replace(",", "','") + "')";
            }
            receiptSQL  = String.Format(receiptSQL, innerWhere);
            invoiceSQL  = String.Format(invoiceSQL, innerWhere);
            contractSQL = String.Format(contractSQL, innerWhere);
            var receiptDt  = this.SqlHelper.ExecuteDataTable(receiptSQL);
            var invoiceDt  = this.SqlHelper.ExecuteDataTable(invoiceSQL);
            var contractDt = this.SqlHelper.ExecuteDataTable(contractSQL);

            var resultDt = CreateDefaultTable(qb);

            foreach (DataRow item in resultDt.Rows)
            {
                var receiptRow = receiptDt.Select("ChargerDept='" + item["ChargerDept"] + "'").FirstOrDefault();
                if (receiptRow != null)
                {
                    item["ReceiptValue"] = receiptRow["Value"];
                }
                var invoiceRow = invoiceDt.Select("ChargerDept='" + item["ChargerDept"] + "'").FirstOrDefault();
                if (invoiceRow != null)
                {
                    item["InvoiceValue"] = invoiceRow["Value"];
                }
                var contractRow = contractDt.Select("ChargerDept='" + item["ChargerDept"] + "'").FirstOrDefault();
                if (contractRow != null)
                {
                    item["ContractValue"] = contractRow["Value"];
                    item["BadDebtValue"]  = contractRow["BadValue"];
                }
                item["RemainValue"] = Convert.ToDecimal(item["ContractValue"]) -
                                      Convert.ToDecimal(item["ReceiptValue"]) - Convert.ToDecimal(item["BadDebtValue"]);
                item["ReciveableValue"] = Convert.ToDecimal(item["InvoiceValue"]) -
                                          Convert.ToDecimal(item["ReceiptValue"]) - Convert.ToDecimal(item["BadDebtValue"]);
            }

            var result = new Dictionary <string, object>();

            result.SetValue("data", resultDt);
            var series      = "合同总额,收款总额,开票总额,坏账总额,应收款总额,剩余合同额";
            var serieFields = "ContractValue,ReceiptValue,InvoiceValue,BadDebtValue,ReciveableValue,RemainValue";
            var chartData   = HighChartHelper.CreateColumnChart("", resultDt, "ChargerDeptName", series.Split(','), serieFields.Split(','));

            result.SetValue("chartData", chartData.Render());
            return(Json(result));
        }
        private Dictionary <string, object> GetChartData(string xAxisType, string anlysisValue, string analysisType, int startYear, int endYear)
        {
            string series      = string.Empty;
            string serieFields = string.Empty;
            string sql         = @"select Sum(DataValue) as Value,BelongYear {0} from
(select isnull(ThisContractRMBAmount,0) as DataValue,BelongYear,BelongQuarter,BelongMonth
from S_C_ManageContract where IsSigned='" + ContractIsSigned.Signed + @"'
union all
select isnull(SupplementaryRMBAmount,0) as DataValue,ad.BelongYear,ad.BelongQuarter,ad.BelongMonth
from S_C_ManageContract_Supplementary ad
inner join S_C_ManageContract con on ad.ContractInfoID=con.ID where IsSigned='" + ContractIsSigned.Signed + @"'
)tb where BelongYear>='" + startYear + "' and BelongYear<='" + endYear + "' group by BelongYear {0}";

            if (anlysisValue == AnlysisValue.ReceiptValue.ToString())
            {
                sql = @"select Sum(Amount) as Value,BelongYear {0} from S_C_Receipt
where BelongYear>='" + startYear + "' and BelongYear<='" + endYear + "' group by BelongYear {0}";
            }

            #region  月为X轴统计图表
            if (xAxisType == XAxisType.Month.ToString())
            {
                sql = String.Format(sql, ",BelongMonth");
                var dt         = this.SqlHelper.ExecuteDataTable(sql);
                var dataSource = new DataTable();
                dataSource.Columns.Add("Month", typeof(string));
                for (int i = startYear; i <= endYear; i++)
                {
                    series      += i.ToString() + "年,";
                    serieFields += i.ToString() + ",";
                    dataSource.Columns.Add(i.ToString(), typeof(decimal));
                }
                for (int i = 1; i <= 12; i++)
                {
                    var row = dataSource.NewRow();
                    row["Month"] = i + "月";
                    for (int j = startYear; j <= endYear; j++)
                    {
                        var data = dt.Select("BelongMonth='" + i + "' and BelongYear='" + j + "'").FirstOrDefault();
                        if (analysisType == AnalysisType.Month.ToString())
                        {
                            if (data == null || data["Value"] == null || data["Value"] == DBNull.Value)
                            {
                                row[j.ToString()] = 0;
                            }
                            else
                            {
                                row[j.ToString()] = data["Value"];
                            }
                        }
                        else
                        {
                            var value = 0M;
                            if (j == DateTime.Now.Year && i > DateTime.Now.Month)
                            {
                                row[j.ToString()] = value;
                            }
                            else
                            {
                                if (data != null && data["Value"] != null && data["Value"] != DBNull.Value)
                                {
                                    value = Convert.ToDecimal(data["Value"]);
                                }
                                if (i == 1)
                                {
                                    row[j.ToString()] = value;
                                }
                                else
                                {
                                    var preDataRow = dataSource.Select("Month='" + (i - 1) + "月'").FirstOrDefault();
                                    var preValue   = 0M;
                                    if (preDataRow != null)
                                    {
                                        preValue = Convert.ToDecimal(preDataRow[j.ToString()]);
                                        value   += preValue;
                                    }
                                }
                            }
                            row[j.ToString()] = value;
                        }
                    }
                    dataSource.Rows.Add(row);
                }
                series      = series.TrimEnd(',');
                serieFields = serieFields.TrimEnd(',');
                var columChart = HighChartHelper.CreateColumnChart("", dataSource, "Month", series.Split(','), serieFields.Split(','));
                return(columChart.Render());
            }
            #endregion
            #region  年统计图表
            else
            {
                sql = String.Format(sql, "");
                var dt         = this.SqlHelper.ExecuteDataTable(sql);
                var dataSource = new DataTable();
                dataSource.Columns.Add("Value", typeof(decimal));
                dataSource.Columns.Add("Year", typeof(string));
                for (int i = startYear; i <= endYear; i++)
                {
                    var row = dataSource.NewRow();
                    row["Year"] = i;
                    var data = dt.Select(" BelongYear='" + i + "' ").FirstOrDefault();
                    //单月统计
                    if (analysisType == AnalysisType.Month.ToString())
                    {
                        if (data == null || data["Value"] == null || data["Value"] == DBNull.Value)
                        {
                            row["Value"] = 0;
                        }
                        else
                        {
                            row["Value"] = data["Value"];
                        }
                        dataSource.Rows.Add(row);
                    }
                    else //累计统计
                    {
                        var value = 0M;
                        if (data == null || data["Value"] == null || data["Value"] == DBNull.Value)
                        {
                            value = 0;
                        }
                        else
                        {
                            value = Convert.ToDecimal(data["Value"]);
                        }
                        if (i == startYear)
                        {
                            row["Value"] = value;
                        }
                        else
                        {
                            var preRow   = dataSource.Select("Year='" + (i - 1) + "'").FirstOrDefault();
                            var preValue = 0M;
                            if (preRow != null && preRow["Value"] != null && preRow["Value"] != DBNull.Value)
                            {
                                preValue = Convert.ToDecimal(preRow["Value"]);
                            }
                            row["Value"] = preValue + value;
                        }
                        dataSource.Rows.Add(row);
                    }
                }
                series      = EnumBaseHelper.GetEnumDescription(typeof(AnlysisValue), anlysisValue);
                serieFields = "Value";
                var columChart = HighChartHelper.CreateColumnChart("", dataSource, "Year", series.Split(','), serieFields.Split(','));
                return(columChart.Render());
            }
            #endregion
        }
        /// <summary>
        /// 获取列表数据
        /// </summary>
        /// <returns></returns>
        public JsonResult GetCostList(QueryBuilder qb)
        {
            //费用科目查询
            var cbsType      = "";
            var whereCBSType = " and isnull(ParentID,'')=''";

            foreach (var item in qb.Items)
            {
                if (item.Field == "CBSType")
                {
                    cbsType = item.Value.ToString();
                }
            }
            if (!string.IsNullOrEmpty(cbsType))
            {
                whereCBSType = " and isnull(ParentID,'')!='' and CBSType='" + cbsType + "'";
            }
            //年份查询
            var belongYear  = "";
            var whereBelong = " ";

            foreach (var item in qb.Items)
            {
                if (item.Field == "BelongYear")
                {
                    belongYear = item.Value.ToString();
                }
            }
            if (!string.IsNullOrEmpty(belongYear))
            {
                whereBelong = " and BelongYear='" + belongYear + "'";
            }
            //月份查询
            var belongMonth = "";

            foreach (var item in qb.Items)
            {
                if (item.Field == "BelongMonth")
                {
                    belongMonth = item.Value.ToString();
                }
            }
            if (!string.IsNullOrEmpty(belongMonth))
            {
                whereBelong += " and BelongMonth='" + belongMonth + "'";
            }
            //季度查询
            var belongQuarter = "";

            foreach (var item in qb.Items)
            {
                if (item.Field == "BelongQuarter")
                {
                    belongQuarter = item.Value.ToString();
                }
            }
            if (!string.IsNullOrEmpty(belongQuarter))
            {
                whereBelong += " and BelongQuarter='" + belongQuarter + "'";
            }

            //获取列表数据
            var projectInfoID = GetQueryString("ProjectInfoID");
            var sqlHelper     = SQLHelper.CreateSqlHelper(ConnEnum.Project);
            var sql           = @"select CBSCode,CBSName,sum(CBSValue) as CBSValue,sum(CostValue) as CostValue from 
                        (
                        select CBSCode,CBSName,CBSValue,
                        (select sum(CostValue) from S_C_CBSCost as c
                        inner join S_C_CBSNode as n on c.CBSNodeID=n.ID
                        where n.FullID like '%'+node.ID+'%' {0}) as CostValue
                        from S_C_CBSNode as node
                        where CBSNodeType in ('CBS','Major') and ProjectInfoID='" + projectInfoID + @"' {1}
                        ) as t
                        group by CBSCode,CBSName";
            var resultDt      = sqlHelper.ExecuteDataTable(string.Format(sql, whereBelong, whereCBSType));
            //图表数据
            var result = new Dictionary <string, object>();

            result.SetValue("data", resultDt);
            var series      = "";
            var serieFields = "";
            var chartDt     = new DataTable();

            chartDt.Columns.Add("CBSType");
            //预算金额
            var cbsRow = chartDt.NewRow();

            cbsRow["CBSType"] = "预算金额";
            chartDt.Rows.Add(cbsRow);
            //实耗成本
            var costRow = chartDt.NewRow();

            costRow["CBSType"] = "实耗成本";
            chartDt.Rows.Add(costRow);
            if (resultDt.Rows.Count > 0)
            {
                foreach (DataRow resultDr in resultDt.Rows)
                {
                    series      += resultDr["CBSName"] + ",";
                    serieFields += resultDr["CBSCode"] + ",";
                    chartDt.Columns.Add(resultDr["CBSCode"].ToString(), typeof(decimal));
                    cbsRow[resultDr["CBSCode"].ToString()]  = resultDr["CBSValue"];
                    costRow[resultDr["CBSCode"].ToString()] = resultDr["CostValue"];
                }
                var chartData = HighChartHelper.CreateColumnChart("", chartDt, "CBSType", series.Trim(',').Split(','), serieFields.Trim(',').Split(','));
                result.SetValue("chartData", chartData.Render());
                return(Json(result));
            }
            else
            {
                return(Json(""));
            }
        }