public async Task <ActionResult <ResponseModel> > Import() { var response = ResponseModelFactory.CreateInstance; //JArray lst = new JArray(); //JObject jsonResult = new JObject(); var lst = new List <WageInfo>(); //long size = 0; var fileNamePath = string.Empty; var requestPath = string.Empty; try { await using (_dbContext) { var files = Request.Form.Files; foreach (var file in files) { ////string fileName = DateTime.Now.ToString("MMddHHmmss") + file.FileName; //fileNamePath = DateTime.Now.ToString("MMddHHmmss") + file.FileName; ////size += file.Length; ////保存文件 ////物理路径 //string SavePath = Path.Combine(CeyhConfiguration.TheUploadFileSettings.UploadFolder, fileNamePath); ////using (FileStream fs = new FileStream(SavePath, FileMode.CreateNew)) ////{ //// file.CopyTo(fs); //// fs.Flush(); ////} //MemoryStream fs = new MemoryStream(); //file.CopyTo(fs); DataTable dt = OfficeHelper.ReadStreamToDataTable(file.OpenReadStream()); for (int i = 0; i < dt.Rows.Count; i++) { WageInfo obj = new WageInfo { Status = CommonEnum.Status.Normal, CreatedOn = DateTime.Now, Code = RandomHelper.GetRandomizer(8, true, false, true, true), CreatedByUserGuid = AuthContextService.CurrentUser.Guid, CreatedByUserName = AuthContextService.CurrentUser.DisplayName, RealName = dt.Rows[i][dt.Columns["真实姓名"]].ToString(), DepartmentCode = _dbContext.UserDepartment .SingleOrDefault(s => s.Name == dt.Rows[i][dt.Columns["部门"]].ToString().Trim()) ?.Code, PositionCode = _dbContext.UserPosition.SingleOrDefault(s => s.Name == dt.Rows[i][dt.Columns["职位"]].ToString().Trim())?.Code, StartDate = DateTime.Parse(dt.Rows[i][dt.Columns["开始日期"]].ToString() ?.Replace("【", "") .Replace("】", "") ?? string.Empty), EndDate = DateTime.Parse(dt.Rows[i][dt.Columns["结束日期"]].ToString() ?.Replace("【", "") .Replace("】", "") ?? throw new InvalidOperationException()), TotalWage = decimal.Parse(dt.Rows[i][dt.Columns["应发工资"]].ToString() ?? string.Empty), BaseWage = decimal.Parse(dt.Rows[i][dt.Columns["基本工资"]].ToString() ?? string.Empty), WorkDays = int.Parse(dt.Rows[i][dt.Columns["工作天数"]].ToString() ?? throw new InvalidOperationException()), OTWage = decimal.Parse(dt.Rows[i][dt.Columns["加班工资"]].ToString() ?? string.Empty), OTDays = int.Parse(dt.Rows[i][dt.Columns["加班天数"]].ToString() ?? string.Empty), PerformanceWage = decimal.Parse(dt.Rows[i][dt.Columns["绩效工资"]].ToString() ?? string.Empty), ReissueWage = decimal.Parse(dt.Rows[i][dt.Columns["补发工资"]].ToString() ?? string.Empty), Subsidy = decimal.Parse(dt.Rows[i][dt.Columns["补贴"]].ToString() ?? string.Empty), Commission = decimal.Parse(dt.Rows[i][dt.Columns["提成"]].ToString() ?? string.Empty), Bonus = decimal.Parse(dt.Rows[i][dt.Columns["奖金"]].ToString() ?? string.Empty), }; //obj.StartDate = DateTime.Parse($"{dt.Rows[i][dt.Columns["开始日期"]].ToString().Split('-')[2]}-" + // $"{dt.Rows[i][dt.Columns["开始日期"]].ToString().Split('-')[1].Replace("月","")}-" + // $"{dt.Rows[i][dt.Columns["开始日期"]].ToString().Split('-')[0]}"); //obj.EndDate = DateTime.Parse($"{dt.Rows[i][dt.Columns["结束日期"]].ToString().Split('-')[2]}-" + // $"{dt.Rows[i][dt.Columns["结束日期"]].ToString().Split('-')[1].Replace("月", "")}-" + // $"{dt.Rows[i][dt.Columns["结束日期"]].ToString().Split('-')[0]}"); var adds = dt.Rows[i][dt.Columns["额外工资"]].ToString()?.Split(';'); obj.Additions = (adds ?? Array.Empty <string>()).Select(a => new { val = a.Split(':')[1], remark = a.Split(':')[0] }).ToJson(); obj.SocialSecurity = decimal.Parse(dt.Rows[i][dt.Columns["社保"]].ToString() ?? string.Empty); obj.AccumulationFund = decimal.Parse(dt.Rows[i][dt.Columns["公积金"]].ToString() ?? string.Empty); obj.IncomeTax = decimal.Parse(dt.Rows[i][dt.Columns["个税"]].ToString() ?? string.Empty); obj.Deductions = dt.Rows[i][dt.Columns["额外扣除"]].ToString() ?.Split(';'). Select(a => new { val = a.Split(':')[1], remark = a.Split(':')[0] }).ToJson(); //for (int j = 0; j < dt.Columns.Count; j++) //{ //} lst.Add(obj); } var count = lst.Count / 100 + 1; for (var i = 0; i < count; i++) { var childish = lst.Skip(i).Take(1000).ToList(); await _dbContext.AddRangeAsync(childish); await _dbContext.SaveChangesAsync(); } } } //string url = Request.HttpContext.Connection.RemoteIpAddress.ToStringExt()+":"+ Request.HttpContext.Connection.RemotePort.ToStringExt(); } catch (Exception ex) { response.SetError("上传文件错误信息列表错误:" + ex.ToString()); return(response); } return(response); }