public override Task <UploadReply> Upload(UploadRequest request, ServerCallContext context) { UploadReply result = new UploadReply(); try { Stream imageStream = new MemoryStream(request.File.ToByteArray()); Image originalImage = Image.FromStream(imageStream); List <Image> images = ImageFactory.CreateNewSizeImages(originalImage); SaveModel saveModel = new SaveModel() { Directory = request.Directory, FileName = request.FileName, Images = images, OriginalImage = originalImage }; var saveList = imageCollectionSaver.Save(saveModel); result.UploadPath = "upload/" + request.Directory + request.FileName; } catch (Exception ex) { result = new UploadReply() { ErrorMessage = ex.Message, HasError = true }; } return(Task.FromResult(result)); }
/// <summary> /// 双向流式上传数据包 /// </summary> /// <param name="stream"></param> /// <returns></returns> public async IAsyncEnumerable <UploadReply> Upload(IAsyncEnumerable <UploadRequest> stream) { await foreach (var request in stream) { Console.WriteLine(request); await Task.Delay(TimeSpan.FromSeconds(1)); var reply = new UploadReply { Index = request.Index, //模拟保存失败 ArchiveSuccess = (DateTime.Now.Second % 3 < 2), }; yield return(reply); } Console.WriteLine($"客户端关闭连接"); }
public Task <List <UploadReply> > UploadOpeningBills(List <UploadBillDetail> bills, long facilityId, long societyId, DateTime generatedDate) { var taskResult = Task.Run(async() => { using (var context = new DbContext()) { var result = new List <UploadReply>(); foreach (var bill in bills) { var reply = new UploadReply(); reply.Id = bill.SrNo; var sb = new StringBuilder(); if (string.IsNullOrEmpty(bill.FlatName)) { sb.Append(",FlatName"); } if (bill.Amount == 0) { sb.Append(",Amount"); } if (sb.Length > 0) { reply.IsSuccess = false; reply.Message = sb.ToString().Trim(','); result.Add(reply); continue; } var flat = context .Flats .FirstOrDefault(f => f.Name.Equals(bill.FlatName, StringComparison.InvariantCultureIgnoreCase) && f.Floor.FacilityId == facilityId); if (flat == null) { reply.IsSuccess = false; reply.Message = "Flat not found"; result.Add(reply); continue; } var flatowner = await _flatOwnerRepository.CurrentOwner(flat.Id); if (flatowner == null) { reply.IsSuccess = false; reply.Message = "Flat owner not found"; result.Add(reply); continue; } //---------------------------------------------------------------------------------// var billinglines = new List <BillingLine>(); var opening = new BillingLine(); opening.Definition = "Opening"; opening.Amount = bill.Amount; opening.BaseAmount = bill.Amount; opening.OnArea = null; billinglines.Add(opening); //get pending amount decimal pendingAmount = await GetPendingAmountForFlat(flat.Id); if (pendingAmount != 0) { var arrears = new BillingLine(); arrears.Definition = "Arrears"; arrears.Amount = pendingAmount; arrears.BaseAmount = pendingAmount; arrears.OnArea = null; billinglines.Add(arrears); } //---------------------------------------------------------------------------------// var max = context.Bills.Count(b => b.SocietyId == societyId) > 0 ? context.Bills.Where(b => b.SocietyId == societyId).Max(b => b.ReceiptNo) : 0; var item = new Bill(); item.Name = flatowner.Name; item.ReceiptNo = max + 1; item.Date = generatedDate; item.Amount = billinglines.Sum(b => b.Amount); item.Month = generatedDate.Month; item.Year = generatedDate.Year; item.FlatId = flat.Id; item.SocietyId = societyId; item.BillingLines = billinglines; item.Pending = pendingAmount; item.MonthlyAmount = item.Amount - item.Pending; item.BillType = (byte)EnBillType.Opening; item.Note = bill.Note; //add bill context.Bills.Add(item); context.SaveChanges(); reply.IsSuccess = true; reply.Message = "Done"; result.Add(reply); } return(result); } }); return(taskResult); }