/// <summary> /// 导入桥架基本信息 /// </summary> /// <param name="enView"></param> public void Insert(ConstantView enView) { var addrUrl = _hostingEnvironment.WebRootPath + "/upload/" + enView.Path; Workbook wb = new Workbook(addrUrl); var sheet = wb.Worksheets[0]; List <BridgeConstant> list = new List <BridgeConstant>(); var plotRatioall = _plotRatioRepository.GetAll().ToList(); List <string> meassages = new List <string>(); for (int i = 2; i < sheet.Cells.MaxRow + 1; i++) { var cells = sheet.Cells; BridgeConstant entity = new BridgeConstant(); entity.Number = (cells[i, 0].Value ?? "").ToString().Trim(); entity.BridgeCode = (cells[i, 1].Value ?? "").ToString().Trim(); entity.Types = (cells[i, 2].Value ?? "").ToString().Trim(); entity.Series = (cells[i, 3].Value ?? "").ToString().Trim(); entity.Version = (cells[i, 4].Value ?? "").ToString().Trim(); entity.Lenght = decimal.Parse(cells[i, 5].StringValue); entity.Weight = decimal.Parse(cells[i, 6].StringValue); entity.Height = decimal.Parse(cells[i, 7].StringValue); entity.PassageType = (cells[i, 8].Value ?? "").ToString().Trim(); entity.SectionalArea = (entity.Weight * entity.Height).ToString(); var plot = plotRatioall.FirstOrDefault(u => u.PassageType == entity.PassageType.ToUpper()); if (plot == null) { meassages.Add(string.Format("容积率常量库 通道类型:{0} 不存在", entity.PassageType)); } else { entity.PlotRatioLimit = plot.PlotRatioLimit; } entity.WeightLimit = ""; entity.Description = enView.NumberNo; entity.Id = Guid.NewGuid().ToString("N"); list.Add(entity); } foreach (var item in list.GroupBy(u => new { u.BridgeCode, u.PassageType })) { if (item.Count() > 1) { string message = "序号:"; foreach (var t in item) { message += t.Number + ","; } meassages.Add(message + " 桥架编号和线缆类型相同"); } } if (meassages.Count() > 0) { throw new UserFriendlyException("导入失败", string.Join(";<br/>", meassages)); } var query = MongoDB.Driver.Builders.Query <BridgeConstant> .In(u => u.BridgeCode, list.Select(u => u.BridgeCode)); var query1 = MongoDB.Driver.Builders.Query <BridgeConstant> .In(u => u.PassageType, list.Select(u => u.PassageType)); var data = Repository.GetList(MongoDB.Driver.Builders.Query.And(query, query1)); if (data.Count > 0) { foreach (var item in data) { var e = list.FirstOrDefault(u => u.BridgeCode == item.BridgeCode && u.PassageType == item.PassageType); meassages.Add(string.Format("序号:{0} 桥架编号和线缆类型已存在", e.Number)); } } if (meassages.Count() > 0) { throw new UserFriendlyException("导入失败", string.Join(";<br/>", meassages)); } var all = Repository.GetAll().ToList(); var constlist = _weightConstantRepository.GetAll().ToList(); List <BridgeConstant> uplist = new List <BridgeConstant>(); foreach (var item in list.GroupBy(u => u.BridgeCode)) { string weightLimit = "0"; decimal sum = item.Sum(u => u.Weight); var eq = all.Where(u => u.BridgeCode == item.Key).ToList(); if (eq.Count() > 0) { sum += eq.Sum(u => u.Weight); } var c = constlist.Where(u => u.WeightDecimal == sum).ToList(); if (c == null) { meassages.Add(string.Format("桥架编号:{0} 重量限值:{1} 不在规定范围", item.Key, sum)); } else if (c.Count == 1) { weightLimit = c[0].WeightLimit; } else { var pts = item.Select(u => u.PassageType.ToLower()).ToList(); var arr = "NP,MP,NI".ToLower().Split(',').ToList(); var except = pts.Exists(u => arr.Contains(u)); var c1 = c.FirstOrDefault(u => u.PassageTypeName == "非安全级"); var c2 = c.FirstOrDefault(u => !(u.PassageTypeName == "非安全级")); if (except) { if (c1 != null) { weightLimit = c1.WeightLimit; } } else { if (c2 != null) { weightLimit = c2.WeightLimit; } } } foreach (var t in item) { t.WeightLimit = weightLimit; } if (eq.Count() > 0 && weightLimit != "0") { foreach (var m in eq) { m.WeightLimit = weightLimit; uplist.Add(m); } } } if (meassages.Count() > 0) { throw new UserFriendlyException("导入失败", string.Join(";<br/>", meassages)); } foreach (var item in list) { if (string.IsNullOrEmpty(item.BridgeCode)) { meassages.Add(string.Format("序号:{0} 桥架编码为空", item.Number)); } if (string.IsNullOrEmpty(item.PassageType)) { meassages.Add(string.Format("序号:{0} 通道类型为空", item.Number)); } } if (meassages.Count() > 0) { throw new UserFriendlyException("导入失败", string.Join(";<br/>", meassages)); } foreach (var entity in uplist) { Repository.Update(entity); } Repository.InsertBatch(list); }
/// <summary> /// 导入电缆型号基本信息 /// </summary> /// <param name="enView"></param> public void Insert(ConstantView enView) { var addrUrl = _hostingEnvironment.WebRootPath + "/upload/" + enView.Path; Workbook wb = new Workbook(addrUrl); var sheet = wb.Worksheets[0]; List <CableConstant> list = new List <CableConstant>(); for (int i = 1; i < sheet.Cells.MaxRow + 1; i++) { CableConstant entity = new CableConstant(); entity.Number = (sheet.Cells[i, 0].Value ?? "").ToString().Trim(); entity.Version = (sheet.Cells[i, 1].Value ?? "").ToString().Trim(); entity.Specification = (sheet.Cells[i, 2].Value ?? "").ToString().Trim(); entity.Diameter = (sheet.Cells[i, 3].Value ?? "").ToString().Trim(); entity.WeightLimit = (sheet.Cells[i, 4].Value ?? "").ToString().Trim(); entity.Description = enView.NumberNo; entity.Id = Guid.NewGuid().ToString("N"); list.Add(entity); //Repository.Insert(entity); } List <string> meassages = new List <string>(); foreach (var item in list.GroupBy(u => new { u.Version, u.Specification })) { if (item.Count() > 1) { string message = "序号:"; foreach (var t in item) { message += t.Number + ","; } meassages.Add(message + " 电缆型号和类型相同"); } } if (meassages.Count() > 0) { throw new UserFriendlyException("导入失败", string.Join(";<br/>", meassages)); } var query = MongoDB.Driver.Builders.Query <CableConstant> .In(u => u.Version, list.Select(u => u.Version)); var query1 = MongoDB.Driver.Builders.Query <CableConstant> .In(u => u.Specification, list.Select(u => u.Specification)); var data = Repository.GetList(MongoDB.Driver.Builders.Query.And(query, query1)); if (data.Count > 0) { foreach (var item in data) { var e = list.FirstOrDefault(u => u.Version == item.Version && u.Specification == item.Specification); meassages.Add(string.Format("序号:{0} 电缆型号和类型已存在", e.Number)); } } if (meassages.Count() > 0) { throw new UserFriendlyException("导入失败", string.Join(";<br/>", meassages)); } foreach (var item in list) { if (string.IsNullOrEmpty(item.Diameter)) { meassages.Add(string.Format("序号:{0} 电缆外径为空", item.Number)); } if (string.IsNullOrEmpty(item.Version)) { meassages.Add(string.Format("序号:{0} 电缆型号为空", item.Number)); } if (string.IsNullOrEmpty(item.WeightLimit)) { meassages.Add(string.Format("序号:{0} 电缆重量为空", item.Number)); } if (string.IsNullOrEmpty(item.Specification)) { meassages.Add(string.Format("序号:{0} 电缆规格为空", item.Number)); } } if (meassages.Count() > 0) { throw new UserFriendlyException("导入失败", string.Join(";<br/>", meassages)); } Repository.InsertBatch(list); }