예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }