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
}
}