using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TransmissionClient { public class DataBaseUpdate { readonly Transmission.SDK.OracleHelper OracleHelper; public DataBaseUpdate(Transmission.SDK.OracleHelper oracleHelper) { OracleHelper = oracleHelper; } public bool CreateTable(string tableName) { try { switch (tableName.ToUpper()) { case "T_SELLDATA_EXTRA_HIS"://移动支付交易记录历史表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA_HIS (SELLDATA_ID NUMBER(9,0) NOT NULL,SELLDATA_TYPE VARCHAR2(50), SELLDATA_DATE TIMESTAMP(7),SERVERPARTCODE VARCHAR2(10), SHOPCODE VARCHAR2(6),MACHINECODE VARCHAR2(6), TICKETCODE VARCHAR2(50),WORKERCODE VARCHAR2(6), COMMODITY_CODE VARCHAR2(4000),SELLCOUNT NUMBER(16,2), SELLPRICE NUMBER(16,2),OFFPRICE NUMBER(16,2),FACTAMOUNT NUMBER(16,2), LINENUM NUMBER(9,0) DEFAULT 1 NOT NULL,FLAG NUMBER(1,0) DEFAULT 0, SELLDATA_EXTRA_DESC VARCHAR2(2000),TRANSFER_STATE NUMBER(4,0))"); break; case "T_UPEXCEPTION"://收银异常稽核数据上传配置表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_UPEXCEPTION (UPEXCEPTION_ID NUMBER(9,0) NOT NULL,SERVERPARTCODE VARCHAR2(20), SERVERPARTNAME VARCHAR2(200),SHOPCODE VARCHAR2(20), SHOPNAME VARCHAR2(200),BUSINESSTYPE VARCHAR2(200), EXCEPTIONTYPE VARCHAR2(50),EXCEPTIONTYPENAME VARCHAR2(100), ISUPLOAD NUMBER(4,0) DEFAULT 1,UPEXCEPTION_DESC VARCHAR2(2000))"); OracleHelper.ExecuteSqlTran(@"CREATE SEQUENCE HIGHWAY_EXCHANGE.SEQ_UPEXCEPTION INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 2 NOORDER "); break; case "TR_UPEXCEPTION"://收银异常稽核数据上传配置触发器 OracleHelper.ExecuteSqlTran(@"CREATE OR REPLACE TRIGGER HIGHWAY_EXCHANGE.TR_UPEXCEPTION BEFORE INSERT ON HIGHWAY_EXCHANGE.T_UPEXCEPTION REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW BEGIN SELECT HIGHWAY_EXCHANGE.SEQ_UPEXCEPTION.NEXTVAL INTO :NEW.UPEXCEPTION_ID FROM DUAL; END;"); break; case "T_BUSINESSCONFIG"://业态统一收银配置表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_BUSINESSCONFIG ( BUSINESSCONFIG_ID NUMBER(9, 0) NOT NULL,SERVERPARTCODE VARCHAR2(50), SERVERPARTNAME VARCHAR2(200),BUSINESSTYPE VARCHAR2(50), BUSINESSTYPENAME VARCHAR2(200),CONFIGURATION_NAME VARCHAR2(2000), CONFIGURATION_VALUES VARCHAR2(2000),CONFIGURATION_DATE DATE, BUSINESSCONFIG_DESC VARCHAR2(2000))"); OracleHelper.ExecuteSqlTran(@"CREATE SEQUENCE HIGHWAY_EXCHANGE.SEQ_BUSINESSCONFIG INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 2 NOORDER "); break; case "T_SALESANALYSIS"://客单区段数据统计表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_SALESANALYSIS ( SALESANALYSIS_ID NUMBER(9,0) NOT NULL,SALESANALYSIS_CODE VARCHAR2(200), PROVINCE_ID NUMBER(9,0),PROVINCE_CODE VARCHAR2(50),PROVINCE_NAME VARCHAR2(200), SERVERPART_ID NUMBER(9,0),SERVERPART_CODE VARCHAR2(50),SERVERPART_NAME VARCHAR2(200), BUSINESSTYPE VARCHAR2(50),SERVERPARTSHOP_ID NUMBER(9,0),SHOPCODE VARCHAR2(50), SHOPNAME VARCHAR2(200),SALESANALYSIS_DATE DATE,SALESANALYSIS_TYPE NUMBER(8,0), SALEAMOUNT_START NUMBER(16,6),SALEAMOUNT_END NUMBER(16,6),TICKET_COUNT NUMBER(16,6), TOTAL_COUNT NUMBER(16,6),TOTAL_AMOUNT NUMBER(16,6),COMMODITY_COUNT NUMBER(16,6), MALE_TICKET NUMBER(16,6),MALE_COUNT NUMBER(16,6),MALE_AMOUNT NUMBER(16,6), FEMALE_TICKET NUMBER(16,6),FEMALE_COUNT NUMBER(16,6),FEMALE_AMOUNT NUMBER(16,6), SALESANALYSIS_DESC VARCHAR2(2000),TRANSFER_STATE NUMBER(4,0))"); OracleHelper.ExecuteSqlTran(@"CREATE SEQUENCE HIGHWAY_EXCHANGE.SEQ_SALESANALYSIS INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 2 NOORDER "); break; case "T_COMMODITYANALYSIS"://爆款/推荐商品统计表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_COMMODITYANALYSIS ( COMMODITYANALYSIS_ID NUMBER(9,0) NOT NULL,COMMODITYANALYSIS_CODE VARCHAR2(200), PROVINCE_ID NUMBER(9,0),PROVINCE_CODE VARCHAR2(50),PROVINCE_NAME VARCHAR2(200), SERVERPART_ID NUMBER(9,0),SERVERPART_CODE VARCHAR2(50),SERVERPART_NAME VARCHAR2(200), BUSINESSTYPE VARCHAR2(50),SERVERPARTSHOP_ID NUMBER(9,0),SHOPCODE VARCHAR2(50), SHOPNAME VARCHAR2(200),COMMODITY_CODE VARCHAR2(50),COMMODITY_BARCODE VARCHAR2(50), COMMODITY_NAME VARCHAR2(200),COMMODITYANALYSIS_DATE DATE,AGE_START NUMBER(16,0), AGE_END NUMBER(16,0),MALE_TICKET NUMBER(16,6),MALE_COUNT NUMBER(16,6),FEMALE_TICKET NUMBER(16,6), FEMALE_COUNT NUMBER(16,6),TICKET_COUNT NUMBER(16,6),TOTAL_COUNT NUMBER(16,6), TOTAL_AMOUNT NUMBER(16,6),COMMODITYANALYSIS_DESC VARCHAR2(2000),TRANSFER_STATE NUMBER(4,0))"); OracleHelper.ExecuteSqlTran(@"CREATE SEQUENCE HIGHWAY_EXCHANGE.SEQ_COMMODITYANALYSIS INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 2 NOORDER "); break; case "T_CUSTOMERANALYSIS"://客群消费区段统计表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_CUSTOMERANALYSIS ( CUSTOMERANALYSIS_ID NUMBER(9,0) NOT NULL,CUSTOMERANALYSIS_CODE VARCHAR2(200), PROVINCE_ID NUMBER(9,0),PROVINCE_CODE VARCHAR2(50),PROVINCE_NAME VARCHAR2(200), SERVERPART_ID NUMBER(9,0),SERVERPART_CODE VARCHAR2(50),SERVERPART_NAME VARCHAR2(200), BUSINESSTYPE VARCHAR2(50),SERVERPARTSHOP_ID NUMBER(9,0),SHOPCODE VARCHAR2(50), SHOPNAME VARCHAR2(200),CUSTOMERANALYSIS_DATE DATE,AGE_START NUMBER(16,0), AGE_END NUMBER(16,0),AMOUNT_START NUMBER(16,6),AMOUNT_END NUMBER(16,6), TICKET_COUNT NUMBER(16,6),TOTAL_COUNT NUMBER(16,6),TOTAL_AMOUNT NUMBER(16,6), MALE_AMOUNT NUMBER(16,6),MALE_COUNT NUMBER(16,6),FEMALE_AMOUNT NUMBER(16,6), FEMALE_COUNT NUMBER(16,6),CUSTOMERANALYSIS_DESC VARCHAR2(2000),TRANSFER_STATE NUMBER(4,0))"); OracleHelper.ExecuteSqlTran(@"CREATE SEQUENCE HIGHWAY_EXCHANGE.SEQ_CUSTOMERANALYSIS INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 2 NOORDER "); break; case "T_SALESINTERVALANALYSIS"://客单时段区段消费统计表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_SALESINTERVALANALYSIS ( SALESINTERVALANALYSIS_ID NUMBER(9,0) NOT NULL,SALESINTERVALANALYSIS_CODE VARCHAR2(200), PROVINCE_ID NUMBER(9,0),PROVINCE_CODE VARCHAR2(50),PROVINCE_NAME VARCHAR2(200), SERVERPART_ID NUMBER(9,0),SERVERPART_CODE VARCHAR2(50),SERVERPART_NAME VARCHAR2(200), BUSINESSTYPE VARCHAR2(50),SERVERPARTSHOP_ID NUMBER(9,0),SHOPCODE VARCHAR2(50), SHOPNAME VARCHAR2(200),DATE_START DATE,DATE_END DATE,AMOUNT_START NUMBER(16,6), AMOUNT_END NUMBER(16,6),TICKET_COUNT NUMBER(16,6),TOTAL_AMOUNT NUMBER(16,6), TOTAL_COUNT NUMBER(16,6),AGE_START NUMBER(16,0),AGE_END NUMBER(16,0),AGE_TICKET NUMBER(16,6), AGE_COUNT NUMBER(16,6),AGE_AMOUNT NUMBER(16,6),MALE_TICKET NUMBER(16,6),MALE_COUNT NUMBER(16,6), MALE_AMOUNT NUMBER(16,6),FEMALE_TICKET NUMBER(16,6),FEMALE_COUNT NUMBER(16,6), FEMALE_AMOUNT NUMBER(16,6),SALESINTERVALANALYSIS_DESC VARCHAR2(2000),TRANSFER_STATE NUMBER(4,0))"); OracleHelper.ExecuteSqlTran(@"CREATE SEQUENCE HIGHWAY_EXCHANGE.SEQ_SALESINTERVALANALYSIS INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 2 NOORDER "); break; case "T_COMMODITYANALYSISSET"://客单时段区段消费统计配置表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_COMMODITYANALYSISSET ( COMMODITYANALYSISSET_ID NUMBER(9,0) NOT NULL,PROVINCE_ID NUMBER(9,0), PROVINCE_CODE VARCHAR2(50),PROVINCE_NAME VARCHAR2(200),SERVERPART_ID NUMBER(9,0), SERVERPART_CODE VARCHAR2(50),SERVERPART_NAME VARCHAR2(200),BUSINESSTYPE VARCHAR2(50), COMMODITY_CODE VARCHAR2(50),COMMODITY_BARCODE VARCHAR2(50),COMMODITY_NAME VARCHAR2(200), COMMODITYANALYSISSET_DATE DATE,COMMODITYANALYSISSET_DESC VARCHAR2(2000))"); OracleHelper.ExecuteSqlTran(@"CREATE SEQUENCE HIGHWAY_EXCHANGE.SEQ_COMMODITYANALYSISSET INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 2 NOORDER "); break; case "T_ABNORMALITY"://异常操作稽核记录主表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_ABNORMALITY ( ABNORMALITY_ID NUMBER(9,0) NOT NULL,ABNORMALITY_CODE VARCHAR2(100), ABNORMALITY_PCODE VARCHAR2(100),PROVINCE_ID NUMBER(9,0),PROVINCE_CODE VARCHAR2(20), PROVINCE_NAME VARCHAR2(50),SERVERPART_ID NUMBER(9,0),SERVERPART_CODE VARCHAR2(10), SERVERPART_NAME VARCHAR2(50),BUSINESSTYPE VARCHAR2(20),BUSINESS_NAME VARCHAR2(50), SERVERPARTSHOP_ID NUMBER(9,0),SHOPCODE VARCHAR2(20),SHOPNAME VARCHAR2(50), MACHINECODE VARCHAR2(10),MANAGER_CODE VARCHAR2(10),SELLWORK_CODE VARCHAR2(10), ABNORMALITY_TIME DATE,ABNORMALITY_START DATE,ABNORMALITY_TYPE NUMBER(9,0), SERIAL_CODE VARCHAR2(10),COMMODITY_ROWCOUNT NUMBER(16,6),COMMOTITY_COUNT NUMBER(16,6), TOTALAMOUNT NUMBER(16,6),ACTUALAMOUNT NUMBER(16,6),ABNORMALITY_DESC VARCHAR2(2000), TRANSFER_STATE NUMBER(4,0),APPROVE_STAFF VARCHAR2(100),APPROVE_INFO VARCHAR2(2000), APPROVE_DATE DATE,LOGGUID VARCHAR2(100))"); OracleHelper.ExecuteSqlTran(@"CREATE SEQUENCE HIGHWAY_EXCHANGE.SEQ_ABNORMALITY INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 2 NOORDER "); break; case "T_ABNORMALITYDETAIL"://异常操作稽核记录详情表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_ABNORMALITYDETAIL ( ABNORMALITYDETIL_ID NUMBER(9,0) NOT NULL,ABNORMALITYDETIL_CODE VARCHAR2(100), ABNORMALITY_CODE VARCHAR2(100),COMMODITY_CODE VARCHAR2(10),COMMODITY_BARCODE VARCHAR2(30), COMMODITY_TYPE VARCHAR2(50),COMMODITY_NAME VARCHAR2(200),COMMODITY_COUNT NUMBER(16,6), COMMODITY_PRICE NUMBER(16,6),TOTALDISCOUNT NUMBER(16,6),TOTALAMOUNT NUMBER(16,6), LINENUM NUMBER(4,0),OPERATEDATE DATE,ABNORMALITYDETILS_DESC VARCHAR2(2000), ABNORMALITY_STATE NUMBER(4,0),TRANSFER_STATE NUMBER(4,0))"); OracleHelper.ExecuteSqlTran(@"CREATE SEQUENCE HIGHWAY_EXCHANGE.SEQ_ABNORMALITYDETAIL INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 2 NOORDER "); break; case "T_ABNOEMALITYANALYSIS"://异常操作稽核记录统计表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_ABNOEMALITYANALYSIS ( ABNOEMALITYANALYSIS_ID NUMBER(9,0) NOT NULL,ABNOEMALITYANALYSIS_CODE VARCHAR2(100), PROVINCE_ID NUMBER(9,0),PROVINCE_CODE VARCHAR2(20),PROVINCE_NAME VARCHAR2(50), SERVERPART_ID NUMBER(9,0),SERVERPART_CODE VARCHAR2(20),SERVERPART_NAME VARCHAR2(50), BUSINESSTYPE VARCHAR2(20),BUSINESS_NAME VARCHAR2(50),SERVERPARTSHOP_ID NUMBER(9,0), SHOPCODE VARCHAR2(20),SHOPNAME VARCHAR2(50),MACHINECODE VARCHAR2(20),OPERATEDATE DATE, ENDACCOUNT_START DATE,ENDACCOUNT_END DATE,ABNOEMALITY_TYPE NUMBER(9,0), ABNOEMALITY_COUNT NUMBER(16,6),ABNOEMALITY_TOTALCOUNT NUMBER(16,6),TICKETCOUNT NUMBER(16,6), TOTALCOUNT NUMBER(16,6),ABNOEMALITYANALYSIS_DESC VARCHAR2(2000),TRANSFER_STATE NUMBER(4,0))"); OracleHelper.ExecuteSqlTran(@"CREATE SEQUENCE HIGHWAY_EXCHANGE.SEQ_ABNOEMALITYANALYSIS INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 2 NOORDER "); break; case "T_AUDITTASKS"://稽核任务计划表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_AUDITTASKS (AUDITTASKS_ID NUMBER(9,0) NOT NULL,SERVERPART_ID NUMBER(9,0),SERVERPARTCODE VARCHAR2(10), SERVERPART_NAME VARCHAR2(200),SERVERPARTSHOP_ID NUMBER(9,0),SHOPCODE VARCHAR2(6), SHOPNAME VARCHAR2(50),BUSINESSTYPE VARCHAR2(200),BUSINESSTYPE_NAME VARCHAR2(50), AUDITTASKS_STARTDATE DATE,AUDITTASKS_ENDDATE DATE,AUDITTASKS_DURATION NUMBER(9,2), AUDITTASKS_COUNT NUMBER(9,0),AUDITTASKS_INTERVAL NUMBER(9,2),AUDITTASKS_ISVALID NUMBER(4,0), AUDITTASKS_TYPE NUMBER(4,0),AUDITTASKS_FIRSTTIME NUMBER(4,0),AUDITTASKS_SECONDTIME NUMBER(4,0), AUDITTASKS_THIRDTIME NUMBER(4,0),OPERATE_DATE DATE,STAFF_ID NUMBER(9,0),STAFF_NAME VARCHAR2(50), AUDITTASKS_DESC VARCHAR2(2000),STRATTIME NUMBER(9,0),ENDTIME NUMBER(9,0), CONSTRAINT PK_T_AUDITTASKS PRIMARY KEY (AUDITTASKS_ID) USING INDEX)"); break; case "T_AUDITTASKSDETILS"://稽核任务明细表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_AUDITTASKSDETILS (AUDITTASKSDETILS_ID NUMBER(9,0) NOT NULL,AUDITTASKS_ID NUMBER(9,0), STRATTIME NUMBER(9,0),ENDTIME NUMBER(9,0),OPERATE_DATE DATE, STAFF_ID NUMBER(9,0),STAFF_NAME VARCHAR2(200),AUDITTASKS_DESC VARCHAR2(2000))"); break; case "T_COMPANYAUTHORIZE"://企业单位消费门店权限表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_COMPANYAUTHORIZE (COMPANYAUTHORIZE_ID NUMBER(9,0) NOT NULL,COMPANY_ID NUMBER(9,0), PROVINCE_CODE NUMBER(8,0),SERVERPART_ID NUMBER(9,0),SERVERPART_CODE VARCHAR2(50), SERVERPART_NAME VARCHAR2(50),SERVERPARTSHOP_ID NUMBER(9,0),SHOPCODE VARCHAR2(50), SHOPNAME VARCHAR2(50),STAFF_ID NUMBER(9,0),STAFF_NAME VARCHAR2(50),OPERATE_DATE DATE, CONSTRAINT PK_T_COMPANYAUTHORIZE PRIMARY KEY (COMPANYAUTHORIZE_ID) USING INDEX)"); break; case "T_COMMODITYEX_EX"://新业态商品信息表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_COMMODITYEX_EX (COMMODITY_ID NUMBER(9, 0) NOT NULL,SERVERPARTCODE VARCHAR2(10), COMMODITY_TYPECODE VARCHAR2(50),COMMODITY_TYPENAME VARCHAR2(50), COMMODITY_CODE VARCHAR2(20),COMMODITY_BARCODE VARCHAR2(30), COMMODITY_NAME VARCHAR2(200),COMMODITY_EN VARCHAR2(20), COMMODITY_RULE VARCHAR2(50),COMMODITY_UNIT VARCHAR2(100), COMMODITY_RETAILPRICE NUMBER(16, 2),COMMODITY_MEMBERPRICE NUMBER(16, 2), CANCHANGEPRICE NUMBER(1, 0),METERINGMETHOD NUMBER(1, 0), BUSINESSTYPE NUMBER(6, 0),GUARANTEE_DAY NUMBER(9, 0),REMINDER_DAY NUMBER(9, 0), COMMODITY_HOTKEY VARCHAR2(10),USERDEFINEDTYPE_ID NUMBER(9, 0), PRINT_DATE TIMESTAMP(7),CONTAINER_CODE VARCHAR2(2000), COMMODITY_SYMBOL VARCHAR2(200),COMMODITY_STATE NUMBER(1, 0), COMMODITY_DESC VARCHAR2(2000),OPERATE_DATE TIMESTAMP(7), TRANSFER_STATE NUMBER(4, 0),DATA_SOURCE NUMBER(1, 0), CONSTRAINT UK_COMMODITYEX_EX UNIQUE(SERVERPARTCODE,COMMODITY_BARCODE,BUSINESSTYPE) USING INDEX)"); break; case "T_SALESPROMOTE_EX"://新促销活动信息表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_SALESPROMOTE_EX (SALESPROMOTE_EX_ID NUMBER(9,0) NOT NULL,PROMOTION_ID NUMBER(9,0), RTMEMBERSHIP_ID NUMBER(9,0),SERVERPARTCODE VARCHAR2(10),SHOPCODE VARCHAR2(6), MACHINECODE VARCHAR2(6),SALESPROMOTE_STARTDATE DATE,SALESPROMOTE_ENDDATE DATE, SALESPROMOTE_TYPE NUMBER(8,0),SALESPROMOTE_NAME VARCHAR2(2000), THRESHOLD_AMOUNT NUMBER(16,2),DISCOUNT_RATE NUMBER(16,2),COMMODITY_CODE VARCHAR2(2000), CONDITION_SKU VARCHAR2(2000),SALESPROMOTE_VIP NUMBER(4,0),SALESPROMOTE_STATE NUMBER(4,0), TICKET_PREFIX VARCHAR2(50),SALESPROMOTE_DATE DATE,SALESPROMOTE_DESC VARCHAR2(2000))"); break; case "T_SELLWORKER_EX"://新收银员工号表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_SELLWORKER_EX ( SELLWORKER_EX_ID NUMBER(9,0) NOT NULL, SERVERPARTCODE VARCHAR2(10), SELLWORKERCODE VARCHAR2(10), SELLWORKERNAME VARCHAR2(20), PROWERRIGHT VARCHAR2(255), SHOPCODE VARCHAR2(6), DOWNLOADDATE DATE, FLAG NUMBER(1,0) DEFAULT 0, VALID NUMBER(1,0), SELLWORKERPASSWORD VARCHAR2(20), DISCOUNT_RATE NUMBER(4,2), DATA_SOURCE NUMBER(1,0), CONSTRAINT UK_T_SELLWORKER_EX UNIQUE (SERVERPARTCODE, SELLWORKERCODE) USING INDEX)"); break; case "T_SHOPMESSAGE_EX"://新门店信息表 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_SHOPMESSAGE_EX ( SHOPMESSAGE_EX_ID NUMBER(9,0), SERVERPARTSHOP_ID NUMBER(9,0) NOT NULL, SERVERPART_CODE VARCHAR2(10), SHOPCODE VARCHAR2(6), SHOPNAME VARCHAR2(50), BUSINESSTYPE VARCHAR2(200), BUSINESSTYPE_NAME VARCHAR2(500), UNIFORM_TYPE NUMBER(8,0) DEFAULT 1, SERVERPARTSHOP_STATE NUMBER(8,0), DOWNLOADDATE DATE, SHOPMESSAGE_EX_DESC VARCHAR2(2000), CONSTRAINT PK_T_SHOPMESSAGE_EX PRIMARY KEY (SERVERPARTSHOP_ID) USING INDEX)"); break; case "T_PROMOTION"://促销活动信息新表-2021.04 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_PROMOTION ( PROMOTION_ID NUMBER(9,0) NOT NULL, SERVERPARTCODE VARCHAR2(10), SHOPCODE VARCHAR2(10), PROMOTION_STARTDATE DATE, PROMOTION_ENDDATE DATE, PROMOTION_TYPE NUMBER(4,0), PROMOTION_NAME VARCHAR2(2000), TICKET_PREFIX VARCHAR2(50), COMMODITY_MAIN VARCHAR2(2000), COMMODITY_MAINAMOUNT VARCHAR2(2000), COMMODITY_AUXILIARY VARCHAR2(2000), COMMODITY_AUXILIARYAMOUNT VARCHAR2(2000), PROMOTION_EXPLAIN VARCHAR2(2000), PROMOTION_STATE NUMBER(4,0), PROMOTION_DATE DATE, PROMOTION_DESC VARCHAR2(2000), CONSTRAINT UK_T_PROMOTION UNIQUE (PROMOTION_ID, SERVERPARTCODE, SHOPCODE) USING INDEX)"); break; case "T_PROMOTIONRECORD"://促销流水记录新表-2021.04 OracleHelper.ExecuteSqlTran(@"CREATE TABLE HIGHWAY_EXCHANGE.T_PROMOTIONRECORD ( PROMOTIONRECORD_ID NUMBER(9,0) NOT NULL, PROMOTIONRECORD_CODE VARCHAR2(100), PROMOTION_ID NUMBER(9,0), PROMOTION_NAME VARCHAR2(2000), SERVERPARTCODE VARCHAR2(10), SHOPCODE VARCHAR2(10), MACHINECODE VARCHAR2(10), PROMOTIONRECORD_DATE DATE, PROMOTIONRECORD_COMMODITY VARCHAR2(2000), PROMOTIONRECORD_COUNT NUMBER(16,6), PROMOTIONRECORD_AMOUNT NUMBER(16,6), PROMOTIONRECORD_OFFAMOUNT NUMBER(16,6), PROMOTIONRECORD_DESC VARCHAR2(2000), TRANSFER_STATE NUMBER(4,0) )"); break; } return true; } catch(Exception ex) { Transmission.SDK.LogHelper.WriteServiceLog($"表[{tableName}]创建失败:{ex.Message}"); return false; } } /// /// 表字段检测 /// /// /// public bool AlterTableColumn(string tableName) { List _TableColumnList = new List(); // HIGHWAY_EXCHANGE.T_ENDACCOUNT_NEW CASHIER_CODE,CASHIER_NAME switch (tableName.ToUpper()) { case "T_SHOPMESSAGE_EX": #region 门店信息表 //是否接受统一定价管理(0:否;1:是) _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_SHOPMESSAGE_EX", COLUMN_NAME = "UNIFORMMANAGE_TYPE", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 1, DATA_SCALE = 0 }); //是否上传稽核数据(0:否;1:是) _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_SHOPMESSAGE_EX", COLUMN_NAME = "AUDIT_UPLOADSTATE", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 1, DATA_SCALE = 0 }); //是否上传营收数据(0:否;1:是) _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_SHOPMESSAGE_EX", COLUMN_NAME = "REVENUE_UPLOADSTATE", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 1, DATA_SCALE = 0 }); //是否记录优惠折扣(0:不记异常稽核;1:记录异常稽核) _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_SHOPMESSAGE_EX", COLUMN_NAME = "RECORD_DISCOUNT", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 1, DATA_SCALE = 0 }); //销售数量上限(是否存在销售数量异常的条件) _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_SHOPMESSAGE_EX", COLUMN_NAME = "SALECOUNT_LIMIT", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 9, DATA_SCALE = 0 }); //销售金额上限(是否存在销售金额异常的条件) _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_SHOPMESSAGE_EX", COLUMN_NAME = "SALEAMOUNT_LIMIT", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 9, DATA_SCALE = 0 }); //业主单位内码 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_SHOPMESSAGE_EX", COLUMN_NAME = "OWNERUNIT_ID", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 9, DATA_SCALE = 0 }); //业主单位名称 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_SHOPMESSAGE_EX", COLUMN_NAME = "OWNERUNIT_NAME", DATA_TYPE = Model.OracleDataType.VARCHAR2, DATA_LENGTH = 100 }); #endregion //执行数据表字段检测添加 return CheckTableColumn("HIGHWAY_EXCHANGE", "T_SHOPMESSAGE_EX", _TableColumnList); case "T_ENDACCOUNT": #region PB系统日结账表 //收银员工号 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_ENDACCOUNT", COLUMN_NAME = "CASHIER_CODE", DATA_TYPE = Model.OracleDataType.VARCHAR2, DATA_LENGTH = 20 }); //收银员姓名 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_ENDACCOUNT", COLUMN_NAME = "CASHIER_NAME", DATA_TYPE = Model.OracleDataType.VARCHAR2, DATA_LENGTH = 200 }); //日结账单唯一标识编码 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_ENDACCOUNT", COLUMN_NAME = "ENDACCOUNT_CODE", DATA_TYPE = Model.OracleDataType.VARCHAR2, DATA_LENGTH = 100 }); #endregion //执行数据表字段检测添加 return CheckTableColumn("HIGHWAY_EXCHANGE", "T_ENDACCOUNT", _TableColumnList); case "T_ENDACCOUNT_NEW": #region C#系统日结账表 //收银员工号 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_ENDACCOUNT_NEW", COLUMN_NAME = "CASHIER_CODE", DATA_TYPE = Model.OracleDataType.VARCHAR2, DATA_LENGTH = 20 }); //收银员姓名 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_ENDACCOUNT_NEW", COLUMN_NAME = "CASHIER_NAME", DATA_TYPE = Model.OracleDataType.VARCHAR2, DATA_LENGTH = 200 }); //是否有稽查记录 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_ENDACCOUNT_NEW", COLUMN_NAME = "AUDIT_STATE", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 8, DATA_SCALE = 0 }); //是否有香烟类销售记录 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_ENDACCOUNT_NEW", COLUMN_NAME = "CIGARETTE_STATE", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 8, DATA_SCALE = 0 }); //是否有促销活动流水记录 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_ENDACCOUNT_NEW", COLUMN_NAME = "PROMOTION_STATE", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 8, DATA_SCALE = 0 }); //是否有在线订单记录 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_ENDACCOUNT_NEW", COLUMN_NAME = "ONLINEBILL_STATE", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 8, DATA_SCALE = 0 }); #endregion //执行数据表字段检测添加 return CheckTableColumn("HIGHWAY_EXCHANGE", "T_ENDACCOUNT_NEW", _TableColumnList); case "T_MOBILE_PAY": #region 移动支付记录表 //移动支付交易记录服务商 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_MOBILE_PAY", COLUMN_NAME = "MOBILEPAY_OPERATORS", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 8, DATA_SCALE = 0 }); #endregion //执行数据表字段检测添加 return CheckTableColumn("HIGHWAY_EXCHANGE", "T_MOBILE_PAY", _TableColumnList); case "T_AUDITTASKS": #region 智能稽核任务表 //智能稽核提醒时段起始时间 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_AUDITTASKS", COLUMN_NAME = "STRATTIME", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 9, DATA_SCALE = 0 }); //智能稽核提醒时段结束时间 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_AUDITTASKS", COLUMN_NAME = "ENDTIME", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 9, DATA_SCALE = 0 }); #endregion //执行数据表字段检测添加 return CheckTableColumn("HIGHWAY_EXCHANGE", "T_AUDITTASKS", _TableColumnList); case "T_STATEFEEDBACK"://状态反馈表字段检查列表 #region 状态反馈表 //现金交易统计字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "CURRENT_CASHPAY", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 16, DATA_SCALE = 6 }); //移动支付交易统计字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "CURRENT_MOBILEPAY", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 16, DATA_SCALE = 6 }); //支付宝交易统计字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "CURRENT_ALIPAY", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 16, DATA_SCALE = 6 }); //微信支付交易统计字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "CURRENT_WECHAT", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 16, DATA_SCALE = 6 }); //云闪付交易统计字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "CURRENT_UNIONPAY", DATA_TYPE = Model.OracleDataType.NUMBER, DATA_PRECISION = 16, DATA_SCALE = 6 }); //收银机商品数据版本字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "COMMODITY_VERSION", DATA_TYPE = Model.OracleDataType.DATE }); //收银机门店数据版本字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "SHOPMESSAGE_VERSION", DATA_TYPE = Model.OracleDataType.DATE }); //收银机工号数据版本字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "SELLWORKER_VERSION", DATA_TYPE = Model.OracleDataType.DATE }); //收银机促销活动数据版本字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "SALESPROMOTE_VERSION", DATA_TYPE = Model.OracleDataType.DATE }); //收银机稽核任务数据版本字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "AUDITTASK_VERSION", DATA_TYPE = Model.OracleDataType.DATE }); //收银机日结数据版本字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "ENDACCOUNT_VERSION", DATA_TYPE = Model.OracleDataType.DATE }); //收银机现场稽查数据版本字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "INSPECTION_VERSION", DATA_TYPE = Model.OracleDataType.DATE }); //收银机交班数据版本字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "PERSONSELL_VERSION", DATA_TYPE = Model.OracleDataType.DATE }); //收银机日结单品数据版本字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "COMMODITYSALE_VERSION", DATA_TYPE = Model.OracleDataType.DATE }); //收银机软件有效期字段 _TableColumnList.Add(new Model.TableColumnModel { OWNER = "HIGHWAY_EXCHANGE", TABLE_NAME = "T_STATEFEEDBACK", COLUMN_NAME = "EXPIRYDATE_VERSION", DATA_TYPE = Model.OracleDataType.DATE }); #endregion //执行数据表字段检测添加 return CheckTableColumn("HIGHWAY_EXCHANGE", "T_STATEFEEDBACK", _TableColumnList); } return false; } /// /// 数据库表字段检查更新方法 /// /// 数据表所属的用户名 /// 数据表的表名称 /// 需要校验新增的字段属性列表 /// private bool CheckTableColumn(string owner, string tableName, List tableColumnList) { try { System.Data.DataTable _ColumnNameTable = OracleHelper.ExcuteSqlGetDataSet( $@"SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE OWNER = '{owner}' AND TABLE_NAME = '{tableName}' ").Tables[0]; List _ColumnList = new List(); foreach (var _Column in tableColumnList) { if (_ColumnNameTable.Select($"COLUMN_NAME = '{_Column.COLUMN_NAME}'").Count() == 0) { _ColumnList.Add(CreateAlterSQL(_Column)); } } if (_ColumnList.Count > 0) { OracleHelper.ExecuteSqlTran(_ColumnList); } return true; } catch(Exception ex) { Transmission.SDK.LogHelper.WriteServiceLog($"表[{tableName}]字段添加失败:{ex.Message}"); return false; } } /// /// 生成表字段添加语句 /// /// 需要添加的表字段信息 /// private string CreateAlterSQL(Model.TableColumnModel tableColumn) { switch (tableColumn.DATA_TYPE) { case Model.OracleDataType.DATE: return $"ALTER TABLE {tableColumn.OWNER}.{tableColumn.TABLE_NAME} " + $"ADD {tableColumn.COLUMN_NAME} DATE"; case Model.OracleDataType.NUMBER: return $"ALTER TABLE {tableColumn.OWNER}.{tableColumn.TABLE_NAME} " + $"ADD {tableColumn.COLUMN_NAME} NUMBER({tableColumn.DATA_PRECISION},{tableColumn.DATA_SCALE})"; case Model.OracleDataType.VARCHAR2: return $"ALTER TABLE {tableColumn.OWNER}.{tableColumn.TABLE_NAME} " + $"ADD {tableColumn.COLUMN_NAME} VARCHAR2({tableColumn.DATA_LENGTH})"; default: return string.Empty; } } } }