148 lines
8.0 KiB
C#
148 lines
8.0 KiB
C#
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
|
||
|
||
}
|
||
}
|