示例#1
0
    // 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);
    }
示例#2
0
 public void stock1()
 {
     if (currentLeftStock == null)
     {
         Debug.Log("not nool");
     }
     currentStock = currentLeftStock;
     //currentPriceText.GetComponent<Text>().text = "Current price: "; //+ 500.ToString();//currentStock.GetPrice().ToString();
 }
示例#3
0
    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);
        }
    }
示例#4
0
    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));
        }
    }
示例#5
0
 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);
 }
示例#6
0
    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);
        }
    }
示例#7
0
 public void setReader(StockReader stocks, int i)
 {
     stockList[i] = stocks;
 }
示例#8
0
 public void stock3()
 {
     currentStock = currentRightStock;
     //currentPriceText.GetComponent<Text>().text = " Current priceL " + currentStock.GetPrice().ToString();
 }
示例#9
0
 public void stock2()
 {
     currentStock = currentMidStock;
     // currentPriceText.GetComponent<Text>().text = " Current price: " + currentStock.GetPrice().ToString();
 }
示例#10
0
        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);
        }
示例#11
0
    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);
    }