using HZQR.Common; using Quartz; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace JobApplication { /// /// 按自然日固化移动支付流水,每日上午10点执行固化昨天的营收数据 /// public class FixedRevenueByDay : IJob { SuperMap.RealEstate.ServiceModel.Transaction Transaction = new SuperMap.RealEstate.ServiceModel.Transaction(); static string OracleConnCM = ConfigurationManager.ConnectionStrings["Coop_Merchant"].ConnectionString; static OracleHelper oracleHelperCm = new OracleHelper(OracleConnCM); string logStr = ""; void IJob.Execute(IJobExecutionContext context) { try { //按自然日固化移动支付流水 JOB 开始 FixedRevenueData(); } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "FixedRevenueByNaturalDay", "按自然日固化移动支付流水"); } } #region 方法 -> 按自然日固化营收 /// /// 获取移动支付每日汇总数据 /// /// /// /// public DataTable GetMobilePaymentData() { //string beginDate = "2020/08/14"; string beginDate = DateTime.Now.AddDays(-1).ToShortDateString(); string endDate = DateTime.Now.ToString(); logStr = "按自然日固化beginDate=" + beginDate + ",endDate=" + endDate; LogUtil.WriteLog(logStr); string sql = string.Format(@" SELECT C.PROVINCE_CODE,C.SERVERPART_ID,A.SERVERPART_CODE,C.SERVERPART_NAME,B.SERVERPARTSHOP_ID,A.SERVERPARTSHOP_CODE,B.SHOPNAME, A.MACHINECODE,TRUNC(A.TRADE_DATE) AS ORDER_DATE,SUM(A.TICKET_AMOUNT) AS TICKET_AMOUNT,SUM(A.TAXFEE_AMOUNT) AS TAXFEE_AMOUNT FROM HIGHWAY_SELLDATA.T_MOBILEPAYMENT_RECORDS A, MOBILESERVICE_PLATFORM.T_SERVERPARTSHOP@MSPB B, MOBILESERVICE_PLATFORM.T_SERVERPART@MSPB C WHERE A.SERVERPARTSHOP_CODE = B.SHOPCODE AND A.SERVERPART_CODE = C.SERVERPART_CODE AND B.SERVERPART_ID = C.SERVERPART_ID AND B.PROVINCE_CODE = C.PROVINCE_CODE AND A.TRADE_DATE >= TO_DATE('{0}','YYYY-MM-DD HH24:MI:SS') AND A.TRADE_DATE < TO_DATE('{1}','YYYY-MM-DD HH24:MI:SS') GROUP BY C.PROVINCE_CODE,C.SERVERPART_ID,A.SERVERPART_CODE,C.SERVERPART_NAME, B.SERVERPARTSHOP_ID,A.SERVERPARTSHOP_CODE,B.SHOPNAME, A.MACHINECODE,TRUNC(A.TRADE_DATE) ORDER BY TRUNC(A.TRADE_DATE)", beginDate, endDate); DataSet ds = oracleHelperCm.ExcuteSqlGetDataSet(sql);//在移动业务查询通道传输流水 DataTable dt = ds.Tables[0]; return dt; } #endregion #region 方法 -> 按自然日固化营收 /// /// 按自然日固化移动支付流水 /// public void FixedRevenueData() { DataTable dt = GetMobilePaymentData(); LogUtil.WriteLog(logStr + dt.Rows.Count); List sqlInsertList = new List();//插入的语句 List sqlUpdateList = new List();//修改的语句 string Create_Date = DateTime.Now.ToString(); foreach (DataRow dr in dt.Rows) { string sqlIsExists = string.Format(@" SELECT REVENUE_NATURALDAY_ID FROM HIGHWAY_SELLDATA.T_REVENUE_NATURALDAY WHERE PROVINCE_CODE={0} AND SERVERPART_ID={1} AND SERVERPARTSHOP_ID={2} AND ORDER_DATE = TO_DATE('{3}','YYYY-MM-DD HH24:MI:SS')", dr["PROVINCE_CODE"].TryParseToInt(), dr["SERVERPART_ID"].TryParseToInt(), dr["SERVERPARTSHOP_ID"].TryParseToInt(), Convert.ToDateTime(dr["ORDER_DATE"]).ToShortDateString()); Object obj = oracleHelperCm.ExcuteSqlBackData(sqlIsExists); if (obj == null) { string addSql = string.Format(@" INSERT INTO HIGHWAY_SELLDATA.T_REVENUE_NATURALDAY ( REVENUE_NATURALDAY_ID,PROVINCE_CODE,SERVERPART_ID,SERVERPART_CODE,SERVERPART_NAME,SERVERPARTSHOP_ID, SERVERPARTSHOP_CODE,SERVERPARTSHOP_NAME,MACHINECODE,ORDER_DATE,TICKET_AMOUNT,TAXFEE_AMOUNT,CREATE_DATE ) VALUES ( HIGHWAY_SELLDATA.SEQ_REVENUE_NATURALDAY.NEXTVAL,{0},{1},'{2}','{3}',{4},'{5}', '{6}','{7}',TO_DATE('{8}','YYYY-MM-DD'),{9},{10},TO_DATE('{11}','YYYY-MM-DD HH24:MI:SS') )", dr["PROVINCE_CODE"].TryParseToInt(), dr["SERVERPART_ID"].TryParseToInt(), dr["SERVERPART_CODE"].TryParseToString(), dr["SERVERPART_NAME"].TryParseToString(), dr["SERVERPARTSHOP_ID"].TryParseToInt(), dr["SERVERPARTSHOP_CODE"].TryParseToString(), dr["SHOPNAME"].TryParseToString(), dr["MACHINECODE"].TryParseToString(), Convert.ToDateTime(dr["ORDER_DATE"]).ToShortDateString(), dr["TICKET_AMOUNT"].TryParseToDouble(), dr["TAXFEE_AMOUNT"].TryParseToDouble(), Create_Date); sqlInsertList.Add(addSql); } else { int Revenue_Naturalday_Id = obj.TryParseToInt(); string updateSql = string.Format(@" UPDATE HIGHWAY_SELLDATA.T_REVENUE_NATURALDAY SET TICKET_AMOUNT = {1},TAXFEE_AMOUNT={2},CREATE_DATE = TO_DATE('{3}','YYYY-MM-DD HH24:MI:SS') WHERE REVENUE_NATURALDAY_ID={0}", Revenue_Naturalday_Id, dr["TICKET_AMOUNT"].TryParseToDouble(), dr["TAXFEE_AMOUNT"].TryParseToDouble(), Create_Date); sqlUpdateList.Add(updateSql); } } LogUtil.WriteLog(logStr + "插入" + sqlInsertList.Count + ",修改" + sqlUpdateList.Count); try { if (sqlInsertList.Count > 0) { oracleHelperCm.ExecuteSqlTran(sqlInsertList.ToArray()); //固化数据到日营收汇总表 } if (sqlUpdateList.Count > 0) { oracleHelperCm.ExecuteSqlTran(sqlUpdateList.ToArray()); //固化数据到日营收汇总表 } } catch (Exception ex) { LogUtil.WriteLog(logStr + ex.ToString()); } LogUtil.WriteLog(logStr + "End"); } #endregion } }