Exemple #1
0
        static void Main(string[] args)
        {
            var watch = new System.Diagnostics.Stopwatch();


            MatrixEntityBuilder builder = new MatrixEntityBuilder();
            MatrixEntity        m1      = builder.build(10000, 10000);
            MatrixEntity        m2      = builder.build(10000, 1);
            MatrixEntity        m3      = builder.build(1, 10000);

            for (int i = 0; i < 10; i++)
            {
                watch.Start();
                MatrixEntity res = m2.multy(m1);
                watch.Stop();
                Console.WriteLine($"Execution Time: {watch.ElapsedMilliseconds} ms");
                watch.Reset();
            }
            Console.WriteLine("---------------------------------");
            for (int i = 0; i < 10; i++)
            {
                watch.Start();
                MatrixEntity res = m1.multy(m3);
                watch.Stop();
                Console.WriteLine($"Execution Time: {watch.ElapsedMilliseconds} ms");
                watch.Reset();
            }
        }
        public async Task InsertAsync(Matrix matrix)
        {
            var entity = new MatrixEntity(matrix);
            await _storage.InsertAsync(entity);

            var blob = Mapper.Map <MatrixBlob>(matrix);
            await _blobRepository.SaveAsync(blob);
        }
        public async Task DeleteIfExistsAsync(string assetPair, DateTime dateTime)
        {
            var blobId = MatrixEntity.GenerateBlobId(assetPair, dateTime);

            if (await BlobExistsAsync(blobId))
            {
                await DeleteBlobAsync(blobId);
            }
        }
        public async Task <MatrixBlob> GetAsync(string assetPair, DateTime dateTime)
        {
            var blobId = MatrixEntity.GenerateBlobId(assetPair, dateTime);

            if (!await BlobExistsAsync(blobId))
            {
                return(null);
            }

            return((await GetBlobStringAsync(blobId)).DeserializeJson <MatrixBlob>());
        }
        public async Task <bool> DeleteAsync(string assetPair, DateTime dateTime)
        {
            var pkey   = MatrixEntity.GeneratePartitionKey(assetPair, dateTime);
            var rowkey = MatrixEntity.GenerateRowKey(dateTime);

            var result = await _storage.DeleteIfExistAsync(pkey, rowkey);

            await _blobRepository.DeleteIfExistsAsync(assetPair, dateTime);

            return(result);
        }
        private async Task <IEnumerable <MatrixEntity> > GetAsync(DateTime from, DateTime to)
        {
            var rowKeyFrom = MatrixEntity.GenerateRowKey(from);
            var rowKeyTo   = MatrixEntity.GenerateRowKey(to);

            var query = new TableQuery <MatrixEntity>();

            var rowkeyCondFrom = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThanOrEqual, rowKeyFrom);
            var rowkeyCondTo   = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThanOrEqual, rowKeyTo);
            var rowkeyFilter   = TableQuery.CombineFilters(rowkeyCondFrom, TableOperators.And, rowkeyCondTo);

            query.FilterString = rowkeyFilter;

            return(await _storage.WhereAsync(query));
        }
        /// <summary>
        /// Saves matrix instance to database with passed id.
        /// If database consists of passed id, method will update record with that id.
        /// </summary>
        /// <param name="id">Id of record.</param>
        public virtual void SaveToDb(string id)
        {
            var oldEntity = _db.Matrixes.FirstOrDefault(t => t.Id == id);

            if (oldEntity is not null)
            {
                oldEntity.Id = id;
                oldEntity.Stringify(Matrix);
            }
            else
            {
                var newEntity = new MatrixEntity(id, Matrix);
                _db.Matrixes.Add(newEntity);
            }
            _db.SaveChanges();
        }
        private async Task <IEnumerable <MatrixEntity> > GetAsync(string assetPair, DateTime from, DateTime to)
        {
            Debug.Assert(!string.IsNullOrWhiteSpace(assetPair));

            var pKeyFrom   = MatrixEntity.GeneratePartitionKey(assetPair, from);
            var pKeyTo     = MatrixEntity.GeneratePartitionKey(assetPair, to);
            var rowKeyFrom = MatrixEntity.GenerateRowKey(from);
            var rowKeyTo   = MatrixEntity.GenerateRowKey(to);

            var query = new TableQuery <MatrixEntity>();

            var pkeyCondFrom = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.GreaterThanOrEqual, pKeyFrom);
            var pkeyCondTo   = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.LessThanOrEqual, pKeyTo);
            var pkeyFilter   = TableQuery.CombineFilters(pkeyCondFrom, TableOperators.And, pkeyCondTo);

            var rowkeyCondFrom = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThanOrEqual, rowKeyFrom);
            var rowkeyCondTo   = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThanOrEqual, rowKeyTo);
            var rowkeyFilter   = TableQuery.CombineFilters(rowkeyCondFrom, TableOperators.And, rowkeyCondTo);

            query.FilterString = TableQuery.CombineFilters(pkeyFilter, TableOperators.And, rowkeyFilter);

            return(await _storage.WhereAsync(query));
        }
        public ActionResult SaveSetForm(MatrixEntity entity)
        {
            var    user   = OperatorProvider.Provider.Current();
            string isrole = "1";

            if (user.RoleName.Contains("厂级"))
            {
                isrole = "0";
            }

            if (!string.IsNullOrEmpty(entity.arrcontent))
            {
                var arrcontentlist = Newtonsoft.Json.JsonConvert.DeserializeObject <List <MatrixcontentEntity> >(entity.arrcontent);
                foreach (MatrixcontentEntity arrcontentinfo in arrcontentlist)
                {
                    MatrixcontentEntity en = matrixcontentbll.GetEntity(arrcontentinfo.ID);
                    if (en != null) //执行update
                    {
                        en.CONTENT = arrcontentinfo.CONTENT;
                        en.CODE    = arrcontentinfo.CODE;
                        en.ISROLE  = isrole;
                        matrixcontentbll.SaveForm(en.ID, en);
                    }
                    else // 新增
                    {
                        arrcontentinfo.ISROLE = isrole;
                        matrixcontentbll.SaveForm("", arrcontentinfo);
                    }
                }
            }

            if (!string.IsNullOrEmpty(entity.arrdept))
            {
                var arrdeptlist = Newtonsoft.Json.JsonConvert.DeserializeObject <List <MatrixdeptEntity> >(entity.arrdept);
                foreach (MatrixdeptEntity arrcondeptinfo in arrdeptlist)
                {
                    MatrixdeptEntity en = matrixdeptbll.GetEntity(arrcondeptinfo.ID);
                    if (en != null) //执行update
                    {
                        en.DEPTNAME = arrcondeptinfo.DEPTNAME;
                        en.DEPT     = arrcondeptinfo.DEPT;
                        en.DEPTCODE = arrcondeptinfo.DEPTCODE;
                        en.CODE     = arrcondeptinfo.CODE;
                        en.ISROLE   = isrole;
                        matrixdeptbll.SaveForm(en.ID, en);
                    }
                    else // 新增
                    {
                        arrcondeptinfo.ISROLE = isrole;
                        matrixdeptbll.SaveForm("", arrcondeptinfo);
                    }
                }
            }

            if (!string.IsNullOrEmpty(entity.delcontent))
            {
                var arr = entity.delcontent.Split(',');

                foreach (string ain in arr)
                {
                    matrixcontentbll.RemoveForm(ain);
                }
            }

            if (!string.IsNullOrEmpty(entity.deldept))
            {
                var arr = entity.deldept.Split(',');

                foreach (string ain in arr)
                {
                    matrixdeptbll.RemoveForm(ain);
                }
            }

            return(Success("操作成功。"));
        }
        public Task SaveAsync(MatrixBlob matrix)
        {
            var domain = Mapper.Map <Matrix>(matrix);

            return(SaveBlobAsync(MatrixEntity.GenerateBlobId(domain), matrix.ToJson()));
        }