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

148 lines
8.0 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 JobApplication.Models;
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.Job
{
/// <summary>
/// 按结账单固化移动支付流水,每日中午12点执行固化昨天的营收数据
/// </summary>
class FixedRevenueByStatement : 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 distributedProvinceCode = ConfigurationManager.AppSettings["distributedProvinceCode"];//获取配置文件中的分布在各省份的省份编码
void IJob.Execute(IJobExecutionContext context)
{
//各省份服务器的地址
LogUtil.WriteLog("按账期固化省份:" + distributedProvinceCode);
try
{
foreach (string provinceCode in distributedProvinceCode.Split(','))
{
//按账期固化移动支付流水 JOB 开始
FixedRevenueData(provinceCode);
}
}
catch (Exception ex)
{
SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "FixedRevenueData", "按账期固化移动支付流水");
}
}
#region ->
/// <summary>
/// 按账期固化营收(根据结账单的账期,统计移动支付流水的营收总额)
/// </summary>
/// <param name="provinceCode">省份编码(根据省份固化数据)</param>
public void FixedRevenueData(string provinceCode)
{
string beginDate = Convert.ToDateTime("2020-7-01").AddSeconds(-1).ToString();
//string beginDate = DateTime.Now.AddDays(-1).ToShortDateString();
string endDate = DateTime.Now.ToString();
//string beginDate = "2020/7/01";
//string endDate = "2020/7/19";
//判断已同步的最新的时间
string sqlDate = string.Format(@"
SELECT MAX(DOWNLOAD_DATE) AS DOWNLOAD_DATE FROM HIGHWAY_SELLDATA.T_REVENUE_ENDACCOUNT WHERE PROVINCE_CODE={0}", provinceCode);
DataTable dtTime = oracleHelperCm.ExcuteSqlGetDataSet(sqlDate).Tables[0];//同步的数据的最新的时间
if (dtTime.Rows.Count > 0)
{
if (!string.IsNullOrEmpty(dtTime.Rows[0]["DOWNLOAD_DATE"].ToString()))
{
beginDate = dtTime.Rows[0]["DOWNLOAD_DATE"].ToString();
}
}
string logStr = "按账期固化,provinceCode=" + provinceCode + ",beginDate=" + beginDate + ",endDate=" + endDate;
LogUtil.WriteLog(logStr);
//固化移动支付流水营收(按结账日期)当前时间前传输但结账时间为昨天的数据
string sqlStatement = string.Format(@"
SELECT
ENDACCOUNT_ID,SERVERPART_ID,SERVERPART_CODE,SERVERPART_NAME,PROVINCE_CODE,
ENDACCOUNT_DATE, STATISTICS_DATE, ENDACCOUNT_STARTDATE,
SERVERPARTSHOP_ID, SERVERPARTSHOP_CODE, SERVERPARTSHOP_NAME,MACHINECODE,DOWNLOAD_DATE,VALID
FROM HIGHWAY_SELLDATA.T_ENDACCOUNT A
WHERE VALID = 1 AND EndPersonCode NOT LIKE '%接口%' AND TOTALSELLAMOUNT>0 AND
((A.DOWNLOAD_DATE > TO_DATE('{0}','YYYY-MM-DD HH24:MI:SS') AND
A.DOWNLOAD_DATE < TO_DATE('{1}','YYYY-MM-DD HH24:MI:SS')) OR
A.ENDACCOUNT_DATE >= TRUNC(SYSDATE) - 1) AND
PROVINCE_CODE = {2} AND MACHINECODE IS NOT NULL AND
A.ENDACCOUNT_DATE < TO_DATE('{3}','YYYY-MM-DD HH24:MI:SS') ", beginDate, endDate, provinceCode, DateTime.Now.ToShortDateString());
LogUtil.WriteLog(sqlStatement);
DataTable dtStatement = oracleHelperCm.ExcuteSqlGetDataSet(sqlStatement).Tables[0];//查询已同步过来的结账单
string Create_Date = DateTime.Now.ToString();
List<EndAccount> resultList = DtToList<EndAccount>.ConvertToModel(dtStatement);
LogUtil.WriteLog(logStr + resultList.Count);
List<string> sqlList = new List<string>();
resultList.ForEach(o =>
{
if (!string.IsNullOrEmpty(o.MachineCode))
{
try
{
Double sumAmount = 0;//SUBSTR(A.TICKET_CODE,7,6)='{1}' AND SUBSTR(A.TICKET_CODE,13,4) = LPAD('{2}',4,'0') AND
string sqlSum = string.Format(@"
SELECT
SUM(A.TICKET_AMOUNT) AS TICKET_AMOUNT
FROM HIGHWAY_SELLDATA.T_MOBILEPAYMENT_RECORDS A
WHERE A.SERVERPART_CODE='{0}' AND A.SERVERPARTSHOP_CODE ='{1}' AND
A.MACHINECODE=LPAD('{2}',4,'0') AND
A.ORDER_DATE >= TO_DATE('{3}','YYYY-MM-DD HH24:MI:SS') AND
A.ORDER_DATE <= TO_DATE('{4}','YYYY-MM-DD HH24:MI:SS')",
o.ServerPart_Code, o.ServerPartShop_Code, o.MachineCode, o.EndAccount_StartDate, o.EndAccount_Date);
//if (o.EndAccount_Id == 6575056)
//{
// LogUtil.WriteLog("按账期固化sqlSum" + sqlSum);
// }
DataSet dsSum = oracleHelperCm.ExcuteSqlGetDataSet(sqlSum);//在移动业务查询通道传输流水
DataTable dtSum = dsSum.Tables[0];
sumAmount = dtSum.Rows[0]["TICKET_AMOUNT"].TryParseToDouble();
string addSql = string.Format(@"
INSERT INTO HIGHWAY_SELLDATA.T_REVENUE_ENDACCOUNT
(
REVENUE_ENDACCOUNT_ID,ENDACCOUNT_ID,PROVINCE_CODE,
SERVERPART_ID,SERVERPART_CODE,SERVERPART_NAME,SERVERPARTSHOP_ID,SERVERPARTSHOP_CODE,SERVERPARTSHOP_NAME,
MACHINECODE,ENDACCOUNT_STARTDATE,ENDACCOUNT_DATE,TICKET_AMOUNT,CREATE_DATE,DOWNLOAD_DATE
)
VALUES
(
HIGHWAY_SELLDATA.SEQ_REVENUE_ENDACCOUNT.NEXTVAL,{11},{0},{1},'{2}','{3}',{4},'{5}','{6}','{7}',
TO_DATE('{8}','YYYY-MM-DD HH24:MI:SS'),
TO_DATE('{9}','YYYY-MM-DD HH24:MI:SS'),{10},
TO_DATE('{12}','YYYY-MM-DD HH24:MI:SS'),
TO_DATE('{13}','YYYY-MM-DD HH24:MI:SS'))",
o.Province_Code, o.ServerPart_Id, o.ServerPart_Code, o.ServerPart_Name, o.ServerPartShop_Id, o.ServerPartShop_Code, o.ServerPartShop_Name,
o.MachineCode, o.EndAccount_StartDate, o.EndAccount_Date, sumAmount, o.EndAccount_Id, Create_Date, o.Download_Date);
sqlList.Add(addSql);
}
catch (Exception ex)
{
SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "FixedRevenueByStatement", "固化账期数据");
}
}
else
{
LogUtil.WriteLog(o.ServerPart_Name + o.ServerPartShop_Name);
}
});
LogUtil.WriteLog(logStr + "Start");
oracleHelperCm.ExecuteSqlTran(sqlList.ToArray());//固化结账单到合作商户账期营收表
LogUtil.WriteLog(logStr + "End");
}
#endregion
}
}