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

931 lines
43 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 System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using Transmission.SDK;
using Transmission.SDK.ThreadPool;
namespace DataTransferClient
{
public class ConfigThread : IConfigInterface
{
#region
protected string TransferTimes = ConfigurationManager.AppSettings["TransferTimes"];
/// <summary>
/// 表名集合
/// </summary>
private Hashtable tableNameList = null; //表名集合
/// <summary>
/// 查询表所有数据SQL集合
/// </summary>
private Hashtable allDataSql = null; //查询表所有数据SQL集合
/// <summary>
/// 表对应创建时间字段名
/// </summary>
private Hashtable createDateName = null; //表对应创建时间字段名
/// <summary>
/// 表对应主键值
/// </summary>
private Hashtable tableDatas = null; //表对应主键值
/// <summary>
/// 本地需要修改的状态字段名称
/// </summary>
private Hashtable stateNames = null; //本地需要修改的状态字段名称
/// <summary>
/// 线程上传、下发启动时间比例
/// </summary>
private Hashtable timeList = null; //线程上传、下发启动时间比例
/// <summary>
/// 上传批量传输最大数据量
/// </summary>
private Hashtable maxDataQuantityList = null; //上传批量传输最大数据量
/// <summary>
/// 服务区编码
/// </summary>
private string serverpartcode = null; //SERVERPARTCODE 服务区编码
/// <summary>
/// 是否使用替换字段名
/// </summary>
private bool isReplaceColumnName = false; //是否使用替换字段名
/// <summary>
/// 默认最大上传天数
/// </summary>
private int endaccounttimes = 0; //ENDACCOUNTTIMES 默认最大上传天数
protected string _SALEDATE = ConfigurationManager.AppSettings["SALEDATE"];//流水节点
protected string _ServerPartCode = ConfigurationManager.AppSettings["SERVERPARTCODE"];//服务区编码
#endregion
/// <summary>
/// 需要传输的表及传输类型
/// 上传TOP
/// 下载DOWN
/// </summary>
/// <returns></returns>
private Hashtable getTableNameList()
{
Hashtable _TableNameList = new Hashtable
{
#region
//服务区门店信息表
{ "Platform_Data.T_ServerpartShop", "TOP" },
//商品信息表
{ "Platform_Data.T_Commodity", "TOP"},
//日结营收表
{ "Platform_Data.T_Revenue", "TOP"},
//合同信息表
{ "Platform_Data.T_Compact", "TOP"},
//现场稽核表
{ "Platform_Data.T_Check", "TOP"},
//销售流水表
{ "Platform_Data.T_SELLDATA", "TOP"},
{ "Platform_Data.T_SELLMASTER", "TOP"},
//会员信息表
{ "Platform_Data.T_Membership", "TOP"},
//会员积分表
{ "Platform_Data.T_MembershipPoints", "TOP"},
//会员商城订单表
{ "Platform_Data.T_MallOrder", "TOP"},
//会员消费记录表
{ "Platform_Data.T_ConsumptionRecord", "TOP"},
//会员优惠券表
{ "Platform_Data.T_MembershipCoupon", "TOP"},
#endregion
#region
#endregion
};
return _TableNameList;
}
/// <summary>
/// 传输表时间间隔比例
/// </summary>
/// <returns></returns>
private Hashtable getTimeList()
{
Hashtable _TimeList = new Hashtable
{
#region
//服务区门店信息表
{ "Platform_Data.T_ServerpartShop", 0 },
//商品信息表
{ "Platform_Data.T_Commodity", 0 },
//日结营收表
{ "Platform_Data.T_Revenue", 0 },
//合同信息表
{ "Platform_Data.T_Compact", 0 },
//现场稽核表
{ "Platform_Data.T_Check", 0 },
//销售流水表
{ "Platform_Data.T_SELLDATA", 0 },
{ "Platform_Data.T_SELLMASTER", 0 },
//会员信息表
{ "Platform_Data.T_Membership", 0 },
//会员积分表
{ "Platform_Data.T_MembershipPoints", 0 },
//会员商城订单表
{ "Platform_Data.T_MallOrder", 0 },
//会员消费记录表
{ "Platform_Data.T_ConsumptionRecord", 0 },
//会员优惠券表
{ "Platform_Data.T_MembershipCoupon", 0 },
#endregion
#region
#endregion
};
return _TimeList;
}
/// <summary>
/// 传输表数据读取方式
/// </summary>
/// 数据格式:{接收端表名,发送端查询语句}
/// <returns></returns>
private Hashtable getAllDataSql()
{
return new Hashtable()
{
#region
#region
{
"Platform_Data.T_ServerpartShop", string.Format(
@"SELECT
A.ServerpartShop_ID,B.SPREGIONTYPE_NAME AS Region_Name,
B.Serverpart_Name,A.SHOPNAME AS ServerpartShop_Name,
CASE WHEN A.BUSINESS_STATE = 1000 THEN '在营业' ELSE '已关闭' END AS Business_State,
A.OPERATE_DATE AS Create_Date,A.OPERATE_DATE AS Transfer_Date
FROM
HIGHWAY_STORAGE.T_SERVERPARTSHOP A,
HIGHWAY_STORAGE.T_SERVERPART B
WHERE
A.Serverpart_ID = B.Serverpart_ID AND B.PROVINCE_CODE = 6618 AND
TRUNC(A.OPERATE_DATE) {0} AND B.STATISTICS_TYPE = 1000", TransferTimes == "1" ? "= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1")
},
#endregion
#region
{
"Platform_Data.T_Commodity", string.Format(
@"SELECT
ServerpartShop_ID,Serverpart_Name,ServerpartShop_Name,
Commodity_Name,Commodity_Barcode,Commodity_RetailPrice,
Commodity_State,Create_Date,Transfer_Date
FROM
(
SELECT
ServerpartShop_ID,Serverpart_Name,ServerpartShop_Name,
Commodity_Name,Commodity_Barcode,Commodity_RetailPrice,
Commodity_State,Create_Date,Transfer_Date,
ROW_NUMBER()OVER(PARTITION BY ServerpartShop_ID,Commodity_Barcode
ORDER BY Transfer_Date DESC) AS COLNUM
FROM
(
SELECT
B.ServerpartShop_ID,C.Serverpart_Name,B.SHOPNAME AS ServerpartShop_Name,
A.Commodity_Name,A.Commodity_Barcode,A.Commodity_RetailPrice,
CASE WHEN A.COMMODITY_STATE = 1 THEN '有效' ELSE '无效' END AS Commodity_State,
A.ADDTIME AS Create_Date,A.OPERATE_DATE AS Transfer_Date
FROM
HIGHWAY_STORAGE.T_COMMODITY A,
HIGHWAY_STORAGE.T_SERVERPARTSHOP B,
HIGHWAY_STORAGE.T_SERVERPART C
WHERE
A.SERVERPART_ID = C.SERVERPART_ID AND TO_CHAR(A.BUSINESSTYPE) = B.SHOPTRADE AND
B.SERVERPART_ID = C.SERVERPART_ID AND TRUNC(A.OPERATE_DATE) {0} AND
C.PROVINCE_CODE = 6618 AND C.STATISTICS_TYPE = 1000
UNION ALL
SELECT
B.ServerpartShop_ID,C.Serverpart_Name,B.SHOPNAME AS ServerpartShop_Name,
A.Commodity_Name,A.Commodity_Barcode,A.Commodity_RetailPrice,
CASE WHEN A.COMMODITY_STATE = 1 THEN '有效' ELSE '无效' END AS Commodity_State,
A.ADDTIME AS Create_Date,A.OPERATE_DATE AS Transfer_Date
FROM
HIGHWAY_STORAGE.T_COMMODITY A,
HIGHWAY_STORAGE.T_SERVERPARTSHOP B,
HIGHWAY_STORAGE.T_SERVERPART C
WHERE
A.SERVERPART_ID = 109 AND TO_CHAR(A.BUSINESSTYPE) = B.SHOPTRADE AND
B.SERVERPART_ID = C.SERVERPART_ID AND TRUNC(A.OPERATE_DATE) {0} AND
C.PROVINCE_CODE = 6618 AND C.STATISTICS_TYPE = 1000
)
)
WHERE COLNUM = 1", TransferTimes == "1" ? "= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1")
},
#endregion
#region
{
"Platform_Data.T_Revenue", string.Format(
@"SELECT
B.ServerpartShop_ID,A.Serverpart_Name,B.SHOPNAME AS ServerpartShop_Name,A.ENDACCOUNT_DATE AS Statistics_Date,
CASE WHEN A.VALID = 0 THEN 0 ELSE A.CASHPAY END AS Revenue_Amount,
A.TicketCount,A.TotalCount,A.TOTALSELLAMOUNT AS TotalAmount,A.TOTALOFFAMOUNT AS TotalDiscount,
A.CASH AS CashPay,A.CREDITCARD AS BankPay,A.TICKETBILL AS WeChatPay,A.OTHERPAY AS AliPay,
NVL(A.COSTBILL,0) + NVL(A.VIPPERSON,0) AS OtherPay,A.CASHPAY_DOWNLORD AS CashPayment,A.DIFFERENT_PRICE AS DifferentAmount,
A.DIFFERENCE_REASON AS Check_Info,A.DESCRIPTION_STAFF AS Check_Staff,A.DESCRIPTION_DATE AS Check_Date,
A.APPROVED_INFO AS Approve_Info,A.APPROVE_STAFF AS Approve_Staff,A.APPROVE_DATE AS Approve_Date,
A.DOWNLOAD_DATE AS Create_Date,A.APPROVE_DATE AS Transfer_Date
FROM
HIGHWAY_SELLDATA.T_ENDACCOUNT A,
HIGHWAY_STORAGE.T_SERVERPARTSHOP B
WHERE
A.PROVINCE_CODE = 6618 AND A.SERVERPART_ID = B.SERVERPART_ID AND
NVL(A.SHOPCODE,A.MACHINECODE) = NVL(B.SHOPCODE,B.SERVERPARTSHOP_ID) AND
TRUNC(A.APPROVE_DATE) {0}
UNION ALL
SELECT
B.ServerpartShop_ID,A.Serverpart_Name,B.SHOPNAME AS ServerpartShop_Name,A.ENDACCOUNT_DATE AS Statistics_Date,
CASE WHEN A.VALID = 0 THEN 0 ELSE A.CASHPAY END AS Revenue_Amount,
A.TicketCount,A.TotalCount,A.TOTALSELLAMOUNT AS TotalAmount,A.TOTALOFFAMOUNT AS TotalDiscount,
A.CASH AS CashPay,A.CREDITCARD AS BankPay,A.TICKETBILL AS WeChatPay,A.OTHERPAY AS AliPay,
NVL(A.COSTBILL,0) + NVL(A.VIPPERSON,0) AS OtherPay,A.CASHPAY_DOWNLORD AS CashPayment,A.DIFFERENT_PRICE AS DifferentAmount,
A.DIFFERENCE_REASON AS Check_Info,A.DESCRIPTION_STAFF AS Check_Staff,A.DESCRIPTION_DATE AS Check_Date,
A.APPROVED_INFO AS Approve_Info,A.APPROVE_STAFF AS Approve_Staff,A.APPROVE_DATE AS Approve_Date,
A.DOWNLOAD_DATE AS Create_Date,A.DESCRIPTION_DATE AS Transfer_Date
FROM
HIGHWAY_SELLDATA.T_ENDACCOUNT A,
HIGHWAY_STORAGE.T_SERVERPARTSHOP B
WHERE
A.PROVINCE_CODE = 6618 AND A.SERVERPART_ID = B.SERVERPART_ID AND
NVL(A.SHOPCODE,A.MACHINECODE) = NVL(B.SHOPCODE,B.SERVERPARTSHOP_ID) AND
APPROVE_DATE IS NULL AND TRUNC(A.DESCRIPTION_DATE) {0}
UNION ALL
SELECT
B.ServerpartShop_ID,A.Serverpart_Name,B.SHOPNAME AS ServerpartShop_Name,A.ENDACCOUNT_DATE AS Statistics_Date,
CASE WHEN A.VALID = 0 THEN 0 ELSE A.CASHPAY END AS Revenue_Amount,
A.TicketCount,A.TotalCount,A.TOTALSELLAMOUNT AS TotalAmount,A.TOTALOFFAMOUNT AS TotalDiscount,
A.CASH AS CashPay,A.CREDITCARD AS BankPay,A.TICKETBILL AS WeChatPay,A.OTHERPAY AS AliPay,
NVL(A.COSTBILL,0) + NVL(A.VIPPERSON,0) AS OtherPay,A.CASHPAY_DOWNLORD AS CashPayment,A.DIFFERENT_PRICE AS DifferentAmount,
A.DIFFERENCE_REASON AS Check_Info,A.DESCRIPTION_STAFF AS Check_Staff,A.DESCRIPTION_DATE AS Check_Date,
A.APPROVED_INFO AS Approve_Info,A.APPROVE_STAFF AS Approve_Staff,A.APPROVE_DATE AS Approve_Date,
A.DOWNLOAD_DATE AS Create_Date,A.DOWNLOAD_DATE AS Transfer_Date
FROM
HIGHWAY_SELLDATA.T_ENDACCOUNT A,
HIGHWAY_STORAGE.T_SERVERPARTSHOP B
WHERE
A.SERVERPART_ID = B.SERVERPART_ID AND
NVL(A.SHOPCODE,A.MACHINECODE) = NVL(B.SHOPCODE,B.SERVERPARTSHOP_ID) AND
TRUNC(A.DOWNLOAD_DATE) {0} AND A.PROVINCE_CODE = 6618 AND
A.DESCRIPTION_DATE IS NULL", TransferTimes == "1" ? "= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1")
},
#endregion
#region
{
"Platform_Data.T_Compact", string.Format(
@"SELECT
A.REGISTERCOMPACT_ID AS Compact_ID,A.Serverpart_Name,A.Compact_Name,A.Compact_Code,
A.FirstPart_Name,A.SecondPart_Name,A.Compact_Amount,A.Compact_StartDate,A.Compact_EndDate,
CASE LENGTH(A.COMPACT_TYPE) WHEN 1 THEN HIGHWAY_STORAGE.FUNC_GETENUMVALUE('COMPACT_CHARACTER',A.Compact_Type)
WHEN 2 THEN HIGHWAY_STORAGE.FUNC_GETENUMVALUE('COMPACT_TYPE_DJD',A.Compact_Type)
WHEN 3 THEN HIGHWAY_STORAGE.FUNC_GETENUMVALUE('COMPACT_TYPE_SM',A.Compact_Type)
WHEN 4 THEN HIGHWAY_STORAGE.FUNC_GETENUMVALUE('COMPACT_TYPE_SY',A.Compact_Type) END AS Compact_Type,
HIGHWAY_STORAGE.FUNC_GETENUMVALUE('COMPACTREGPROINST',A.ORGANIZER_TEL) as Sign_Procedure,
A.SECURITYDEPOSIT AS Performance_Bond,A.SAFETYRISKMORTGAGE AS SecurityRisk_Deposit,
NVL(MIN(B.GUARANTEERATIO),A.GUARANTEERATIO) AS Guarantee_Ratio,
ROUND(SUM(B.GUARANTEERATIO * B.MINTURNOVER / 100),6) AS Compact_Tmoney,
CASE A.ISFORMAT WHEN 1000 THEN '合作经营' WHEN 2000 THEN '固定租金' END AS Business_Type,A.OPERATING_AREA AS Business_Area,
HIGHWAY_STORAGE.FUNC_GETENUMVALUE('BUSINESSTYPE',A.OPERATING_SCOPE) as Business_Scope,A.UPLOADDATE AS Transfer_Date
FROM
HIGHWAY_STORAGE.T_REGISTERCOMPACT A
LEFT JOIN
HIGHWAY_STORAGE.T_PERCENTAGEOFCOMMISSION B
ON
A.REGISTERCOMPACT_ID = B.REGISTERCOMPACT_ID
WHERE
A.COMPACT_STATE = 1000 AND NVL(A.SERVERPART_ID,0) NOT IN (3748) AND
TRUNC(A.UPLOADDATE) {0}
GROUP BY
A.REGISTERCOMPACT_ID,A.Serverpart_Name,A.Compact_Name,A.Compact_Code,
A.FirstPart_Name,A.SecondPart_Name,A.Compact_Amount,A.Compact_StartDate,A.Compact_EndDate,
CASE LENGTH(A.COMPACT_TYPE) WHEN 1 THEN HIGHWAY_STORAGE.FUNC_GETENUMVALUE('COMPACT_CHARACTER',A.Compact_Type)
WHEN 2 THEN HIGHWAY_STORAGE.FUNC_GETENUMVALUE('COMPACT_TYPE_DJD',A.Compact_Type)
WHEN 3 THEN HIGHWAY_STORAGE.FUNC_GETENUMVALUE('COMPACT_TYPE_SM',A.Compact_Type)
WHEN 4 THEN HIGHWAY_STORAGE.FUNC_GETENUMVALUE('COMPACT_TYPE_SY',A.Compact_Type) END,
HIGHWAY_STORAGE.FUNC_GETENUMVALUE('COMPACTREGPROINST',A.ORGANIZER_TEL),
A.SECURITYDEPOSIT,A.SAFETYRISKMORTGAGE,A.GUARANTEERATIO,
CASE A.ISFORMAT WHEN 1000 THEN '合作经营' WHEN 2000 THEN '固定租金' END,
A.OPERATING_AREA,HIGHWAY_STORAGE.FUNC_GETENUMVALUE('BUSINESSTYPE',A.OPERATING_SCOPE),A.UPLOADDATE",
TransferTimes == "1" ? "= TRUNC(SYSDATE) - 1" : "BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1")
},
#endregion
#region
{
"Platform_Data.T_Check", string.Format(
@"SELECT
B.ServerpartShop_ID,A.Serverpart_Name,B.SHOPNAME AS ServerpartShop_Name,
A.CHECK_ENDDATE AS Check_Date,A.CASHPAY AS Check_Amount,
A.WORKER_NAME AS Check_Staff,A.DOWNLOAD_DATE AS Transfer_Date
FROM
HIGHWAY_SELLDATA.T_CHECKACCOUNT A,
HIGHWAY_STORAGE.T_SERVERPARTSHOP B
WHERE
A.SERVERPART_ID = B.SERVERPART_ID AND A.SHOPCODE = B.SHOPCODE AND
TRUNC(A.DOWNLOAD_DATE) {0} AND A.PROVINCE_CODE = 6618 AND
A.SERVERPART_ID NOT IN (3748)", TransferTimes == "1" ? "= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1")
},
#endregion
#region
{
"Platform_Data.T_SELLDATA",string.Format(
@"SELECT
SERVERPARTSHOP_ID,SERVERPART_NAME,SERVERPARTSHOP_NAME,SALES_TIME,SALESWORKER_NAME,
TICKET_CODE,COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_RETAILPRICE,SALES_COUNT,
SALES_AMOUNT,CASHPAY,BANKPAY,WECHATPAY,ALIPAY,OTHERPAY,SALES_TIME,SALES_TIME AS SELLDATA_DATE,
SERVERPARTCODE,SHOPCODE,MACHINECODE,LINENUM,TRANSFER_STATE,LINENUM
FROM
(
SELECT
B.SERVERPARTSHOP_ID,B.SHOPNAME AS SERVERPARTSHOP_NAME,A.SELLDATA_DATE AS SALES_TIME,
C.SELLWORKERNAME AS SALESWORKER_NAME,(A.SERVERPARTCODE || A.SHOPCODE || A.MACHINECODE
|| A.WORKERCODE || TO_CHAR(A.SELLDATA_DATE,'YYYYMMDDHH24MISS')) AS TICKET_CODE,D.COMMODITY_NAME,
D.COMMODITY_BARCODE,D.COMMODITY_RETAILPRICE,A.SELLCOUNT AS SALES_COUNT,A.FACTAMOUNT
AS SALES_AMOUNT,A.CASH AS CASHPAY,A.CREDITCARD AS BANKPAY,A.TICKETBILL AS WECHATPAY,
A.OTHERPAY AS ALIPAY,NVL(A.VIPPERSON,0) + NVL(A.COSTBILL,0) AS OTHERPAY,
E.SERVERPART_NAME,A.TRANSFER_STATE,A.SERVERPARTCODE,A.SHOPCODE,A.MACHINECODE,A.LINENUM
FROM
HIGHWAY_EXCHANGE.T_SELLDATA A,
HIGHWAY_EXCHANGE.T_SHOPMESSAGE B,
HIGHWAY_EXCHANGE.T_SELLWORKER C,
HIGHWAY_EXCHANGE.T_COMMODITYEX D,
HIGHWAY_EXCHANGE.T_SYSCODE E
WHERE
A.SERVERPARTCODE = B.SERVERPARTCODE AND
A.SHOPCODE = B.SHOPCODE AND A.WORKERCODE = C.SELLWORKERCODE AND
A.SERVERPARTCODE = C.SERVERPARTCODE AND
A.SERVERPARTCODE = D.SERVERPARTCODE AND
A.COMMODITY_CODE = D.COMMODITY_CODE AND
A.SERVERPARTCODE = E.SERVERPARTCODE AND
B.SERVERPARTSHOP_ID = D.SERVERPARTSHOP_ID
AND NVL(A.TRANSFER_STATE,0) = 0 AND TRUNC(A.SELLDATA_DATE) {0} {1} {2}
ORDER BY A.SELLDATA_DATE
)",(TransferTimes == "1" ? "<= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1"),
(!string.IsNullOrEmpty(_SALEDATE) ? " AND TRUNC(A.SELLDATA_DATE) > TO_DATE('" + _SALEDATE + "','YYYY/MM/DD')" : ""),
(!string.IsNullOrEmpty(_ServerPartCode) ? " AND A.SERVERPARTCODE IN ('" +_ServerPartCode.Replace(",","','")+ "')" : ""))
},
{
"Platform_Data.T_SELLMASTER",string.Format(
@"SELECT
SERVERPARTSHOP_ID,SERVERPART_NAME,SERVERPARTSHOP_NAME,SALES_TIME,SALESWORKER_NAME,
TICKET_CODE,COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_RETAILPRICE,SALES_COUNT,
SALES_AMOUNT,CASHPAY,BANKPAY,WECHATPAY,ALIPAY,OTHERPAY,SALES_TIME,
TICKET_CODE AS SELLMASTER_CODE,TRANSFER_STATE,LINENUM
FROM
(
SELECT
B.SERVERPARTSHOP_ID,A.SHOPNAME AS SERVERPARTSHOP_NAME,A.SELLMASTER_DATE AS SALES_TIME,
A.SELLWORKER_NAME AS SALESWORKER_NAME,A.SELLMASTER_CODE AS TICKET_CODE,E.COMMODITY_NAME,
E.COMMODITY_BARCODE,E.SELLDETAILS_PRICE AS COMMODITY_RETAILPRICE,E.SELLDETAILS_COUNT AS
SALES_COUNT,E.SELLDETAILS_AMOUNT AS SALES_AMOUNT,
CASE WHEN E.LINENUM = 1 THEN A.CASHPAY END AS CASHPAY,
CASE WHEN E.LINENUM = 1 THEN A.BANKPAY END AS BANKPAY,
CASE WHEN E.LINENUM = 1 AND A.PAYMENT_TYPE = 'WECHATPAY' THEN A.MOBILEPAY END AS WECHATPAY,
CASE WHEN E.LINENUM = 1 AND A.PAYMENT_TYPE = 'ALIPAY' THEN A.MOBILEPAY END AS ALIPAY,
CASE WHEN E.LINENUM = 1 THEN NVL(A.MEMBERPAY,0) + NVL(A.COUPONPAY,0) +
NVL(A.INTERNALPAY,0) + NVL(A.OTHERPAY,0) END AS OTHERPAY,C.SERVERPART_NAME,A.TRANSFER_STATE,E.LINENUM
FROM
HIGHWAY_EXCHANGE.T_SELLMASTER A,
HIGHWAY_EXCHANGE.T_SHOPMESSAGE B,
HIGHWAY_EXCHANGE.T_SELLDETAILS E,
HIGHWAY_EXCHANGE.T_SYSCODE C
WHERE
A.SERVERPARTCODE = B.SERVERPARTCODE AND A.SHOPCODE = B.SHOPCODE AND
A.SELLMASTER_CODE = E.SELLMASTER_CODE AND A.SERVERPARTCODE = C.SERVERPARTCODE
AND NVL(E.TRANSFER_STATE,0) = 0 AND TRUNC(A.SELLMASTER_DATE) {0} {1} {2}
ORDER BY A.SELLMASTER_DATE
)",(TransferTimes == "1" ? "<= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1"),
(!string.IsNullOrEmpty(_SALEDATE) ? " AND TRUNC(A.SELLMASTER_DATE) > TO_DATE('" + _SALEDATE + "','YYYY/MM/DD')" : ""),
(!string.IsNullOrEmpty(_ServerPartCode) ? " AND A.SERVERPARTCODE IN ('" +_ServerPartCode.Replace(",","','")+ "')" : ""))
},
#endregion
#region
{
"Platform_Data.T_Membership", string.Format(
@"SELECT
A.MEMBERSHIP_ID,A.MEMBERSHIP_NAME,A.MEMBERSHIP_TYPE,A.MEMBERSHIP_MOBILEPHONE AS Membership_Phone,
A.MEMBERSHIP_SEX,A.MEMBERSHIP_POINT,A.ADDTIME AS Register_Date,OPERATE_DATE AS Transfer_Date
FROM
MOBILESERVICE_PLATFORM.T_MEMBERSHIP A
WHERE
A.OWNERUNIT_ID = 13 AND A.MEMBERSHIP_TYPE NOT IN (0,9999) AND
TRUNC(A.OPERATE_DATE) {0}", TransferTimes == "1" ? "= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1")
},
#endregion
#region
{
"Platform_Data.T_MembershipPoints", string.Format(
@"SELECT
A.MEMBERSHIP_ID,A.MEMBERSHIP_NAME,A.MEMBERSHIP_MOBILEPHONE AS Membership_Phone,B.CURRENT_POINT AS Change_Point,
B.MEMBERSHIP_POINT,B.POINT_TYPE AS Operation_Type,B.POINTRECORD_DESC AS Operation_Desc,
B.CREATE_DATE AS Operation_Date,B.CREATE_DATE AS Transfer_Date
FROM
MOBILESERVICE_PLATFORM.T_MEMBERSHIP A,
MOBILESERVICE_PLATFORM.T_POINTRECORD B
WHERE
A.MEMBERSHIP_ID = B.MEMBERSHIP_ID AND A.OWNERUNIT_ID = 13 AND
A.MEMBERSHIP_TYPE NOT IN (0,9999) AND TRUNC(B.CREATE_DATE) {0}", TransferTimes == "1" ? "= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1")
},
#endregion
#region
{
"Platform_Data.T_MallOrder", string.Format(
@"SELECT
B.MEMBERSHIP_ID,B.MEMBERSHIP_NAME,B.MEMBERSHIP_MOBILEPHONE AS Membership_Phone,A.SALEBILL_CODE AS MallOrder_Code,
A.PAY_AMOUNT AS MallOrder_Amount,A.ORDER_DATE AS MallOrder_Date,
A.CHANNEL_TYPE AS MallOrder_PayType,A.ORDER_DATE AS Transfer_Date
FROM
MOBILESERVICE_PLATFORM.V_MALLSALEBILLNEW A,
MOBILESERVICE_PLATFORM.T_MEMBERSHIP B
WHERE
A.MEMBERSHIP_ID = B.MEMBERSHIP_ID AND A.SALEBILL_STATE < 9000 AND
B.OWNERUNIT_ID = 13 AND B.MEMBERSHIP_TYPE NOT IN (0,9999) AND
TRUNC(A.ORDER_DATE) {0}", TransferTimes == "1" ? "= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1")
},
#endregion
#region
{
"Platform_Data.T_ConsumptionRecord", string.Format(
@"SELECT
B.MEMBERSHIP_ID,B.MEMBERSHIP_NAME,B.MEMBERSHIP_MOBILEPHONE AS Membership_Phone,
A.SERVERPART_NAME AS Consume_ShopName,A.PAY_AMOUNT AS Consume_Amount,C.CHANNEL_TYPE AS Consume_PayType,
A.CONSUMPTIONRECORD_DATE AS Consume_Date,A.CONSUMPTIONRECORD_DATE AS Transfer_Date
FROM
MOBILESERVICE_PLATFORM.T_MEMBERSHIP B,
MOBILESERVICE_PLATFORM.V_CONSUMPTIONRECORDLIST A
LEFT JOIN
MOBILESERVICE_PLATFORM.T_PAYRECORD C
ON
A.TICKET_CODE = C.SALEBILL_CODE
WHERE A.MEMBERSHIP_ID = B.MEMBERSHIP_ID AND
A.CONSUMPTIONRECORD_STATE > 1005 AND A.CONSUMPTIONRECORD_STATE < 9000 AND
B.OWNERUNIT_ID = 13 AND B.MEMBERSHIP_TYPE NOT IN (0,9999) AND
TRUNC(A.CONSUMPTIONRECORD_DATE) {0}", TransferTimes == "1" ? "= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1")
},
#endregion
#region
{
"Platform_Data.T_MembershipCoupon", string.Format(
@"SELECT
A.MEMBERSHIP_ID,A.MEMBERSHIP_NAME,A.MEMBERSHIP_MOBILEPHONE AS Membership_Phone,
CASE COUPON_TYPE WHEN 1000 THEN '满减券' WHEN 2000 THEN '折扣券'
WHEN 3000 THEN '抵扣券' WHEN 4000 THEN '实物券' END AS Coupon_Type,
A.COUPON_NAME,COUPON_DISCOUNT AS Coupon_Amount,A.COUPON_STATE,A.CREATEDATE AS Create_Date,
A.SNAME AS Use_ShopName,A.USED_DATE AS Use_Date,A.CREATE_DATE AS Transfer_Date
FROM
MOBILESERVICE_PLATFORM.V_MEMBERSHIP_COUPON A
WHERE
A.OWNERUNIT_ID = 13 AND TRUNC(A.CREATE_DATE) {0}", TransferTimes == "1" ? "= TRUNC(SYSDATE) - 1" :
"BETWEEN TRUNC(SYSDATE) - " + TransferTimes + " AND TRUNC(SYSDATE) - 1")
},
#endregion
#endregion
#region
#endregion
};
}
/// <summary>
/// 初始化传输时间字段
/// </summary>
/// 数据格式:{接收端表名,数据更新判断唯一字段}
/// <returns></returns>
private Hashtable getCreateDateName()
{
Hashtable _CreateDateName = new Hashtable
{
#region
//服务区门店信息表
{ "Platform_Data.T_ServerpartShop","TRANSFER_DATE" },
//商品信息表
{ "Platform_Data.T_Commodity","TRANSFER_DATE" },
//日结营收表
{ "Platform_Data.T_Revenue","TRANSFER_DATE" },
//合同信息表
{ "Platform_Data.T_Compact","TRANSFER_DATE" },
//现场稽核表
{ "Platform_Data.T_Check","TRANSFER_DATE" },
//销售流水表
{ "Platform_Data.T_SELLDATA","TRANSFER_DATE" },
{ "Platform_Data.T_SELLMASTER","TRANSFER_DATE" },
//会员信息表
{ "Platform_Data.T_Membership","TRANSFER_DATE" },
//会员积分记录表
{ "Platform_Data.T_MembershipPoints","TRANSFER_DATE" },
//会员商城订单表
{ "Platform_Data.T_MallOrder","TRANSFER_DATE" },
//会员消费记录表
{ "Platform_Data.T_ConsumptionRecord","TRANSFER_DATE" },
//会员优惠券表
{ "Platform_Data.T_MembershipCoupon","TRANSFER_DATE" },
#endregion
#region
#endregion
};
return _CreateDateName;
}
/// <summary>
/// 初始化数据唯一条件字段
/// </summary>
/// 数据格式:{接收端表名,发送端表名,发送端主键值}
/// <returns></returns>
private Hashtable getTableDatas()
{
return new Hashtable
{
#region ->
#region
//服务区信息表
{
"Platform_Data.T_ServerpartShop",
new TopParameter("HIGHWAY_STORAGE.T_SERVERPARTSHOP",
new Dictionary<string, DataCheckHelper.ValueType>())
},
#endregion
#region
//服务区门店表
{
"Platform_Data.T_Commodity",
new TopParameter("HIGHWAY_STORAGE.T_COMMODITY",
new Dictionary<string, DataCheckHelper.ValueType>())
},
#endregion
#region
//用户账户表
{
"Platform_Data.T_Revenue",
new TopParameter("HIGHWAY_SELLDATA.T_ENDACCOUNT",
new Dictionary<string, DataCheckHelper.ValueType>())
},
#endregion
#region
//用户账户表
{
"Platform_Data.T_Compact",
new TopParameter("HIGHWAY_STORAGE.T_REGISTERCOMPACT",
new Dictionary<string, DataCheckHelper.ValueType>())
},
#endregion
#region
//推送详情表
{
"Platform_Data.T_Check",
new TopParameter("HIGHWAY_SELLDATA.T_CHECKACCOUNT",
new Dictionary<string, DataCheckHelper.ValueType>())
},
#endregion
#region
//销售流水表
{
"Platform_Data.T_SELLDATA",
new TopParameter("HIGHWAY_EXCHANGE.T_SELLDATA",
new Dictionary<string, DataCheckHelper.ValueType>
{
{ "SELLDATA_DATE", DataCheckHelper.ValueType.DateTime },
{ "SERVERPARTCODE", DataCheckHelper.ValueType.String },
{ "SHOPCODE", DataCheckHelper.ValueType.String },
{ "MACHINECODE", DataCheckHelper.ValueType.String },
{ "LINENUM", DataCheckHelper.ValueType.Int }
})
},
{
"Platform_Data.T_SELLMASTER",
new TopParameter("HIGHWAY_EXCHANGE.T_SELLDETAILS",
new Dictionary<string, DataCheckHelper.ValueType>
{
{ "SELLMASTER_CODE", DataCheckHelper.ValueType.String },
{ "LINENUM", DataCheckHelper.ValueType.Int }
})
},
#endregion
#region
{
"Platform_Data.T_Membership",
new TopParameter("MOBILESERVICE_PLATFORM.T_MEMBERSHIP",
new Dictionary<string, DataCheckHelper.ValueType>())
},
#endregion
#region
{
"Platform_Data.T_MembershipPoints",
new TopParameter("MOBILESERVICE_PLATFORM.T_POINTRECORD",
new Dictionary<string, DataCheckHelper.ValueType>())
},
#endregion
#region
{
"Platform_Data.T_MallOrder",
new TopParameter("MOBILESERVICE_PLATFORM.V_MALLSALEBILLNEW",
new Dictionary<string, DataCheckHelper.ValueType>())
},
#endregion
#region
{
"Platform_Data.T_ConsumptionRecord",
new TopParameter("MOBILESERVICE_PLATFORM.V_CONSUMPTIONRECORDLIST",
new Dictionary<string, DataCheckHelper.ValueType>())
},
#endregion
#region
{
"Platform_Data.T_MembershipCoupon",
new TopParameter("MOBILESERVICE_PLATFORM.V_MEMBERSHIP_COUPON",
new Dictionary<string, DataCheckHelper.ValueType>())
},
#endregion
#endregion
#region
#endregion
};
}
/// <summary>
/// 定义表传输状态字段
/// </summary>
/// 数据格式:{接收端表名,传输状态字段}
/// <returns></returns>
private Hashtable getStateNames()
{
return new Hashtable
{
#region
//服务区门店信息表
{ "Platform_Data.T_ServerpartShop","" },
//商品信息表
{ "Platform_Data.T_Commodity","" },
//日结营收表
{ "Platform_Data.T_Revenue","" },
//合同信息表
{ "Platform_Data.T_Compact","" },
//现场稽核表
{ "Platform_Data.T_Check","" },
//销售流水表
{ "Platform_Data.T_SELLDATA","TRANSFER_STATE" },
{ "Platform_Data.T_SELLMASTER","TRANSFER_STATE" },
//会员信息表
{ "Platform_Data.T_Membership","" },
//会员积分记录表
{ "Platform_Data.T_MembershipPoints","" },
//会员商城订单表
{ "Platform_Data.T_MallOrder","" },
//会员消费记录表
{ "Platform_Data.T_ConsumptionRecord","" },
//会员优惠券表
{ "Platform_Data.T_MembershipCoupon","" },
#endregion
#region
#endregion
};
}
/// <summary>
/// 单次最大传输数量
/// </summary>
/// 数据格式:{接收端表名,传输数量}
/// <returns></returns>
private Hashtable getMaxDataQuantityList()
{
return new Hashtable
{
#region
//服务区门店信息表
{ "Platform_Data.T_ServerpartShop", 20 },
//商品信息表
{ "Platform_Data.T_Commodity", 200 },
//日结营收表
{ "Platform_Data.T_Revenue", 200 },
//合同信息表
{ "Platform_Data.T_Compact", 20 },
//现场稽核表
{ "Platform_Data.T_Check", 20 },
//销售流水表
{ "Platform_Data.T_SELLDATA", 20 },
{ "Platform_Data.T_SELLMASTER", 20 },
//会员信息表
{ "Platform_Data.T_Membership", 200 },
//会员积分记录表
{ "Platform_Data.T_MembershipPoints", 200 },
//会员商城订单表
{ "Platform_Data.T_MallOrder", 20 },
//会员消费记录表
{ "Platform_Data.T_ConsumptionRecord", 20 },
//会员优惠券表
{ "Platform_Data.T_MembershipCoupon", 200 },
#endregion
#region
#endregion
};
}
#region ->
/// <summary>
/// 线程配置
/// </summary>
public ConfigThread(string serverpartcode = null, bool isReplaceColumnName = false, int endaccounttimes = 0)
{
if (serverpartcode != null)
{
this.serverpartcode = serverpartcode;
}
if (endaccounttimes > 0)
{
this.endaccounttimes = endaccounttimes;
}
if (this.isReplaceColumnName != isReplaceColumnName)
{
this.isReplaceColumnName = isReplaceColumnName;
}
setTableNameList();
setCreateDateName();
setTableDatas();
setStateNames();
setTimeList();
setMaxDataQuantityList();
setAllDataSql();//最后加载
}
/// <summary>
/// 线程配置
/// </summary>
/// <param name="tableNameList">表名集合</param>
/// <param name="allDataSql">查询表所有数据SQL集合</param>
/// <param name="createDateName">表对应创建时间字段名</param>
/// <param name="tableDatas">表对应主键值</param>
/// <param name="stateNames">本地需要修改的状态名称</param>
public ConfigThread(Hashtable tableNameList, Hashtable allDataSql, Hashtable createDateName,
Hashtable tableDatas, Hashtable stateNames, Hashtable timeList, bool isReplaceColumnName = false,
Hashtable maxDataQuantityList = null, string serverpartcode = null, int endaccounttimes = 0)
{
if (serverpartcode != null)
{
this.serverpartcode = serverpartcode;
}
if (endaccounttimes > 0)
{
this.endaccounttimes = endaccounttimes;
}
if (this.isReplaceColumnName != isReplaceColumnName)
{
this.isReplaceColumnName = isReplaceColumnName;
}
setTableNameList(tableNameList);
setCreateDateName(createDateName);
setTableDatas(tableDatas);
setStateNames(stateNames);
setTimeList(timeList);
setMaxDataQuantityList(maxDataQuantityList);
setAllDataSql(allDataSql);//最后加载
}
#endregion
#region ->
/// <summary>
/// 表名集合
/// </summary>
/// <returns></returns>
public void setTableNameList(Hashtable tableNameList = null)
{
if (tableNameList == null)
{ this.tableNameList = getTableNameList(); }
else { this.tableNameList = tableNameList; }
}
/// <summary>
/// 查询表所有数据SQL集合
/// </summary>
/// <returns></returns>
public void setAllDataSql(Hashtable allDataSql = null)
{
if (allDataSql == null)
{ this.allDataSql = getAllDataSql(); }
else { this.allDataSql = allDataSql; }
}
/// <summary>
/// 表对应创建时间字段名
/// </summary>
/// <returns></returns>
public void setCreateDateName(Hashtable createDateName = null)
{
if (createDateName == null)
{ this.createDateName = getCreateDateName(); }
else { this.createDateName = createDateName; }
}
/// <summary>
/// 表对应主键值
/// </summary>
/// <param name="tableDatas"></param>
public void setTableDatas(Hashtable tableDatas = null)
{
if (tableDatas == null)
{ this.tableDatas = getTableDatas(); }
else { this.tableDatas = tableDatas; }
}
/// <summary>
/// 本地需要修改的状态名称
/// </summary>
/// <param name="stateNames"></param>
public void setStateNames(Hashtable stateNames = null)
{
if (stateNames == null)
{ this.stateNames = getStateNames(); }
else { this.stateNames = stateNames; }
}
/// <summary>
/// 上传、下发启动间隔时间
/// </summary>
/// <param name="timeList"></param>
public void setTimeList(Hashtable timeList = null)
{
if (timeList == null)
{ this.timeList = getTimeList(); }
else { this.timeList = timeList; }
}
/// <summary>
/// 上传批量传输最大数据量
/// </summary>
/// <param name="maxDataQuantity"></param>
public void setMaxDataQuantityList(Hashtable maxDataQuantityList = null)
{
if (maxDataQuantityList == null)
{ this.maxDataQuantityList = getMaxDataQuantityList(); }
else { this.maxDataQuantityList = maxDataQuantityList; }
}
#endregion
#region ->
/// <summary>
/// 接口参数
/// Important parameters of the interface, sacred and inviolable
/// </summary>
/// <returns></returns>
public Hashtable onTableNameList() { return tableNameList; }
public Hashtable onAllDataSql() { return allDataSql; }
public Hashtable onCreateDateName() { return createDateName; }
public Hashtable onTableDatas() { return tableDatas; }
public Hashtable onStateNames() { return stateNames; }
public Hashtable onTimeList() { return timeList; }
public Hashtable onMaxDataQuantityList() { return maxDataQuantityList; }
#endregion
}
}