Example #1
0
        public static void CalcOutput(string output, string FWQ)
        {
            DataRow dr = m_outputdt.NewRow();

            try
            {
                List <DBItemInSale> lst_iteminsale = DBItemInSale.GetItemInSaleByName(output.Trim(), FWQ);
                if (lst_iteminsale.Count > 0)
                {
                    DBItemInSale iteminsale = lst_iteminsale[0];
                    DBItem       item       = DBItem.GetItemByName(output, FWQ);
                    float        profit     = iteminsale.avgprice - item.avgprice;
                    dr["name"]          = output;
                    dr["avgprice"]      = item.avgprice;
                    dr["lowprice"]      = item.lowprice;
                    dr["highprice"]     = item.highprice;
                    dr["updatetime"]    = item.updatetime;
                    dr["FWQ"]           = item.FWQ;
                    dr["num"]           = iteminsale.avgnum;
                    dr["avgsaleprice"]  = iteminsale.avgprice;
                    dr["avgprofit"]     = profit;
                    dr["avgprofitrate"] = profit / item.avgprice;
                    TimeSpan ts = new TimeSpan(0, m_manufacturingcycle, 0);
                    dr["manufacturingcycle"] = String.Format("{0}天", ts.Days);
                    m_outputdt.Rows.Add(dr);
                }
            }
            catch (Exception ex)
            {
            }
        }
Example #2
0
        public static int GetCostByName(string name, string FWQ)
        {
            int              cnt = 0;
            int              i = 0, t = 0;
            float            min_avgprice  = 0;
            float            min_refprice  = 0;
            float            min_lowprice  = 0;
            float            min_highprice = 0;
            DBItem           total_item    = new DBItem();
            DBItem           cur_item      = new DBItem();
            List <DBFormula> lst_formula   = DBFormula.GetFormulaByOutput(name.Trim());

            cnt = lst_formula.Count;
            if (cnt > 0)
            {
                for (i = 0; i < cnt; i++)
                {
                    GetCostByName(lst_formula[i].input, FWQ);
                }
                min_avgprice = UpdateItemFromInSale(name.Trim(), FWQ);     //首先参考拍卖行的价格

                for (t = 0; t < Constant.MAXFORMULATYPE; t++)
                {
                    total_item.avgprice  = 0;
                    total_item.refprice  = 0;
                    total_item.lowprice  = 0;
                    total_item.highprice = 0;
                    for (i = 0; i < cnt; i++)
                    {
                        if (lst_formula[i].type == t)  //统计配方中所有需要物品的最低参考价格
                        {
                            cur_item              = DBItem.GetItemByName(lst_formula[i].input, FWQ);
                            total_item.avgprice  += cur_item.avgprice * lst_formula[i].inputnum / lst_formula[i].outputnum;
                            total_item.refprice  += cur_item.refprice * lst_formula[i].inputnum / lst_formula[i].outputnum;
                            total_item.lowprice  += cur_item.lowprice * lst_formula[i].inputnum / lst_formula[i].outputnum;
                            total_item.highprice += cur_item.highprice * lst_formula[i].inputnum / lst_formula[i].outputnum;
                        }
                    }
                    if (min_avgprice > total_item.avgprice && total_item.avgprice != 0)     //从所有配方和拍卖行的价格比较出 最低价格
                    {
                        min_avgprice  = total_item.avgprice;
                        min_refprice  = total_item.refprice;
                        min_lowprice  = total_item.lowprice;
                        min_highprice = total_item.highprice;

                        DBItem.UpdateItem(name, min_avgprice, min_refprice, min_lowprice, min_highprice, System.DateTime.Now, FWQ, t);     //存最低价格
                    }
                }
            }
            else
            {
                //各种原材料直接将参考拍卖行的价格
                UpdateItemFromInSale(name.Trim(), FWQ);
            }

            return(cnt);
        }
Example #3
0
        private static void GetAllMaterial(string output, string FWQ, int num = 1)
        {
            DBItem item = DBItem.GetItemByName(output, FWQ);

            try
            {
                if (item.formula < Constant.FORMULAAH)
                {
                    List <DBFormula> lst_formula = DBFormula.GetFormulaByOutputAndType(output, item.formula);
                    foreach (DBFormula formula in lst_formula)
                    {
                        if (m_manufacturingcycle < formula.CDminite * num)
                        {
                            m_manufacturingcycle = formula.CDminite * num;
                        }

                        GetAllMaterial(formula.input, FWQ, formula.inputnum * num);
                    }
                }
                else if (item.formula == Constant.FORMULAAH || item.formula == Constant.FORMULANPC)
                {
                    Chart   crt = new Chart();
                    DataRow dr  = m_formuladt.NewRow();
                    dr["name"]       = item.name;
                    dr["avgprice"]   = item.avgprice;
                    dr["lowprice"]   = item.lowprice;
                    dr["highprice"]  = item.highprice;
                    dr["updatetime"] = item.updatetime;
                    dr["FWQ"]        = item.FWQ;
                    dr["num"]        = num;
                    dr["total"]      = item.avgprice * num;
                    m_formuladt.Rows.Add(dr);

                    crt.name  = item.name.Trim();
                    crt.value = item.avgprice * num;
                    m_charts.Add(crt);
                }
            }
            catch (Exception ex)
            {
            }
        }