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 } }