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"];
///
/// 表名集合
///
private Hashtable tableNameList = null; //表名集合
///
/// 查询表所有数据SQL集合
///
private Hashtable allDataSql = null; //查询表所有数据SQL集合
///
/// 表对应创建时间字段名
///
private Hashtable createDateName = null; //表对应创建时间字段名
///
/// 表对应主键值
///
private Hashtable tableDatas = null; //表对应主键值
///
/// 本地需要修改的状态字段名称
///
private Hashtable stateNames = null; //本地需要修改的状态字段名称
///
/// 线程上传、下发启动时间比例
///
private Hashtable timeList = null; //线程上传、下发启动时间比例
///
/// 上传批量传输最大数据量
///
private Hashtable maxDataQuantityList = null; //上传批量传输最大数据量
///
/// 服务区编码
///
private string serverpartcode = null; //SERVERPARTCODE 服务区编码
///
/// 是否使用替换字段名
///
private bool isReplaceColumnName = false; //是否使用替换字段名
///
/// 默认最大上传天数
///
private int endaccounttimes = 0; //ENDACCOUNTTIMES 默认最大上传天数
protected string _SALEDATE = ConfigurationManager.AppSettings["SALEDATE"];//流水节点
protected string _ServerPartCode = ConfigurationManager.AppSettings["SERVERPARTCODE"];//服务区编码
#endregion
///
/// 需要传输的表及传输类型
/// 上传:TOP
/// 下载:DOWN
///
///
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;
}
///
/// 传输表时间间隔比例
///
///
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;
}
///
/// 传输表数据读取方式
///
/// 数据格式:{接收端表名,发送端查询语句}
///
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
};
}
///
/// 初始化传输时间字段
///
/// 数据格式:{接收端表名,数据更新判断唯一字段}
///
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;
}
///
/// 初始化数据唯一条件字段
///
/// 数据格式:{接收端表名,发送端表名,发送端主键值}
///
private Hashtable getTableDatas()
{
return new Hashtable
{
#region 上传部分-> 唯一条件标识上传状态
#region 服务区信息表
//服务区信息表
{
"Platform_Data.T_ServerpartShop",
new TopParameter("HIGHWAY_STORAGE.T_SERVERPARTSHOP",
new Dictionary())
},
#endregion
#region 商品信息表
//服务区门店表
{
"Platform_Data.T_Commodity",
new TopParameter("HIGHWAY_STORAGE.T_COMMODITY",
new Dictionary())
},
#endregion
#region 日结营收表
//用户账户表
{
"Platform_Data.T_Revenue",
new TopParameter("HIGHWAY_SELLDATA.T_ENDACCOUNT",
new Dictionary())
},
#endregion
#region 合同信息表
//用户账户表
{
"Platform_Data.T_Compact",
new TopParameter("HIGHWAY_STORAGE.T_REGISTERCOMPACT",
new Dictionary())
},
#endregion
#region 现场稽核表
//推送详情表
{
"Platform_Data.T_Check",
new TopParameter("HIGHWAY_SELLDATA.T_CHECKACCOUNT",
new Dictionary())
},
#endregion
#region 销售流水表
//销售流水表
{
"Platform_Data.T_SELLDATA",
new TopParameter("HIGHWAY_EXCHANGE.T_SELLDATA",
new Dictionary
{
{ "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
{
{ "SELLMASTER_CODE", DataCheckHelper.ValueType.String },
{ "LINENUM", DataCheckHelper.ValueType.Int }
})
},
#endregion
#region 会员信息表
{
"Platform_Data.T_Membership",
new TopParameter("MOBILESERVICE_PLATFORM.T_MEMBERSHIP",
new Dictionary())
},
#endregion
#region 会员积分记录表
{
"Platform_Data.T_MembershipPoints",
new TopParameter("MOBILESERVICE_PLATFORM.T_POINTRECORD",
new Dictionary())
},
#endregion
#region 会员商城订单表
{
"Platform_Data.T_MallOrder",
new TopParameter("MOBILESERVICE_PLATFORM.V_MALLSALEBILLNEW",
new Dictionary())
},
#endregion
#region 会员消费记录表
{
"Platform_Data.T_ConsumptionRecord",
new TopParameter("MOBILESERVICE_PLATFORM.V_CONSUMPTIONRECORDLIST",
new Dictionary())
},
#endregion
#region 会员优惠券表
{
"Platform_Data.T_MembershipCoupon",
new TopParameter("MOBILESERVICE_PLATFORM.V_MEMBERSHIP_COUPON",
new Dictionary())
},
#endregion
#endregion
#region 下发部分
#endregion
};
}
///
/// 定义表传输状态字段
///
/// 数据格式:{接收端表名,传输状态字段}
///
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
};
}
///
/// 单次最大传输数量
///
/// 数据格式:{接收端表名,传输数量}
///
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 方法 -> 构造函数
///
/// 线程配置
///
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();//最后加载
}
///
/// 线程配置
///
/// 表名集合
/// 查询表所有数据SQL集合
/// 表对应创建时间字段名
/// 表对应主键值
/// 本地需要修改的状态名称
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 方法 -> 动态配置参数
///
/// 表名集合
///
///
public void setTableNameList(Hashtable tableNameList = null)
{
if (tableNameList == null)
{ this.tableNameList = getTableNameList(); }
else { this.tableNameList = tableNameList; }
}
///
/// 查询表所有数据SQL集合
///
///
public void setAllDataSql(Hashtable allDataSql = null)
{
if (allDataSql == null)
{ this.allDataSql = getAllDataSql(); }
else { this.allDataSql = allDataSql; }
}
///
/// 表对应创建时间字段名
///
///
public void setCreateDateName(Hashtable createDateName = null)
{
if (createDateName == null)
{ this.createDateName = getCreateDateName(); }
else { this.createDateName = createDateName; }
}
///
/// 表对应主键值
///
///
public void setTableDatas(Hashtable tableDatas = null)
{
if (tableDatas == null)
{ this.tableDatas = getTableDatas(); }
else { this.tableDatas = tableDatas; }
}
///
/// 本地需要修改的状态名称
///
///
public void setStateNames(Hashtable stateNames = null)
{
if (stateNames == null)
{ this.stateNames = getStateNames(); }
else { this.stateNames = stateNames; }
}
///
/// 上传、下发启动间隔时间
///
///
public void setTimeList(Hashtable timeList = null)
{
if (timeList == null)
{ this.timeList = getTimeList(); }
else { this.timeList = timeList; }
}
///
/// 上传批量传输最大数据量
///
///
public void setMaxDataQuantityList(Hashtable maxDataQuantityList = null)
{
if (maxDataQuantityList == null)
{ this.maxDataQuantityList = getMaxDataQuantityList(); }
else { this.maxDataQuantityList = maxDataQuantityList; }
}
#endregion
#region 方法 -> 接口参数
///
/// 接口参数
/// Important parameters of the interface, sacred and inviolable
///
///
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
}
}