中间库Demo

常用的接口对接

中间库

优点:
1.简单,数据查询、处理起来都比较的简单
2.通过对表的权限控制,可以明确与用户交互了哪些内容,便于问题定位。如控制用户只能对表执行insert或select操作,写入到数据表中的数据都是该用户执行的。
缺点:
1.并发大时,对数据库会造成较大的压力
2.接口变动时,影响较大
3.不太适合多用户的并发。如同一套结构的数据表支持多个不同的用户

URL

简单描述:
1.基于HTTP或者HTTPS的模式对数据进行传输
2.服务端通过暴露地址,参数名称,编码
3.客户端按照指定的参数名称进行调用,调用的过程中对数据进行编码和封装
优点:
1.并发易控制,请求简单,解析简单
2.在B/S应用的系统中支持较好,可以方便的进行通讯,如支付宝就在使用这种方式
缺点:
传输的内容长度受限制

WebService

简单描述:
1.WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言),XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
2.目前主流的对接方式,是行业内认可的标准
3.开源的框架较多,如AXIS2、XFIRE等

关于数据中间库接口的描述

接口主要是解决系统数据相互交换读写的问题。解决方法有如下:

用直接读取数据库的方式,建立特定权限的数据库访问用户,只能访问接口信息相关的部分数据表,而不是全部。这样在读数据时可以保证数据的及时性;并不影响原来系统的数据。

为了保证双方相互访问的透明与高效,可以制定两方都认可的数据访问规范性文档,明确如:数据库名、密码、可读表或视图、及具体字段的含义等信息。目前来说,我做的中间库接口还是比较多的,URL也只占很小一部分。所以今天写个中间库Demo。

SQLServer&&SQLServer,使用多线程
public partial class Form1 : Form
    {
        public Thread objth00;//采购订单
        public Thread objth01;//物料主数据
        public Thread objth02;//供应商主数据
        public Thread objth03;//客户主数据
        public Thread objth04;//成本中心
        public Thread objth05;//内部订单
        public Form1()
        {
            InitializeComponent();
        }
        //中间库连接
        static SqlConnection SqlOpen()
        {
            string connStr = "Data Source=小鹏的电脑\\MSSQLSERVER19;Initial Catalog=SAP_PRD_TEST;User ID=sa;Password=123456;MultipleActiveResultSets=true";
            SqlConnection con = new SqlConnection(connStr);
            con.Open();
            return con;
        }
        //WMS数据库连接
        static SqlConnection SqlOpens()
        {
            string connStr = "Data Source=小鹏的电脑\\MSSQLSERVER16;Initial Catalog=wms_data;User ID=sa;Password=123456;MultipleActiveResultSets=true";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            return conn;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            objth00 = new Thread(new ThreadStart(this.th_getordno_00));
            objth00.Start();
            objth01 = new Thread(new ThreadStart(this.th_getordno_01));
            objth01.Start();
            objth02 = new Thread(new ThreadStart(this.th_getordno_02));
            objth02.Start();
            objth03 = new Thread(new ThreadStart(this.th_getordno_03));
            objth03.Start();
            objth04 = new Thread(new ThreadStart(this.th_getordno_04));
            objth04.Start();
            objth05 = new Thread(new ThreadStart(this.th_getordno_05));
            objth05.Start();
            button1.Enabled = false;
            button2.Enabled = true;
        }
        public void th_getordno_00()
        {
            while (true)
            {
                try
                {
                    getordno_00();
                    Thread.Sleep(500);
                }
                catch (Exception e)
                {
                    IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                    ls_IniFile.WriteLog("th_getordno_00", e.Message.ToString());
                    continue;
                }
            }
        }
        public void th_getordno_01()
        {
            while (true)
            {
                try
                {
                    getordno_01();
                    Thread.Sleep(500);
                }
                catch (Exception e)
                {
                    IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                    ls_IniFile.WriteLog("th_getordno_01", e.Message.ToString());
                    continue;
                }
            }
        }
        public void th_getordno_02()
        {
            while (true)
            {
                try
                {
                    getordno_02();
                    Thread.Sleep(500);
                }
                catch (Exception e)
                {
                    IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                    ls_IniFile.WriteLog("th_getordno_02", e.Message.ToString());
                    continue;
                }
            }
        }
        public void th_getordno_03()
        {
            while (true)
            {
                try
                {
                    getordno_03();
                    Thread.Sleep(500);
                }
                catch (Exception e)
                {
                    IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                    ls_IniFile.WriteLog("th_getordno_03", e.Message.ToString());
                    continue;
                }
            }
        }
        public void th_getordno_04()
        {
            while (true)
            {
                try
                {
                    getordno_04();
                    Thread.Sleep(500);
                }
                catch (Exception e)
                {
                    IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                    ls_IniFile.WriteLog("th_getordno_04", e.Message.ToString());
                    continue;
                }
            }
        }
        public void th_getordno_05()
        {
            while (true)
            {
                try
                {
                    getordno_05();
                    Thread.Sleep(500);
                }
                catch (Exception e)
                {
                    IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                    ls_IniFile.WriteLog("th_getordno_05", e.Message.ToString());
                    continue;
                }
            }
        }
        //采购订单同步
        public void getordno_00()
        {
            string EBELN = "";
            string LIFNR = "";
            string NAME1 = "";
            string PONAM = "";
            string AEDAT = "";
            string EBELP = "";
            string LOEKZ = "";
            string MATNR = "";
            string MAKTX = "";
            string WERKS = "";
            string LGORT = "";
            decimal MENGE = 0;
            string MEINS = "";
            string EINDT = "";
            string RETPO = "";
            string STATE = "";
            string ERDAT = "";
            string ERZET = "";
            string ERNAM = "";
            string WMSST = "";
            string TYPE = "";
            string MESSAGE = "";
            string LPSTATE = "";
            string LPDAT = "";
            string LPZET = "";
            string WMSDAT = "";
            string WMSZET = "";
            string ERZET2 = "";
            string WMSNAM = "";

            SqlConnection con = null;
            SqlConnection conn = null;
            try
            {
                con = SqlOpen();
                conn = SqlOpens();
                string sql = "select EBELN,LIFNR,NAME1,PONAM,AEDAT,EBELP,LOEKZ,MATNR,MAKTX,WERKS,LGORT,MENGE,MEINS,EINDT,RETPO,STATE,ERDAT,ERZET,ERNAM from ZWMS_MM0030 where WMSST !='Y'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    EBELN = reader["EBELN"].ToString();
                    LIFNR = reader["LIFNR"].ToString();
                    NAME1 = reader["NAME1"].ToString();
                    PONAM = reader["PONAM"].ToString();
                    AEDAT = reader["AEDAT"].ToString();
                    EBELP = reader["EBELP"].ToString();
                    LOEKZ = reader["LOEKZ"].ToString();
                    MATNR = reader["MATNR"].ToString();
                    MAKTX = reader["MAKTX"].ToString();
                    WERKS = reader["WERKS"].ToString();
                    LGORT = reader["LGORT"].ToString();
                    MENGE = Convert.ToDecimal(reader["MENGE"]);
                    MEINS = reader["MEINS"].ToString();
                    EINDT = reader["EINDT"].ToString();
                    RETPO = reader["RETPO"].ToString();
                    STATE = reader["STATE"].ToString();
                    ERDAT = reader["ERDAT"].ToString();
                    ERZET = reader["ERZET"].ToString();
                    ERNAM = reader["ERNAM"].ToString();

                    string insql = "insert into Interface_MM0030(EBELN,LIFNR,NAME1,PONAM,AEDAT,EBELP,LOEKZ,MATNR,MAKTX,WERKS,LGORT,MENGE,MEINS,EINDT,RETPO,STATE,ERDAT,ERZET,ERNAM)";
                    insql += "values('{0}', '{1}', '{2}','{3}', '{4}','{5}','{6}','{7}','{8}','{9}', '{10}', '{11}','{12}', '{13}','{14}','{15}','{16}','{17}','{18}')";
                    insql = string.Format(insql, EBELN, LIFNR, NAME1, PONAM, AEDAT, EBELP, LOEKZ, MATNR, MAKTX, WERKS, LGORT, MENGE, MEINS, EINDT, RETPO, STATE, ERDAT, ERZET, ERNAM);
                    SqlCommand cmd = new SqlCommand(insql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string upsql = "update ZWMS_MM0030 set WMSST ='Y' where EBELN ='" + EBELN + "'";
                        SqlCommand cmd2 = new SqlCommand(upsql, con);
                        if (cmd2.ExecuteNonQuery() > 0)
                        {

                        }
                        else
                        {
                            string delsql = "delete from Interface_MM0030 where EBELN ='" + EBELN + "'";
                            SqlCommand cmd3 = new SqlCommand(delsql, conn);
                            int rows = cmd3.ExecuteNonQuery();
                        }
                    }
                }
                con.Close();
                conn.Close();
                GC.Collect();
            }
            catch (Exception ex)
            {
                IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                ls_IniFile.WriteLog("getordno_00", ex.Message.ToString());
            }

        }
        //物料主数据同步
        public void getordno_01()
        {
            string MATNR = "";
            string MAKTX = "";
            string ENMAKTX = "";
            string THMAKTX = "";
            string MTART = "";
            string MTBEZ = "";
            string MATKL = "";
            string WGBEZ = "";
            string BISMT = "";
            string LVORM = "";
            string MEINS = "";
            string ERDAT = "";
            string ERZET = "";
            SqlConnection con = null;
            SqlConnection conn = null;
            try
            {
                con = SqlOpen();
                conn = SqlOpens();
                string sql = "select MATNR,MAKTX,ENMAKTX,THMAKTX,MTART,MTBEZ,MATKL,WGBEZ,BISMT,LVORM,MEINS,ERDAT,ERZET from ZWMS_MM0080 where TYPE !='Y'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    MATNR = reader["MATNR"].ToString();
                    MAKTX = reader["MAKTX"].ToString();
                    ENMAKTX = reader["ENMAKTX"].ToString();
                    THMAKTX = reader["THMAKTX"].ToString();
                    MTART = reader["MTART"].ToString();
                    MTBEZ = reader["MTBEZ"].ToString();
                    MATKL = reader["MATKL"].ToString();
                    WGBEZ = reader["WGBEZ"].ToString();
                    BISMT = reader["BISMT"].ToString();
                    LVORM = reader["LVORM"].ToString();
                    MEINS = reader["MEINS"].ToString();
                    ERDAT = reader["ERDAT"].ToString();
                    ERZET = reader["ERZET"].ToString();

                    string insql = "insert into Interface_MM0080(MATNR,MAKTX,ENMAKTX,THMAKTX,MTART,MTBEZ,MATKL,WGBEZ,BISMT,LVORM,MEINS,ERDAT,ERZET)";
                    insql += "values('{0}', '{1}', '{2}','{3}', '{4}','{5}','{6}','{7}','{8}','{9}', '{10}', '{11}','{12}')";
                    insql = string.Format(insql, MATNR, MAKTX, ENMAKTX, THMAKTX, MTART, MTBEZ, MATKL, WGBEZ, BISMT, LVORM, MEINS, ERDAT, ERZET);
                    SqlCommand cmd = new SqlCommand(insql, conn);

                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string upsql = "update ZWMS_MM0080 set TYPE ='Y' where MATNR ='" + MATNR + "'";
                        SqlCommand cmd2 = new SqlCommand(upsql, con);
                        if (cmd2.ExecuteNonQuery() > 0)
                        {

                        }
                        else
                        {
                            string delsql = "delete from Interface_MM0080 where MATNR ='" + MATNR + "'";
                            SqlCommand cmd3 = new SqlCommand(delsql, conn);
                            int rows = cmd3.ExecuteNonQuery();
                        }
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                ls_IniFile.WriteLog("getordno_01", ex.Message.ToString());
            }
        }
        //供应商主数据同步
        public void getordno_02()
        {
            string LIFNR = "";
            string SUPNAME1 = "";
            string SPERM = "";
            string ERDAT = "";
            string ERZET = "";
            SqlConnection con = null;
            SqlConnection conn = null;
            try
            {
                con = SqlOpen();
                conn = SqlOpens();
                string sql = "select LIFNR,SUPNAME1,SPERM,ERDAT,ERZET from ZWMS_MM0090 where TYPE !='Y'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    LIFNR = reader["LIFNR"].ToString();
                    SUPNAME1 = reader["SUPNAME1"].ToString();
                    SPERM = reader["SPERM"].ToString();
                    ERDAT = reader["ERDAT"].ToString();
                    ERZET = reader["ERZET"].ToString();


                    string insql = "insert into Interface_MM0090(LIFNR,SUPNAME1,SPERM,ERDAT,ERZET)";
                    insql += "values('{0}', '{1}', '{2}','{3}', '{4}')";
                    insql = string.Format(insql, LIFNR, SUPNAME1, SPERM, ERDAT, ERZET);
                    SqlCommand cmd = new SqlCommand(insql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string upsql = "update ZWMS_MM0090 set TYPE ='Y' where LIFNR ='" + LIFNR + "'";
                        SqlCommand cmd2 = new SqlCommand(upsql, con);

                        if (cmd2.ExecuteNonQuery() > 0)
                        {

                        }
                        else
                        {
                            string delsql = "delete from Interface_MM0090 where LIFNR ='" + LIFNR + "'";
                            SqlCommand cmd3 = new SqlCommand(delsql, conn);
                            int rows = cmd3.ExecuteNonQuery();
                        }
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                ls_IniFile.WriteLog("getordno_02", ex.Message.ToString());
            }
        }
        //客户主数据同步
        public void getordno_03()
        {
            string KUNNR = "";
            string CUSNAME1 = "";
            string SPERR = "";
            string ERDAT = "";
            string ERZET = "";
            SqlConnection con = null;
            SqlConnection conn = null;
            try
            {
                con = SqlOpen();
                conn = SqlOpens();
                string sql = "select KUNNR,CUSNAME1,SPERR,ERDAT,ERZET from ZWMS_MM0100 where TYPE !='Y'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    KUNNR = reader["KUNNR"].ToString();
                    CUSNAME1 = reader["CUSNAME1"].ToString();
                    SPERR = reader["SPERR"].ToString();
                    ERDAT = reader["ERDAT"].ToString();
                    ERZET = reader["ERZET"].ToString();

                    string insql = "insert into Interface_MM0100(KUNNR,CUSNAME1,SPERR,ERDAT,ERZET)";
                    insql += "values('{0}', '{1}', '{2}','{3}', '{4}')";
                    insql = string.Format(insql, KUNNR, CUSNAME1, SPERR, ERDAT, ERZET);
                    SqlCommand cmd = new SqlCommand(insql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string upsql = "update ZWMS_MM0100 set TYPE ='Y' where KUNNR ='" + KUNNR + "'";
                        SqlCommand cmd2 = new SqlCommand(upsql, con);
                        if (cmd2.ExecuteNonQuery() > 0)
                        {

                        }
                        else
                        {
                            string delsql = "delete from Interface_MM0100 where KUNNR ='" + KUNNR + "'";
                            SqlCommand cmd3 = new SqlCommand(delsql, conn);
                            int rows = cmd3.ExecuteNonQuery();
                        }
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                ls_IniFile.WriteLog("getordno_03", ex.Message.ToString());
            }
        }
        //成本中心同步
        public void getordno_04()
        {
            string KOSTL = "";
            string KTEXT = "";
            string ENKTEXT = "";
            string THKTEXT = "";
            string BUKRS = "";
            string ERDAT = "";
            string ERZET = "";
            SqlConnection con = null;
            SqlConnection conn = null;
            try
            {
                con = SqlOpen();
                conn = SqlOpens();
                string sql = "select KOSTL,KTEXT,ENKTEXT,THKTEXT,BUKRS,ERDAT,ERZET from Sap_Cost_Center where TYPE !='Y'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    KOSTL = reader["KOSTL"].ToString();
                    KTEXT = reader["KTEXT"].ToString();
                    ENKTEXT = reader["ENKTEXT"].ToString();
                    THKTEXT = reader["THKTEXT"].ToString();
                    BUKRS = reader["BUKRS"].ToString();
                    ERDAT = reader["ERDAT"].ToString();
                    ERZET = reader["ERZET"].ToString();

                    string insql = "insert into Interface_Sap_Cost_Center(KOSTL,KTEXT,ENKTEXT,THKTEXT,BUKRS,ERDAT,ERZET)";
                    insql += "values('{0}', '{1}', '{2}','{3}', '{4}','{5}','{6}')";
                    insql = string.Format(insql, KOSTL, KTEXT, ENKTEXT, THKTEXT, BUKRS, ERDAT, ERZET);
                    SqlCommand cmd = new SqlCommand(insql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string upsql = "update Sap_Cost_Center set TYPE ='Y' where KOSTL ='" + KOSTL + "'";
                        SqlCommand cmd2 = new SqlCommand(upsql, con);
                        if (cmd2.ExecuteNonQuery() > 0)
                        {

                        }
                        else
                        {
                            string delsql = "delete from Interface_Sap_Cost_Center where KOSTL ='" + KOSTL + "'";
                            SqlCommand cmd3 = new SqlCommand(delsql, conn);
                            int rows = cmd3.ExecuteNonQuery();
                        }
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                ls_IniFile.WriteLog("getordno_04", ex.Message.ToString());
            }
        }
        //内部订单同步
        public void getordno_05()
        {
            string AUFNR = "";
            string KTEXT = "";
            string BUKRS = "";
            string ERDAT = "";
            string ERZET = "";
            SqlConnection con = null;
            SqlConnection conn = null;
            try
            {
                con = SqlOpen();
                conn = SqlOpens();
                string sql = "select AUFNR,KTEXT,BUKRS,ERDAT,ERZET from Sap_Internal_Orders where TYPE !='Y'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    AUFNR = reader["AUFNR"].ToString();
                    KTEXT = reader["KTEXT"].ToString();
                    BUKRS = reader["BUKRS"].ToString();
                    ERDAT = reader["ERDAT"].ToString();
                    ERZET = reader["ERZET"].ToString();

                    string insql = "insert into Interface_Sap_Internal_Orders(AUFNR,KTEXT,BUKRS,ERDAT,ERZET)";
                    insql += "values('{0}', '{1}', '{2}','{3}', '{4}')";
                    insql = string.Format(insql, AUFNR, KTEXT, BUKRS, ERDAT, ERZET);
                    SqlCommand cmd = new SqlCommand(insql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string upsql = "update Sap_Internal_Orders set TYPE ='Y' where AUFNR ='" + AUFNR + "'";
                        SqlCommand cmd2 = new SqlCommand(upsql, con);

                        if (cmd2.ExecuteNonQuery() > 0)
                        {

                        }
                        else
                        {
                            string delsql = "delete from Interface_Sap_Internal_Orders where AUFNR ='" + AUFNR + "'";
                            SqlCommand cmd3 = new SqlCommand(delsql, conn);
                            int rows = cmd3.ExecuteNonQuery();
                        }
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                IniFile ls_IniFile = new IniFile(Environment.CurrentDirectory + "\\log.ini");
                ls_IniFile.WriteLog("getordno_05", ex.Message.ToString());
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            System.Environment.Exit(0);
        }
    }
SQLServer&&Oracle,使用定时器
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //Oracle中间数据库连接
        static OracleConnection OpenConn()
        {
            OracleConnection conn = new OracleConnection();
            conn.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.64.1.20)(PORT=1900))(CONNECT_DATA=(SERVICE_NAME=PROD)));Persist Security Info=True;User ID=BJLK;Password=JK123456;";
            conn.Open();
            return conn;
        }
        //WMS数据库连接
        static SqlConnection SqlOpen()
        {
            string connStr = "Data Source=.;Initial Catalog=BC604;User ID=wms;Password=wms;MultipleActiveResultSets=true";
            SqlConnection con = new SqlConnection(connStr);
            con.Open();
            return con;
        }

        //物料基础数据同步WMS(LOG_MATERIAL)
        //数据流向:ERP –> WMS
        //流程:由ERP发起,ERP将组织好的物料信息定期同步到中间表,WMS通过中间表读取物料信息。
        public void BasicInformationSynchronization()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                string ORGANIZATION_ID; string ORGANIZATION_CODE; string ITEM_CODE;
                string ITEM_DESC; string UNIT; string ONHAND_QUANTITY;
                string ITEM_COST; string ITEM_STATUS; string ITEM_CATEGORY_ID;
                string ITEM_CATEGORY_NAME; string USER_ID; string CREAT_DATE;
                string PROCESS_MESSAGE;
                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = " select ORGANIZATION_ID,ORGANIZATION_CODE,cast(ITEM_CODE as varchar(100)) as ITEM_CODE,ITEM_DESC,UNIT,ONHAND_QUANTITY,cast(ITEM_COST as varchar(100)) as ITEM_cost,ITEM_STATUS,ITEM_CATEGORY_ID,ITEM_CATEGORY,CREATED_BY,CREATION_DATE,PROCESS_MESSAGE ";
                sql = sql + " from CUX_ITEM_DATA_ISSUE where PROCESS_STATUS = 'P'   ";
                
                OracleCommand cmd = new OracleCommand(sql, conn);
                OracleDataAdapter da = new OracleDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds, "CUX_ITEM_DATA_ISSUE");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    ORGANIZATION_ID = ds.Tables[0].Rows[i]["ORGANIZATION_ID"].ToString();
                    ORGANIZATION_CODE = ds.Tables[0].Rows[i]["ORGANIZATION_CODE"].ToString();
                    ITEM_CODE = ds.Tables[0].Rows[i]["ITEM_CODE"].ToString();
                    ITEM_DESC = ds.Tables[0].Rows[i]["ITEM_DESC"].ToString();
                    UNIT = ds.Tables[0].Rows[i]["UNIT"].ToString();
                    ONHAND_QUANTITY =  ds.Tables[0].Rows[i]["ONHAND_QUANTITY"].ToString();
                    ITEM_COST =  ds.Tables[0].Rows[i]["ITEM_COST"].ToString();
                    ITEM_STATUS = ds.Tables[0].Rows[i]["ITEM_STATUS"].ToString();
                    ITEM_CATEGORY_ID = ds.Tables[0].Rows[i]["ITEM_CATEGORY_ID"].ToString();
                    ITEM_CATEGORY_NAME = ds.Tables[0].Rows[i]["ITEM_CATEGORY"].ToString();
                    USER_ID =  ds.Tables[0].Rows[i]["CREATED_BY"].ToString();
                    CREAT_DATE = ds.Tables[0].Rows[i]["CREATION_DATE"].ToString();
                    PROCESS_MESSAGE = ds.Tables[0].Rows[i]["PROCESS_MESSAGE"].ToString();
                    string insertsql = "insert into CUX_ITEM_DATA_ISSUE(ORGANIZATION_ID,ORGANIZATION_CODE,ITEM_CODE,ITEM_DESC,UNIT,ONHAND_QUANTITY,ITEM_COST,ITEM_STATUS,ITEM_CATEGORY_ID,ITEM_CATEGORY_NAME,USER_ID,CREAT_DATE,PROCESS_MESSAGE)values('" + ORGANIZATION_ID + "','" + ORGANIZATION_CODE + "','" + ITEM_CODE + "','" + ITEM_DESC + "','" + UNIT + "','" + ONHAND_QUANTITY + "','" + ITEM_COST + "','" + ITEM_STATUS + "','" + ITEM_CATEGORY_ID + "','" + ITEM_CATEGORY_NAME + "','" + USER_ID + "','" + CREAT_DATE + "','" + PROCESS_MESSAGE + "')";

                    SqlCommand cmd2 = new SqlCommand(insertsql, con);
                    if (cmd2.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_ITEM_DATA_ISSUE set PROCESS_STATUS ='Y' where ORGANIZATION_ID ='" + ORGANIZATION_ID + "'";
                        OracleCommand cmd3 = new OracleCommand(updatesql, conn);
                        int result = cmd3.ExecuteNonQuery();
                    }
                }
                conn.Close();
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("基础信息同步异常:" + ex.Message);
            }
        }

        //账户别名同步WMS(替换原部门接口)(account)
        //数据流向:ERP –> WMS 
        //流程:ERP定期将账户别名信息同步到中间表,WMS通过中间表读取账户别名信息,WMS将别名显示在出库单上,供用户选择,后续WMS传ERP出库单据的时候需要带上账户别名信息。
        #region
        //public void AccountAliasSynchronization()
        //{
        //    OracleConnection conn = null;
        //    SqlConnection con = null;
        //    try
        //    {
        //        int ORGANIZATION_ID; string ORGANIZATION_CODE; string ORGANIZATION_NAME; int DISPOSITION_ID; string SEGMENT1;
        //        string DESCRIPTION; string EFFECTIVE_DATE; string DISABLE_DATE; string ACCOUNTS; string ENABLED_FLAG;
        //        int USER_ID; string CREAT_DATE; string PROCESS_MESSAGE;
        //        conn = OpenConn();//中间库
        //        con = SqlOpen();//WMS
        //        string sql = "select * from ACCOUNT where PROCESS_STATUS = 'P' AND ROWNUM<100";
        //        OracleCommand cmd = new OracleCommand(sql, conn);
        //        OracleDataAdapter da = new OracleDataAdapter(cmd);
        //        DataTable ds = new DataTable();
        //        da.Fill(ds);
        //        for (int i = 0; i < ds.Rows.Count; i++)
        //        {
        //            int ISSUE_ID = Convert.ToInt32(ds.Rows[i]["ISSUE_ID"]);
        //            ORGANIZATION_ID = Convert.ToInt32(ds.Rows[i]["ORGANIZATION_ID"]);
        //            ORGANIZATION_CODE = ds.Rows[i]["ORGANIZATION_CODE"].ToString();
        //            ORGANIZATION_NAME = ds.Rows[i]["ORGANIZATION_NAME"].ToString();
        //            DISPOSITION_ID = Convert.ToInt32(ds.Rows[i]["DISPOSITION_ID"]);
        //            SEGMENT1 = ds.Rows[i]["SEGMENT1"].ToString();
        //            DESCRIPTION = ds.Rows[i]["DESCRIPTION"].ToString();
        //            EFFECTIVE_DATE = ds.Rows[i]["EFFECTIVE_DATE"].ToString();
        //            DISABLE_DATE = ds.Rows[i]["DISABLE_DATE"].ToString();
        //            ACCOUNTS = ds.Rows[i]["ACCOUNTS"].ToString();
        //            ENABLED_FLAG = ds.Rows[i]["ENABLED_FLAG"].ToString();
        //            USER_ID = Convert.ToInt32(ds.Rows[i]["USER_ID"]);
        //            CREAT_DATE = ds.Rows[i]["CREAT_DATE"].ToString();
        //            PROCESS_MESSAGE = ds.Rows[i]["PROCESS_MESSAGE"].ToString();
        //            string insertsql = "insert into ACCOUNT(ORGANIZATION_ID,ORGANIZATION_CODE,ORGANIZATION_NAME,DISPOSITION_ID,SEGMENT1,DESCRIPTION,EFFECTIVE_DATE,DISABLE_DATE,ACCOUNTS,ENABLED_FLAG,USER_ID,CREAT_DATE,PROCESS_MESSAGE)values('" + ORGANIZATION_ID + "','" + ORGANIZATION_CODE + "','" + ORGANIZATION_NAME + "','" + DISPOSITION_ID + "','" + SEGMENT1 + "','" + DESCRIPTION + "','" + EFFECTIVE_DATE + "','" + DISABLE_DATE + "','" + ACCOUNTS + "','" + ENABLED_FLAG + "','" + USER_ID + "','" + CREAT_DATE + "','" + PROCESS_MESSAGE + "')";

        //            SqlCommand cmd2 = new SqlCommand(insertsql, con);
        //            if (cmd2.ExecuteNonQuery() > 0)
        //            {
        //                string updatesql = "update ACCOUNT set PROCESS_STATUS ='Y' where ORGANIZATION_ID ='" + ORGANIZATION_ID + "'and ISSUE_ID ='" + ISSUE_ID + "'";
        //                OracleCommand cmd3 = new OracleCommand(updatesql, conn);
        //                int result = cmd3.ExecuteNonQuery();
        //            }
        //        }
        //        con.Close();
        //        conn.Close();
        //    }
        //    catch (Exception ex)
        //    {
        //        MessageBox.Show("账号别名同步异常:" + ex.Message);
        //    }
        //}
        #endregion
        public void AccountAliasSynchronization()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                string ORGANIZATION_ID; string ORGANIZATION_CODE; string ORGANIZATION_NAME; string DISPOSITION_ID; string SEGMENT1;
                string DESCRIPTION; string EFFECTIVE_DATE; string DISABLE_DATE; string ACCOUNTS; string ENABLED_FLAG;
                int USER_ID; string CREAT_DATE; string PROCESS_MESSAGE;
                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select ISSUE_ID,cast(ORGANIZATION_ID as varchar(300)) as ORGANIZATION_ID,ORGANIZATION_CODE,ORGANIZATION_DESC,cast(DISPOSITION_ID as varchar(300)) as DISPOSITION_ID,SEGMENT1,DESCRIPTION,cast(EFFECTICE_DATE as varchar(100)) as EFFECTICE_DATE,cast(DISABLE_DATE as varchar(100)) as DISABLE_DATE,cast(ACCOUNTS as varchar(100)) as ACCOUNTS,ENABLED_FLAG,USER_ID,CREAT_DATE, PROCESS_MESSAGE from CUX_ACCOUNT_ALIAS_ISSUE where PROCESS_STATUS = 'P'";
                OracleCommand cmd = new OracleCommand(sql, conn);
                OracleDataAdapter da = new OracleDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds, "CUX_ACCOUNT_ALIAS_ISSUE");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    int ISSUE_ID = Convert.ToInt32(ds.Tables[0].Rows[i]["ISSUE_ID"]);
                    ORGANIZATION_ID = ds.Tables[0].Rows[i]["ORGANIZATION_ID"].ToString();
                    ORGANIZATION_CODE = ds.Tables[0].Rows[i]["ORGANIZATION_CODE"].ToString();
                    ORGANIZATION_NAME = ds.Tables[0].Rows[i]["ORGANIZATION_DESC"].ToString();
                    DISPOSITION_ID = ds.Tables[0].Rows[i]["DISPOSITION_ID"].ToString();
                    SEGMENT1 = ds.Tables[0].Rows[i]["SEGMENT1"].ToString();
                    DESCRIPTION = ds.Tables[0].Rows[i]["DESCRIPTION"].ToString();
                    EFFECTIVE_DATE = ds.Tables[0].Rows[i]["EFFECTICE_DATE"].ToString();
                    DISABLE_DATE = ds.Tables[0].Rows[i]["DISABLE_DATE"].ToString();
                    ACCOUNTS = ds.Tables[0].Rows[i]["ACCOUNTS"].ToString();
                    ENABLED_FLAG = ds.Tables[0].Rows[i]["ENABLED_FLAG"].ToString();
                    USER_ID = Convert.ToInt32(ds.Tables[0].Rows[i]["USER_ID"]);
                    CREAT_DATE = ds.Tables[0].Rows[i]["CREAT_DATE"].ToString();
                    PROCESS_MESSAGE = ds.Tables[0].Rows[i]["PROCESS_MESSAGE"].ToString();
                    string insertsql = "insert into CUX_ACCOUNT_ALIAS_ISSUE(ORGANIZATION_ID,ORGANIZATION_CODE,ORGANIZATION_NAME,DISPOSITION_ID,SEGMENT1,DESCRIPTION,EFFECTIVE_DATE,DISABLE_DATE,ACCOUNTS,ENABLED_FLAG,USER_ID,CREAT_DATE,PROCESS_MESSAGE)values('" + ORGANIZATION_ID + "','" + ORGANIZATION_CODE + "','" + ORGANIZATION_NAME + "','" + DISPOSITION_ID + "','" + SEGMENT1 + "','" + DESCRIPTION + "','" + EFFECTIVE_DATE + "','" + DISABLE_DATE + "','" + ACCOUNTS + "','" + ENABLED_FLAG + "','" + USER_ID + "','" + CREAT_DATE + "','" + PROCESS_MESSAGE + "')";

                    SqlCommand cmd2 = new SqlCommand(insertsql, con);
                    if (cmd2.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_ACCOUNT_ALIAS_ISSUE set PROCESS_STATUS ='Y' where ISSUE_ID ='"+ ISSUE_ID + "'";
                        OracleCommand cmd3 = new OracleCommand(updatesql, conn);
                        int result = cmd3.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("账号别名同步异常:" + ex.Message);
            }
        }

        //采购入库单据下发头表(PROCUREMENTINHEAD)
        //数据流向:ERP –> WMS。
        //流程:由ERP发起,计划员在ERP系统新建一批采购订单,由审批人员对采购单进行审批,程序自动将审批后的采购单据下发到中间表,WMS从中间表中读取采购单据信息。
        public void HeaderTableForPurchasingInboundDocuments()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                string HEADER_ID; string VENDOR_NAME; string PO_ORDER_NUMBER;
                string ORG_ID; string ORDER_TYPE; string CREAT_DATE; int USER_ID; string CURRENCY_CODE;
                string PROCESS_MESSAGE;
                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select cast(HEADER_ID as varchar(300)) as HEADER_ID,VENDOR_NAME,PO_ORDER_NUM,cast(ORG_ID as varchar(300)) as ORG_ID,PO_ORDER_TYPE,CREATion_DATE,USER_ID,DEPARTMENT_CODE,PROCESS_MESSAGE from CUX_PO_IN_NOTICES_HEADER where PROCESS_STATUS = 'P'";
                OracleCommand cmd = new OracleCommand(sql, conn);
                OracleDataAdapter da = new OracleDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds, "CUX_PO_IN_NOTICES_HEADER");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    HEADER_ID = ds.Tables[0].Rows[i]["HEADER_ID"].ToString();
                    VENDOR_NAME = ds.Tables[0].Rows[i]["VENDOR_NAME"].ToString();
                    PO_ORDER_NUMBER = ds.Tables[0].Rows[i]["PO_ORDER_NUM"].ToString();
                    ORG_ID = ds.Tables[0].Rows[i]["ORG_ID"].ToString();
                    ORDER_TYPE = ds.Tables[0].Rows[i]["PO_ORDER_TYPE"].ToString();
                    CREAT_DATE = ds.Tables[0].Rows[i]["CREATION_DATE"].ToString();
                    USER_ID = Convert.ToInt32(ds.Tables[0].Rows[i]["USER_ID"]);
                    CURRENCY_CODE = ds.Tables[0].Rows[i]["DEPARTMENT_CODE"].ToString();
                    PROCESS_MESSAGE = ds.Tables[0].Rows[i]["PROCESS_MESSAGE"].ToString();

                    string insertsql = "insert into CUX_PO_IN_NOTICES_HEADER(HEADER_ID,VENDOR_NAME,PO_ORDER_NUMBER,ORG_ID,ORDER_TYPE,CREAT_DATE,USER_ID,CURRENCY_CODE,PROCESS_MESSAGE)values('" + HEADER_ID + "','" + VENDOR_NAME + "','" + PO_ORDER_NUMBER + "','" + ORG_ID + "','" + ORDER_TYPE + "','" + CREAT_DATE + "','" + USER_ID + "','" + CURRENCY_CODE + "','" + PROCESS_MESSAGE + "')";

                    SqlCommand cmd2 = new SqlCommand(insertsql, con);
                    if (cmd2.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_PO_IN_NOTICES_HEADER set PROCESS_STATUS ='Y' where ORG_ID ='" + ORG_ID + "' and HEADER_ID='" + HEADER_ID + "'";
                        OracleCommand cmd3 = new OracleCommand(updatesql, conn);
                        int result = cmd3.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("入库单头同步异常:" + ex.Message);
            }
        }

        //采购入库单据下发行表(PROCUREMENTINITMNO)
        public void IssueTableForPurchasingInboundDocuments()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                string HEADER_ID; string LINE_ID; string ORGAIZATION_CODE; string SUBINV_CODE; string PO_ORDER_NUMBER; string LINE_NUM; string LINE_TYPE; string ITEM_CODE; string ITEM_DESC; string QUANTITY;
                string UNIT_PRICE; string UNIT; string ITEM_CATEGORY_ID; string LINE_DESC; string CREAT_DATE; string PROCESS_MESSAGE;
                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select PROCESS_MESSAGE, LINE_ID,HEADER_ID,PO_LINE_NUM,LINE_TYPE,LINE_TYPE_ID,ITEM_ID,CAST(ITEM_CODE AS VARCHAR(100)) AS ITEM_CODE,CAST(ITEM_DESC AS VARCHAR(100)) AS ITEM_DESC, SPECIFICATIONS,CAST(QUANTITY AS VARCHAR(100)) AS QUANTITY, UNIT, ITEM_CATEGORY_ID, LINE_DESC, PO_ORDER_NUM, CAST(LAST_UPDATE_DATE AS VARCHAR(100)) AS LAST_UPDATE_DATE, LAST_UPDATED_BY,LAST_UPDATE_LOGIN, CAST(CREATION_DATE AS VARCHAR(100)) AS CREATION_DATE, CREATED_BY, ORGANIZATION_CODE, CAST(SUBINV_CODE AS VARCHAR(100)) AS SUBINV_CODE, CAST(UNIT_PRICE AS VARCHAR(100)) AS UNIT_PRICE from CUX_PO_IN_NOTICES_LINE where PROCESS_STATUS = 'P'";
                OracleCommand cmd = new OracleCommand(sql, conn);
                OracleDataAdapter da = new OracleDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds, "CUX_PO_IN_NOTICES_LINE");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    HEADER_ID = ds.Tables[0].Rows[i]["HEADER_ID"].ToString();
                    LINE_ID = ds.Tables[0].Rows[i]["LINE_ID"].ToString();
                    ORGAIZATION_CODE = ds.Tables[0].Rows[i]["ORGANIZATION_CODE"].ToString();
                    SUBINV_CODE = ds.Tables[0].Rows[i]["SUBINV_CODE"].ToString();
                    PO_ORDER_NUMBER = ds.Tables[0].Rows[i]["PO_ORDER_NUM"].ToString();
                    LINE_NUM = ds.Tables[0].Rows[i]["PO_LINE_NUM"].ToString();
                    LINE_TYPE = ds.Tables[0].Rows[i]["LINE_TYPE"].ToString();
                    ITEM_CODE = ds.Tables[0].Rows[i]["ITEM_CODE"].ToString();
                    ITEM_DESC = ds.Tables[0].Rows[i]["ITEM_DESC"].ToString();
                    QUANTITY = ds.Tables[0].Rows[i]["QUANTITY"].ToString();
                    UNIT_PRICE = ds.Tables[0].Rows[i]["UNIT_PRICE"].ToString();
                    UNIT = ds.Tables[0].Rows[i]["UNIT"].ToString();
                    ITEM_CATEGORY_ID = ds.Tables[0].Rows[i]["ITEM_CATEGORY_ID"].ToString();
                    CREAT_DATE = ds.Tables[0].Rows[i]["CREATION_DATE"].ToString();
                    LINE_DESC = ds.Tables[0].Rows[i]["LINE_DESC"].ToString();
                    PROCESS_MESSAGE = ds.Tables[0].Rows[i]["PROCESS_MESSAGE"].ToString();

                    string insertsql = "insert into CUX_PO_IN_NOTICES_LINE(HEADER_ID,LINE_ID,ORGAIZATION_CODE,SUBINV_CODE, PO_ORDER_NUMBER,LINE_NUM,LINE_TYPE,ITEM_CODE,ITEM_DESC, QUANTITY,UNIT_PRICE, UNIT,ITEM_CATEGORY_ID,LINE_DESC,CREAT_DATE, PROCESS_MESSAGE)values('" + HEADER_ID + "','" + LINE_ID + "','" + ORGAIZATION_CODE + "','" + SUBINV_CODE + "','" + PO_ORDER_NUMBER + "','" + LINE_NUM + "','" + LINE_TYPE + "','" + ITEM_CODE + "','" + ITEM_DESC + "','" + QUANTITY + "','" + UNIT_PRICE + "','" + UNIT + "','" + ITEM_CATEGORY_ID + "','" + LINE_DESC + "','" + CREAT_DATE + "','" + PROCESS_MESSAGE + "')";

                    SqlCommand cmd2 = new SqlCommand(insertsql, con);
                    if (cmd2.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_PO_IN_NOTICES_LINE set PROCESS_STATUS ='Y' where LINE_ID ='" + LINE_ID + "' and HEADER_ID ='" + HEADER_ID + "'";
                        OracleCommand cmd3 = new OracleCommand(updatesql, conn);
                        int result = cmd3.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("采购入库行表同步异常:" + ex.Message);
            }
        }

        //采购入库单据反馈头表(PROCUREMENTINFEEDBACKHEAD)
        //数据流向:WMS –> ERP
        //方案:由WMS发起,对4步骤下发的入库单据做实际货物的入库操作后,将入库完成信息反馈给ERP,ERP自动做采购接收、采购入库。
        public void PurchaseInboundDocumentFeedbackHeaderTable()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                int DELIVER_HEADER_ID; int ORG_ID; string PO_ORDER_NUMBER;
                string SOURCE_ORDER_NUMBER; string ORGAIZATION_CODE; string
                      VENDOR_NAME; int USER_ID; string CREAT_DATE; string PROCESS_MESSAGE;

                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select * from CUX_PO_DELIVERS_HEADER where PROCESS_STATUS = 'P'";

                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    DELIVER_HEADER_ID = Convert.ToInt32(reader["DELIVER_HEADER_ID"]);
                    ORG_ID = Convert.ToInt32(reader["ORG_ID"]);
                    PO_ORDER_NUMBER = reader["PO_ORDER_NUMBER"].ToString();
                    SOURCE_ORDER_NUMBER = reader["SOURCE_ORDER_NUMBER"].ToString();
                    ORGAIZATION_CODE = reader["ORGAIZATION_CODE"].ToString();
                    VENDOR_NAME = reader["VENDOR_NAME"].ToString();
                    USER_ID = Convert.ToInt32(reader["USER_ID"]);
                    CREAT_DATE = reader["CREAT_DATE"].ToString();
                    PROCESS_MESSAGE = reader["PROCESS_MESSAGE"].ToString();

                    string insql = "insert into CUX_PO_DELIVERS_HEADER(DELIVER_HEADER_ID,ORG_ID,PO_ORDER_NUM,SOURCE_ORDER_NUM,ORGANIZATION_CODE,VENDOR_NAME,USER_ID,CREATION_DATE,PROCESS_MESSAGE)values('" + DELIVER_HEADER_ID + "','" + ORG_ID + "','" + PO_ORDER_NUMBER + "','" + SOURCE_ORDER_NUMBER + "','" + ORGAIZATION_CODE + "','" + VENDOR_NAME + "','" + USER_ID + "',sysdate ,'" + PROCESS_MESSAGE + "')";
                    OracleCommand cmd = new OracleCommand(insql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_PO_DELIVERS_HEADER set PROCESS_STATUS ='Y' where DELIVER_HEADER_ID ='" + DELIVER_HEADER_ID + "' and ORG_ID='" + ORG_ID + "'";
                        SqlCommand sqlComm2 = new SqlCommand(updatesql, con);
                        int result = sqlComm2.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("采购入库头表反馈同步异常:" + ex.Message);
            }
        }

        //采购入库单据反馈行表(PROCUREMENTINFEEDBACKITMNO)
        public void PurchaseInboundDocumentFeedbackLineTable()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                int DELIVER_LINE_ID; int DELIVER_HEADER_ID; string ORGAIZATION_CODE; string SUBINV_CODE; string PO_ORDER_NUMBER; int LINE_NUM; string SOURCE_ORDER_NUM;
                int SOURCE_LINE_NUM; string ITEM_CODE; string ITEM_DESC;
                string UNIT; int PRIMARY_QUANTITY; int QUANTITY; string DELIVER_DATE; string CREAT_DATE; string PROCESS_MESSAGE;

                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select * from CUX_PO_DELIVERS_LINE where PROCESS_STATUS = 'P'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    DELIVER_LINE_ID = Convert.ToInt32(reader["DELIVER_LINE_ID"]);
                    DELIVER_HEADER_ID = Convert.ToInt32(reader["DELIVER_HEADER_ID"]);
                    ORGAIZATION_CODE = reader["ORGAIZATION_CODE"].ToString();
                    SUBINV_CODE = reader["SUBINV_CODE"].ToString();
                    PO_ORDER_NUMBER = reader["PO_ORDER_NUMBER"].ToString();
                    LINE_NUM = Convert.ToInt32(reader["LINE_NUM"]);
                    SOURCE_ORDER_NUM = reader["SOURCE_ORDER_NUM"].ToString();
                    SOURCE_LINE_NUM = Convert.ToInt32(reader["SOURCE_LINE_NUM"]);
                    ITEM_CODE = reader["ITEM_CODE"].ToString();
                    ITEM_DESC = reader["ITEM_DESC"].ToString();
                    UNIT = reader["UNIT"].ToString();
                    PRIMARY_QUANTITY = Convert.ToInt32(reader["PRIMARY_QUANTITY"]);
                    QUANTITY = Convert.ToInt32(reader["QUANTITY"]);
                    DELIVER_DATE = reader["DELIVER_DATE"].ToString();
                    CREAT_DATE = reader["CREAT_DATE"].ToString();
                    PROCESS_MESSAGE = reader["PROCESS_MESSAGE"].ToString();

                    string insql = "insert into CUX_PO_DELIVERS_LINER(DELIVER_LINE_ID,DELIVER_HEADER_ID,ORGAIZATION_CODE,SUBINV_CODE,PO_ORDER_NUMBER,PO_LINE_NUM,SOURCE_ORDER_NUM,SOURCE_LINE_NUM,ITEM_CODE,ITEM_DESC,UNIT,PRIMARY_QUANTITY,QUANTITY,DELIVER_DATE,CREATION_DATE,PROCESS_MESSAGE)values('" + DELIVER_LINE_ID + "','" + DELIVER_HEADER_ID + "','" + ORGAIZATION_CODE + "','" + SUBINV_CODE + "','" + PO_ORDER_NUMBER + "','" + LINE_NUM + "','" + SOURCE_ORDER_NUM + "','" + SOURCE_LINE_NUM + "','" + ITEM_CODE + "','" + ITEM_DESC + "','" + UNIT + "','" + PRIMARY_QUANTITY + "','" + QUANTITY + "',sysdate,sysdate,'" + PROCESS_MESSAGE + "')";

                    OracleCommand cmd = new OracleCommand(insql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_PO_DELIVERS_LINE set PROCESS_STATUS ='Y' where DELIVER_LINE_ID ='" + DELIVER_LINE_ID + "'and DELIVER_HEADER_ID='" + DELIVER_HEADER_ID + "'";
                        SqlCommand sqlComm2 = new SqlCommand(updatesql, con);
                        int result = sqlComm2.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("采购入库行表反馈同步异常:" + ex.Message);
            }
        }

        //出库单头表(OUTHEAD)
        //数据流向:WMS –> ERP。
        //流程:由WMS发起,操作员在WMS系统上新建出库单据,库管员对出库单据进行审核,并将审核通过后的出库单据传递到出库中间表中,ERP从出库中间表中读取出库单据,自动生成对应的搬运单
        public void OutboundSingleHeaderTable()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                int MOVE_HEADER_ID; string ORGAIZATION_CODE; string OUTSTOCK_NUM;
                int ORG_ID; string OUTSTOCK_DATE; int TRANSACTION_TYPE_ID;
                string DISPOSITION_ID;
                string CREAT_DATE; int USER_ID;
                string PROCESS_MSSSAGE;
                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select * from CUX_INV_MOVE_ORDER_H where PROCESS_STATUS = 'P'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    MOVE_HEADER_ID = Convert.ToInt32(reader["MOVE_HEADER_ID"]);
                    ORGAIZATION_CODE = reader["ORGAIZATION_CODE"].ToString();
                    OUTSTOCK_NUM = reader["OUTSTOCK_NUM"].ToString();
                    ORG_ID = Convert.ToInt32(reader["ORG_ID"]);
                    OUTSTOCK_DATE = reader["OUTSTOCK_DATE"].ToString();
                    TRANSACTION_TYPE_ID = Convert.ToInt32(reader["TRANSACTION_TYPE_ID"]);
                    DISPOSITION_ID = reader["DISPOSITION_ID"].ToString();
                    CREAT_DATE = reader["CREAT_DATE"].ToString();
                    USER_ID = Convert.ToInt32(reader["USER_ID"]);
                    PROCESS_MSSSAGE = reader["PROCESS_MSSSAGE"].ToString();

                    string insertsql = "insert into CUX_INV_MOVE_ORDER_H(MOVE_HEADER_ID,ORGANIZATION_CODE,OUTSTOCK_NUM,ORG_ID,OUTSTOCK_DATE,TRANSACTION_TYPE_ID,DISPOSITION_ID,USER_ID,CREATION_DATE,PROCESS_MESSAGE,PROCESS_STATUS)values('" + MOVE_HEADER_ID + "','" + ORGAIZATION_CODE + "','" + OUTSTOCK_NUM + "','" + ORG_ID + "',SYSDATE,'" + TRANSACTION_TYPE_ID + "','" + DISPOSITION_ID + "','" + USER_ID + "',SYSDATE,'" + PROCESS_MSSSAGE + "','P')";

                    OracleCommand cmd = new OracleCommand(insertsql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_INV_MOVE_ORDER_H set PROCESS_STATUS ='Y' where ORG_ID ='" + ORG_ID + "' and OUTSTOCK_NUM='" + OUTSTOCK_NUM + "'";
                        SqlCommand sqlComm2 = new SqlCommand(updatesql, con);
                        int result = sqlComm2.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("出库单头同步异常:" + ex.Message);
            }
        }

        //出库单行表(OUTITMNO)
        public void OutboundSingleLineTable()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                int MOVE_LINE_ID; int MOVE_HEADER_ID; string ORGAIZATION_CODE; string SUBINV_CODE; string OUTSTOCK_NUM;
                int OUTSTOCK_LINE_NUM; string ITEM_CODE; string ITEM_DESC;
                int ITEM_QUANTITY; string UNIT; string OUTSTOCK_DATE; string REMARK; string CREAT_DATE; string PROCESS_MSSSAGE;

                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select * from CUX_INV_MOVE_ORDER_L where PROCESS_STATUS = 'P'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    MOVE_LINE_ID = Convert.ToInt32(reader["MOVE_LINE_ID"]);
                    MOVE_HEADER_ID = Convert.ToInt32(reader["MOVE_HEADER_ID"]);
                    ORGAIZATION_CODE = reader["ORGAIZATION_CODE"].ToString();
                    SUBINV_CODE = reader["SUBINV_CODE"].ToString();
                    OUTSTOCK_NUM = reader["OUTSTOCK_NUM"].ToString();
                    OUTSTOCK_LINE_NUM = Convert.ToInt32(reader["OUTSTOCK_LINE_NUM"]);
                    ITEM_CODE = reader["ITEM_CODE"].ToString();
                    ITEM_DESC = reader["ITEM_DESC"].ToString();
                    ITEM_QUANTITY = Convert.ToInt32(reader["ITEM_QUANTITY"]);
                    UNIT = reader["UNIT"].ToString();
                    OUTSTOCK_DATE = reader["OUTSTOCK_DATE"].ToString();
                    REMARK = reader["REMARK"].ToString();
                    CREAT_DATE = reader["CREAT_DATE"].ToString();
                    PROCESS_MSSSAGE = reader["PROCESS_MSSSAGE"].ToString();

                    string insertsql = "insert into CUX_INV_MOVE_ORDER_L(MOVE_LINE_ID,MOVE_HEADER_ID,ORGANIZATION_CODE,SUBINV_CODE,OUTSTOCK_NUM,OUTSTOCK_LINE_NUM,ITEM_CODE,ITEM_DESC,ITEM_QUANTITY,UNIT,OUTSTOCK_DATE,CREATION_DATE,PROCESS_STATUS)values('" + MOVE_LINE_ID + "','" + MOVE_HEADER_ID + "','" + ORGAIZATION_CODE + "','" + SUBINV_CODE + "','" + OUTSTOCK_NUM + "','" + OUTSTOCK_LINE_NUM + "','" + ITEM_CODE + "','" + ITEM_DESC + "','" + ITEM_QUANTITY + "','" + UNIT + "',SYSDATE,SYSDATE,'P')";

                    OracleCommand cmd = new OracleCommand(insertsql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_INV_MOVE_ORDER_L set PROCESS_STATUS ='Y' where OUTSTOCK_NUM ='" + OUTSTOCK_NUM + "' and OUTSTOCK_LINE_NUM ='" + OUTSTOCK_LINE_NUM + "'";
                        SqlCommand sqlComm2 = new SqlCommand(updatesql, con);
                        int result = sqlComm2.ExecuteNonQuery();
                    }

                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("出库单行同步异常:" + ex.Message);
            }
        }

        //出库单反馈头表(OUTFEEDBACKHEAD)
        //数据流向:WMS –> ERP
        //流程:由WMS发起,WMS将实际货物出库信息反馈到出库确认中间表,ERP读取到出库确认中间表数据自动做物料搬运单处理。
        public void OutboundSingleFeedbackHeaderTable()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                int OUTSTOCK_HEADER_ID; int ORG_ID; string OUTSTOCK_NUM;
                string ORGANIZATION_CODE; string OUTSTOCK_DATE; int USER_ID;
                string CREAT_DATE; string PROCESS_MSSSAGE;

                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select * from CUX_EDIT_OUTSTOCK_H where PROCESS_STATUS = 'P'";

                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    OUTSTOCK_HEADER_ID = Convert.ToInt32(reader["OUTSTOCK_HEADER_ID"]);
                    ORG_ID = Convert.ToInt32(reader["ORG_ID"]);
                    OUTSTOCK_NUM = reader["OUTSTOCK_NUM"].ToString();
                    ORGANIZATION_CODE = reader["ORGANIZATION_CODE"].ToString();
                    OUTSTOCK_DATE = reader["OUTSTOCK_DATE"].ToString();
                    USER_ID = Convert.ToInt32(reader["USER_ID"]);
                    CREAT_DATE = reader["CREAT_DATE"].ToString();
                    PROCESS_MSSSAGE = reader["PROCESS_MSSSAGE"].ToString();

                    string insql = "insert into CUX_EDIT_OUTSTOCK_H(OUTSTOCK_HEADER_ID,ORG_ID,OUTSTOCK_NUM,ORGANIZATION_CODE,OUTSTOCK_DATE,USER_ID,CREAT_DATE,PROCESS_STATUS)values('" + OUTSTOCK_HEADER_ID + "','" + ORG_ID + "','" + OUTSTOCK_NUM + "','" + ORGANIZATION_CODE + "','" + OUTSTOCK_DATE + "','" + USER_ID + "','" + CREAT_DATE + "','P')";
                    OracleCommand cmd = new OracleCommand(insql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_EDIT_OUTSTOCK_H set PROCESS_STATUS ='Y' where ORG_ID ='" + ORG_ID + "' and OUTSTOCK_NUM ='" + OUTSTOCK_NUM + "'";
                        SqlCommand sqlComm2 = new SqlCommand(updatesql, con);
                        int result = sqlComm2.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("出库单头表反馈同步异常:" + ex.Message);
            }
        }

        //出库单反馈行表(OUTFEEDBACKITMNO)
        public void OutboundSingleFeedbackLineTable()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                int OUTSTOCK_LINE_ID; int OUTSTOCK_HEADER_ID; string SUBINV_CODE; string OUTSTOCK_NUM; int OUTSTOCK_LINE_NUM;
                string ITEM_CODE; string ITEM_DESC; int PRIMARY_QUANTITY;
                int QUANTITY; string UNIT; string OUTSTOCK_DATE; string REMARK; string CREAT_DATE; string PROCESS_MSSSAGE;

                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select * from CUX_EDIT_OUTSTOCK_L where PROCESS_STATUS = 'P'";

                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    OUTSTOCK_LINE_ID = Convert.ToInt32(reader["OUTSTOCK_LINE_ID"]);
                    OUTSTOCK_HEADER_ID = Convert.ToInt32(reader["OUTSTOCK_HEADER_ID"]);
                    SUBINV_CODE = reader["SUBINV_CODE"].ToString();
                    OUTSTOCK_NUM = reader["OUTSTOCK_NUM"].ToString();
                    OUTSTOCK_LINE_NUM = Convert.ToInt32(reader["OUTSTOCK_LINE_NUM"]);
                    ITEM_CODE = reader["ITEM_CODE"].ToString();
                    ITEM_DESC = reader["ITEM_DESC"].ToString();
                    PRIMARY_QUANTITY = Convert.ToInt32(reader["PRIMARY_QUANTITY"]);
                    QUANTITY = Convert.ToInt32(reader["QUANTITY"]);
                    UNIT = reader["UNIT"].ToString();
                    OUTSTOCK_DATE = reader["OUTSTOCK_DATE"].ToString();
                    REMARK = reader["REMARK"].ToString();
                    CREAT_DATE = reader["CREAT_DATE"].ToString();
                    PROCESS_MSSSAGE = reader["PROCESS_MSSSAGE"].ToString();


                    string insql = "insert into CUX_EDIT_OUTSTOCK_L(OUTSTOCK_LINE_ID,OUTSTOCK_HEADER_ID,SUBINV_CODE,OUTSTOCK_NUM,OUTSTOCK_LINE_NUM,ITEM_CODE,ITEM_DESC,PRIMARY_QUANTITY,QUANTITY,UNIT,OUTSTOCK_DATE,REMARK,CREAT_DATE,PROCESS_STATUS)values('" + OUTSTOCK_LINE_ID + "','" + OUTSTOCK_HEADER_ID + "','" + SUBINV_CODE + "','" + OUTSTOCK_NUM + "','" + OUTSTOCK_LINE_NUM + "','" + ITEM_CODE + "','" + ITEM_DESC + "','" + PRIMARY_QUANTITY + "','" + QUANTITY + "','" + UNIT + "','" + OUTSTOCK_DATE + "','" + REMARK + "','" + CREAT_DATE + "','P')";
                    OracleCommand cmd = new OracleCommand(insql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_EDIT_OUTSTOCK_L set PROCESS_STATUS ='Y' where OUTSTOCK_NUM ='" + OUTSTOCK_NUM + "' and OUTSTOCK_LINE_NUM ='" + OUTSTOCK_LINE_NUM + "'";
                        SqlCommand sqlComm2 = new SqlCommand(updatesql, con);
                        int result = sqlComm2.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show("出库单行表反馈同步异常:" + ex.Message);
            }
        }

        //采购退货头表(PURCHASERETURNSHEAD)
        //数据流向:WMS –> ERP
        //流程:由WMS发起,WMS生成采购退货单,并将采购退货单和原采购入库订单进行绑定,将采购退货单据信息反馈到采购退货中间表,ERP读取采购退货中间表数据自动做采退操作(退货至供应商)。
        public void PurchaseTeturnHeaderTable()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                int REFUND_HEADER_ID; int ORG_ID; string ORGANIZATION_CODE; string SUBINV_CODE; string SOURCE_ORDER_NUM; string PO_ORDER_NUMBER; string REFUND_ORDER_NUM; string VENDOR_NAME; string REFUND_DATE; int USER_ID; string
                           CREAT_DATE; string PROCESS_MESSAGE;
                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select * from CCUX_PO_REFUND_H where PROCESS_STATUS = 'P'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    REFUND_HEADER_ID = Convert.ToInt32(reader["REFUND_HEADER_ID"]);
                    ORG_ID = Convert.ToInt32(reader["ORG_ID"]);
                    ORGANIZATION_CODE = reader["ORGANIZATION_CODE"].ToString();
                    SUBINV_CODE = reader["SUBINV_CODE"].ToString();
                    SOURCE_ORDER_NUM = reader["SOURCE_ORDER_NUM"].ToString();
                    PO_ORDER_NUMBER = reader["PO_ORDER_NUMBER"].ToString();
                    REFUND_ORDER_NUM = reader["REFUND_ORDER_NUM"].ToString();
                    VENDOR_NAME = reader["VENDOR_NAME"].ToString();
                    REFUND_DATE = reader["REFUND_DATE"].ToString();
                    USER_ID = Convert.ToInt32(reader["USER_ID"]);
                    CREAT_DATE = reader["CREAT_DATE"].ToString();
                    PROCESS_MESSAGE = reader["PROCESS_MESSAGE"].ToString();

                    string insertsql = "insert into CCUX_PO_REFUND_H(REFUND_HEADER_ID,ORG_ID,ORGANIZATION_CODE,SUBINV_CODE,SOURCE_ORDER_NUM,PO_ORDER_NUMBER,REFUND_ORDER_NUM,VENDOR_NAME,REFUND_DATE,USER_ID,CREATION_DATE,PROCESS_MESSAGE,PROCESS_STATUS)values('" + REFUND_HEADER_ID + "','" + ORG_ID + "','" + ORGANIZATION_CODE + "','" + SUBINV_CODE + "','" + SOURCE_ORDER_NUM + "','" + PO_ORDER_NUMBER + "','" + REFUND_ORDER_NUM + "','" + VENDOR_NAME + "',sysdate,'" + USER_ID + "',sysdate,'" + PROCESS_MESSAGE + "','P')";

                    OracleCommand cmd = new OracleCommand(insertsql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CCUX_PO_REFUND_H set PROCESS_STATUS ='Y' where ORG_ID ='" + ORG_ID + "' and SOURCE_ORDER_NUM='" + SOURCE_ORDER_NUM + "' and PO_ORDER_NUMBER ='" + PO_ORDER_NUMBER + "' and REFUND_ORDER_NUM='" + REFUND_ORDER_NUM + "'";
                        SqlCommand sqlComm2 = new SqlCommand(updatesql, con);
                        int result = sqlComm2.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("采购退货头同步异常:" + ex.Message);
            }
        }

        //采购退货行表(PURCHASERETURNSITMNO)
        public void PurchaseTeturnLineTable()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                int REFUND_LINE_ID; int REFUND_HEADER_ID; string ORGAIZATION_CODE; string REFUND_ORDER_NUM; int REFUND_LINE_NUM; string PO_ORDER_NUMBER; int PO_LINE_NUM; string SOURCE_ORDER_NUM; int SOURCE_LINE_NUM; string ITEM_CODE;
                string ITEM_DESC; string UNIT; int PRIMARY_QUANTITY; int QUANTITY; string SUBINV_CODE; string DELIVER_DATE; string CREAT_DATE; string PROCESS_MESSAGE;

                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select * from CUX_PO_REFUND_L where PROCESS_STATUS = 'P'";
                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    REFUND_LINE_ID = Convert.ToInt32(reader["REFUND_LINE_ID"]);
                    REFUND_HEADER_ID = Convert.ToInt32(reader["REFUND_HEADER_ID"]);
                    ORGAIZATION_CODE = reader["ORGAIZATION_CODE"].ToString();
                    REFUND_ORDER_NUM = reader["REFUND_ORDER_NUM"].ToString();
                    REFUND_LINE_NUM = Convert.ToInt32(reader["REFUND_LINE_NUM"]);
                    PO_ORDER_NUMBER = reader["PO_ORDER_NUMBER"].ToString();
                    PO_LINE_NUM = Convert.ToInt32(reader["PO_LINE_NUM"]);
                    SOURCE_ORDER_NUM = reader["SOURCE_ORDER_NUM"].ToString();
                    SOURCE_LINE_NUM = Convert.ToInt32(reader["SOURCE_LINE_NUM"]);
                    ITEM_CODE = reader["ITEM_CODE"].ToString();
                    ITEM_DESC = reader["ITEM_DESC"].ToString();
                    UNIT = reader["UNIT"].ToString();
                    PRIMARY_QUANTITY = Convert.ToInt32(reader["PRIMARY_QUANTITY"]);
                    QUANTITY = Convert.ToInt32(reader["QUANTITY"]);
                    SUBINV_CODE = reader["SUBINV_CODE"].ToString();
                    DELIVER_DATE = reader["DELIVER_DATE"].ToString();
                    CREAT_DATE = reader["CREAT_DATE"].ToString();
                    PROCESS_MESSAGE = reader["PROCESS_MESSAGE"].ToString();

                    string insertsql = "insert into CUX_PO_REFUND_L(REFUND_LINE_ID,REFUND_HEADER_ID,ORGANIZATION_CODE,REFUND_ORDER_NUM,REFUND_LINE_NUM,PO_ORDER_NUMBER,PO_LINE_NUM,SOURCE_ORDER_NUM,SOURCE_LINE_NUM,ITEM_CODE,ITEM_DESC,UNIT,PRIMARY_QUANTITY,QUANTITY,SUBINV_CODE,REFUND_DATE,CREATION_DATE,PROCESS_MESSAGE,PROCESS_STATUS)values('" + REFUND_LINE_ID + "','" + REFUND_HEADER_ID + "','" + ORGAIZATION_CODE + "','" + REFUND_ORDER_NUM + "','" + REFUND_LINE_NUM + "','" + PO_ORDER_NUMBER + "','" + PO_LINE_NUM + "','" + SOURCE_ORDER_NUM + "','" + SOURCE_LINE_NUM + "','" + ITEM_CODE + "','" + ITEM_DESC + "','" + UNIT + "','" + PRIMARY_QUANTITY + "','" + QUANTITY + "','" + SUBINV_CODE + "',sysdate,sysdate,'" + PROCESS_MESSAGE + "','P')";

                    OracleCommand cmd = new OracleCommand(insertsql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_PO_REFUND_L set PROCESS_STATUS ='Y' where REFUND_ORDER_NUM ='" + REFUND_ORDER_NUM + "' and REFUND_LINE_NUM='" + REFUND_LINE_NUM + "' and PO_ORDER_NUMBER ='" + PO_ORDER_NUMBER + "' and PO_LINE_NUM ='" + PO_LINE_NUM + "'";
                        SqlCommand sqlComm2 = new SqlCommand(updatesql, con);
                        int result = sqlComm2.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("采购退货行同步异常:" + ex.Message);
            }
        }

        //杂收(搬运单退货)(RETURNOFTHEHANDLINGORDER)
        //数据流向:WMS –> ERP
        //流程:由WMS发起,在WMS生成出库退货单据,并将出库退货单据和原出库订单进行绑定,将出库退货单据信息反馈到出库退货中间表,ERP读取出库退货中间表数据做账户别名接收。
        public void ReturnOfTheHandlingOrder()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                int ORG_ID; string ORGAIZATION_CODE; string SUBINV_CODE; string OUTSTOCK_NUM;
                int OUTSTOCK_LINE_NUM; string OUT_REFUND_NUM; int OUT_REFUND_LINE_NUM;
                string ITEM_CODE; string ITEM_DESC; string UNIT; string TRANSACTION_QUANTITY;
                string TRANSACTION_DATE; int USER_ID; string CREAT_DATE; string PROCESS_MESSAGE;

                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select * from CUX_OUTSTOCK_REFUND_TABLE where PROCESS_STATUS = 'P'";

                SqlCommand sqlComm = new SqlCommand(sql, con);
                SqlDataReader reader = sqlComm.ExecuteReader();
                while (reader.Read())
                {
                    int REFUND_ID = Convert.ToInt32(reader["REFUND_ID"]);
                    ORG_ID = Convert.ToInt32(reader["ORG_ID"]);
                    ORGAIZATION_CODE = reader["ORGAIZATION_CODE"].ToString();
                    SUBINV_CODE = reader["SUBINV_CODE"].ToString();
                    OUTSTOCK_NUM = reader["OUTSTOCK_NUM"].ToString();
                    OUTSTOCK_LINE_NUM = Convert.ToInt32(reader["OUTSTOCK_LINE_NUM"]);
                    OUT_REFUND_NUM = reader["OUT_REFUND_NUM"].ToString();
                    OUT_REFUND_LINE_NUM = Convert.ToInt32(reader["OUT_REFUND_LINE_NUM"]);
                    ITEM_CODE = reader["ITEM_CODE"].ToString();
                    ITEM_DESC = reader["ITEM_DESC"].ToString();
                    UNIT = reader["UNIT"].ToString();
                    TRANSACTION_QUANTITY = reader["TRANSACTION_QUANTITY"].ToString();
                    TRANSACTION_DATE = reader["TRANSACTION_DATE"].ToString();
                    USER_ID = Convert.ToInt32(reader["USER_ID"]);
                    CREAT_DATE = reader["CREAT_DATE"].ToString();
                    PROCESS_MESSAGE = reader["PROCESS_MESSAGE"].ToString();

                    string insql = "insert into CUX_OUTSTOCK_REFUND_TABLE(REFUND_ID,ORG_ID, ORGAIZATION_CODE, SUBINV_CODE, OUTSTOCK_NUM, OUTSTOCK_LINE_NUM, OUT_REFUND_NUM, OUT_REFUND_LINE_NUM, ITEM_CODE, ITEM_DESC, UNIT,TRANSACTION_QUANTITY,TRANSACTION_DATE,USER_ID,CREAT_DATE, PROCESS_STATUS)values('" + REFUND_ID + "','" + ORG_ID + "','" + ORGAIZATION_CODE + "','" + SUBINV_CODE + "','" + OUTSTOCK_NUM + "','" + OUTSTOCK_LINE_NUM + "','" + OUT_REFUND_NUM + "','" + OUT_REFUND_LINE_NUM + "','" + ITEM_CODE + "','" + ITEM_DESC + "','" + UNIT + "','" + TRANSACTION_QUANTITY + "','" + TRANSACTION_DATE + "','" + USER_ID + "','" + CREAT_DATE + "','P')";
                    OracleCommand cmd = new OracleCommand(insql, conn);
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_OUTSTOCK_REFUND_TABLE set PROCESS_STATUS ='Y' where ORG_ID ='" + ORG_ID + "' and OUT_REFUND_NUM='" + OUT_REFUND_NUM + "' and OUT_REFUND_LINE_NUM ='" + OUT_REFUND_LINE_NUM + "'";
                        SqlCommand sqlComm2 = new SqlCommand(updatesql, con);
                        int result = sqlComm2.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("杂收(搬运单退货)表反馈同步异常:" + ex.Message);
            }
        }

        //库存组织同步接口(新增)(INVENTORYSYNCHRONIZATION)
        //数据流向:ERP –> WMS
        //流程:ERP将组织好的库存组织信息,自动同步到库存中间表,WMS读取中间表数据存放在WMS本地。
        //目的:用户在WMS界面选择创建哪个组织的单据。
        public void InventoryOrganizationSynchronization()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                string SET_OF_BOOKS_ID; string BOOKS_CODE; string BOOKS_NAME; string ORG_ID;
                string ORG_NAME; string ORGANIZATION_ID; string ORGANIZATION_CODE; string ORGANIZATION_NAME; string SUBINV_CODE; string SUBINV_DESC; string CREAT_DATE; string PROCESS_MESSAGE;

                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select ISSUE_ID, SET_OF_BOOKS_ID,BOOKS_CODE,BOOKS_NAME,ORG_ID,ORG_NAME,ORGANIZATION_ID,ORGANIZATION_CODE,ORGANIZATION_NAME,cast(SUBINV_CODE as varchar(100)) as SUBINV_CODE,SUBINV_DESC,CREAT_DATE,PROCESS_MESSAGE,cast(CREATION_DATE as varchar(100)) as CREATION_DATE ,created_by,last_updated_by,cast(LAST_UPDATE_DATE as varchar(100)) as LAST_UPDATE_DATE,last_update_login from CUX_INV_ORG_DATA_ISSUE where PROCESS_STATUS = 'P'";
                OracleCommand cmd = new OracleCommand(sql, conn);
                OracleDataAdapter da = new OracleDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds, "CUX_INV_ORG_DATA_ISSUE");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    int ISSUE_ID = Convert.ToInt32(ds.Tables[0].Rows[i]["ISSUE_ID"]);
                    SET_OF_BOOKS_ID = ds.Tables[0].Rows[i]["SET_OF_BOOKS_ID"].ToString();
                    BOOKS_CODE = ds.Tables[0].Rows[i]["BOOKS_CODE"].ToString();
                    BOOKS_NAME = ds.Tables[0].Rows[i]["BOOKS_NAME"].ToString();
                    ORG_ID = ds.Tables[0].Rows[i]["ORG_ID"].ToString();
                    ORG_NAME = ds.Tables[0].Rows[i]["ORG_NAME"].ToString();
                    ORGANIZATION_ID = ds.Tables[0].Rows[i]["ORGANIZATION_ID"].ToString();
                    ORGANIZATION_CODE = ds.Tables[0].Rows[i]["ORGANIZATION_CODE"].ToString();
                    ORGANIZATION_NAME = ds.Tables[0].Rows[i]["ORGANIZATION_NAME"].ToString();
                    SUBINV_CODE = ds.Tables[0].Rows[i]["SUBINV_CODE"].ToString();
                    SUBINV_DESC = ds.Tables[0].Rows[i]["SUBINV_DESC"].ToString();
                    CREAT_DATE = ds.Tables[0].Rows[i]["CREAT_DATE"].ToString();
                    PROCESS_MESSAGE = ds.Tables[0].Rows[i]["PROCESS_MESSAGE"].ToString();

                    string insertsql = "insert into CUX_INV_ORG_DATA_ISSUE(SET_OF_BOOKS_ID,BOOKS_CODE,BOOKS_NAME,ORG_ID,ORG_NAME,ORGANIZATION_ID,ORGANIZATION_CODE,ORGANIZATION_NAME,SUBINV_CODE,SUBINV_DESC,CREAT_DATE,PROCESS_MESSAGE)values('" + SET_OF_BOOKS_ID + "','" + BOOKS_CODE + "','" + BOOKS_NAME + "','" + ORG_ID + "','" + ORG_NAME + "','" + ORGANIZATION_ID + "','" + ORGANIZATION_CODE + "','" + ORGANIZATION_NAME + "','" + SUBINV_CODE + "','" + SUBINV_DESC + "','" + CREAT_DATE + "','" + PROCESS_MESSAGE + "')";

                    SqlCommand cmd2 = new SqlCommand(insertsql, con);
                    if (cmd2.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_INV_ORG_DATA_ISSUE set PROCESS_STATUS ='Y' where ORG_ID ='" + ORG_ID + "' and ISSUE_ID='" + ISSUE_ID + "'";
                        OracleCommand cmd3 = new OracleCommand(updatesql, conn);
                        int result = cmd3.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("库存组织同步异常:" + ex.Message);
            }
        }

        //搬运单事务处理类型同步接口(新增)(HANDLEORDERTRANSACTIONS)
        //数据流向:ERP –> WMS
        //流程:ERP将组织好的物料搬运单事务处理类型信息,自动同步到中间表,WMS读取中间表数据存放在WMS本地。
        //目的:用户在WMS出库单上选择用哪个类型
        public void MoveOrderTransactionTypeSynchronization()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                string TRANSACTION_TYPE_ID; string TRANSACTION_TYPE_NAME; string TRANSACTION_TYPE_DESC; string SOURCE_TYPE_ID; string SOURCE_TYPE_NAME;
                string USER_DEFINED_FLAG; string CREAT_DATE; string PROCESS_MESSAGE;

                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select type_id, cast(TRANSACTION_TYPE_ID as varchar(300)) as TRANSACTION_TYPE_ID,TRANSACTION_TYPE_NAME,TRANSACTION_TYPE_DESC,cast(SOURCE_TYPE_ID as varchar(300)) as SOURCE_TYPE_ID,SOURCE_TYPE_NAME,CREAT_DATE,CAST(CREATION_DATE AS varchar(100)) as CREATION_DATE,created_by,last_updated_by,cast(last_update_date as varchar(100)) as last_update_date,last_update_login,PROCESS_MESSAGE from CUX_TRANS_TYPE_ISSUE where PROCESS_STATUS = 'P'";
                OracleCommand cmd = new OracleCommand(sql, conn);
                OracleDataAdapter da = new OracleDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds, "CUX_TRANS_TYPE_ISSUE");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    int TYPE_ID = Convert.ToInt32(ds.Tables[0].Rows[i]["TYPE_ID"]);
                    TRANSACTION_TYPE_ID = ds.Tables[0].Rows[i]["TRANSACTION_TYPE_ID"].ToString();
                    TRANSACTION_TYPE_NAME = ds.Tables[0].Rows[i]["TRANSACTION_TYPE_NAME"].ToString();
                    TRANSACTION_TYPE_DESC = ds.Tables[0].Rows[i]["TRANSACTION_TYPE_DESC"].ToString();
                    SOURCE_TYPE_ID = ds.Tables[0].Rows[i]["SOURCE_TYPE_ID"].ToString();
                    SOURCE_TYPE_NAME = ds.Tables[0].Rows[i]["SOURCE_TYPE_NAME"].ToString();
                    USER_DEFINED_FLAG = ds.Tables[0].Rows[i]["CREATED_BY"].ToString();
                    CREAT_DATE = ds.Tables[0].Rows[i]["CREAT_DATE"].ToString();
                    PROCESS_MESSAGE = ds.Tables[0].Rows[i]["PROCESS_MESSAGE"].ToString();

                    string insertsql = "insert into CUX_TRANS_TYPE_ISSUE(TRANSACTION_TYPE_ID,TRANSACTION_TYPE_NAME,TRANSACTION_TYPE_DESC,SOURCE_TYPE_ID,SOURCE_TYPE_NAME,USER_DEFINED_FLAG,CREAT_DATE,PROCESS_MESSAGE)values('" + TRANSACTION_TYPE_ID + "','" + TRANSACTION_TYPE_NAME + "','" + TRANSACTION_TYPE_DESC + "','" + SOURCE_TYPE_ID + "','" + SOURCE_TYPE_NAME + "','" + USER_DEFINED_FLAG + "','" + CREAT_DATE + "','" + PROCESS_MESSAGE + "')";

                    SqlCommand cmd2 = new SqlCommand(insertsql, con);
                    if (cmd2.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_TRANS_TYPE_ISSUE set PROCESS_STATUS ='Y' where TRANSACTION_TYPE_ID ='" + TRANSACTION_TYPE_ID + "' and TYPE_ID ='" + TYPE_ID + "'";
                        OracleCommand cmd3 = new OracleCommand(updatesql, conn);
                        int result = cmd3.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("搬运单事务处理类型同步接口同步异常:" + ex.Message);
            }
        }

        //人员信息同步WMS(新增)(SYNCHRONIZATIONOFPERSONNELINFORMATION)
        //数据流向:ERP  WMS
        //流程:ERP将组织好的人员信息,自动同步到中间表,WMS读取中间表数据存放在WMS本地。
        //目的:确定单据的操作人。
        #region
        //public void SynchronizationOfPersonnelInformation()
        //{
        //    OracleConnection conn = null;
        //    SqlConnection con = null;
        //    try
        //    {
        //        int USER_ID; string USER_NAME; string STATUS; string TRANSACTION_TYPE_DESC;
        //        string SOURCE_TYPE_ID; string CREAT_DATE; string PROCESS_MESSAGE;

        //        conn = OpenConn();//中间库
        //        con = SqlOpen();//WMS
        //        string sql = "select * from SYNCHRONIZATIONOFPERSONNELINFORMATION where PROCESS_STATUS = 'P'";
        //        OracleCommand cmd = new OracleCommand(sql, conn);
        //        OracleDataAdapter da = new OracleDataAdapter(cmd);
        //        DataTable ds = new DataTable();
        //        da.Fill(ds);
        //        for (int i = 0; i < ds.Rows.Count; i++)
        //        {
        //            int ISSUE_ID = Convert.ToInt32(ds.Rows[i]["ISSUE_ID"]);
        //            USER_ID = Convert.ToInt32(ds.Rows[i]["USER_ID"]);
        //            USER_NAME = ds.Rows[i]["USER_NAME"].ToString();
        //            STATUS = ds.Rows[i]["STATUS"].ToString();
        //            TRANSACTION_TYPE_DESC = ds.Rows[i]["TRANSACTION_TYPE_DESC"].ToString();
        //            SOURCE_TYPE_ID = ds.Rows[i]["SOURCE_TYPE_ID"].ToString();
        //            CREAT_DATE = ds.Rows[i]["CREAT_DATE"].ToString();
        //            PROCESS_MESSAGE = ds.Rows[i]["PROCESS_MESSAGE"].ToString();


        //            string insertsql = "insert into SYNCHRONIZATIONOFPERSONNELINFORMATION(USER_ID,USER_NAME,STATUS,TRANSACTION_TYPE_DESC,SOURCE_TYPE_ID,CREAT_DATE,PROCESS_MESSAGE)values('" + USER_ID + "','" + USER_NAME + "','" + STATUS + "','" + TRANSACTION_TYPE_DESC + "','" + SOURCE_TYPE_ID + "','" + CREAT_DATE + "','" + PROCESS_MESSAGE + "')";

        //            SqlCommand cmd2 = new SqlCommand(insertsql, con);
        //            if (cmd2.ExecuteNonQuery() > 0)
        //            {
        //                string updatesql = "update SYNCHRONIZATIONOFPERSONNELINFORMATION set PROCESS_STATUS ='Y' where TRANSACTION USER_ID ='" + USER_ID + "' and ISSUE_ID ='" + ISSUE_ID + "'";
        //                OracleCommand cmd3 = new OracleCommand(updatesql, conn);
        //                int result = cmd3.ExecuteNonQuery();
        //            }
        //        }
        //        con.Close();
        //        conn.Close();
        //    }
        //    catch (Exception ex)
        //    {
        //        MessageBox.Show("人员信息同步WMS接口同步异常:" + ex.Message);
        //    }
        //}
        #endregion
        public void SynchronizationOfPersonnelInformation()
        {
            OracleConnection conn = null;
            SqlConnection con = null;
            try
            {
                string USER_ID; string USER_NAME; string STATUS; string TRANSACTION_TYPE_DESC;
                string SOURCE_TYPE_ID; string CREAT_DATE; string PROCESS_MESSAGE;

                conn = OpenConn();//中间库
                con = SqlOpen();//WMS
                string sql = "select ISSUE_ID, cast(USER_ID as varchar(300)) as USER_ID,USER_NAME,person_id,last_name,cast(start_date as varchar(100)) as start_date,cast(end_date as varchar(100)) as end_date,STATUS,process_status,process_message,cast(creation_date as varchar(100)) as creation_date ,created_by,last_updated_by,cast(last_update_date as varchar(100)) as last_update_date,last_update_login,CREAT_DATE,PROCESS_MESSAGE from CUX_USER_DATA_ISSUE where PROCESS_STATUS = 'P'";
                OracleCommand cmd = new OracleCommand(sql, conn);
                OracleDataAdapter da = new OracleDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds, "CUX_USER_DATA_ISSUE");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    int ISSUE_ID = Convert.ToInt32(ds.Tables[0].Rows[i]["ISSUE_ID"]);
                    USER_ID = ds.Tables[0].Rows[i]["USER_ID"].ToString();
                    USER_NAME = ds.Tables[0].Rows[i]["USER_NAME"].ToString();
                    STATUS = ds.Tables[0].Rows[i]["STATUS"].ToString();
                    TRANSACTION_TYPE_DESC = ds.Tables[0].Rows[i]["LAST_NAME"].ToString();
                    SOURCE_TYPE_ID = ds.Tables[0].Rows[i]["CREATED_BY"].ToString();
                    CREAT_DATE = ds.Tables[0].Rows[i]["CREAT_DATE"].ToString();
                    PROCESS_MESSAGE = ds.Tables[0].Rows[i]["PROCESS_MESSAGE"].ToString();


                    string insertsql = "insert into CUX_USER_DATA_ISSUE(USER_ID,USER_NAME,STATUS,TRANSACTION_TYPE_DESC,SOURCE_TYPE_ID,CREAT_DATE,PROCESS_MESSAGE)values('" + USER_ID + "','" + USER_NAME + "','" + STATUS + "','" + TRANSACTION_TYPE_DESC + "','" + SOURCE_TYPE_ID + "','" + CREAT_DATE + "','" + PROCESS_MESSAGE + "')";

                    SqlCommand cmd2 = new SqlCommand(insertsql, con);
                    if (cmd2.ExecuteNonQuery() > 0)
                    {
                        string updatesql = "update CUX_USER_DATA_ISSUE set PROCESS_STATUS ='Y' where USER_ID ='" + USER_ID + "' and ISSUE_ID ='" + ISSUE_ID + "'";
                        OracleCommand cmd3 = new OracleCommand(updatesql, conn);
                        int result = cmd3.ExecuteNonQuery();
                    }
                }
                con.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("人员信息同步WMS接口同步异常:" + ex.Message);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            System.Timers.Timer timer = new System.Timers.Timer(2000);//设定计时器,100秒进行一次循环
            timer.Elapsed += new System.Timers.ElapsedEventHandler(Start);
            timer.AutoReset = true;//执行多次--false执行一次
            timer.Enabled = true;//执行事件为true,定时器启动
            textBox1.Text = "WMS、中间库连接正常!";
        }
        public void Start(object sender, ElapsedEventArgs e)
        {
            BasicInformationSynchronization();
          //  AccountAliasSynchronization();
            //HeaderTableForPurchasingInboundDocuments();
            //PurchaseInboundDocumentFeedbackLineTable();
            //InventoryOrganizationSynchronization();
            //MoveOrderTransactionTypeSynchronization();
            //SynchronizationOfPersonnelInformation();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            System.Timers.Timer timer2 = new System.Timers.Timer(2000);//设定计时器,100秒进行一次循环
            timer2.Elapsed += new System.Timers.ElapsedEventHandler(Start2);
            timer2.AutoReset = true;//执行多次--false执行一次
            timer2.Enabled = true;//执行事件为true,定时器启动
        }

        public void Start2(object sender, ElapsedEventArgs e)
        {
            PurchaseInboundDocumentFeedbackHeaderTable();
            PurchaseInboundDocumentFeedbackHeaderTable();
            OutboundSingleHeaderTable();
            OutboundSingleLineTable();
            OutboundSingleFeedbackHeaderTable();
            OutboundSingleFeedbackLineTable();
            PurchaseTeturnHeaderTable();
            PurchaseTeturnLineTable();
            ReturnOfTheHandlingOrder();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            System.Environment.Exit(0);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            //BasicInformationSynchronization();
            //InventoryOrganizationSynchronization();
            //SynchronizationOfPersonnelInformation();
            //MoveOrderTransactionTypeSynchronization();
            //AccountAliasSynchronization();
            //HeaderTableForPurchasingInboundDocuments();
            // AccountAliasSynchronization();
            //IssueTableForPurchasingInboundDocuments();
            //PurchaseInboundDocumentFeedbackHeaderTable();
            //PurchaseInboundDocumentFeedbackLineTable();
            //PurchaseTeturnHeaderTable();
            //PurchaseTeturnLineTable();
            //OutboundSingleHeaderTable();
            //OutboundSingleLineTable();
            OutboundSingleFeedbackHeaderTable();
        }
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Android MVVM Demo 是一个基于 MVVM(Model-View-ViewModel)设计模式的 Android 应用示例。这个 Demo 可以让开发者学习 MVVM 在 Android 开发中的应用。 这个 Demo 的视图部分、模型部分以及 ViewModel 部分都是独立的。视图部分只用来展示数据及响应用户操作,模型部分只用来管理业务逻辑和数据操作,而 ViewModel 部分则是中间人,负责协调视图和模型之间的交互。 ViewModel 应该提供给视图数据绑定的 Observable 对象,这些 Observable 对象实际上是可观察的数据源。当 ViewModel 中的可观察数据源中的数据发生变化时,这些数据则会自动更新到视图中,从而达到实时同步的效果。 这个 Demo 的视图部分使用了 Android 原生的 Data Binding 技术,来实现视图与 ViewModel 的绑定。当视图需要更新 ViewModel 的数据时,只需要将这些数据绑定到视图上。而对于用户输入的操作,则由 ViewModel 中的命令类来监听并作出相应的反应。 总的来说,这个 Demo 给开发者提供了一个简单、可读性高、封装性强的 MVVM 示例。这个示例既可以为 MVVM 模式的初学者提供基础知识,也可以为实际应用场景的开发提供不少参考。 ### 回答2: Android MVVM(Model-View-ViewModel)是一种设计模式,其中视图通过数据绑定与ViewModel进行通信。ViewModel处理从Model获取的数据,并将其暴露给View,以便视图可以更新其状态。此外,ViewModel可以在用户界面和后端之间充当中间人,并处理业务逻辑。 Android MVVM demo演示了如何在Android应用程序中使用MVVM设计模式。这个demo使用了Android的数据绑定和LiveData组件。在这个demo中,我们创建一个简单的登录应用程序,在用户输入用户名和密码之后验证用户凭据。我们使用ViewModel来存储和管理用户输入和验证状态,以及LiveData来观察ViewModel中的数据变化并将其更新到用户界面。在用户输入凭据时,ViewModel负责更新LiveData,从而更新UI组件。此外,我们还使用了数据绑定,它允许我们直接将UI组件绑定到ViewModel中的属性,以便它们可以自动更新。 通过使用MVVM设计模式,我们可以将UI逻辑与业务逻辑分离,从而使我们的代码更易于管理和测试。此外,使用LiveData来观察ViewModel中的数据变化还可以减少我们的代码量和逻辑复杂度。通过观察LiveData,我们可以在需要更新UI时自动更新UI组件,而不必手动处理每个UI组件。这使得我们的代码更加简单,易于维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚风偷吻云朵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值