Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        private decimal TryParseDecimal(string value)
        {
            if (string.IsNullOrEmpty(value))
            {
                return(0);
            }
            decimal _v;

            if (!decimal.TryParse(value, out _v))
            {
                PluploadHandler.WriteErrorMsg("输入格式错误");
            }
            return(_v);
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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());
        }