Пример #1
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);
        }