using CRM.Core.BLL.Application.B; using CRM.Core.BLL.Application.Bill; using CRM.Core.DAL; using CRM.Core.DTO.Bill; using CRM.Core.Model; using CRM.Core.Model.QueryModels; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using WX.CRM.Common; namespace CRM.Core.BLL.Application.Order { public class QueryDepositEnt { public List DepositEntQuery(int year) { var startDate = new DateTime(year, 1, 1).ToString("yyyy-MM-dd"); var endDate = new DateTime(year+1, 1, 1).ToString("yyyy-MM-dd"); List depositEntQueryResults = new List(); var sql = $"SELECT DATE_FORMAT(i.trade_datetime,'%Y%m'),mch,sum(trade_amount) from bill_account i where trade_datetime>='{startDate}' and trade_datetime<'{endDate}' and trade_type='Pay' GROUP BY DATE_FORMAT(i.trade_datetime,'%Y%m'),mch"; var ds = MySqlDbHelper.DataQueray(ConStringHelper.ZxdCRMConn, CommandType.Text, sql); List querylist = ds.Tables[0].ToList(); //var querykvs = querylist.ToDictionary(d => d.monkey + d.mch, d=>d.amount); var depoistsql = $"SELECT DATE_FORMAT(i.paydate,'%Y%m') paymon,DATE_FORMAT(i.audittime,'%Y%m') auditmon,i.paytype,sum(i.payprice) payprice From wx_szzyorderdeposit i where i.paydate>='startDate' and i.paydate<'endDate' and auditstatus=1 GROUP BY DATE_FORMAT(i.paydate,'%Y%m'),DATE_FORMAT(i.audittime,'%Y%m'),i.paytype "; var monlist = querylist.GroupBy(d => d.monkey); List noOther = new List() { BillService.MCH_enum.Alipay.ToString(), BillService.MCH_enum.Wxpay.ToString() }; foreach (var item in monlist) { DepositEnt.DepositEntQueryResult depositEntQueryResult = new DepositEnt.DepositEntQueryResult { MonKey = item.Key, TradeAmount = item.Sum(d => d.amount), TradeAmount_Alipay= item.Where(d=>d.mch.Equals(BillService.MCH_enum.Alipay.ToString())).Sum(d => d.amount), TradeAmount_Wxpay = item.Where(d => d.mch.Equals(BillService.MCH_enum.Wxpay.ToString())).Sum(d => d.amount), TradeAmount_Bank = item.Where(d => d.mch.Equals(BillService.MCH_enum.Bank.ToString())).Sum(d => d.amount), }; depositEntQueryResults.Add(depositEntQueryResult); } return depositEntQueryResults; } } }