Esempio n. 1
0
        public double GetRoyaltyByOrderMapping(DataJoin <ProductOrder, ProductOrderMapping> order)
        {
            double money = (double)(order.B.TotalMoney);

            switch (Level)
            {
            case 0:
                if (order.A.ShopId == UserId)
                {
                    return(money * 0.09);
                }
                else
                {
                    return(money * 0.01);
                }

            case 1:
                if (order.A.ShopId == UserId)
                {
                    return(money * 0.08);
                }
                else
                {
                    return(money * 0.02);
                }

            case 2:
                if (order.A.ShopId == UserId)
                {
                    return(money * 0.05);
                }
                else
                {
                    return(money * 0.01);
                }

            default: return(0.0);
            }
        }
Esempio n. 2
0
        public void ProcessRequest(HttpContext context)
        {
            m_da = new Accudata.Data.Agent.DataAccessAgent();

            JavaScriptSerializer serializer = new JavaScriptSerializer();

            context.Response.ContentType = "application/json";

            switch (context.Request.QueryString["Get"])
            {
            case "dataRevert":
                #region SQL
                var uda_d_column_sql = @"select DC.*,
                                                    NVL(SC.COLUMN_TITLE, SC.COLUMN_NAME) COLUMN_CNAME,
                                                    NVL(MST.TABLENAME_TITLE, MST.TABLE_NAME) AS TABLENAME_TITLE
                                            from 
                                            (
                                            select ver_no,
                                                    search_no,
                                                    database_name,
                                                    table_name,
                                                    column_name,
                                                    column_show_name,
                                                    columntype_code,
                                                    step_id,
                                                    column_seq,
                                                    is_select_fg,
                                                    is_show_fg
                                                from uda_d_column dc
                                                where search_no = '{0}'
                                                and (step_id, column_seq) not in
                                                    (select src_step_id, src_column_id
                                                        from UDA_D_AGGRECOLUMN
                                                        where search_no = '{0}')
                                            union all
                                            select dc.ver_no,
                                                    da.search_no,
                                                    dc.database_name,
                                                    dc.table_name,
                                                    dc.column_name,
                                                    da.aggregation_desc column_show_name,
                                                    da.columntype_code,
                                                    da.src_step_id step_id,
                                                    da.src_column_id column_seq,
                                                    'Y' is_select_fg,
                                                    'Y' is_show_fg
                                                from UDA_D_AGGRECOLUMN DA inner join uda_d_column dc on da.search_no = dc.search_no and da.src_step_id = dc.step_id and da.src_column_id = dc.column_seq
                                                where da.search_no = '{0}'
                                                order by step_id,column_seq
                                            ) DC
                                            LEFT JOIN UDA_D_SYSCOLUMN SC
                                                ON DC.VER_NO = SC.VER_NO
                                                AND DC.DATABASE_NAME = SC.DATABASE_NAME
                                                AND DC.TABLE_NAME = SC.TABLE_NAME
                                                AND DC.COLUMN_NAME = SC.COLUMN_NAME
                                                LEFT JOIN UDA_M_SYSTABLE MST
                                                ON SC.VER_NO = MST.VER_NO
                                                AND SC.DATABASE_NAME = MST.DATABASE_NAME
                                                AND SC.TABLE_NAME = MST.TABLE_NAME
                                        ";

                var uda_d_joincolumn_sql = @"SELECT DJC.*,
                                                       NVL(DCF.COLUMN_NAME, DOC.COLUMN_SHOW_NAME) F_COLUMN_NAME,
                                                       NVL(NVL(DCF.COLUMN_SHOW_NAME, DCF.COLUMN_NAME), DOC.COLUMN_SHOW_NAME) F_COLUMN_TITLE,
                                                       DCF.DATABASE_NAME F_DATABASE_NAME,
                                                       DCF.TABLE_NAME F_TABLE_NAME,
                                                       DCT.COLUMN_NAME T_COLUMN_NAME,
                                                       NVL(DCT.COLUMN_SHOW_NAME, DCT.COLUMN_NAME) T_COLUMN_TITLE,
                                                       DCT.DATABASE_NAME T_DATABASE_NAME,
                                                       DCT.TABLE_NAME T_TABLE_NAME
                                                  FROM UDA_D_JOINCOLUMN DJC
                                                  LEFT JOIN UDA_D_COLUMN DCF
                                                    ON DJC.SEARCH_NO = DCF.SEARCH_NO
                                                   AND DJC.JOIN_SOURCE_FROM = DCF.STEP_ID
                                                   AND DJC.JOIN_COLUMN_FROM = DCF.COLUMN_SEQ
                                                  LEFT JOIN UDA_D_COLUMN DCT
                                                    ON DJC.SEARCH_NO = DCT.SEARCH_NO
                                                   AND DJC.JOIN_SOURCE_TO = DCT.STEP_ID
                                                   AND DJC.JOIN_COLUMN_TO = DCT.COLUMN_SEQ
                                                  LEFT JOIN UDA_D_OUTCOLUMN DOC
                                                    ON DJC.SEARCH_NO = DOC.SEARCH_NO
                                                   AND DJC.JOIN_SOURCE_FROM = DOC.STEP_ID
                                                   AND DJC.JOIN_COLUMN_FROM = DOC.COLUMN_SEQ
                                                  LEFT JOIN UDA_D_OUTPUT DO
                                                    ON DOC.SEARCH_NO = DO.SEARCH_NO
                                                   AND DOC.STEP_ID = DO.STEP_ID
                                                 WHERE DJC.SEARCH_NO = '{0}'
                                                ";
                #endregion SQL

                string  search_no = context.Request.QueryString["searchNo"].ToString();
                DataSet dset      = m_da.GetDataSet(new SelectCommand[] {
                    new SelectCommand(string.Format(@"SELECT * FROM (SELECT 3 TYPE,STEP_ID,'UDA_D_AGGRATION' T_NAME FROM UDA_D_AGGRATION WHERE SEARCH_NO ='{0}' UNION ALL SELECT 1 TYPE,STEP_ID,'UDA_D_SOURCE' T_NAME FROM UDA_D_SOURCE WHERE SEARCH_NO ='{0}' UNION ALL SELECT 2 TYPE,STEP_ID,'UDA_D_JOIN' T_NAME FROM UDA_D_JOIN WHERE SEARCH_NO ='{0}' UNION ALL SELECT 4 TYPE,STEP_ID,'UDA_D_OUTPUT' T_NAME FROM UDA_D_OUTPUT WHERE SEARCH_NO ='{0}') ORDER BY STEP_ID", search_no), "SEARCH_STEP", m_connectionStringKey), //依定義編號取得流程順序
                    new SelectCommand(string.Format(@"SELECT * FROM UDA_M_SEARCH WHERE SEARCH_NO ='{0}'", search_no), "UDA_M_SEARCH", m_connectionStringKey),                                                                                                                                                                                                                                                                                                                                                                   //使用者查詢定義檔
                    new SelectCommand(string.Format(@"SELECT * FROM UDA_D_SOURCE WHERE SEARCH_NO ='{0}'", search_no), "UDA_D_SOURCE", m_connectionStringKey),                                                                                                                                                                                                                                                                                                                                                                   //定義來源檔
                    new SelectCommand(string.Format(uda_d_column_sql, search_no), "UDA_D_COLUMN", m_connectionStringKey),                                                                                                                                                                                                                                                                                                                                                                                                       //定義來源欄位檔
                    new SelectCommand(string.Format(@"SELECT * FROM UDA_D_AGGRATION WHERE SEARCH_NO ='{0}'", search_no), "UDA_D_AGGRATION", m_connectionStringKey),                                                                                                                                                                                                                                                                                                                                                             //定義聚合檔
                    new SelectCommand(string.Format(@"SELECT DAC.*, DC.COLUMN_NAME, DC.COLUMN_SHOW_NAME COLUMN_TITLE, DC.DATABASE_NAME, DC.TABLE_NAME FROM UDA_D_AGGRECOLUMN DAC INNER JOIN UDA_D_COLUMN DC ON DAC.SEARCH_NO = DC.SEARCH_NO AND DAC.SRC_STEP_ID = DC.STEP_ID AND DAC.SRC_COLUMN_ID = DC.COLUMN_SEQ WHERE DAC.SEARCH_NO ='{0}' ORDER BY DAC.SEARCH_NO, DAC.STEP_ID, DAC.AGGRE_SET_ID", search_no), "UDA_D_AGGRECOLUMN", m_connectionStringKey),                                                                  //定義聚合欄位檔
                    new SelectCommand(string.Format(@"SELECT * FROM UDA_D_JOIN WHERE SEARCH_NO ='{0}'", search_no), "UDA_D_JOIN", m_connectionStringKey),                                                                                                                                                                                                                                                                                                                                                                       //定義來源關聯檔
                    new SelectCommand(string.Format(uda_d_joincolumn_sql, search_no), "UDA_D_JOINCOLUMN", m_connectionStringKey),                                                                                                                                                                                                                                                                                                                                                                                               //定義來源欄位關聯檔
                    new SelectCommand(string.Format(@"SELECT * FROM UDA_D_CONDITION WHERE SEARCH_NO ='{0}'", search_no), "UDA_D_CONDITION", m_connectionStringKey),                                                                                                                                                                                                                                                                                                                                                             //定義來源篩選條件檔
                    new SelectCommand(string.Format(@"SELECT * FROM UDA_D_OUTPUT WHERE SEARCH_NO ='{0}'", search_no), "UDA_D_OUTPUT", m_connectionStringKey),                                                                                                                                                                                                                                                                                                                                                                   //定義輸出檔
                    new SelectCommand(string.Format(@"SELECT * FROM UDA_D_OUTCOLUMN WHERE SEARCH_NO ='{0}'", search_no), "UDA_D_OUTCOLUMN", m_connectionStringKey)                                                                                                                                                                                                                                                                                                                                                              //定義輸出欄位檔
                });

                DataTable dtSs = dset.Tables["SEARCH_STEP"];    //定義步驟
                DataTable dtMs = dset.Tables["UDA_M_SEARCH"];   //使用者查詢定義檔

                DataIGA dIGA = new DataIGA();
                dIGA.SearchNo   = dtMs.Rows[0]["SEARCH_NO"].ToString();
                dIGA.SearchName = dtMs.Rows[0]["SEARCH_NAME"].ToString();
                dIGA.Status     = int.Parse(dtMs.Rows[0]["STATUS"].ToString());

                foreach (DataRow dr in dtSs.Rows)
                {
                    DataRow drDT = dset.Tables[dr["T_NAME"].ToString()].AsEnumerable().Where(w => w["STEP_ID"].ToString() == dr["STEP_ID"].ToString()).FirstOrDefault();

                    switch (dr["TYPE"].ToString())
                    {
                    case "1":
                        DataSource ds = new DataSource();
                        ds.Step         = drDT["STEP_ID"].ToString();
                        ds.StepFeatures = "DataSRC";
                        ds.Name         = drDT["DATABASE_NAME"].ToString();
                        ds.TableName    = drDT["TABLE_NAME"].ToString();
                        ds.TableCName   = drDT["SOURCE_NAME"].ToString();
                        ds.VerNo        = drDT["VER_NO"].ToString();

                        foreach (DataRow drDc in dset.Tables["UDA_D_COLUMN"].AsEnumerable().Where(w => w["STEP_ID"].ToString() == dr["STEP_ID"].ToString()))
                        {
                            Column col = new Column();
                            col.CStep      = int.Parse(drDc["STEP_ID"].ToString());
                            col.Name       = drDc["COLUMN_NAME"].ToString();
                            col.CName      = drDc["COLUMN_CNAME"].ToString();
                            col.CType      = drDc["COLUMNTYPE_CODE"].ToString();
                            col.IsSelected = drDc["IS_SELECT_FG"].ToString();
                            col.IsShow     = drDc["IS_SHOW_FG"].ToString();
                            //col.DataSourceName = "";
                            col.ColumnSeq = int.Parse(drDc["COLUMN_SEQ"].ToString());
                            col.SRCStep   = drDc["STEP_ID"].ToString();

                            foreach (DataRow drDcd in dset.Tables["UDA_D_CONDITION"].AsEnumerable().Where(w => w["STEP_ID"].ToString() == dr["STEP_ID"].ToString() && w["COLUMN_SEQ"].ToString() == drDc["COLUMN_SEQ"].ToString()))
                            {
                                col.ConditionDefine = drDcd["COND_CODE"].ToString();
                                col.ConditionType   = drDcd["COND_TYPE"].ToString();
                                col.ConditionValue  = drDcd["COND_VALUE"].ToString();
                            }

                            ds.Columns.Add(col);
                        }

                        dIGA.Step.Add(ds);
                        break;

                    case "2":
                        DataJoin dj = new DataJoin();
                        dj.Step         = drDT["STEP_ID"].ToString();
                        dj.StepFeatures = "DataJoin";
                        dj.JoinType     = drDT["JOIN_TYPE"].ToString();

                        string step1 = Convert.ToString(int.Parse(drDT["STEP_ID"].ToString()) - 1);
                        string step2 = Convert.ToString(int.Parse(drDT["STEP_ID"].ToString()) - 2);

                        foreach (DataRow drShow in dset.Tables["UDA_D_COLUMN"].AsEnumerable())
                        {
                            Column colS = new Column();
                            colS.CStep = int.Parse(drShow["STEP_ID"].ToString());
                            colS.Name  = drShow["COLUMN_NAME"].ToString();
                            colS.CName = drShow["COLUMN_SHOW_NAME"].ToString();
                            colS.CType = drShow["COLUMNTYPE_CODE"].ToString();
                            //colS.ConditionDefine = "";
                            //colS.ConditionType = "";
                            //colS.ConditionValue = "";
                            colS.IsSelected     = drShow["IS_SELECT_FG"].ToString();
                            colS.IsShow         = drShow["IS_SHOW_FG"].ToString();
                            colS.DataSourceName = drShow["DATABASE_NAME"].ToString() + "." + drShow["TABLE_NAME"].ToString();
                            colS.ColumnSeq      = int.Parse(drShow["COLUMN_SEQ"].ToString());
                            //colS.SRCStep = "";
                            colS.DataSourceCName = drShow["TABLENAME_TITLE"].ToString();

                            dj.ShowColumns.Add(colS);
                        }

                        foreach (DataRow drJoin in dset.Tables["UDA_D_JOINCOLUMN"].AsEnumerable().Where(w => w["STEP_ID"].ToString() == dr["STEP_ID"].ToString()))
                        {
                            Column c1 = new Column();
                            Column c2 = new Column();
                            c1.CStep = int.Parse(drJoin["JOIN_SOURCE_FROM"].ToString());
                            c1.Name  = drJoin["F_COLUMN_NAME"].ToString();
                            c1.CName = drJoin["F_COLUMN_TITLE"].ToString();
                            //c1.CType = "";
                            //c1.ConditionDefine = "";
                            //c1.ConditionType = "";
                            //c1.ConditionValue = "";
                            c1.IsSelected = "Y";
                            //c1.IsShow = "";
                            c1.DataSourceName = drJoin["F_DATABASE_NAME"].ToString() + "." + drJoin["F_TABLE_NAME"].ToString();
                            c1.ColumnSeq      = int.Parse(drJoin["JOIN_COLUMN_FROM"].ToString());
                            //c1.SRCStep = "";

                            c2.CStep = int.Parse(drJoin["JOIN_SOURCE_TO"].ToString());
                            c2.Name  = drJoin["T_COLUMN_NAME"].ToString();
                            c2.CName = drJoin["T_COLUMN_TITLE"].ToString();
                            //c2.CType = "";
                            //c2.ConditionDefine = "";
                            //c2.ConditionType = "";
                            //c2.ConditionValue = "";
                            c2.IsSelected = "Y";
                            //c2.IsShow = "";
                            c2.DataSourceName = drJoin["T_DATABASE_NAME"].ToString() + "." + drJoin["T_TABLE_NAME"].ToString();
                            c2.ColumnSeq      = int.Parse(drJoin["JOIN_COLUMN_TO"].ToString());
                            //c2.SRCStep = "";

                            dj.JoinColumns.Add(new { f1 = c1, f2 = c2 });
                        }

                        dIGA.Step.Add(dj);
                        break;

                    case "3":
                        Customize cust = new Customize();
                        cust.Step         = drDT["STEP_ID"].ToString();
                        cust.StepFeatures = "Customize";

                        foreach (DataRow drDac in dset.Tables["UDA_D_AGGRECOLUMN"].AsEnumerable().Where(w => w["STEP_ID"].ToString() == dr["STEP_ID"].ToString()))
                        {
                            CustColumn cc = new CustColumn();
                            cc.CStep     = int.Parse(drDac["SRC_STEP_ID"].ToString());
                            cc.Name      = drDac["COLUMN_NAME"].ToString();
                            cc.CName     = drDac["COLUMN_TITLE"].ToString();
                            cc.CType     = drDac["COLUMNTYPE_CODE"].ToString();
                            cc.TableName = drDac["DATABASE_NAME"].ToString() + "." + drDac["TABLE_NAME"].ToString();
                            cc.CustType  = drDac["AGGREGATION_CODE"].ToString();
                            cc.UPDName   = drDac["AGGREGATION_DESC"].ToString();
                            cc.ColumnSeq = int.Parse(drDac["SRC_COLUMN_ID"].ToString());

                            cust.CustColumns.Add(cc);
                        }

                        dIGA.Step.Add(cust);
                        break;

                    case "4":
                        DataSource dsOP = new DataSource();
                        dsOP.Step         = drDT["STEP_ID"].ToString();
                        dsOP.StepFeatures = "Output";
                        dsOP.TableCName   = drDT["OUTPUT_NAME"].ToString();

                        foreach (DataRow drOp in dset.Tables["UDA_D_OUTCOLUMN"].AsEnumerable().Where(w => w["STEP_ID"].ToString() == dr["STEP_ID"].ToString()))
                        {
                            Column colOp = new Column();
                            colOp.CStep = int.Parse(drOp["STEP_ID"].ToString());
                            colOp.Name  = drOp["COLUMN_SHOW_NAME"].ToString();
                            colOp.CName = drOp["COLUMN_SHOW_NAME"].ToString();
                            colOp.CType = drOp["COLUMNTYPE_CODE"].ToString();
                            //colOp.ConditionDefine = "";
                            //colOp.ConditionType = "";
                            //colOp.ConditionValue = "";
                            colOp.IsSelected = drOp["IS_SELECT_FG"].ToString();
                            //colOp.IsShow = "";
                            //colOp.DataSourceName = "";
                            colOp.ColumnSeq = int.Parse(drOp["SRC_COLUMN_SEQ"].ToString());
                            colOp.SRCStep   = drOp["SRC_STEP_ID"].ToString();

                            dsOP.Columns.Add(colOp);
                        }

                        dIGA.Step.Add(dsOP);
                        break;
                    }
                }
                context.Response.Write(serializer.Serialize(dIGA));

                break;
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Procesa los datos
        /// </summary>
        /// <param name="data">Datos</param>
        /// <param name="caller">Item que lo llama</param>
        /// <param name="state">Estado de la enumeración</param>
        public void ProcessData(IData data, ITopologyItem caller, EEnumerableDataState state)
        {
            if (data == null)
            {
                return;
            }

            // Si tiene varios origenes de datos, se tiene que esperar a estan todos llenos
            IData jdata;

            if (_Data.Count > 1 && CallMethod != ECallMode.PeerCall)
            {
                // Esperamos a que el conjunto esperado esté disponible
                if (!_Data.SetData(data, caller) && CallMethod == ECallMode.WaitAll)
                {
                    return;
                }

                if (_IsBusy)
                {
                    return;
                }
                _IsBusy = true;

                // Los datos a devolver tienen que ser los del array
                jdata = new DataJoin(this, _Data.Items)
                {
                    HandledDispose = true
                };
            }
            else
            {
                if (_IsBusy)
                {
                    return;
                }
                _IsBusy = true;

                jdata = data;
            }

            // Procesa los datos
            RaiseOnProcess(EProcessState.PreProcess);

            IData ret;

            try
            {
                ret = OnProcessData(jdata, state);
            }
            catch (Exception e)
            {
                OnError(e);
                ret = null;
            }

            RaiseOnProcess(EProcessState.PostProcess);

            // Siempre que no sea null se reenvia a otros nodos
            if (ret != null && !(ret is DataBreak))
            {
                // Se los envia a otros procesadores
                Process.ProcessData(this, ret, UseParallel);

                // Liberación de recursos
                if (ret != data && !ret.HandledDispose)
                {
                    ret.Dispose();
                }
            }

            _IsBusy = false;
        }