public JsonResult UpgradeBOQ(string ContractInfoID) { string contractInfoID = this.GetQueryString("ContractInfoID"); var contractInfo = this.GetEntityByID <S_P_ContractInfo>(contractInfoID); if (contractInfo == null) { throw new Formula.Exceptions.BusinessValidationException("没有找到指定的分包合同信息"); } var versionQuery = entities.Set <S_C_BOQ_Version>().Where(a => a.ContractInfoID == contractInfoID); if (versionQuery.Count(c => c.FlowPhase != "End") > 0) { throw new Formula.Exceptions.BusinessValidationException("尚存在未发布的BOQ清单数据,无法再次升版"); } var userInfo = FormulaHelper.GetUserInfo(); string bomVersionPhase = BomVersionPhase.设计版本.ToString(); var lastVersion = versionQuery.Where(c => c.FlowPhase == "End" && c.BOQType == bomVersionPhase). OrderByDescending(c => c.ID).FirstOrDefault(); var newVersion = new S_C_BOQ_Version(); newVersion.ID = FormulaHelper.CreateGuid(); newVersion.CreateDate = DateTime.Now; newVersion.EngineeringInfoID = contractInfo.EngineeringInfoID; newVersion.CreateUser = userInfo.UserName; newVersion.CreateUserID = userInfo.UserID; newVersion.ContractInfoID = contractInfo.ID; newVersion.FlowPhase = "Start"; newVersion.FlowInfo = ""; if (lastVersion != null) { //var versionNum = String.IsNullOrEmpty(lastVersion.VersionNumber) || !Regex.IsMatch(lastVersion.VersionNumber, @"[1-9]\d*$") ? 0 : // Convert.ToInt32(lastVersion.VersionNumber); var versionNum = lastVersion.VersionNumber; newVersion.VersionNumber = versionNum + 1; var list = entities.Set <S_C_BOQ_Version_Detail>().Where(c => c.ModifyState != "Remove" && c.VersionID == lastVersion.ID).ToList(); foreach (var item in list) { var detail = item.Clone <S_C_BOQ_Version_Detail>(); detail.ModifyState = "Normal"; detail.VersionID = newVersion.ID; entities.Set <S_C_BOQ_Version_Detail>().Add(detail); } } else { newVersion.VersionNumber = 1; } newVersion.VersionName = "第【" + newVersion.VersionNumber + "】版分包合同清单"; newVersion.BOQType = BomVersionPhase.设计版本.ToString(); entities.Set <S_C_BOQ_Version>().Add(newVersion); entities.SaveChanges(); return(Json("")); }
public JsonResult StandardImport(string listData) { var vID = GetQueryString("VersionID"); S_C_BOQ_Version version = entities.Set <S_C_BOQ_Version>().Find(vID); if (version == null) { throw new Formula.Exceptions.BusinessValidationException("未找到ID为" + vID + "的S_C_BOQ_Version"); } List <Dictionary <string, object> > dics = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(listData); var details = this.entities.Set <S_C_BOQ_Version_Detail>().Where(a => a.VersionID == vID).ToList(); var maxindex = details.Count() == 0 ? 0 : details.Max(a => a.SortIndex); foreach (var item in dics) { S_C_BOQ_Version_Detail detail = new S_C_BOQ_Version_Detail(); detail.ID = FormulaHelper.CreateGuid(); detail.BOQID = detail.ID; detail.VersionID = version.ID; string code = item.GetValue("Code"); //if (entities.Set<S_C_BOQ_Version_Detail>() // .Any(a => a.Code == code)) //{ // throw new Formula.Exceptions.BusinessValidationException("编号【" + code + "】重复"); //} detail.Code = code; detail.Name = item.GetValue("Name"); detail.Property = item.GetValue("Property"); detail.Unit = item.GetValue("Unit"); detail.Quantity = 0; detail.Price = 0; detail.UnitPrice = 0; detail.Remark = item.GetValue("Remark"); detail.CreateDate = DateTime.Now; detail.CreateUserID = CurrentUserInfo.UserID; detail.CreateUser = CurrentUserInfo.UserName; detail.ModifyState = "Add"; detail.SortIndex = maxindex + 0.001; maxindex = detail.SortIndex; entities.Set <S_C_BOQ_Version_Detail>().Add(detail); } entities.SaveChanges(); return(Json("")); }
public JsonResult GetBOQSummary(string ContractInfoID, QueryBuilder qb) { S_C_BOQ_Version zeroVersion = EPCEntites.Set <S_C_BOQ_Version>().Where(a => a.ContractInfoID == ContractInfoID).OrderBy(a => a.VersionNumber).FirstOrDefault(); string zeroVersionID = ""; if (zeroVersion != null) { zeroVersionID = zeroVersion.ID; } var zeroVersionDetail = EPCEntites.Set <S_C_BOQ_Version_Detail>().Where(a => a.VersionID == zeroVersionID); var resultQuery = (from a in EPCEntites.Set <S_C_BOQ>().Where(a => a.ContractInfoID == ContractInfoID) join b in zeroVersionDetail on a.ID equals b.BOQID into abR from ab in abR.DefaultIfEmpty() select new { ID = a.ID, Name = a.Name, Code = a.Code, Property = a.Property, Unit = a.Unit, //终版本 UnitPrice = a.UnitPrice, Quantity = a.Quantity, Price = a.UnitPrice * a.Quantity, //0版 ZeroUnitPrice = ab.UnitPrice ?? 0, ZeroQuantity = ab.Quantity ?? 0, ZeroPrice = (ab.UnitPrice ?? 0) * (ab.Quantity ?? 0), //累计变更 UnitPriceDelta = a.UnitPrice - (ab.UnitPrice ?? 0), QuantityDelta = a.Quantity - (ab.Quantity ?? 0), PriceDelta = a.UnitPrice * a.Quantity - (ab.UnitPrice ?? 0) * (ab.Quantity ?? 0), //已计量根据计量单 CheckQuantityTotal = a.CheckQuantityTotal ?? 0, //已计合价根据计价单 CheckPriceTotal = a.CheckPriceTotal ?? 0, Percent = Math.Round((decimal)((a.UnitPrice * a.Quantity ?? 0) == 0 ? 0 : (a.CheckPriceTotal ?? 0) / (a.UnitPrice * a.Quantity) * 100), 2) }).Where(qb); return(Json(resultQuery.ToList())); }
public JsonResult SaveExcelData() { var reader = new System.IO.StreamReader(HttpContext.Request.InputStream); string data = reader.ReadToEnd(); var tempdata = JsonConvert.DeserializeObject <Dictionary <string, string> >(data); var list = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(tempdata["data"]); var vID = GetQueryString("VersionID"); S_C_BOQ_Version version = entities.Set <S_C_BOQ_Version>().Find(vID); if (version == null) { throw new Formula.Exceptions.BusinessValidationException("未找到ID为" + vID + "的S_C_BOQ_Version"); } var groups = list.GroupBy(a => a.GetValue("Code")).Select(g => new { g.Key, Counts = g.Count() }).ToList(); if (groups.Count(a => a.Counts > 1) > 0) { throw new Formula.Exceptions.BusinessValidationException("编号【" + groups.FirstOrDefault(a => a.Counts > 1).Key + "】重复"); } var details = this.entities.Set <S_C_BOQ_Version_Detail>().Where(a => a.VersionID == vID).ToList(); var maxindex = details.Count() == 0 ? 0 : details.Max(a => a.SortIndex); foreach (var item in list) { string code = item.GetValue("Code"); if (entities.Set <S_C_BOQ_Version_Detail>() .Any(a => a.Code == code)) { throw new Formula.Exceptions.BusinessValidationException("编号【" + item.GetValue("Code") + "】重复"); } S_C_BOQ_Version_Detail detail = new S_C_BOQ_Version_Detail(); detail.ID = FormulaHelper.CreateGuid(); detail.BOQID = detail.ID; detail.VersionID = version.ID; detail.Code = item.GetValue("Code"); detail.Name = item.GetValue("Name"); detail.Property = item.GetValue("Property"); detail.Unit = item.GetValue("Unit"); decimal tmp = 0; if (decimal.TryParse(item.GetValue("UnitPrice"), out tmp)) { detail.UnitPrice = tmp; } if (decimal.TryParse(item.GetValue("Quantity"), out tmp)) { detail.Quantity = tmp; } if (decimal.TryParse(item.GetValue("Price"), out tmp)) { detail.Price = tmp; } else { detail.Price = detail.UnitPrice * detail.Quantity; } detail.Remark = item.GetValue("Remark"); detail.CreateDate = DateTime.Now; detail.CreateUserID = CurrentUserInfo.UserID; detail.CreateUser = CurrentUserInfo.UserName; detail.ModifyState = "Add"; detail.SortIndex = maxindex + 0.001; maxindex = detail.SortIndex; entities.Set <S_C_BOQ_Version_Detail>().Add(detail); } entities.SaveChanges(); return(Json("Success")); }
public JsonResult ValidateData() { var reader = new System.IO.StreamReader(HttpContext.Request.InputStream); string data = reader.ReadToEnd(); var tempdata = JsonConvert.DeserializeObject <Dictionary <string, string> >(data); var excelData = JsonConvert.DeserializeObject <ExcelData>(tempdata["data"]); var vID = GetQueryString("VersionID"); S_C_BOQ_Version quantity = entities.Set <S_C_BOQ_Version>().Find(vID); if (quantity == null) { throw new Formula.Exceptions.BusinessValidationException("未找到ID为" + vID + "的S_C_BOQ_Version"); } List <string> tmpCodes = new List <string>(); var errors = excelData.Vaildate(e => { if (e.FieldName == "Code") { if (String.IsNullOrEmpty(e.Value)) { e.IsValid = false; e.ErrorText = "清单编号不能为空"; } else if (tmpCodes.Contains(e.Value)) { e.IsValid = false; e.ErrorText = "excel表中清单编号重复"; } else if (entities.Set <S_C_BOQ_Version_Detail>().Any(a => a.VersionID == vID && a.Code == e.Value)) { e.IsValid = false; e.ErrorText = "清单编号已存在"; } else { tmpCodes.Add(e.Value); } } else if (e.FieldName == "Name" && String.IsNullOrEmpty(e.Value)) { e.IsValid = false; e.ErrorText = "名称不能为空"; } else if (e.FieldName == "UnitPrice") { decimal tmp = 0; if (!String.IsNullOrEmpty(e.Value) && !decimal.TryParse(e.Value, out tmp)) { e.IsValid = false; e.ErrorText = "单价格式不对"; } } else if (e.FieldName == "Quantity") { decimal tmp = 0; if (!String.IsNullOrEmpty(e.Value) && !decimal.TryParse(e.Value, out tmp)) { e.IsValid = false; e.ErrorText = "数量格式不对"; } } else if (e.FieldName == "Price") { decimal tmp = 0; if (!String.IsNullOrEmpty(e.Value) && !decimal.TryParse(e.Value, out tmp)) { e.IsValid = false; e.ErrorText = "合价格式不对"; } } }); return(Json(errors)); }