using Transmission.SDK;
using Transmission.SDK.ThreadPool;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CoopMerchantClient
{
public class ConfigThread : IConfigInterface
{
#region 参数变量
///
/// 表名集合
///
private Hashtable tableNameList = null; //表名集合
///
/// 表注解集合
///
private Hashtable tableDescList = 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 默认最大上传天数
#endregion
///
/// 需要传输的表及传输类型
/// 上传:TOP
/// 下载:DOWN
///
///
private Hashtable getTableNameList()
{
Hashtable _TableNameList = new Hashtable
{
#region 上传部分
//服务区信息表
{ "MOBILESERVICE_PLATFORM.T_SERVERPART", "TOP" },
//服务区门店表
{ "MOBILESERVICE_PLATFORM.T_SERVERPARTSHOP", "TOP"},
//用户账户表
{ "MOBILESERVICE_PLATFORM.T_USER", "TOP"},
//用户类别表
{ "MOBILESERVICE_PLATFORM.T_USERTYPE", "TOP"},
//推送详情表
{ "HIGHWAY_STORAGE.T_WECHATPUSHDETAIL", "TOP"},
//推送单品表
{ "HIGHWAY_STORAGE.T_WECHATPUSHSALES", "TOP"},
//自然日移动支付对账表
{ "HIGHWAY_SELLDATA.T_DAILYMOBILEPAY", "TOP"}
////总部数据版本反馈表
//{ "HIGHWAY_EXCHANGE.T_GENERALFEEDBACK", "TOP"},
#endregion
#region 下发部分
#endregion
};
return _TableNameList;
}
///
/// 传输表时间间隔比例
///
///
private Hashtable getTimeList()
{
Hashtable _TimeList = new Hashtable
{
#region 上传部分
//服务区信息表
{ "MOBILESERVICE_PLATFORM.T_SERVERPART", 5 },
//服务区门店表
{ "MOBILESERVICE_PLATFORM.T_SERVERPARTSHOP", 5 },
//用户账户表
{ "MOBILESERVICE_PLATFORM.T_USER", 5 },
//用户类别表
{ "MOBILESERVICE_PLATFORM.T_USERTYPE", 5 },
//推送详情表
{ "HIGHWAY_STORAGE.T_WECHATPUSHDETAIL", 5 },
//推送单品表
{ "HIGHWAY_STORAGE.T_WECHATPUSHSALES", 5 },
//自然日移动支付对账表
{ "HIGHWAY_SELLDATA.T_DAILYMOBILEPAY", 10 }
////总部数据版本反馈表
//{ "HIGHWAY_EXCHANGE.T_GENERALFEEDBACK", 3 },
#endregion
#region 下发部分
#endregion
};
return _TimeList;
}
///
/// 传输表数据读取方式
///
///
private Hashtable getAllDataSql()
{
return new Hashtable()
{
#region 上传部分
#region 服务区信息表
{
"MOBILESERVICE_PLATFORM.T_SERVERPART",
@"SELECT A.SERVERPART_ID,A.SERVERPART_TYPE,A.SERVERPART_CODE,
A.SHORTNAME,A.SERVERPART_NAME,A.SERVERPART_ADDRESS,
A.EXPRESSWAY_NAME,A.SERVERPART_INDEX,A.REGIONTYPE_ID,
A.STATISTIC_TYPE,C.SERVERPARTCODE AS PROVINCE_CODE,
A.CITY_CODE,A.COUNTY_CODE,A.SERVERPART_X,A.SERVERPART_Y,
A.SELLERCOUNT,A.OWNEDCOMPANY,A.MANAGERCOMPANY,
A.SERVERPART_AREA,A.SPREGIONTYPE_ID,
A.SPREGIONTYPE_NAME,A.SPREGIONTYPE_INDEX,
B.OPERATELOG_ID,B.OPERATEDATE,B.OPERATEDATE AS OPERATE_DATE
FROM HIGHWAY_STORAGE.T_SERVERPART A,
HIGHWAY_STORAGE.T_OPERATELOG B,
HIGHWAY_EXCHANGE.T_SYSCODE C
WHERE A.SERVERPART_ID = B.TABLE_ID AND NVL(B.TRANSFER_STATE,0) = 0 AND
A.PROVINCE_CODE = C.PROVINCE_CODE AND
B.TABLE_NAME = 'HIGHWAY_STORAGE.T_SERVERPART'
ORDER BY A.SERVERPART_ID,B.OPERATEDATE"
},
#endregion
#region 服务区门店表
{
"MOBILESERVICE_PLATFORM.T_SERVERPARTSHOP",
@"SELECT A.SERVERPARTSHOP_ID,A.SHOPTRADE,A.SHOPNAME,
A.SHOPSHORTNAME,A.ISVALID,A.SERVERPARTSHOP_INDEX,
A.TOPPERSON AS SHOP_LINKMAN,A.TOPPERSON_MOBILE AS SHOP_TELEPHONE,
A.SERVERPART_ID,A.SHOPREGION,A.SHOPCODE,A.ROYALTYRATE,
A.BUSINESS_UNIT,A.BUSINESS_DATE AS BUSINESS_STARTDATE,
A.BUSINESS_ENDDATE,A.BUS_STARTDATE,A.BUSINESSAREA,
A.BUSINESS_TYPE,A.BUSINESS_STATE,A.BUSINESS_REGION,
A.BUSINESS_NATURE,A.SETTLINGACCOUNTS,A.STATISTIC_TYPE,
A.STATISTICS_TYPE,A.REGISTERCOMPACT_ID,A.REGISTERCOMPACT_NAME,
A.SELLER_ID AS COOPMERCHANTS_ID,A.SELLER_NAME AS COOPMERCHANTS_NAME,
A.BUSINESS_BRAND AS BRAND_ID,A.BRAND_NAME,A.BUSINESS_TRADE,
B.OPERATEDATE AS OPERATE_DATE,A.SERVERPARTSHOP_DESC,
B.OPERATELOG_ID,B.OPERATEDATE,C.SERVERPARTCODE AS PROVINCE_CODE
FROM HIGHWAY_STORAGE.T_SERVERPARTSHOP A,
HIGHWAY_STORAGE.T_OPERATELOG B,
HIGHWAY_EXCHANGE.T_SYSCODE C,
HIGHWAY_STORAGE.T_SERVERPART D
WHERE A.SERVERPARTSHOP_ID = B.TABLE_ID AND NVL(B.TRANSFER_STATE,0) = 0 AND
A.SERVERPART_ID = D.SERVERPART_ID AND C.PROVINCE_CODE = D.PROVINCE_CODE AND
B.TABLE_NAME = 'HIGHWAY_STORAGE.T_SERVERPARTSHOP'
ORDER BY SERVERPARTSHOP_ID,B.OPERATEDATE"
},
#endregion
#region 用户账号表
{
"MOBILESERVICE_PLATFORM.T_USER",
@"SELECT A.USER_ID,A.USERTYPE_ID,A.USER_NAME,A.USER_PASSPORT,
A.USER_PASSWORD,A.USER_TIMEOUT,A.USER_INDEX,A.USER_INDEFINIT,
A.USER_EXPIRY,A.USER_STATUS,A.USER_DESC,A.USER_ENABLEDLICENSE,
A.USER_LICENSE,A.USER_ENABLEDCITYAUTHORITY,A.USER_CITYAUTHORITY,
A.USER_REPEATLOGON,A.USER_MOBILEPHONE,A.USER_PROVINCE AS PROVINCE_CODE,
A.PROVINCE_UNIT,B.OPERATELOG_ID,B.OPERATEDATE,B.OPERATEDATE AS OPERATE_DATE
FROM PLATFORM_FRAMEWORK.T_USER A,HIGHWAY_STORAGE.T_OPERATELOG B
WHERE A.USER_ID IS NOT NULL AND NVL(B.TRANSFER_STATE,0) = 0 AND
A.USER_ID = B.TABLE_ID AND B.TABLE_NAME = 'PLATFORM_FRAMEWORK.T_USER'"
},
#endregion
#region 用户类别表
{
"MOBILESERVICE_PLATFORM.T_USERTYPE",
@"SELECT A.USERTYPE_ID,A.USERTYPE_NAME,A.USERTYPE_PID,
A.USERTYPE_INDEX,A.USERTYPE_DESC,A.USERTYPE_GUID,
NVL(A.USERTYPE_PROVINCE,C.SERVERPARTCODE) AS PROVINCE_CODE,
B.OPERATELOG_ID,B.OPERATEDATE,B.OPERATEDATE AS OPERATE_DATE
FROM PLATFORM_FRAMEWORK.T_USERTYPE A,
HIGHWAY_STORAGE.T_OPERATELOG B,
HIGHWAY_EXCHANGE.T_SYSCODE C
WHERE A.USERTYPE_ID IS NOT NULL AND NVL(B.TRANSFER_STATE,0) = 0 AND
A.USERTYPE_ID = B.TABLE_ID AND B.TABLE_NAME = 'PLATFORM_FRAMEWORK.T_USERTYPE'"
},
#endregion
#region 推送详情表
{
"HIGHWAY_STORAGE.T_WECHATPUSHDETAIL",
@"SELECT WECHATPUSHDETAIL_ID ,RTWECHATPUSH_ID,DIRECTION_IDS,
GROUP_TYPE,USER_NAME ,STATISTICS_DATE,CURRENT_TOTALPRICE,
CASHPAY ,DIFFERENT_PRICE_MORE,DIFFERENT_PRICE_LESS,TICKETCOUNT,
TOTALOFFAMOUNT,MOBILEPAYMENT,COMMODITY_COUNT,PASS_COUNT,
TOTAL_COUNT,HOLIDAY_REVENUE,HOLIDAY_TICKETCOUNT,HOLIDAY_TOTALCOUNT,
HOLIDAY_DAYS,PROMOTION_REVENUES,WEEK_REVENUE,WEEK_AVERAGEPRICE,
WEEK_YEARONYEAR, MONTH_REVENUE,MONTH_AVERAGEPRICE,MONTH_YEARONYEAR,
YEAR_REVENUE,YEAR_AVERAGEPRICE,YEAR_YEARONYEAR,YEAR_TOTALPRICE,
MARKET_REVENUE,RESTAURANT_REVENUE,SNACK_REVENUE,OTHER_REVENUE,
COMPREHENSIVE_REVENUE,THEME_REVENUE,STANDARD_REVENUE,PAKINGZONE_REVENUE,
SERVERPART_REVENUE,PROVINCE_CODE,TRANSFER_STATE,WECHATPUSHDETAIL_DESC
FROM HIGHWAY_STORAGE.T_WECHATPUSHDETAIL
WHERE NVL(TRANSFER_STATE,0) = 0 AND PROVINCE_CODE IS NOT NULL AND
WECHATPUSHDETAIL_ID IS NOT NULL
ORDER BY WECHATPUSHDETAIL_ID"
},
#endregion
#region 推送单品数据
{
"HIGHWAY_STORAGE.T_WECHATPUSHSALES",
@"SELECT WECHATPUSHSALES_ID,WECHATPUSHDETAIL_ID,GROUP_TYPE,
DATA_TYPE,FIRST_RANK,SECOND_RANK,THIRD_RANK,FOURTH_RANK,
FIFTH_RANK,SIXTH_RANK,SEVENTH_RANK,EIGHTH_RANK,NINTH_RANK,
TENTH_RANK,PROVINCE_CODE,TRANSFER_STATE,WECHATPUSHSALES_DESC
FROM HIGHWAY_STORAGE.T_WECHATPUSHSALES
WHERE NVL(TRANSFER_STATE,0) = 0 AND PROVINCE_CODE IS NOT NULL AND
WECHATPUSHSALES_ID IS NOT NULL
ORDER BY WECHATPUSHSALES_ID"
},
#endregion
#region 自然日移动支付对账单
{
"HIGHWAY_SELLDATA.T_DAILYMOBILEPAY",
@"SELECT DAILYMOBILEPAY_ID,SELLDATA_DATE,PROVINCE_CODE,
SERVERPARTCODE,SHOPCODE,TRANSACTION_TRENCH,FACTAMOUNT,
DEDUCTION_RATE,TAXFEE_AMOUNT,COST_RATE,SHARE_PROFIT,
SYSDATE AS DOWNLOAD_DATE
FROM HIGHWAY_SELLDATA.T_DAILYMOBILEPAY
WHERE NVL(TRANSFER_STATE,0) = 0 AND NVL(DAILYMOBILEPAY_DESC,'0') <> 'UPLOAD'
ORDER BY DAILYMOBILEPAY_ID"
}
//,
#endregion
#endregion
#region 下发部分
#endregion
};
}
///
/// 初始化传输时间字段
///
///
private Hashtable getCreateDateName()
{
Hashtable _CreateDateName = new Hashtable
{
#region 上传部分
//服务区信息表
{ "MOBILESERVICE_PLATFORM.T_SERVERPART","OPERATEDATE" },
//服务区门店表
{ "MOBILESERVICE_PLATFORM.T_SERVERPARTSHOP","OPERATEDATE" },
//用户账户表
{ "MOBILESERVICE_PLATFORM.T_USER","OPERATEDATE" },
//用户类别表
{ "MOBILESERVICE_PLATFORM.T_USERTYPE","OPERATEDATE" },
//推送详情表
{ "HIGHWAY_STORAGE.T_WECHATPUSHDETAIL","STATISTICS_DATE" },
//推送单品表
{ "HIGHWAY_STORAGE.T_WECHATPUSHSALES","" },
//自然日移动支付对账表
{ "HIGHWAY_SELLDATA.T_DAILYMOBILEPAY","SELLDATA_DATE" }
////总部数据版本反馈表
//{ "HIGHWAY_EXCHANGE.T_GENERALFEEDBACK","CONNECT_DATE" },
#endregion
#region 下发部分
#endregion
};
return _CreateDateName;
}
///
/// 初始化数据唯一条件字段
///
///
private Hashtable getTableDatas()
{
return new Hashtable
{
#region 上传部分-> 唯一条件标识上传状态
#region 服务区信息表
//服务区信息表
{
"MOBILESERVICE_PLATFORM.T_SERVERPART",
new TopParameter("HIGHWAY_STORAGE.T_OPERATELOG",
new Dictionary
{
{ "OPERATELOG_ID", DataCheckHelper.ValueType.Int }
})
},
#endregion
#region 服务区门店表
//服务区门店表
{
"MOBILESERVICE_PLATFORM.T_SERVERPARTSHOP",
new TopParameter("HIGHWAY_STORAGE.T_OPERATELOG",
new Dictionary
{
{ "OPERATELOG_ID", DataCheckHelper.ValueType.Int }
})
},
#endregion
#region 用户账户表
//用户账户表
{
"MOBILESERVICE_PLATFORM.T_USER",
new TopParameter("HIGHWAY_STORAGE.T_OPERATELOG",
new Dictionary
{
{ "OPERATELOG_ID", DataCheckHelper.ValueType.Int }
})
},
#endregion
#region 用户类别表
//用户账户表
{
"MOBILESERVICE_PLATFORM.T_USERTYPE",
new TopParameter("HIGHWAY_STORAGE.T_OPERATELOG",
new Dictionary
{
{ "OPERATELOG_ID", DataCheckHelper.ValueType.Int }
})
},
#endregion
#region 推送详情表
//推送详情表
{
"HIGHWAY_STORAGE.T_WECHATPUSHDETAIL",
new TopParameter("HIGHWAY_STORAGE.T_WECHATPUSHDETAIL",
new Dictionary
{
{ "WECHATPUSHDETAIL_ID", DataCheckHelper.ValueType.Int },
{ "PROVINCE_CODE", DataCheckHelper.ValueType.String }
})
},
#endregion
#region 推送单品表
//推送详情表
{
"HIGHWAY_STORAGE.T_WECHATPUSHSALES",
new TopParameter("HIGHWAY_STORAGE.T_WECHATPUSHSALES",
new Dictionary
{
{ "WECHATPUSHSALES_ID", DataCheckHelper.ValueType.Int },
{ "PROVINCE_CODE", DataCheckHelper.ValueType.String }
})
},
#endregion
#region 自然日移动支付对账表
{
"HIGHWAY_SELLDATA.T_DAILYMOBILEPAY",
new TopParameter("HIGHWAY_SELLDATA.T_DAILYMOBILEPAY",
new Dictionary
{
{ "DAILYMOBILEPAY_ID",DataCheckHelper.ValueType.Int }
})
}
//,
#endregion
//#region 总部数据版本反馈表
// {
// "HIGHWAY_EXCHANGE.T_GENERALFEEDBACK",
// new TopParameter("HIGHWAY_STORAGE.T_STATEFEEDBACK",
// new Dictionary())
// },
// #endregion
#endregion
#region 下发部分
#endregion
};
}
///
/// 定义表传输状态字段
///
///
private Hashtable getStateNames()
{
return new Hashtable
{
#region 上传部分
//服务区信息表
{ "MOBILESERVICE_PLATFORM.T_SERVERPART", "TRANSFER_STATE" },
//服务区门店表
{ "MOBILESERVICE_PLATFORM.T_SERVERPARTSHOP", "TRANSFER_STATE" },
//用户账户表
{ "MOBILESERVICE_PLATFORM.T_USER", "TRANSFER_STATE" },
//用户类别表
{ "MOBILESERVICE_PLATFORM.T_USERTYPE", "TRANSFER_STATE" },
//推送详情表
{ "HIGHWAY_STORAGE.T_WECHATPUSHDETAIL", "TRANSFER_STATE" },
//推送单品表
{ "HIGHWAY_STORAGE.T_WECHATPUSHSALES", "TRANSFER_STATE" },
//自然日移动支付对账表
{ "HIGHWAY_SELLDATA.T_DAILYMOBILEPAY", "TRANSFER_STATE" }
////总部数据版本反馈表
//{ "HIGHWAY_EXCHANGE.T_GENERALFEEDBACK", "" },
#endregion
#region 下发部分
#endregion
};
}
///
/// 单次最大传输数量
///
///
private Hashtable getMaxDataQuantityList()
{
return new Hashtable
{
#region 上传部分
//服务区信息表
{ "MOBILESERVICE_PLATFORM.T_SERVERPART", 20 },
//服务区门店表
{ "MOBILESERVICE_PLATFORM.T_SERVERPARTSHOP", 20 },
//用户账户表
{ "MOBILESERVICE_PLATFORM.T_USER", 20 },
//用户类别表
{ "MOBILESERVICE_PLATFORM.T_USERTYPE", 20 },
//推送详情表
{ "HIGHWAY_STORAGE.T_WECHATPUSHDETAIL", 20 },
//推送单品表
{ "HIGHWAY_STORAGE.T_WECHATPUSHSALES", 20 },
//自然日移动支付对账表
{ "HIGHWAY_SELLDATA.T_DAILYMOBILEPAY", 20 }
////总部数据版本反馈表
//{ "HIGHWAY_EXCHANGE.T_GENERALFEEDBACK", 20 },
#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; }
public Hashtable onTableDescList()
{
return tableDescList;
}
#endregion
}
}