Example #1
0
        /// <summary>
        /// VEX框架的主入口
        /// </summary>
        /// <returns></returns>
        public Boolean Execute()
        {
            try
            {


                int nExecuteRowCount = 200;

                if (m_request != null && m_request.Tables.Count > 0 && m_request.Tables[0].Rows.Count == 1)
                {
                    if (m_request.Tables[0].Columns.Contains("executeRowCount"))
                    {
                        try
                        {
                            nExecuteRowCount = Convert.ToInt32(m_request.Tables[0].Rows[0]["executeRowCount"]);
                        }
                        catch (Exception ex)
                        {
                        }
                    }

                }


                m_conn.TimeOut = 60;
                //事务开始
                m_conn.BeginTransaction();

                string strSQL = @"
                        SELECT top " + nExecuteRowCount.ToString() + @" [NewID]
                              ,[CreateTime]
                              ,[Timestamps]
                              ,[WMSFlag]
                              ,[WCSFlag]
                              ,[SKU]
                              ,[Descr_C]
                              ,[SKU_GROUP4]
                              ,[SKU_GROUP1]
                              ,[Price]
                              ,[Alternate_SKU1]
                              ,[ReservedField01]
                              ,[ReservedField02]
                              ,[ReservedField03]
                              ,[ReservedField04]
                              ,[ReservedField05]
                              ,[NOTES]
                          INTO #tmp
                          FROM [dbo].[Put_SKU]
                          WHERE isnull(WMSFlag,0)=0
 --AND NOT EXISTS(
--						  SELECT 1 FROM FLUX_WMS.dbo.BAS_SKU WITH(NOLOCK)
--						  WHERE [Put_SKU].SKU=bas_sku.sku
--						  )

                          ORDER BY CreateTime ASC,Timestamps ASC 

                          UPDATE [dbo].[Put_SKU]
                          SET WMSFlag=1
                          WHERE EXISTS(SELECT 1 FROM #tmp WHERE #tmp.NewID = Put_SKU.newid)
                          SELECT * FROM #tmp
                          DROP TABLE #tmp
                                                        ";

                DataTable dtData = m_conn.GetDataTable(strSQL);
                if (dtData.Rows.Count > 0)
                {
                    WMSWS.CERPWSService2Service ws = new WMSWS.CERPWSService2Service();
                    WMSWS.wmsSecurityInfo wmsSecurityInfo = new WMSWS.wmsSecurityInfo();
                    WMSWS.wmsParamInfo wmsParamInfo = new WMSWS.wmsParamInfo();
                    WMSWS.wmsSkuInfo wmsSkuInfo = new WMSWS.wmsSkuInfo();
                    wmsParamInfo.customerid = "PAND";
                    wmsParamInfo.messageid = "102";
                    wmsParamInfo.stdno = "SKU";
                    wmsParamInfo.warehouseid = "WH01";

                    wmsSecurityInfo.password = "******";
                    wmsSecurityInfo.username = "******";

                    wmsSkuInfo.wmsSkuHeaders = new WMSWS.wmsSkuHeader[dtData.Rows.Count];
                    for (int i = 0; i < dtData.Rows.Count; i++)
                    {
                        WMSWS.wmsSkuHeader skuHeader = new WMSWS.wmsSkuHeader();
                        skuHeader.SKU = dtData.Rows[i]["SKU"].ToString();
                        skuHeader.DESCR_C = dtData.Rows[i]["DESCR_C"].ToString();
                        skuHeader.SKU_GROUP1 = dtData.Rows[i]["SKU_GROUP1"].ToString();
                        skuHeader.SKU_GROUP4 = dtData.Rows[i]["SKU_GROUP4"].ToString();
                        skuHeader.CUSTOMERID = "EP";
                        skuHeader.PRICE = dtData.Rows[i]["PRICE"].ToString();
                        skuHeader.ALTERNATE_SKU1 = dtData.Rows[i]["ALTERNATE_SKU1"].ToString();
                        skuHeader.RESERVEDFIELD01 = dtData.Rows[i]["RESERVEDFIELD01"].ToString();
                        skuHeader.RESERVEDFIELD02 = dtData.Rows[i]["RESERVEDFIELD02"].ToString();
                        skuHeader.RESERVEDFIELD03 = dtData.Rows[i]["RESERVEDFIELD03"].ToString();
                        skuHeader.RESERVEDFIELD04 = dtData.Rows[i]["RESERVEDFIELD04"].ToString();
                        skuHeader.RESERVEDFIELD05 = dtData.Rows[i]["RESERVEDFIELD05"].ToString();

                        wmsSkuInfo.wmsSkuHeaders[i] = skuHeader;
                    }
                    ws.Timeout = 3600 * 1000;
                    WMSWS.wmsResultInfo resultInfo = ws.putSKUData(wmsSecurityInfo, wmsSkuInfo, wmsParamInfo);

                    //执行失败
                    if (resultInfo.returnDesc != "成功")
                    {
                        m_conn.RollbackTransaction();
                        return false;
                    }
                }


                //事务提交 --注意:不能移动到每个方法里面,这里面的方法会有互相调用的情况
                m_conn.CommitTransaction();

            }
            catch
            {
                m_conn.RollbackTransaction();
                throw;
            }

            return true;
        }
        /// <summary>
        /// VEX框架的主入口
        /// </summary>
        /// <returns></returns>
        public Boolean Execute()
        {
            try
            {
                int nExecuteRowCount = 200;//定义执行条数,如果没有配置,就默认200

                if (m_request != null && m_request.Tables.Count > 0 && m_request.Tables[0].Rows.Count == 1)
                {
                    if (m_request.Tables[0].Columns.Contains("executeRowCount"))
                    {
                        try
                        {
                            nExecuteRowCount = Convert.ToInt32(m_request.Tables[0].Rows[0]["executeRowCount"]);
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                }

                m_conn.TimeOut = 60;

                //事务开始
                m_conn.BeginTransaction();
                //获取主表信息

                string strSQL = @"SELECT  * into #tmp FROM (
                        SELECT top " + nExecuteRowCount.ToString() + @"
                                                    ROW_NUMBER() OVER ( PARTITION BY [ASNREFERENCE1] ORDER BY requestid DESC ) AS a ,
                                                    [NewID]
                          ,[CreateTime]
                          ,[Timestamps]
                          ,[requestid]
                          ,[ASNREFERENCE1]
                          ,[CustomerID]
                          ,[ASNType]
                          ,[SupplierId]
                          ,[Supplier_Name]
                          ,[H_EDI_01]
                          ,[H_EDI_02]
                          ,[Notes]
                          ,[ASNCreationTime]
                          ,[LotAtt05]
                          ,[LotAtt06]
                          ,[WMSFLAG]
                          FROM [dbo].[PUT_DRPd_Msell]
                          WHERE isnull(WMSFlag,0)=0
                          AND ASNType='TS' 
                           ) f  
                                 WHERE   a = 1 
                          ORDER BY [requestid] DESC 
                                 SELECT* FROM #tmp ";

                DataTable dtData = m_conn.GetDataTable(strSQL);
                if (dtData.Rows.Count > 0)
                {
                    WMSWS.CERPWSService2Service ws = new WMSWS.CERPWSService2Service();
                    WMSWS.wmsSecurityInfo wmsSecurityInfo = new WMSWS.wmsSecurityInfo();//	系统级参数
                    WMSWS.wmsParamInfo wmsParamInfo = new WMSWS.wmsParamInfo();//	系统级参数
                    wmsParamInfo.customerid = "PAND";
                    wmsParamInfo.messageid = "1042";
                    wmsParamInfo.stdno = "ASN";
                    wmsParamInfo.warehouseid = "WH01";
                    wmsSecurityInfo.password = "******";
                    wmsSecurityInfo.username = "******";

                    WMSWS.wmsASNInfo wmsASNInfo = new WMSWS.wmsASNInfo();
                    wmsASNInfo.wmsASNHeaders = new WMSWS.wmsASNHeader[dtData.Rows.Count];//定义主表行数

                    for (int i = 0; i < dtData.Rows.Count; i++)
                    {
                        WMSWS.wmsASNHeader ASNHeader = new WMSWS.wmsASNHeader();
                        //表头主表信息
                        ASNHeader.ASNREFERENCE1 = dtData.Rows[i]["ASNREFERENCE1"].ToString();
                        ASNHeader.CUSTOMERID = dtData.Rows[i]["CUSTOMERID"].ToString();
                        ASNHeader.ASNTYPE = dtData.Rows[i]["ASNType"].ToString();
                        ASNHeader.SUPPLIERID = dtData.Rows[i]["SupplierId"].ToString();
                        ASNHeader.SUPPLIER_NAME = dtData.Rows[i]["Supplier_Name"].ToString();
                        ASNHeader.NOTES = dtData.Rows[i]["Notes"].ToString();
                        ASNHeader.h_EDI_01 = dtData.Rows[i]["H_EDI_01"].ToString();
                        ASNHeader.h_EDI_02 = dtData.Rows[i]["H_EDI_02"].ToString();
                        ASNHeader.ASNCREATIONTIME = Convert.ToDateTime(dtData.Rows[i]["ASNCreationTime"]).ToString("yyyy-MM-dd HH:mm:ss");
                        //按照主表订单号和状态值获取子表信息
                        string strRequestid = dtData.Rows[i]["requestid"].ToString();
                        string strSQLSub = @"SELECT   b.NewID ,b.Timestamps ,b.requestid ,b.ASNREFERENCE1 ,b.SKU ,b.ExpectedQty ,b.D_EDI_01 ,b.D_EDI_02
                                             ,b.D_EDI_03 ,b.D_EDI_04,a.LotAtt05,a.LotAtt06
                                             FROM  [PUT_DRPd_Msell] a LEFT JOIN [PUT_DRPd_Msellsub] b ON b.ASNREFERENCE1 = a.ASNREFERENCE1  AND b.requestid = a.requestid
                                             WHERE ISNULL(b.ExpectedQty, '') != '' and a.ASNREFERENCE1='" + dtData.Rows[i]["ASNREFERENCE1"].ToString() + "' AND a.requestid='" + strRequestid + "'";
                        DataTable dtDataSub = m_conn.GetDataTable(strSQLSub);

                        ASNHeader.detailsItem = new WMSWS.wmsASNDetails[dtDataSub.Rows.Count];//定义子表行数
                        for (int j = 0; j < dtDataSub.Rows.Count; j++)
                        {
                            WMSWS.wmsASNDetails ASNDetail = new WMSWS.wmsASNDetails();
                            ASNDetail.SKU = dtDataSub.Rows[j]["SKU"].ToString();
                            ASNDetail.EXPECTEDQTY = dtDataSub.Rows[j]["ExpectedQty"].ToString();
                            ASNDetail.LOTATT05 = dtDataSub.Rows[j]["LotAtt05"].ToString();
                            ASNDetail.LOTATT06 = dtDataSub.Rows[j]["LotAtt06"].ToString();
                            ASNDetail.d_EDI_01 = dtDataSub.Rows[j]["D_EDI_01"].ToString();
                            ASNDetail.d_EDI_02 = dtDataSub.Rows[j]["D_EDI_02"].ToString();
                            ASNDetail.d_EDI_03 = dtDataSub.Rows[j]["D_EDI_03"].ToString();
                            ASNDetail.d_EDI_04 = dtDataSub.Rows[j]["D_EDI_04"].ToString();
                            ASNHeader.detailsItem[j] = ASNDetail;//把子表放入主表容器中
                        }
                        wmsASNInfo.wmsASNHeaders[i] = ASNHeader;//把一个订单放入头文件中
                    }
                    ws.Timeout = 3600 * 1000;
                    WMSWS.wmsResultInfo resultInfo = ws.putASNData(wmsSecurityInfo, wmsASNInfo, wmsParamInfo);//传入接口

                    //执行失败
                    if (resultInfo.returnDesc != "成功")
                    {
                        m_conn.RollbackTransaction();
                        return false;
                    }
                    else
                    {
                        string strSQLflag = @"
                            UPDATE [dbo].[PUT_DRPd_Msell]
                            SET WMSFlag=1
                            WHERE   ASNType='TS' 
                            --AND EXISTS(SELECT 1 FROM #tmp WHERE #tmp.NewID = PUT_DRPd_Msell.newid)
                            And requestid <='" + dtData.Rows[0]["requestid"].ToString() + @"'
                            DROP TABLE #tmp ";
                        m_conn.ExcuteQuerryByTran(strSQLflag, new object[] { });
                    }
                    HZY.COM.Common.Log.WirteLogWS(resultInfo.returnDesc, null);

                }

                //事务提交 --注意:不能移动到每个方法里面,这里面的方法会有互相调用的情况
                m_conn.CommitTransaction();

            }
            catch (Exception ex)
            {
                m_conn.RollbackTransaction();
                HZY.COM.Common.Log.WirteLogWS(ex, null);

                throw ex;
            }

            return true;
        }
        //string strMaxRequestid;
        #endregion

        #region GetData
        /// <summary>
        /// VEX框架的主入口
        /// </summary>
        /// <returns></returns>
        public Boolean Execute()
        {
            try
            {
                int nExecuteRowCount = 200;//定义执行条数,如果没有配置,就默认200

                if (m_request != null && m_request.Tables.Count > 0 && m_request.Tables[0].Rows.Count == 1)
                {
                    if (m_request.Tables[0].Columns.Contains("executeRowCount"))
                    {
                        try
                        {
                            nExecuteRowCount = Convert.ToInt32(m_request.Tables[0].Rows[0]["executeRowCount"]);
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                }

                m_conn.TimeOut = 60;

                //事务开始

                m_conn.BeginTransaction();

                //获取主表信息
                string strSQL = @" SELECT  * into #tmp FROM    ( SELECT top " + nExecuteRowCount.ToString() + @"
                                                    ROW_NUMBER() OVER ( PARTITION BY [SOReference1] ORDER BY requestid DESC ) AS a ,
                                                    [NewID]
                                                  ,[CreateTime]
                                                  ,[Timestamps]
                                                  ,[requestid]
                                                  ,[SOReference1]
                                                  ,[SOReference2]
                                                  ,[CustomerID]
                                                  ,[OrderType]
                                                  ,[ConsigneeID]
                                                  ,[ConsigneeName]
                                                  ,[C_Address1]
                                                  ,[OrderTime]
                                                  ,[H_EDI_01]
                                                  ,[H_EDI_02]
                                                  ,[H_EDI_03]
                                                  ,[H_EDI_04]
                                                  ,[LotAtt05]
                                                  ,[LotAtt06]
                                                  ,[WMSFLAG]
                                                  ,[NOTES]                      
                                          FROM      PUT_DRPd_Sell
                                          WHERE     ISNULL(WMSFlag, 0) = 0 
                                        ) f  
                                 WHERE   a = 1 
                                 ORDER BY [requestid] DESC 
                                 SELECT* FROM #tmp ";
                DataTable dtData = m_conn.GetDataTable(strSQL);
                //string strMaxRequestid = dtData.Rows[0]["requestid"].ToString();
                if (dtData.Rows.Count > 0)
                {

                    WMSWS.CERPWSService2Service ws = new WMSWS.CERPWSService2Service();
                    WMSWS.wmsSecurityInfo wmsSecurityInfo = new WMSWS.wmsSecurityInfo();//	系统级参数
                    WMSWS.wmsParamInfo wmsParamInfo = new WMSWS.wmsParamInfo();//	系统级参数
                    wmsParamInfo.customerid = "PAND";
                    wmsParamInfo.messageid = "1061";
                    wmsParamInfo.stdno = "SO";
                    wmsParamInfo.warehouseid = "WH01";
                    wmsSecurityInfo.password = "******";
                    wmsSecurityInfo.username = "******";

                    WMSWS.wmsSOInfo wmsSOInfo = new WMSWS.wmsSOInfo();
                    wmsSOInfo.wmsSOHeaders = new WMSWS.wmsSOHeader[dtData.Rows.Count];//定义主表行数

                    for (int i = 0; i < dtData.Rows.Count; i++)
                    {
                        WMSWS.wmsSOHeader SOHeader = new WMSWS.wmsSOHeader();
                        //表头主表信息

                        SOHeader.SOREFERENCE1 = dtData.Rows[i]["SOReference1"].ToString();
                        SOHeader.SOREFERENCE2 = dtData.Rows[i]["SOReference2"].ToString();
                        SOHeader.CUSTOMERID = dtData.Rows[i]["CustomerID"].ToString();
                        SOHeader.ORDERTYPE = dtData.Rows[i]["OrderType"].ToString();
                        SOHeader.CONSIGNEEID = dtData.Rows[i]["ConsigneeID"].ToString();
                        SOHeader.CONSIGNEENAME = dtData.Rows[i]["ConsigneeName"].ToString();
                        SOHeader.c_ADDRESS1 = dtData.Rows[i]["C_Address1"].ToString();
                        SOHeader.ORDERTIME = Convert.ToDateTime(dtData.Rows[i]["OrderTime"]).ToString("yyyy-MM-dd HH:mm:ss");
                        SOHeader.h_EDI_01 = dtData.Rows[i]["H_EDI_01"].ToString();
                        SOHeader.h_EDI_02 = dtData.Rows[i]["H_EDI_02"].ToString();
                        SOHeader.h_EDI_03 = dtData.Rows[i]["H_EDI_03"].ToString();
                        SOHeader.h_EDI_04 = dtData.Rows[i]["H_EDI_04"].ToString();

                        //按照主表订单号和状态值获取子表信息
                        string strRequestid = dtData.Rows[i]["requestid"].ToString();
                        string strSQLSub = @"SELECT  b.NewID ,b.Timestamps ,b.requestid ,b.SOReference1 ,b.SKU ,b.QtyOrdered ,b.D_EDI_01 ,b.D_EDI_02 ,a.LotAtt05 ,a.LotAtt06
                                             FROM    PUT_DRPd_Sell a LEFT JOIN PUT_DRPd_Sellsub b ON b.SOReference1 = a.SOReference1 AND b.requestid = a.requestid
                                             WHERE  ISNULL(b.QtyOrdered, '') != '' and  a.SOReference1='" + dtData.Rows[i]["SOReference1"].ToString() + "' AND a.requestid='" + strRequestid + "'";
                        DataTable dtDataSub = m_conn.GetDataTable(strSQLSub);

                        SOHeader.detailsItem = new WMSWS.wmsSODetails[dtDataSub.Rows.Count];//定义子表行数
                        for (int j = 0; j < dtDataSub.Rows.Count; j++)
                        {
                            WMSWS.wmsSODetails SODetails = new WMSWS.wmsSODetails();
                            SODetails.SKU = dtDataSub.Rows[j]["SKU"].ToString();
                            SODetails.QTYORDERED = dtDataSub.Rows[j]["QtyOrdered"].ToString();
                            SODetails.LOTATT05 = dtDataSub.Rows[j]["LotAtt05"].ToString();
                            SODetails.LOTATT06 = dtDataSub.Rows[j]["LotAtt06"].ToString();
                            SODetails.d_EDI_01 = dtDataSub.Rows[j]["D_EDI_01"].ToString();
                            SODetails.d_EDI_02 = dtDataSub.Rows[j]["D_EDI_02"].ToString();
                            SOHeader.detailsItem[j] = SODetails;//把子表放入主表容器中
                        }
                        wmsSOInfo.wmsSOHeaders[i] = SOHeader;//把一个订单放入头文件中
                    }

                    ws.Timeout = 3600 * 1000;
                    WMSWS.wmsResultInfo resultInfo = ws.putSOData(wmsSecurityInfo, wmsSOInfo, wmsParamInfo);//传入接口
                    
                    HZY.COM.Common.Log.WirteLogWS(resultInfo.returnDesc, null);

                    //执行失败
                    if (resultInfo.returnDesc != "成功")
                    {
                        m_conn.RollbackTransaction();
                        return false;
                    }
                    else
                    {
                        string strSQLflag = @"
                            UPDATE [dbo].[PUT_DRPd_Sell]
                            SET WMSFlag=1
                            --WHERE EXISTS(SELECT 1 FROM #tmp WHERE #tmp.NewID = PUT_DRPd_Sell.newid)
                            Where requestid <='" + dtData.Rows[0]["requestid"].ToString() + @"'
                            DROP TABLE #tmp ";
                        m_conn.ExcuteQuerryByTran(strSQLflag, new object[] { });
                    }
                    // HZY.COM.Common.Log.WirteLogWS(resultInfo.returnDesc, null);

                }

                //事务提交 --注意:不能移动到每个方法里面,这里面的方法会有互相调用的情况
                m_conn.CommitTransaction();

            }
            catch (Exception ex)
            {
                m_conn.RollbackTransaction();
                HZY.COM.Common.Log.WirteLogWS(ex, null);

                throw ex;
            }

            return true;
        }