예제 #1
0
        /// <summary>
        /// 각 값들의 평균값을 표시하는 메서드
        /// </summary>
        /// <param name="List">조회 시 각 x축 값을 얻어오기 위한 List</param>
        private void AverageDisplay(List <InventorySalesForChartVO> List)
        {
            InventorySalesChart.Series.Add("재고량평균");
            InventorySalesChart.Series.Add("판매량평균");
            avgList  = new List <InventoryTypeSalesVO>();
            avgList1 = new List <InventoryTypeSalesVO>();

            foreach (var item in List)//평균 라인을 긋기 위해 x 값은 재고명을 다 넣어주고, y값은 모두 평균값으로 입력
            {
                double inventoryNum      = (double)((from avgList in List select avgList.InventoryNum).Sum());
                double inventoryNumCount = (double)((from avgList in List where avgList.InventoryNum != 0 select avgList.InventoryNum).Count());
                InventoryTypeSalesVO inventoryTypeSalesVO = new InventoryTypeSalesVO()
                {
                    XAxis        = item.XAxis,
                    UseInventory = (float)Math.Round(inventoryNum / inventoryNumCount, 2)
                };
                avgList.Add(inventoryTypeSalesVO);
            }
            InventorySalesChart.Series["재고량평균"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
            InventorySalesChart.Series["재고량평균"].Points.DataBind(avgList, "XAxis", "UseInventory", null);
            try
            {
                InventorySalesChart.Series["재고량평균"].Points[0].Label          = "재고량 평균 : " + avgList[0].UseInventory + "kg";
                InventorySalesChart.Series["재고량평균"].Points[0].LabelForeColor = Color.Black;
                InventorySalesChart.Series["재고량평균"].Color = Color.FromArgb(65, 140, 240);
            }
            catch (ArgumentOutOfRangeException)
            {
            }



            foreach (var item in List)//평균 라인을 긋기 위해 x 값은 재고명을 다 넣어주고, y값은 모두 평균값으로 입력
            {
                double salesNum      = (double)((from avgList1 in List select avgList1.SalesNum).Sum());
                double salesNumCount = (double)((from avgList1 in List where avgList1.SalesNum != 0 select avgList1.SalesNum).Count());

                InventoryTypeSalesVO inventoryTypeSalesVO = new InventoryTypeSalesVO()
                {
                    XAxis        = item.XAxis,
                    UseInventory = (float)Math.Round(salesNum / salesNumCount, 2)
                };
                avgList1.Add(inventoryTypeSalesVO);
            }
            InventorySalesChart.Series["판매량평균"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
            InventorySalesChart.Series["판매량평균"].Points.DataBind(avgList1, "XAxis", "UseInventory", null);
            try
            {
                InventorySalesChart.Series["판매량평균"].Points[avgList1.Count - 1].Label          = "판매량평균 : " + avgList1[0].UseInventory + "kg";
                InventorySalesChart.Series["판매량평균"].Points[avgList1.Count - 1].LabelForeColor = Color.Black;
                InventorySalesChart.Series["판매량평균"].Color = Color.FromArgb(252, 180, 65);
            }
            catch (ArgumentOutOfRangeException)
            {
            }
        }
예제 #2
0
        /// <summary>
        /// 재고기준 차트 내용 select
        /// </summary>
        /// <param name="InventoryName">재고기준 : 하티,화이트,칩,치즈 등등</param>
        /// <param name="chart">시작, 종료</param>
        /// <param name="monthYear">월인지 년인지 선택</param>
        /// <returns></returns>
        internal List <InventoryTypeSalesVO> InventorySalesSelect(string InventoryName, IChart chart, bool monthYear)
        {
            lst = new List <InventoryTypeSalesVO>();

            SqlParameter[] sqlParameters = new SqlParameter[4];
            sqlParameters[0] = new SqlParameter("InventoryName", InventoryName);
            sqlParameters[1] = new SqlParameter("StartDate", ((InventoryChart)chart).StartDate);
            sqlParameters[2] = new SqlParameter("EndDate", ((InventoryChart)chart).EndDate);
            sqlParameters[3] = new SqlParameter("MonthYear", (monthYear)?0:1);
            SqlDataReader dr = new DBConnection().Select("SelectInventorySalesChart", sqlParameters);

            while (dr.Read())
            {
                InventoryTypeSalesVO inventoryTypeSalesVO = new InventoryTypeSalesVO();
                inventoryTypeSalesVO.XAxis        = dr["DateOfUse"].ToString();
                inventoryTypeSalesVO.UseInventory = (float)Math.Round((float.Parse(dr["InventoryQuantity"].ToString()) / 1000), 2);
                lst.Add(inventoryTypeSalesVO);
            }
            return(lst);
        }
예제 #3
0
        /// <summary>
        /// 재고별판매량 실 판매량 데이터 추출
        /// </summary>
        /// <param name="startDate">시작기간</param>
        /// <param name="endDate">종료기간</param>
        /// <param name="cmbType">구분</param>
        /// <returns>검색결과를 컬렉션으로 반환</returns>
        internal List <InventoryTypeSalesVO> InventorySaleRecordsTypeSelect(DateTime startDate, DateTime endDate, string cmbType)
        {
            SqlParameter[] sqlParameters     = new SqlParameter[2];
            List <InventoryTypeSalesVO> List = new List <InventoryTypeSalesVO>();

            sqlParameters[0] = new SqlParameter("StartDate", startDate);
            sqlParameters[1] = new SqlParameter("EndDate", endDate);

            SqlDataReader dr = new DBConnection().Select("SelectSaleRecordsType", sqlParameters);

            while (dr.Read())
            {
                JObject jObject = JObject.Parse(dr["salesitemName"].ToString());
                JArray  jArray  = JArray.Parse(jObject["RealMenu"].ToString());
                foreach (var item in jArray)
                {
                    JArray jArray1 = null;
                    try
                    {
                        jArray1 = JArray.Parse(item["MenuDetailList"].ToString());
                        foreach (var item1 in jArray1)
                        {
                            if (item1["Division"].ToString() == cmbType)
                            {
                                InventoryTypeSalesVO inventoryTypeSalesVO = new InventoryTypeSalesVO()
                                {
                                    XAxis        = item1["InventoryName"].ToString(),
                                    UseInventory = float.Parse(item1["Amount"].ToString())
                                };
                                List.Add(inventoryTypeSalesVO);
                            }
                        }
                    }
                    catch (JsonReaderException)
                    {
                    }
                }
            }

            return(List);
        }
예제 #4
0
        /// <summary>
        /// 종류 기준 차트 내용 select
        /// </summary>
        /// <param name="type">종류 기준 : bread,sauce 등등</param>
        /// <param name="chart">시작,종료</param>
        /// <returns></returns>
        internal List <InventoryTypeSalesVO> InventoryTypeSelect(string type, IChart chart)
        {
            lst = new List <InventoryTypeSalesVO>();

            SqlParameter[] sqlParameter = new SqlParameter[3];
            sqlParameter[0] = new SqlParameter("MaterialClassification", type);
            sqlParameter[1] = new SqlParameter("StartDate", ((InventoryTypeChart)chart).StartDate);
            sqlParameter[2] = new SqlParameter("EndDate", ((InventoryTypeChart)chart).EndDate);

            SqlDataReader dr = new DBConnection().Select("SelectInventoryTypeChart", sqlParameter);

            while (dr.Read())
            {
                InventoryTypeSalesVO inventoryTypeSales = new InventoryTypeSalesVO()
                {
                    XAxis        = dr["InventoryName"].ToString(),
                    UseInventory = (float)Math.Round((float.Parse(dr["UseInventory"].ToString()) / 1000), 2)
                };
                lst.Add(inventoryTypeSales);
            }
            return(lst);
        }
예제 #5
0
        /// <summary>
        /// 재고별판매량 검색버튼 클릭
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSearch_Click(object sender, EventArgs e)
        {
            var displayChart = new Display();

            InventorySalesChart.Series.Clear();

            #region 종류기준 검색
            if (rdoInventoryType.Checked == true)
            {
                #region 재고량
                InventorySalesChart.Series.Add(cmbType.Text + " 재고량");

                InventoryTypeList = displayChart.DisplayChart(new InventoryTypeChart()
                {
                    StartDate = new DateTime(dtpStartDate.Value.Year, dtpStartDate.Value.Month, dtpStartDate.Value.Day, 0, 0, 0),
                    EndDate   = new DateTime(dtpEndDate.Value.Year, dtpEndDate.Value.Month, dtpEndDate.Value.Day, 23, 59, 59)
                }, cmbType.Text, false);

                InventorySalesChart.Series[cmbType.Text + " 재고량"].Points.DataBind(InventoryTypeList, "XAxis", "UseInventory", null);
                InventorySalesChart.Series[cmbType.Text + " 재고량"].Label = "#VALY";
                foreach (var item in InventorySalesChart.Series[cmbType.Text + " 재고량"].Points)
                {
                    item.Label = Math.Round(double.Parse(item.YValues[0].ToString()), 2) + "kg";
                }
                #endregion


                #region 판매량
                InventorySalesChart.Series.Add(cmbType.Text + " 판매량");

                this.inventoryTypeSalesList = new SaleRecordsDAO().InventorySaleRecordsTypeSelect(
                    new DateTime(dtpStartDate.Value.Year, dtpStartDate.Value.Month, dtpStartDate.Value.Day, 0, 0, 0),
                    new DateTime(dtpEndDate.Value.Year, dtpEndDate.Value.Month, dtpEndDate.Value.Day, 23, 59, 59), cmbType.Text);

                var result = from o in this.inventoryTypeSalesList
                             group o by o.XAxis into g
                             select new InventoryTypeSalesVO {
                    XAxis = g.Key, UseInventory = g.Sum(c => c.UseInventory)
                };


                List <InventoryTypeSalesVO> inventoryTypeSalesList = new List <InventoryTypeSalesVO>();

                foreach (var item in InventoryTypeList)
                {
                    InventoryTypeSalesVO inventoryTypeSalesVO = new InventoryTypeSalesVO();
                    inventoryTypeSalesVO.XAxis = item.XAxis;
                    var i = from o in result where item.XAxis == o.XAxis select o.UseInventory;
                    if (i != null)
                    {
                        foreach (var item1 in i)
                        {
                            inventoryTypeSalesVO.UseInventory = item1;
                        }
                    }
                    else
                    {
                        inventoryTypeSalesVO.UseInventory = 0;
                    }
                    inventoryTypeSalesList.Add(inventoryTypeSalesVO);
                }


                InventorySalesChart.Series[cmbType.Text + " 판매량"].Points.DataBind(inventoryTypeSalesList, "XAxis", "UseInventory", null);
                InventorySalesChart.Series[cmbType.Text + " 판매량"].Label = "#VALY";
                foreach (var item in InventorySalesChart.Series[cmbType.Text + " 판매량"].Points)
                {
                    item.Label = Math.Round(double.Parse(item.YValues[0].ToString()), 2) + "kg";
                }
                #endregion

                var totInventoryTypeSalesList = from i1 in InventoryTypeList.AsEnumerable()
                                                join i2 in inventoryTypeSalesList.AsEnumerable()
                                                on i1.XAxis equals i2.XAxis
                                                select new InventorySalesForChartVO {
                    XAxis = i1.XAxis, InventoryNum = i1.UseInventory, SalesNum = i2.UseInventory
                };
                inventorySalesForChartVOs = new List <InventorySalesForChartVO>(totInventoryTypeSalesList);
                AverageDisplay(inventorySalesForChartVOs);
                dgvDisplay(inventorySalesForChartVOs, rdoInventoryType.Checked);
            }
            #endregion
            else//재고기준으로 검색할때
            {
                #region 재고량
                InventorySalesChart.Series.Add(cmbType.Text + " 재고량");
                InventoryList = displayChart.DisplayChart(new InventoryChart()
                {
                    StartDate = new DateTime(dtpStartDate.Value.Year, dtpStartDate.Value.Month, dtpStartDate.Value.Day, 0, 0, 0),
                    EndDate   = new DateTime(dtpEndDate.Value.Year, dtpEndDate.Value.Month, dtpEndDate.Value.Day, 23, 59, 59)
                }, cmbType.Text, rdoMonth.Checked);
                InventorySalesChart.Series[cmbType.Text + " 재고량"].Points.DataBind(InventoryList, "XAxis", "UseInventory", null);
                InventorySalesChart.Series[cmbType.Text + " 재고량"].Label = "#VALY";
                foreach (var item in InventorySalesChart.Series[cmbType.Text + " 재고량"].Points)
                {
                    item.Label = Math.Round(double.Parse(item.YValues[0].ToString()), 2) + "kg";
                }

                #endregion


                #region 판매량
                InventorySalesChart.Series.Add(cmbType.Text + " 판매량");
                IEnumerable <InventoryTypeSalesVO> result = null;
                if (rdoMonth.Checked)
                {
                    this.inventoryTypeSalesList = new SaleRecordsDAO().TypeSaleRecordsTypeSelect(
                        new DateTime(dtpStartDate.Value.Year, dtpStartDate.Value.Month, dtpStartDate.Value.Day, 0, 0, 0),
                        new DateTime(dtpEndDate.Value.Year, dtpEndDate.Value.Month, dtpEndDate.Value.Day, 23, 59, 59), cmbType.Text);

                    result = from o in this.inventoryTypeSalesList
                             group o by o.XAxis.Substring(2, 5) into g
                             select new InventoryTypeSalesVO
                    {
                        XAxis = g.Key, UseInventory = g.Sum(c => c.UseInventory)
                    };
                }
                else
                {
                    this.inventoryTypeSalesList = new SaleRecordsDAO().TypeSaleRecordsTypeSelect(
                        new DateTime(dtpStartDate.Value.Year, dtpStartDate.Value.Month, dtpStartDate.Value.Day, 0, 0, 0),
                        new DateTime(dtpEndDate.Value.Year, dtpEndDate.Value.Month, dtpEndDate.Value.Day, 23, 59, 59), cmbType.Text);

                    result = from o in this.inventoryTypeSalesList
                             group o by o.XAxis.Substring(2, 2) into g
                             select new InventoryTypeSalesVO
                    {
                        XAxis = g.Key, UseInventory = g.Sum(c => c.UseInventory)
                    };
                }

                List <InventoryTypeSalesVO> inventoryTypeSalesList = new List <InventoryTypeSalesVO>();

                foreach (var item in InventoryList)
                {
                    InventoryTypeSalesVO inventoryTypeSalesVO = new InventoryTypeSalesVO();
                    inventoryTypeSalesVO.XAxis = item.XAxis;
                    var i = from o in result where item.XAxis == o.XAxis select o.UseInventory;
                    if (i != null)
                    {
                        foreach (var item1 in i)
                        {
                            inventoryTypeSalesVO.UseInventory = item1;
                        }
                    }
                    else
                    {
                        inventoryTypeSalesVO.UseInventory = 0;
                    }
                    inventoryTypeSalesList.Add(inventoryTypeSalesVO);
                }


                InventorySalesChart.Series[cmbType.Text + " 판매량"].Points.DataBind(inventoryTypeSalesList, "XAxis", "UseInventory", null);
                InventorySalesChart.Series[cmbType.Text + " 판매량"].Label = "#VALY";
                foreach (var item in InventorySalesChart.Series[cmbType.Text + " 판매량"].Points)
                {
                    item.Label = Math.Round(double.Parse(item.YValues[0].ToString()), 2) + "kg";
                }
                #endregion
                var totInventoryTypeSalesList = from i1 in InventoryList.AsEnumerable()
                                                join i2 in inventoryTypeSalesList.AsEnumerable()
                                                on i1.XAxis equals i2.XAxis
                                                select new InventorySalesForChartVO {
                    XAxis = i1.XAxis, InventoryNum = i1.UseInventory, SalesNum = i2.UseInventory
                };
                inventorySalesForChartVOs = new List <InventorySalesForChartVO>(totInventoryTypeSalesList);
                AverageDisplay(inventorySalesForChartVOs);
                dgvDisplay(inventorySalesForChartVOs, rdoInventoryType.Checked);
            }



            lblStartDate.Text = dtpStartDate.Value.ToShortDateString();
            lblEndDate.Text   = dtpEndDate.Value.ToShortDateString();
        }