2025-03-28 09:49:56 +08:00

147 lines
7.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// 按自然日固化移动支付流水,每日上午10点执行固化昨天的营收数据
/// </summary>
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 ->
/// <summary>
/// 获取移动支付每日汇总数据
/// </summary>
/// <param name="beginDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
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 ->
/// <summary>
/// 按自然日固化移动支付流水
/// </summary>
public void FixedRevenueData()
{
DataTable dt = GetMobilePaymentData();
LogUtil.WriteLog(logStr + dt.Rows.Count);
List<string> sqlInsertList = new List<string>();//插入的语句
List<string> sqlUpdateList = new List<string>();//修改的语句
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
}
}