using System.Text; using YLErp.Commons; using YLErp.Helpers; namespace YLErp.Modules.SalesModule { public class SalesmenImportService : YLBaseService { /// /// 销售员信息导入 /// public SalesmenImportService(OptUserInfo userInfo) : base(userInfo) { } public HandleResult UploadSalesmenCsv(string path) { var resultList = new List(); var originaltype = EncodingType.GetType(path, resultList); ChangeFileEncoding(path, originaltype); string Name; string Department; string Mail; string Telephone; string Mobile; int Status = 0; Salesman salesman; int rowNum = 0; var salesmen = new List(); using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read)) { using (var sr = new StreamReader(fs, Encoding.UTF8)) { while (!sr.EndOfStream) { string line = sr.ReadLine(); if (rowNum == 0) { rowNum++; continue; } rowNum++; if (line == "") { continue; } string[] res = line.Split(new char[] { ',' }, StringSplitOptions.None); if (res != null && res.Length > 0) { var isAllEmpty = true; for (int i = 0; i < res.Length; i++) { if (!string.IsNullOrWhiteSpace(res[i])) { isAllEmpty = false; } } if (isAllEmpty) { continue; } if (res.Length < 19) { return "导入文件列缺失!请检查后再导入!"; } } Name = res[0]; Department = res[1]; Mail = res[2]; Telephone = res[3]; Mobile = res[4]; if (!string.IsNullOrEmpty(res[5])) { if (res[5] == "正常") { Status = 0; } else if (res[5] == "禁用") { Status = 1; } else { return "第" + rowNum + "行状态填写有错,导入失败"; } } else { return "第" + rowNum + "行状态未填写,导入失败"; } if (string.IsNullOrEmpty(Name) || DbContext.salesmen.Any(a => a.Name.Equals(Name))) { return "第" + rowNum + "行姓名" + Name + "未填写或已存在,导入失败"; } if (!string.IsNullOrEmpty(Department)) { return "第" + rowNum + "行未填写,导入失败"; } salesman = new Salesman { Name = Name, Department = Department, Mail = Mail, Telephone = Telephone, Mobile = Mobile, Status = Status }; DbContext.salesmen.Add(salesman); salesmen.Add(salesman); } } if (salesmen == null || salesmen.Count == 0) { return "请确保上传文件数据不为空,导入失败"; } DbContext.SaveChanges(); } return HandleResult.Success; } private void ChangeFileEncoding(string filename, Encoding encoding) { var fs = new FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read); byte[] flieByte = new byte[fs.Length]; fs.Read(flieByte, 0, flieByte.Length); fs.Close(); StreamWriter docWriter; var ec = Encoding.GetEncoding("UTF-8"); docWriter = new StreamWriter(filename, false, ec); docWriter.Write(encoding.GetString(flieByte)); docWriter.Close(); } public HandleResult UploadSalesmenExcel(Stream stream, int userId, string userName) { var salesPeople = new ExcelHelper().ExcelToDataTable(stream, null, true); string Name = ""; string Department = ""; string Mail = ""; string Telephone = ""; string Mobile = ""; int Status = 0; Salesman saleman; List salesmen = new List(); var rowNum = 0; for (int i = 0; i < salesPeople.Rows.Count; i++) { rowNum = i + 2; for (int j = 0; j < salesPeople.Columns.Count; j++) { switch (salesPeople.Columns[j].ColumnName) { case "姓名": Name = salesPeople.Rows[i][j].ToString(); break; case "部门": Department = salesPeople.Rows[i][j].ToString(); break; case "邮箱": Mail = salesPeople.Rows[i][j].ToString(); break; case "座机": Telephone = salesPeople.Rows[i][j].ToString(); break; case "手机": Mobile = salesPeople.Rows[i][j].ToString(); break; case "状态": if (!int.TryParse(salesPeople.Rows[i][j].ToString(), out Status)) { if (salesPeople.Rows[i][j].ToString() == "正常") { Status = 0; } else if (salesPeople.Rows[i][j].ToString() == "禁用") { Status = 1; } else { return "第" + rowNum + "行状态未填写或有错,导入失败"; } } break; default: break; } } if (string.IsNullOrWhiteSpace(Name) || DbContext.salesmen.Any(a => a.Name.Equals(Name))) { return "第" + rowNum + "行姓名" + Name + "未填写或已存在,导入失败"; } if (string.IsNullOrWhiteSpace(Department)) { return "第" + rowNum + "行未填写,导入失败"; } saleman = new Salesman { Name = Name, Department = Department, Mail = Mail, Telephone = Telephone, Mobile = Mobile, Status = Status }; DbContext.salesmen.Add(saleman); salesmen.Add(saleman); } if (salesmen == null || salesmen.Count == 0) { return "请确保上传文件数据不为空,导入失败"; } DbContext.SaveChanges(); return HandleResult.Success; } } }