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) { } }
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); }
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) { } }