using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace LYFZ.Software.MainBusiness.StatisticalInquiry { public partial class FrmStoredValueReport : LYFZ.Software.UI.StatisticalInquiry.FrmStoredValueReport { public bool IsQueryByEmployee { get; set; } = false; public string strEmployeeId { get; set; } = ""; LYFZ.BLL.BLL_ErpMemberCard memberCardBll = new BLL.BLL_ErpMemberCard(); public FrmStoredValueReport() { LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.BindGroupStoreName(this.cmbtreevStoreName, StrKeyCode: "qt002"); DataRow(); this.dgv.CellDoubleClick += dgv_CellDoubleClick; } void dgv_CellDoubleClick( object sender, DataGridViewCellEventArgs e ) { if ( this.dgv.SelectedRows.Count > 0 ) { DataGridViewRow dgvRow = this.dgv.SelectedRows[0]; //LYFZ.Software.MainBusiness.MembershipManage.SuperSmallForm.MemberCardUseRecordsSuperSmallForm frm = new LYFZ.Software.MainBusiness.MembershipManage.SuperSmallForm.MemberCardUseRecordsSuperSmallForm(); //frm.StrNumber = dgvRow.Tag.ToString(); //frm.startTime = dtpStart.Value.ToString( "yyyy-MM-dd" ) + " 00:00:00"; //frm.endTime = dtpEnd.Value.ToString( "yyyy-MM-dd" ) + " 23:59:59"; //frm.Height = this.Height; //frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; //frm.Show(); FrmStoredReport frmStored = new FrmStoredReport(); frmStored.startTime = dtpStart.Value.ToString("yyyy-MM-dd") ; frmStored.endTime = dtpEnd.Value.ToString("yyyy-MM-dd") ; frmStored.txt_MemberText.Text = dgvRow.Cells["McCardHolder"].Value.ToString_s(); frmStored.IsQueryByEmployee = true; frmStored.lab_DataTime.Text = "时间段:" + dtpStart.Value.ToString("yyyy-MM-dd")+" - "+ dtpEnd.Value.ToString("yyyy-MM-dd"); frmStored.cmbtreevStoreName.TextFindTag(cmbtreevStoreName.Text); frmStored.ShowDialog(); } } public override void btnQuery_Click( object sender, EventArgs e ) { DataRow(); } /// /// 绑定数据 /// public void DataRow() { Dictionary> tempDicList = new Dictionary>(); LYFZ.ComponentLibrary.FrmLoadHandling.LoadDoWorkMethod( delegate ( object obj, BackgroundWorker backgroundWorker ) { string startTime = dtpStart.Value.ToString( "yyyy-MM-dd" ); string endTime = dtpEnd.Value.ToString( "yyyy-MM-dd" ); DataTable storeData = memberCardBll.GetStoredValueCardData( startTime, endTime, IsQueryByEmployee == true ? strEmployeeId : "" ); DataTable totalStoreData = memberCardBll.GetTotalStoredValueCardData( IsQueryByEmployee == true ? strEmployeeId : "" ); Dictionary> dicList = new Dictionary>(); for ( int i = 0; i < storeData.Rows.Count; i++ ) { DataRow dr = storeData.Rows[i]; Dictionary tempColumDicList = new Dictionary(); if ( dicList.ContainsKey( dr["Mcacl_Number"].ToString() ) ) { tempColumDicList = dicList[dr["Mcacl_Number"].ToString()]; } else { dicList.Add( dr["Mcacl_Number"].ToString(), tempColumDicList ); } BindData( dr, ref tempColumDicList ); } for ( int i = 0; i < totalStoreData.Rows.Count; i++ ) { DataRow dr = totalStoreData.Rows[i]; Dictionary tempColumDicList = new Dictionary(); if ( dicList.ContainsKey( dr["Mcacl_Number"].ToString() ) ) { tempColumDicList = dicList[dr["Mcacl_Number"].ToString()]; } else { dicList.Add( dr["Mcacl_Number"].ToString(), tempColumDicList ); } BindTotalData( dr, ref tempColumDicList ); } List McNumber = new List(); foreach ( string key in dicList.Keys ) { McNumber.Add( key ); } string searchText = txt_MemberText.Text; if ( !string.IsNullOrEmpty( searchText ) ) { searchText = " and (mc_CradNumber like '%" + searchText + "%' or cus_name like '%" + searchText + "%' or Cus_Telephone like '%" + searchText + "%') "; } else { searchText = ""; } searchText += LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetGroupQueryWhere(this.cmbtreevStoreName, "Mc_DividedShop"); DataTable memberDataTable = memberCardBll.GetMemberCardDataValue( " Mc_Number in ('" + string.Join( "','", McNumber.ToArray() ) + "') " + searchText ); for ( int i = 0; i < memberDataTable.Rows.Count; i++ ) { if ( dicList.ContainsKey( memberDataTable.Rows[i]["Mc_Number"].ToString() ) ) { tempDicList.Add( memberDataTable.Rows[i]["Mc_Number"].ToString(), dicList[memberDataTable.Rows[i]["Mc_Number"].ToString()] ); Dictionary tempColumDicList = dicList[memberDataTable.Rows[i]["Mc_Number"].ToString()]; if ( !tempColumDicList.ContainsKey( "McNumber" ) ) { tempColumDicList.Add( "McNumber", memberDataTable.Rows[i]["Mc_CradNumber"].ToString() ); } if ( !tempColumDicList.ContainsKey( "McCardHolder" ) ) { tempColumDicList.Add( "McCardHolder", memberDataTable.Rows[i]["Cus_Name"].ToString() ); } if ( !tempColumDicList.ContainsKey( "McTelephone" ) ) { tempColumDicList.Add( "McTelephone", memberDataTable.Rows[i]["Cus_Telephone"].ToString() ); } if ( !tempColumDicList.ContainsKey( "McCardMoney" ) ) { tempColumDicList.Add( "McCardMoney", memberDataTable.Rows[i]["Mc_Money"].ToString() ); } if ( !tempColumDicList.ContainsKey( "McResidualStoredValue" ) ) { if ( Convert.ToDecimal( tempColumDicList["McTotalStoredValue"].ToString() ) > 0 ) { if ( tempColumDicList.ContainsKey( "McTotalConsumption" ) && tempColumDicList.ContainsKey( "McTotalStoredValue" ) ) { string strValue = ((-1 * Convert.ToDecimal( tempColumDicList["McTotalConsumption"].ToString() ) / Convert.ToDecimal( tempColumDicList["McTotalStoredValue"].ToString() )) * 100).ToString( "0.00" ) + "%"; tempColumDicList.Add( "McResidualStoredValue", strValue ); } else { tempColumDicList.Add( "McResidualStoredValue", "" ); } } else { tempColumDicList.Add( "McResidualStoredValue", "" ); } } } //dicList[memberDataTable.Rows[i]["Mc_Number"].ToString()] } } ); BindGridControlData( tempDicList ); } void BindGridControlData( Dictionary> dicList ) { this.dgv.Rows.Clear(); decimal mcmoney = 0; decimal recharge = 0; decimal giftAmount = 0; decimal withdrawals = 0; decimal consumption = 0; decimal totalStoredValue = 0; decimal totalConsumption = 0; foreach ( string key in dicList.Keys ) { Dictionary columList = dicList[key]; int rowIndex = this.dgv.Rows.Add(); this.dgv.Rows[rowIndex].Cells["McCardMoney"].Value = 0; this.dgv.Rows[rowIndex].Cells["McRecharge"].Value = 0; this.dgv.Rows[rowIndex].Cells["McGiftAmount"].Value = 0; this.dgv.Rows[rowIndex].Cells["McWithdrawals"].Value = 0; this.dgv.Rows[rowIndex].Cells["McConsumption"].Value = 0; this.dgv.Rows[rowIndex].Cells["McTotalStoredValue"].Value = 0; this.dgv.Rows[rowIndex].Cells["McTotalConsumption"].Value = 0; this.dgv.Rows[rowIndex].Tag = key; foreach ( string columKey in columList.Keys ) { this.dgv.Rows[rowIndex].Cells[columKey].Value = columList[columKey]; if ( columKey.Equals( "McCardMoney" ) ) { mcmoney += Convert.ToDecimal( columList[columKey] ); } if ( columKey.Equals( "McRecharge" ) ) { recharge += Convert.ToDecimal( columList[columKey] ); } if ( columKey.Equals( "McGiftAmount" ) ) { giftAmount += Convert.ToDecimal( columList[columKey] ); } if ( columKey.Equals( "McWithdrawals" ) ) { withdrawals += Convert.ToDecimal( columList[columKey] ); } if ( columKey.Equals( "McConsumption" ) ) { consumption += Convert.ToDecimal( columList[columKey] ); } if ( columKey.Equals( "McTotalStoredValue" ) ) { totalStoredValue += Convert.ToDecimal( columList[columKey] ); } if ( columKey.Equals( "McTotalConsumption" ) ) { totalConsumption += Convert.ToDecimal( columList[columKey] ); } } } lab_Message.Text = " 余额:" + mcmoney + " 充值金额:" + recharge + " 赠送金额:" + giftAmount + " 提现金额:" + withdrawals * -1 + " 已消费金额:" + consumption * -1 + " 累计充值金额:" + totalStoredValue + " 累计消费金额:" + totalConsumption * -1; } /// /// 绑定表格数据 /// /// 数据 /// void BindData( DataRow dr, ref Dictionary tempColumDicList ) { string keyData = dr["类型"].ToString(); decimal valueData = 0; string giftData = "McGiftAmount";//"McGiftAmount"; decimal giftValueData = 0; switch ( keyData ) { case "充值": keyData = "McRecharge"; valueData = Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "提现": keyData = "McWithdrawals"; valueData = -1 * Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "取现": keyData = "McWithdrawals"; valueData = -1 * Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "删除收款扣回": keyData = "McConsumption"; valueData = Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "订单消费": keyData = "McConsumption"; valueData = -1 * Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "服务消费": keyData = "McConsumption"; valueData = -1 * Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "充值错误扣回": keyData = "McRecharge"; valueData = -1 * Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = -1 * Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "送金额": keyData = "McRecharge"; giftValueData = Convert.ToDecimal( dr["操作金额"].ToString() ); break; case "删除储值提现扣回": keyData = "McWithdrawals"; valueData = Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; } /// if ( tempColumDicList.ContainsKey( keyData ) ) { tempColumDicList[keyData] = (Convert.ToDecimal( tempColumDicList[keyData] ) + Convert.ToDecimal( valueData )).ToString( "0.00" ); } else { tempColumDicList.Add( keyData, valueData.ToString( "0.00" ) ); } if ( tempColumDicList.ContainsKey( giftData ) ) { tempColumDicList[giftData] = (Convert.ToDecimal( tempColumDicList[giftData] ) + Convert.ToDecimal( giftValueData )).ToString( "0.00" ); } else { tempColumDicList.Add( giftData, giftValueData.ToString( "0.00" ) ); } } /// /// 绑定表格数据 /// /// 数据 /// void BindTotalData( DataRow dr, ref Dictionary tempColumDicList ) { string keyData = dr["类型"].ToString(); decimal valueData = 0; string giftData = "McTotalStoredValue";// "McTotalGift"; decimal giftValueData = 0; switch ( keyData ) { case "充值": keyData = "McTotalStoredValue"; valueData = Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "提现": //keyData = "McTotalWithdrawals"; keyData = "McTotalConsumption"; valueData = -1 * Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "取现": //keyData = "McTotalWithdrawals"; keyData = "McTotalConsumption"; valueData = -1 * Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "删除收款扣回": keyData = "McTotalConsumption"; valueData = Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "订单消费": keyData = "McTotalConsumption"; valueData = -1 * Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "服务消费": keyData = "McTotalConsumption"; valueData = -1 * Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "充值错误扣回": keyData = "McTotalStoredValue"; valueData = -1 * Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = -1 * Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "送金额": //keyData = "McTotalGift"; keyData = "McTotalStoredValue"; giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; case "删除储值提现扣回": keyData = "McTotalConsumption"; valueData = Convert.ToDecimal( dr["操作金额"].ToString() ); giftValueData = Convert.ToDecimal( dr["赠送金额"].ToString() ); break; } /// if ( tempColumDicList.ContainsKey( keyData ) ) { tempColumDicList[keyData] = (Convert.ToDecimal( tempColumDicList[keyData] ) + Convert.ToDecimal( valueData )).ToString( "0.00" ); } else { tempColumDicList.Add( keyData, valueData.ToString( "0.00" ) ); } if ( tempColumDicList.ContainsKey( giftData ) ) { tempColumDicList[giftData] = (Convert.ToDecimal( tempColumDicList[giftData] ) + Convert.ToDecimal( giftValueData )).ToString( "0.00" ); } else { tempColumDicList.Add( giftData, giftValueData.ToString( "0.00" ) ); } } internal void BindSearchDataTime( DateTime dtTime, DateTime dtTime2 ) { rdoMouth.Checked = true; this.dtpStart.Value = new DateTime( dtTime.Year, dtTime.Month, dtTime.Day ); this.dtpEnd.Value = new DateTime( dtTime2.Year, dtTime2.Month, dtTime2.Day ); btnQuery_Click( null, null ); } } }