using OpenAuth.App.BaseApp.Base; using OpenAuth.Repository.Domain.FireManagement; using OpenAuth.Repository; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using OpenAuth.App.Interface; using SqlSugar; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using OpenAuth.App.Response; using Infrastructure; using OpenAuth.App.ServiceApp.FmInterphoneApp.Response; using Infrastructure.Extensions; using DocumentFormat.OpenXml.Drawing; using OpenAuth.App.ServiceApp.FmFireSiteManage.Response; using OpenAuth.Repository.Domain; using OpenAuth.App.ServiceApp.FmInterphoneApp.Request; namespace OpenAuth.App.ServiceApp.FmInterphoneApp { public class FmInterPhoneApp : SqlSugarBaseApp { public FmInterPhoneApp(ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth) : base(unitWork, repository, auth) { _auth = auth; } #region 对讲机信息 public async Task>>> GetInterphoneInfo(int pageIndex, int pageSize, string account, int isbinding) { using (var db = base.UnitWork.CreateContext()) { RefAsync totalNumber = 0; var info = await db.FmInterphonePoint.AsQueryable() .WhereIF(!string.IsNullOrEmpty(account), (a) => a.account.Contains(account)) .WhereIF(isbinding == 1, (a) => a.username == "" || a.username == null) .WhereIF(isbinding == 2, (a) => a.username != "" && a.username != null) .Select((a) => new InterphoneInfoResp() { account = a.account.SelectAll(), }) .ToPageListAsync(pageIndex, pageSize, totalNumber); return new Response>> { Result = new PageInfo> { Items = info, Total = totalNumber } }; } } public async Task> AddOrUpdateInterphoneInfo(FmInterphonePoint info) { using (var db = base.UnitWork.CreateContext()) { var inter = db.FmInterphonePoint.AsQueryable().First(r => r.account == info.account); if (inter == null) { info.time = DateTime.Now; await db.FmInterphonePoint.InsertAsync(info); } else { await db.FmInterphonePoint.UpdateAsync(info); } if (db.Commit()) { return new Response { Result = true, Message = "操作成功" }; } else { return new Response { Result = false, Message = "操作失败" }; } } } //删除 public async Task> DeleteInterphoneInfo(List ids) { using (var db = base.UnitWork.CreateContext()) { await db.FmInterphonePoint.DeleteAsync(u => ids.Contains(u.account)); if (db.Commit()) { return new Response { Result = true, Message = "删除成功" }; } else { return new Response { Result = false, Message = "删除失败" }; } } } /// /// 导入 /// /// /// public string ExportInterphoneInfo(AddOrUpdateBatchExportUsersReq req) { IWorkbook wk = null; var root = AppDomain.CurrentDomain.BaseDirectory; string message = "success"; string extension = System.IO.Path.GetExtension(root + req.file_path); try { FileStream fs = File.OpenRead(root + req.file_path); if (extension.Equals(".xls")) { //把xls文件中的数据写入wk中 wk = new HSSFWorkbook(fs); } else { //把xlsx文件中的数据写入wk中 wk = new XSSFWorkbook(fs); } fs.Close(); //读取当前表数据 ISheet sheet = wk.GetSheetAt(0); IRow row = sheet.GetRow(0); //读取当前行数据 //LastRowNum 是当前表的总行数-1(注意) int offset = 0; var beginrow = sheet.GetRow(0); //读取第一行,如果名称不对 不能导入 if (beginrow.GetCell(0).ToString().Trim() != "账号") { throw new Exception("请按照模板格式导入数据"); } using (var db = base.UnitWork.CreateContext()) { for (int i = 1; i <= sheet.LastRowNum; i++) { row = sheet.GetRow(i); //读取当前行数据 if (row != null) { if (row.GetCell(0) == null) continue; string account = row.GetCell(0) == null ? null : row.GetCell(0).ToString().Trim(); string password = row.GetCell(1) == null ? "" : row.GetCell(1).ToString().Trim(); string username = row.GetCell(2) == null ? null : row.GetCell(2).ToString().Trim(); string groupname = row.GetCell(3) == null ? null : row.GetCell(3).ToString().Trim(); string phone = row.GetCell(4) == null ? null : row.GetCell(4).ToString().Trim(); var info = db.FmInterphonePoint.AsQueryable().First(r => r.account == account); if (info == null) { FmInterphonePoint newinfo = new FmInterphonePoint(); newinfo.account = account; newinfo.passwd = password; newinfo.username = username; newinfo.groupname = groupname; newinfo.phone = phone; newinfo.time = DateTime.Now; db.FmInterphonePoint.InsertAsync(newinfo); } else { info.passwd = password; info.username = username; info.groupname = groupname; info.phone = phone; db.FmInterphonePoint.UpdateAsync(info); } } } } } catch (Exception e) { message = e.Message; //只在Debug模式下才输出 } return message; } //导出 public Response ExportInfo() { Response response = new Response(); try { HSSFWorkbook workbook = new HSSFWorkbook(); #region 内容样式 IFont font1 = workbook.CreateFont(); //创建一个字体样式对象 font1.FontName = "Microsoft YaHei"; //和excel里面的字体对应 //font1.Boldweight = short.MaxValue;//字体加粗 font1.FontHeightInPoints = 12; //字体大小 ICellStyle style = workbook.CreateCellStyle(); //创建样式对象 style.BorderBottom = BorderStyle.Thin; style.BorderLeft = BorderStyle.Thin; style.BorderRight = BorderStyle.Thin; style.BorderTop = BorderStyle.Thin; style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; style.VerticalAlignment = VerticalAlignment.Center; style.SetFont(font1); //将字体样式赋给样式对象 style.WrapText = true; #endregion #region 标题样式 IFont font = workbook.CreateFont(); //创建一个字体样式对象 font.FontName = "Microsoft YaHei"; //和excel里面的字体对应 font.Boldweight = (short)FontBoldWeight.Bold; //字体加粗 font.FontHeightInPoints = 12; //字体大小 ICellStyle style1 = workbook.CreateCellStyle(); //创建样式对象 style1.BorderBottom = BorderStyle.Thin; style1.BorderLeft = BorderStyle.Thin; style1.BorderRight = BorderStyle.Thin; style1.BorderTop = BorderStyle.Thin; style1.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; style1.VerticalAlignment = VerticalAlignment.Center; style1.SetFont(font); //将字体样式赋给样式对象 #endregion using (var db = base.UnitWork.CreateContext()) { var list = db.FmInterphonePoint.AsQueryable() .Select((a) => new InterphoneInfoResp() { account = a.account.SelectAll(), }) .ToList(); #region 创建表头 int m = list.Count / 60000 + 1; for (int k = 0; k < m; k++) { ISheet sheet = workbook.CreateSheet("Sheet" + k.ToString()); IRow rowHeader = sheet.CreateRow(0); rowHeader.Height = 20 * 30; for (int i = 0; i < 9; i++) { //ModuleColumn header = headers[i]; rowHeader.CreateCell(i); rowHeader.Cells[i].CellStyle = style1; sheet.SetColumnWidth(i, 20 * 350); } rowHeader.Cells[0].SetCellValue("账号");//序号 rowHeader.Cells[1].SetCellValue("密码"); rowHeader.Cells[2].SetCellValue("用户姓名"); rowHeader.Cells[3].SetCellValue("分组名称"); rowHeader.Cells[4].SetCellValue("联系方式"); rowHeader.Cells[5].SetCellValue("经度"); rowHeader.Cells[6].SetCellValue("纬度"); rowHeader.Cells[7].SetCellValue("校验码"); rowHeader.Cells[8].SetCellValue("上传时间"); #endregion #region 填充数据 var val = (k + 1) * 60000; var num = 60000; if (val > list.Count) { num = list.Count - k * 60000; } for (int i = 0; i < num; i++) //循环数据 { var item = list[k * 60000 + i]; //获取数据 IRow dataRow = sheet.CreateRow(i + 1); //创建行 for (int j = 0; j < 9; j++) //循环表头 { //创建单元格 dataRow.CreateCell(j); dataRow.Cells[j].CellStyle = style; //添加单元格样式 } dataRow.Cells[0].SetCellValue(list[i].account == null ? "" : list[i].account); dataRow.Cells[1].SetCellValue(list[i].passwd == null ? "" : list[i].passwd); dataRow.Cells[2].SetCellValue(list[i].username == null ? "" : list[i].username); dataRow.Cells[3].SetCellValue(list[i].groupname == null ? "" : list[i].groupname); dataRow.Cells[4].SetCellValue(list[i].phone == null ? "" : list[i].phone); dataRow.Cells[5].SetCellValue(list[i].lat); dataRow.Cells[6].SetCellValue(list[i].lng); dataRow.Cells[7].SetCellValue(list[i].crc); dataRow.Cells[8].SetCellValue(list[i].time.ToString("yyyy-MM-dd HH:mm:ss")); } } #endregion response.Result = new MemoryStream(); workbook.Write(response.Result); workbook = null; response.Result.Close(); response.Result.Dispose(); response.Code = 200; response.Message = "获取成功"; } } catch (Exception ex) { response.Code = 500; response.Message = ex.Message; } return response; } #endregion } }