/// <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) { } }
/// <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); }
/// <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); }
/// <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); }
/// <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(); }