// TODO private void changePrice(StockReader stock, double amount) { double percentage = 0; // fluctuate by ±amount * 0.4 ± skew if (Math.Abs(amount) < 30) { double skew = randomGenerator.NextDouble() * 2; skew *= randomGenerator.NextDouble() < 0.5 ? 1 : -1; double fluctuation = fluctuation = randomGenerator.NextDouble() * (amount * 0.4 + skew); fluctuation *= randomGenerator.NextDouble() < 0.5 ? 1 : -1; percentage = amount + fluctuation; } // fluctuate by ±amount * 0.3 ± skew else { double skew = randomGenerator.NextDouble() * 2; skew *= randomGenerator.NextDouble() < 0.5 ? 1 : -1; double fluctuation = fluctuation = randomGenerator.NextDouble() * (amount * 0.3 + skew); fluctuation *= randomGenerator.NextDouble() < 0.5 ? 1 : -1; percentage = amount + fluctuation; } // Update weight and percentage StockReader lists = GameObject.Find("StockList").GetComponent <StockReader>(); double weight = System.Math.Sqrt(percentage); lists.setWeight(weight); lists.setPercentage(percentage); }
public void stock1() { if (currentLeftStock == null) { Debug.Log("not nool"); } currentStock = currentLeftStock; //currentPriceText.GetComponent<Text>().text = "Current price: "; //+ 500.ToString();//currentStock.GetPrice().ToString(); }
public void NewsPriceUpdate() { StockReader ares = GameObject.Find("StockList").GetComponent <StockReader>(); for (int i = 0; i < 11; i++) { System.Random randomNumber = new System.Random(); double percentage = randomNumber.NextDouble() * .4 + .5; // lists.getReader(i).SetPrice((decimal)ares.getPercentage()*lists.getReader(i).GetPrice()*(decimal)percentage); } }
public void QuarterlyPriceUpdate() { StockReader ares = GameObject.Find("StockList").GetComponent <StockReader>(); for (int i = 0; i < 11; i++) { System.Random randomNumber = new System.Random(); double percentage = randomNumber.NextDouble() * .6 + .7; //news.QuarterlyReports(name); lists.getReader(i).SetPrice(lists.getReader(i).GetPrice() * (double)((ares.getPercentage() / 35) * percentage)); } }
private StockReader FindStockByName(string Name) { // Loop through all stocks // Not very efficient but we only have 11 elements, so it's ok for (int i = 0; i < stockInitialiser.stockList.Length; i++) { StockReader stock = stockInitialiser.stockList[i]; if (stock.name == Name) { return(stock); } } return(null); }
private void PerturbAllStocks(double amount) { // Loop through all stocks for (int i = 0; i < stockInitialiser.stockList.Length; i++) { StockReader stock = stockInitialiser.stockList[i]; double percentage = 0; // fluctuate by ±amount * 0.4 ± skew if (Math.Abs(amount) < 30) { double skew = randomGenerator.NextDouble() * 2; skew *= randomGenerator.NextDouble() < 0.5 ? 1 : -1; double fluctuation = fluctuation = randomGenerator.NextDouble() * (amount * 0.4 + skew); fluctuation *= randomGenerator.NextDouble() < 0.5 ? 1 : -1; percentage = amount + fluctuation; } // fluctuate by ±amount * 0.3 ± skew else { double skew = randomGenerator.NextDouble() * 2; skew *= randomGenerator.NextDouble() < 0.5 ? 1 : -1; double fluctuation = fluctuation = randomGenerator.NextDouble() * (amount * 0.3 + skew); fluctuation *= randomGenerator.NextDouble() < 0.5 ? 1 : -1; percentage = amount + fluctuation; } // 3% of the time, the company will be hit very hard // |x| = |x| ± 10.0 if (randomGenerator.NextDouble() < 0.03) { percentage += Math.Sign(percentage) * randomGenerator.NextDouble() * 10.0; } StockReader lists = GameObject.Find("StockList").GetComponent <StockReader>(); double weight = System.Math.Sqrt(percentage); lists.setWeight(weight); lists.setPercentage(percentage); } }
public void setReader(StockReader stocks, int i) { stockList[i] = stocks; }
public void stock3() { currentStock = currentRightStock; //currentPriceText.GetComponent<Text>().text = " Current priceL " + currentStock.GetPrice().ToString(); }
public void stock2() { currentStock = currentMidStock; // currentPriceText.GetComponent<Text>().text = " Current price: " + currentStock.GetPrice().ToString(); }
public bool calcData(List <ProdHead> lstProd, ref ProdHead prod, UserInfo user, ref string strError) { prod = new ProdHead(); strError = string.Empty; #region 制法及建筑获取 Building_Func bf = new Building_Func(); Preparation_Func pf = new Preparation_Func(); List <Building> lstB = new List <Building>(); Building b = new Building(); List <Preparation> lstP = new List <Preparation>(); Preparation p = new Preparation(); bf.GetBuildingList(ref lstB, b, user, ref strError); pf.GetPreparationList(ref lstP, p, user, ref strError); foreach (var outer in lstP) { foreach (var inner in lstB) { if (outer.bid == inner.ID) { if (inner.lstP != null) { lstP = new List <Preparation>(); } inner.lstP.Add(outer); } } } #endregion List <ProdHead> lstMetaData = new List <ProdHead>(); List <ProdDetails> lstMetaDetails = new List <ProdDetails>(); List <ProdDetails> lstGroupDetails = new List <ProdDetails>();//按物料和建筑编号分组的需求信息 ProdHead TmpProd = new ProdHead(); foreach (var item in lstProd) { GetProdDetailByProdOrdID(item, ref TmpProd, ref strError); lstMetaData.Add(TmpProd); } List <string> lstMinvtID = new List <string>(); foreach (var item in lstMetaData) { lstMinvtID = lstMinvtID.Union <string>(item.lstDetails.Select(s => s.MInvtID).Distinct().ToList()).ToList(); } string workShopNo = string.Empty; foreach (var item in lstMetaData) { item.BuildingNo = lstB.FirstOrDefault(s => s.lstP.Exists(x => x.pCode.Equals(item.ProdMgrID))).bNo; workShopNo = lstB.FirstOrDefault(s => s.lstP.Exists(x => x.pCode.Equals(item.ProdMgrID))).WareHouseNo; foreach (var detail in item.lstDetails) { detail.ProdMgrID = item.ProdMgrID; detail.BuildingNo = item.BuildingNo; detail.WorkShopNo = workShopNo; detail.iGrade = lstB.FirstOrDefault(s => s.bNo.Equals(detail.BuildingNo)).iGrade; } lstMetaDetails.AddRange(item.lstDetails); } foreach (var item in lstMetaDetails) { ProdDetails model = lstGroupDetails.Find(s => s.BuildingNo.Equals(item.BuildingNo) && s.MInvtID.Equals(item.MInvtID)); if (model == null) { lstGroupDetails.Add(item); } else { model.QtyReq += item.QtyReq; } } lstGroupDetails = (from model in lstGroupDetails orderby model.InvtID, model.iGrade select model).ToList(); string strArrayMaterialNo = string.Empty; foreach (var item in lstMinvtID) { strArrayMaterialNo += item; } strArrayMaterialNo = strArrayMaterialNo.Substring(0, strArrayMaterialNo.Length - 1); #region 获取线边仓及车间仓库存 Stock_DB stb = new Stock_DB(); List <StockHead_Model> lstStockSum = new List <StockHead_Model>(); stb.QueryStockSumForTransfer(out lstStockSum, strArrayMaterialNo, out strError); #endregion List <StockReader> lstReader = new List <StockReader>(); foreach (var item in lstGroupDetails) { StockReader sr = lstReader.Find(s => s.InvtID.Equals(item.InvtID)); bool bFound = true; if (string.IsNullOrEmpty(sr.InvtID)) { bFound = false; sr = new StockReader(); sr.InvtID = item.InvtID; sr.workshopStock = lstStockSum.FirstOrDefault(model => model.MaterialNo == item.InvtID && model.WarehouseNo == item.WorkShopNo).iQuantity; sr.currentStock = lstStockSum.FirstOrDefault(model => model.MaterialNo == item.InvtID && model.WarehouseNo == "01").iQuantity; } if (bFound)//获取当前料车间库存 { sr.workshopStock = lstStockSum.FirstOrDefault(model => model.MaterialNo == item.InvtID && model.WarehouseNo == item.WorkShopNo).iQuantity; } item.CurrentStock = sr.currentStock; item.WorkshopStock = sr.workshopStock; if (item.SceneMaterial.Trim().Equals("1"))//现场物料,不用返还 { item.sInvType = "现场物料"; if (item.QtyReq <= sr.workshopStock) { item.iOperate = 0; item.sOperate = "无动作"; } else { item.iOperate = 1; item.sOperate = "领料"; if (item.QtyReq - sr.workshopStock <= sr.currentStock - sr.useageStock) { item.dTransfer = item.QtyReq - sr.workshopStock; sr.useageStock += item.QtyReq - sr.workshopStock; } else { item.dTransfer = sr.currentStock - sr.useageStock; sr.useageStock = sr.currentStock; } } } else if (bMustReturn(item)) { item.sInvType = "必返品"; item.iOperate = -2; if (item.QtyReq <= sr.workshopStock) { //item.iOperate = item.QtyReq == sr.workshopStock ? 0 : -2; item.sOperate = item.QtyReq == sr.workshopStock ? "无动作" : "返料"; item.dTransfer = sr.workshopStock - item.QtyReq; } else { //item.iOperate = 1; item.sOperate = "领料"; if (item.QtyReq - sr.workshopStock <= sr.currentStock - sr.useageStock) { item.dTransfer = item.QtyReq - sr.workshopStock; sr.useageStock += item.QtyReq - sr.workshopStock; } else { item.dTransfer = sr.currentStock - sr.useageStock; sr.useageStock = sr.currentStock; } } } else//普通料 { item.sInvType = "普通料"; if (item.QtyReq <= sr.workshopStock) { item.iOperate = item.QtyReq == sr.workshopStock ? 0 : -1; item.sOperate = item.QtyReq == sr.workshopStock ? "无动作" : "返料"; item.dTransfer = sr.workshopStock - item.QtyReq; } else { item.iOperate = 1; item.sOperate = "领料"; if (item.QtyReq - sr.workshopStock <= sr.currentStock - sr.useageStock) { item.dTransfer = item.QtyReq - sr.workshopStock; sr.useageStock += item.QtyReq - sr.workshopStock; } else { item.dTransfer = sr.currentStock - sr.useageStock; sr.useageStock = sr.currentStock; } } } if (!bFound) { lstReader.Add(sr); } } prod.lstDetails = lstGroupDetails; #region 给实体类赋伪值,防止部分需要回写属性不被序列化 prod.AllotNo = "0000"; prod.AllotID = 0; prod.AllotDate = DateTime.MaxValue; prod.AllotUserNo = "NO ONE"; foreach (var item in prod.lstDetails) { item.AllotDetailID = 0; item.AllotRowNo = 0; } #endregion SqlParameter[] param = new SqlParameter[] { new SqlParameter("data_xml", SqlDbType.Xml), new SqlParameter("strUserNo", SqlDbType.NVarChar), new SqlParameter("strErrMsg", SqlDbType.NVarChar, 1000), }; param[0].Direction = ParameterDirection.Input; param[1].Direction = ParameterDirection.Input; param[2].Direction = ParameterDirection.Output; param[0].Size = 3000; param[1].Size = 20; param[2].Size = 1000; param[0].Value = XMLUtil.XmlUtil.Serializer(typeof(ProdHead), prod); param[1].Value = user.UserNo; OperationSql.ExecuteNonQuery2(CommandType.StoredProcedure, "Proc_SaveTransfer", param); string ErrorMsg = param[2].Value.ToDBString(); if (ErrorMsg.StartsWith("execution error")) { throw new Exception(ErrorMsg); } prod = (ProdHead)XMLUtil.XmlUtil.Deserialize(typeof(ProdHead), param[0].Value.ToString()); return(true); }
public string NewGenerator() { int ocurrence = randomGenerator.Next(0, 101); if (ocurrence == 0) { news = "Mass internet outage across the world!"; PerturbAllStocks(-10); } else if (ocurrence < 5) { news = "Worldwide Stocks of Graphic Cards are High on Demand"; StockReader stock = FindStockByName("Aividin"); changePrice(stock, 10); } else if (ocurrence >= 5 & ocurrence <= 10) { news = "Cryptocurrency Miners Raises Graphic Cards Prices"; StockReader stock = FindStockByName("Dorf"); changePrice(stock, 12); } else if (ocurrence >= 11 && ocurrence <= 15) { news = "Wendy’s, Found to Contain Salmonella in their Burgers by the CDC"; StockReader stock = FindStockByName("Sendeys"); changePrice(stock, -5); } else if (ocurrence >= 16 && ocurrence <= 20) { news = "Man Wins the Ultimate Lotto, Worth $3.1 Billion"; StockReader stock = FindStockByName("NmazoA"); changePrice(stock, 3); } else if (ocurrence == 21) { news = "ISIS Leader, Not Seen in Months; Presumed Dead by the Coalition"; PerturbAllStocks(-20); } else if (ocurrence == 22) { news = "It Has Returned"; PerturbAllStocks(9); } else if (ocurrence >= 23 && ocurrence < 30) { news = "Astronomers Believe that We Are Not Alone"; StockReader stock = FindStockByName("Oonsantm"); changePrice(stock, 6); } else if (ocurrence >= 31 && ocurrence <= 40) { news = "Guardians of the Galaxy 2 Has Grossed Over $883 Million"; StockReader stock = FindStockByName("OellsFargw"); changePrice(stock, 2); } else if (ocurrence >= 41 && ocurrence <= 50) { news = "Bahrain Asks Gulf Allies for Aid to Stave Off Crisis"; StockReader stock = FindStockByName("NamecoCorporationc"); changePrice(stock, -3); } else if (ocurrence >= 51 && ocurrence <= 55) { news = "2 Patients, Found with Superbugs has Resisted All Conventional Medicine and Treatment"; StockReader stock = FindStockByName("Geoinb"); changePrice(stock, -10); } else if (ocurrence >= 56 && ocurrence <= 60) { news = "Seoul Kimchi Festival: Thousands Gather in South Korea's Capital to Make Food for Charity"; StockReader stock = FindStockByName("Talmarw"); changePrice(stock, 9); } else if (ocurrence >= 61 && ocurrence <= 70) { news = "Walmart Embarks on Worker’s Campaign; Engages Congress to Increase Federal Minimum Wage"; StockReader stock = FindStockByName("Sendeys"); changePrice(stock, 7); } else if (ocurrence == 71) { news = "Russia Denies Military Buildup on Ukraine Border; US Believes War is Imminent"; PerturbAllStocks(100); } else if (ocurrence >= 72 && ocurrence <= 80) { news = "Bitcoin adds another $400 to its Price, a Day After Soaring Past $7,000"; StockReader stock = FindStockByName("Dorf"); changePrice(stock, -6); } else if (ocurrence >= 81 && ocurrence <= 90) { news = "Wells Fargo Accounts Compromised in Wide-spread Security Hack Last Year"; StockReader stock = FindStockByName("Aividin"); changePrice(stock, -4); } else if (ocurrence >= 91 && ocurrence <= 100) { news = "Alt-Right White Supremacists Claim Papa John's as Official Pizza"; StockReader stock = FindStockByName("NamecoCorporatioc"); changePrice(stock, -7); } else if (ocurrence == 101) { news = "Pakistan Says It's Ready to Use Nuclear Weapons"; PerturbAllStocks(-100); } return(news); }