public void ProcessRequest_Should_Save_File() { var reference = Guid.NewGuid().ToString(); var pluploadContextMock = new Mock<IPluploadContext>(); var httpPostedFileMock = new Mock<HttpPostedFileBase>(); var httpFileCollectionMock = new Mock<HttpFileCollectionBase>(); httpFileCollectionMock.SetupGet(c => c.AllKeys).Returns(new string[] { "FileName.Extension" }); httpFileCollectionMock.Setup(c => c.Get("FileName.Extension")).Returns(httpPostedFileMock.Object); httpFileCollectionMock.Setup(c => c.Get(0)).Returns(httpPostedFileMock.Object); httpFileCollectionMock.SetupGet(c => c[0]).Returns(httpPostedFileMock.Object); var httpRequestMock = new Mock<HttpRequestBase>(); httpRequestMock.SetupGet(r => r.Files).Returns(httpFileCollectionMock.Object); httpRequestMock.SetupGet(r => r.Params).Returns(new NameValueCollection() { { "reference", reference.ToString() } }); var httpResponseMock = new Mock<HttpResponseBase>(); var httpContextMock = new Mock<HttpContextBase>(); httpContextMock.SetupGet(c => c.Request).Returns(httpRequestMock.Object); httpContextMock.SetupGet(c => c.Response).Returns(httpResponseMock.Object); httpContextMock.SetupGet(c => c.Items).Returns(new ListDictionary()); httpContextMock.Object.SetPluploadContext(pluploadContextMock.Object); var handler = new PluploadHandler(); handler.ProcessRequest(httpContextMock.Object); pluploadContextMock.Verify(c => c.SaveFile(httpPostedFileMock.Object, reference), Times.Once); httpResponseMock.Verify(r => r.Write("OK"), Times.Once); }
private decimal TryParseDecimal(string value) { if (string.IsNullOrEmpty(value)) { return(0); } decimal _v; if (!decimal.TryParse(value, out _v)) { PluploadHandler.WriteErrorMsg("输入格式错误"); } return(_v); }
public IHttpActionResult UploadWriteOffTpl(string projectId, string flowTable) { var request = HttpContext.Current.Request; var fileCollection = request.Files; if (fileCollection.Count > 0) { _refId = GetRefId(projectId, flowTable); if (_refId.HasValue) { var file = fileCollection[0]; var templateFileName = string.Concat(SiteFilePath.Template_DIRECTORY, "/", SiteFilePath.FAWrite_offTool_Template_X); var fileExtension = Path.GetExtension(file.FileName); if (fileExtension != ".xls" && fileExtension != ".xlsx") { PluploadHandler.WriteErrorMsg("文件类型不正确!"); } if (!ExcelHelper.MatchVersionNumber(templateFileName, file.InputStream)) { PluploadHandler.WriteErrorMsg("上传的是非标准模板,请下载标准模板再上传"); //throw new Exception("上传的是非标准模板,请下载标准模板再上传"); } var name = _refId.Value.ToString() + "WriteOff"; var fileName = string.Format(@"{0}UploadFiles/{1}{2}", HttpContext.Current.Server.MapPath("~/"), name, fileExtension); file.SaveAs(fileName); var fileInfo = new FileInfo(fileName); var importDirector = new ExcelDataImportDirector(fileInfo, ExcelDataImportType.WriteOffAmount); importDirector.FillEntityEvent += FillWriteOffAmount; using (var scope = new TransactionScope()) { importDirector.ParseAndImport(); AddUpdateAttachment(name + fileExtension, flowTable, "WriteOff", fileCollection); scope.Complete(); } } } return(Ok()); }
private decimal GetDecimalValue(ExcelDataImportDirector excel, int row, string column) { //历史版本从0开始,这里+1修正 var str = excel.GetCellValue(row + 1, column); decimal result = 0; try { if (str != null) { result = decimal.Parse(str); } } catch { PluploadHandler.WriteErrorMsg("Sheet(PMT)中第" + (row + 1) + "行数据格式有误,只能输入数字类型的数据!"); } return(result); }
public IHttpActionResult UploadTemplate(string projectid) { HttpRequest request = System.Web.HttpContext.Current.Request; HttpFileCollection FileCollect = request.Files; string resultStr = string.Empty; string internalName = string.Empty; ClosureConsInvtChecking woEntity = null; bool isNew = false; if (FileCollect.Count > 0) //如果集合的数量大于0 { //用key获取单个文件对象HttpPostedFile HttpPostedFile fileSave = FileCollect[0]; string fileName = Path.GetFileName(fileSave.FileName); string fileExtension = Path.GetExtension(fileSave.FileName); var current = System.Web.HttpContext.Current; internalName = Guid.NewGuid() + fileExtension; string filePath = current.Server.MapPath("~/") + "UploadFiles\\" + internalName; //通过此对象获取文件名 fileSave.SaveAs(filePath); string column = "E"; woEntity = ClosureConsInvtChecking.Get(projectid); var fileInfo = new FileInfo(filePath); //验证上传EXCEL版本 var vn = ExcelHelper.GetExcelVersionNumber(filePath); if (vn != ConsInvtCheckingVersion) { PluploadHandler.WriteErrorMsg("上传附件版本号不一致"); } var importDirector = new ExcelDataImportDirector(fileInfo, ExcelDataImportType.ClosureWOCheckList); if (woEntity == null) { isNew = true; woEntity = new ClosureConsInvtChecking(); woEntity.ProjectId = projectid; woEntity.Id = Guid.NewGuid(); woEntity.CreateTime = DateTime.Now; woEntity.CreateUserAccount = ClientCookie.UserCode; woEntity.IsHistory = false; } woEntity.TotalOriginalBudget = GetDecimalValue(importDirector, 16, column); woEntity.TotalNBVBudget = GetDecimalValue(importDirector, 17, column); woEntity.TotalWriteoffBudget = GetDecimalValue(importDirector, 18, column); var woCheckList = ClosureWOCheckList.Get(projectid); if (woCheckList != null) { if (!EqualValue(woCheckList.TotalCost_Original, woEntity.TotalOriginalBudget)) { PluploadHandler.WriteErrorMsg("Total Budget 数据验证不通过,请检查后重试!"); } if (!EqualValue(woCheckList.TotalCost_NBV, woEntity.TotalNBVBudget)) { PluploadHandler.WriteErrorMsg("Total NBV(Closure Data) 数据验证不通过,请检查后重试!"); } if (!EqualValue(woCheckList.TotalCost_WriteOFF, woEntity.TotalWriteoffBudget)) { PluploadHandler.WriteErrorMsg("Total Write off 数据验证不通过,请检查后重试!"); } } woEntity.RECostBudget = GetDecimalValue(importDirector, 19, column); woEntity.LHIBudget = GetDecimalValue(importDirector, 20, column); woEntity.ESSDBudget = GetDecimalValue(importDirector, 21, column); woEntity.EquipmentBudget = GetDecimalValue(importDirector, 22, column); woEntity.SignageBudget = GetDecimalValue(importDirector, 23, column); woEntity.SeatingBudget = GetDecimalValue(importDirector, 24, column); woEntity.DecorationBudget = GetDecimalValue(importDirector, 25, column); woEntity.ClosingCostBudegt = GetDecimalValue(importDirector, 26, column); woEntity.ClosingCostActual = GetDecimalValue(importDirector, 27, column); woEntity.TotalActual = GetDecimalValue(importDirector, 28, column); woEntity.RECostActual = GetDecimalValue(importDirector, 29, column); woEntity.LHIActual = GetDecimalValue(importDirector, 30, column); woEntity.EquipmentActual = GetDecimalValue(importDirector, 31, column); woEntity.SignageActual = GetDecimalValue(importDirector, 32, column); woEntity.SeatingActual = GetDecimalValue(importDirector, 33, column); woEntity.DecorationActual = GetDecimalValue(importDirector, 34, column); woEntity.RECostVsBudget = GetDecimalValue(importDirector, 35, column); woEntity.LHIWOVsBudget = GetDecimalValue(importDirector, 36, column); woEntity.ESSDWOVsBudget = GetDecimalValue(importDirector, 37, column); woEntity.TTLWOVsBudget = GetDecimalValue(importDirector, 38, column); woEntity.REExplanation = GetStringValue(importDirector, 39, column); woEntity.LHIExplanation = GetStringValue(importDirector, 40, column); woEntity.ESSDExplanation = GetStringValue(importDirector, 41, column); woEntity.TotalExplanation = GetStringValue(importDirector, 42, column); Attachment att = Attachment.GetAttachment("ClosureConsInvtChecking", woEntity.Id.ToString(), "Template"); if (att == null) { att = new Attachment(); att.ID = Guid.NewGuid(); att.TypeCode = "Template"; att.RefTableName = ClosureConsInvtChecking.TableName; att.RefTableID = woEntity.Id.ToString(); att.RelativePath = "//"; } att.InternalName = internalName; att.Name = fileName; att.Extension = fileExtension; att.Length = FileCollect[0].ContentLength; att.CreateTime = DateTime.Now; att.CreatorID = ClientCookie.UserCode; att.CreatorNameENUS = ClientCookie.UserNameENUS; att.CreatorNameZHCN = ClientCookie.UserNameZHCN; Attachment.SaveSigleFile(att); var currentNode = NodeInfo.GetCurrentNode(projectid, FlowCode.Closure_ConsInvtChecking); var newNode = NodeInfo.GetNodeInfo(NodeCode.Closure_ConsInvtChecking_ResultUpload); if (newNode.Sequence > currentNode.Sequence) { ProjectInfo.FinishNode(projectid, FlowCode.Closure_ConsInvtChecking, NodeCode.Closure_ConsInvtChecking_DownLoadTemplate); ProjectInfo.FinishNode(projectid, FlowCode.Closure_ConsInvtChecking, NodeCode.Closure_ConsInvtChecking_WriteOffData); ProjectInfo.FinishNode(projectid, FlowCode.Closure_ConsInvtChecking, NodeCode.Closure_ConsInvtChecking_ResultUpload); } if (isNew) { ClosureConsInvtChecking.Add(woEntity); } else { ClosureConsInvtChecking.Update(woEntity); } } return(Ok(woEntity)); }
public IHttpActionResult UploadClosureWOCheckListTemplate(string projectid) { var request = HttpContext.Current.Request; var fileCollection = request.Files; if (fileCollection.Count > 0) { _refId = GetRefId(projectid, ClosureWOCheckList.TableName); if (_refId.HasValue) { var file = fileCollection[0]; var fileExtension = Path.GetExtension(file.FileName); var name = _refId.Value.ToString() + "WriteOff"; var fileName = string.Format(@"{0}UploadFiles/{1}{2}", HttpContext.Current.Server.MapPath("~/"), name, fileExtension); file.SaveAs(fileName); if (!IsMeetVersion(ExcelDataInputType.ClosureWOCheckList.ToString(), fileName)) { PluploadHandler.WriteErrorMsg("上传的是非标准模板,请下载标准模板再上传"); } var fileInfo = new FileInfo(fileName); var importDirector = new ExcelDataImportDirector(fileInfo, ExcelDataImportType.ClosureWOCheckList); decimal RE_NBV = 0; decimal.TryParse(importDirector.GetCellValue(9, "E"), out RE_NBV); decimal LHI_NBV = 0; decimal.TryParse(importDirector.GetCellValue(10, "E"), out LHI_NBV); decimal ESSD_NBV = 0; decimal.TryParse(importDirector.GetCellValue(11, "E"), out ESSD_NBV); decimal Equipment_Transfer = 0; decimal.TryParse(importDirector.GetCellValue(16, "E"), out Equipment_Transfer); importDirector.FillEntityEvent += FillClosureWOCheckList; using (TransactionScope scope = new TransactionScope()) { importDirector.ParseAndImport(); AddUpdateAttachment(name + fileExtension, ClosureWOCheckList.TableName, "Template", fileCollection); var currentNode = NodeInfo.GetCurrentNode(projectid, FlowCode.Closure_WOCheckList); var newNode = NodeInfo.GetNodeInfo(NodeCode.Closure_WOCheckList_ResultUpload); if (newNode.Sequence > currentNode.Sequence) { ProjectInfo.FinishNode(projectid, FlowCode.Closure_WOCheckList, NodeCode.Closure_WOCheckList_DownLoadTemplate); ProjectInfo.FinishNode(projectid, FlowCode.Closure_WOCheckList, NodeCode.Closure_WOCheckList_WriteOffData); ProjectInfo.FinishNode(projectid, FlowCode.Closure_WOCheckList, NodeCode.Closure_WOCheckList_ResultUpload); } scope.Complete(); } if (_woCheckList != null) { var closureToolHandler = new ClosureTool(); var oldRE_NBV = _woCheckList.RE_NBV ?? 0; var oldLHI_NBV = _woCheckList.LHI_NBV ?? 0; var oldESSD_NBV = _woCheckList.ESSD_NBV ?? 0; var oldEquipmentTransfer = _woCheckList.EquipmentTransfer ?? 0; if ((RE_NBV != oldRE_NBV) || (LHI_NBV != oldLHI_NBV) || (ESSD_NBV != oldESSD_NBV) || (Equipment_Transfer != oldEquipmentTransfer)) { var __woCheckList = ClosureWOCheckList.FirstOrDefault(e => e.Id.ToString().Equals(_woCheckList.Id.ToString())); if (__woCheckList != null) { __woCheckList.RefreshClosureTool = true; __woCheckList.Update(); } //var closureToolController = new ClosureToolController(); //var toolEntity = ClosureTool.Get(projectid); //if (toolEntity != null) //{ // //判断是否满足生成closureTools的条件 // if (toolEntity.EnableReGenClosureTool()) // { // closureToolController.GenClosureTool(toolEntity.Id, toolEntity.UserAccount, toolEntity.UserNameZHCN, toolEntity.UserNameENUS); // closureToolController.CallClosureTool(toolEntity.Id); // //通知Finance Specialist和Asset Actor // var closureInfo = ClosureInfo.FirstOrDefault(i => i.ProjectId == projectid); // List<string> receiverList = new List<string>(); // receiverList.Add(closureInfo.AssetActorAccount); // receiverList.Add(closureInfo.FinanceAccount); // var notificationMsg = new NotificationMsg() // { // FlowCode = FlowCode.Closure_WOCheckList, // ProjectId = projectid, // SenderCode = ClientCookie.UserCode, // Title = "由于WO Tool数据发生变化,Closure Tool文件已自动更新", // RefId = _woCheckList.Id, // UsCode = _woCheckList.USCode, // IsSendEmail = false, // ReceiverCodeList = receiverList // }; // Notification.Send(notificationMsg); // } //} } } } } return(Ok()); }