/******************************************************************************* * Copyright © 2020 HT.Cloud.Framework 版权所有 * Author: HT.Cloud * Description: WaterCloud快速开发平台 * Website: *********************************************************************************/ using iTextSharp.text; using iTextSharp.text.pdf; using Microsoft.AspNetCore.Mvc; using MiniExcelLibs; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http.Headers; using System.Threading.Tasks; using HT.Cloud.Code; using HT.Cloud.Domain.SystemOrganize; using HT.Cloud.Service.SystemOrganize; namespace HT.Cloud.Web.Areas.SystemOrganize.Controllers { [Area("SystemOrganize")] public class DutyController : BaseController { public DutyService _service { get; set; } public SystemSetService _setService { get; set; } public virtual ActionResult Import() { return View(); } [HandlerAjaxOnly] [IgnoreAntiforgeryToken] public async Task GetGridJson(SoulPage pagination, string keyword) { if (string.IsNullOrEmpty(pagination.field)) { pagination.field = "F_Id"; pagination.order = "desc"; } var data = await _service.GetLookList(pagination, keyword); return Content(pagination.setData(data).ToJson()); } [HttpGet] [HandlerAjaxOnly] public async Task GetListJson(string keyword) { var data = await _service.GetList(keyword); return Content(data.ToJson()); } [HttpGet] [HandlerAjaxOnly] public async Task GetFormJson(string keyValue) { var data = await _service.GetLookForm(keyValue); return Content(data.ToJson()); } [HttpPost] [HandlerAjaxOnly] public async Task CheckFile() { try { //获取文件参数,创建临时文件,使用完成就删除 var files = HttpContext.Request.Form.Files; long size = files.Sum(f => f.Length); if (size > 104857600) { throw new Exception("文件大小必须小于100M"); } var file = files.First(); var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); if (string.IsNullOrEmpty(fileName)) { throw new Exception("文件不存在"); } if (!FileHelper.IsExcel(fileName)) { throw new Exception("请上传Excel"); } string filePath = GlobalContext.HostingEnvironment.WebRootPath + $@"/" + "file" + $@"/"; fileName = Utils.CreateNo() + fileName.Substring(fileName.LastIndexOf(".")); string fileFullName = filePath + fileName; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } using (FileStream fs = System.IO.File.Create(fileFullName)) { file.CopyTo(fs); fs.Flush(); } var data = await _service.CheckFile(fileFullName); return Content(new { code = 0, msg = "操作成功", data = data }.ToJson()); } catch (Exception ex) { return Content(new { code = 400, msg = "操作失败," + ex.Message }.ToJson()); } } [HttpPost] [HandlerAjaxOnly] public async Task SubmitForm(RoleEntity roleEntity, string keyValue) { try { await _service.SubmitForm(roleEntity, keyValue); return await Success("操作成功。", "", keyValue); } catch (Exception ex) { return await Error(ex.Message, "", keyValue); } } [HttpPost] [HandlerAjaxOnly] [HandlerAuthorize] public async Task DeleteForm(string keyValue) { try { await _service.DeleteForm(keyValue); return await Success("操作成功。", "", keyValue, DbLogType.Delete); } catch (Exception ex) { return await Error(ex.Message, "", keyValue, DbLogType.Delete); } } [HttpPost] [HandlerAjaxOnly] public async Task ImportForm(string listData) { var filterList = JsonConvert.DeserializeObject>(listData); if (filterList == null || filterList.Count == 0) { return Error("导入数据不存在!"); } if (filterList.Where(a => a.F_EnabledMark == false).Any()) { return Error("导入数据存在错误!"); } try { await _service.ImportForm(filterList); return await Success("导入成功。", "", ""); } catch (Exception ex) { return await Error("导入失败," + ex.Message, "", ""); } } [HttpGet] public async Task Download() { return await Task.Run(() => { string fileName = "岗位导入模板.xlsx"; string fileValue = "model"; string filePath = GlobalContext.HostingEnvironment.WebRootPath + $@"/" + fileValue + $@"/" + fileName; if (!FileHelper.IsExistFile(filePath)) { throw new Exception("文件不存在"); } //定义并实例化一个内存流,以存放图片的字节数组。 MemoryStream ms = new MemoryStream(); //图片读入FileStream FileStream f = new FileStream(filePath, FileMode.Open); //把FileStream写入MemoryStream ms.SetLength(f.Length); f.Read(ms.GetBuffer(), 0, (int)f.Length); ms.Flush(); f.Close(); var contentType = MimeMapping.GetMimeMapping(fileName); return File(ms, contentType, fileName); }); } [HttpGet] public async Task ExportExcel(string keyword = "") { var list = await _service.GetList(keyword); string filename = "岗位信息" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".xls"; var contentType = MimeMapping.GetMimeMapping(filename); var values = new List>(); var set = await _setService.GetForm(_service.currentuser.CompanyId); for (int i = 0; i < list.Count; i++) { var dic = new Dictionary (); dic.Add("序号",i+1); dic.Add("岗位编号", list[i].F_EnCode); dic.Add("岗位名称", list[i].F_FullName); dic.Add("归属公司", set.F_CompanyName); dic.Add("有效状态", list[i].F_EnabledMark); dic.Add("创建时间", list[i].F_CreatorTime); dic.Add("备注", list[i].F_Description); values.Add(dic); } var memoryStream = new MemoryStream(); memoryStream.SaveAs(values); memoryStream.Seek(0, SeekOrigin.Begin); return new FileStreamResult(memoryStream, contentType) { FileDownloadName = filename }; } [HttpGet] public async Task Export(string keyword = "") { var list = await _service.GetList(keyword); //生成pdf string fileName = "岗位信息" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".pdf"; //步骤1 Document Doc = new Document(PageSize.A4); Doc.SetMargins(60, 60, 20, 40); MemoryStream stream = new MemoryStream(); //步骤2 PdfWriter pdfWriter = PdfWriter.GetInstance(Doc, stream); //步骤3 Doc.Open(); #region 相关元素准备 BaseFont bfChinese; bfChinese = BaseFont.CreateFont(GlobalContext.HostingEnvironment.WebRootPath + "/fonts/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font Font16 = new Font(bfChinese, 16); Font Font14 = new Font(bfChinese, 14); Font Font12 = new Font(bfChinese, 12); Font Font12Bold = new Font(bfChinese, 12, Font.BOLD); Font Font12Italic = new Font(bfChinese, 12, Font.BOLDITALIC); Font Font10Bold = new Font(bfChinese, 10, Font.BOLD); Paragraph parag; //Chunk chunk; PdfPTable table; #endregion 相关元素准备 #region 文件标题 Doc.Open(); Doc.AddAuthor(_service.currentuser.UserName); Doc.AddTitle("岗位信息"); #endregion 文件标题 #region 正文 parag = new Paragraph("岗位信息\r\n\r\n", Font16); parag.Alignment = Element.ALIGN_CENTER; Doc.Add(parag); table = new PdfPTable(new float[] { 5, 5, 5, 5, 5, 5, 5 }); table.WidthPercentage = 100f; table.AddCell(new Phrase("序号", Font12Bold)); table.AddCell(new Phrase("岗位编号", Font12Bold)); table.AddCell(new Phrase("岗位名称", Font12Bold)); table.AddCell(new Phrase("归属公司", Font12Bold)); table.AddCell(new Phrase("有效状态", Font12Bold)); table.AddCell(new Phrase("创建时间", Font12Bold)); table.AddCell(new Phrase("备注", Font12Bold)); Doc.Add(table); int i = 0; foreach (var item in list) { i++; table = new PdfPTable(new float[] { 5, 5, 5, 5, 5, 5, 5 }); table.WidthPercentage = 100f; table.AddCell(new Phrase(i.ToString(), Font12)); table.AddCell(new Phrase(item.F_EnCode != null ? item.F_EnCode.ToString() : "", Font12)); table.AddCell(new Phrase(item.F_FullName != null ? item.F_EnCode.ToString() : "", Font12)); var set = await _setService.GetForm(_service.currentuser.CompanyId); table.AddCell(new Phrase(set != null ? set.F_CompanyName.ToString() : "", Font12)); table.AddCell(new Phrase(item.F_EnabledMark != true ? "无效" : "有效", Font12)); table.AddCell(new Phrase(item.F_CreatorTime != null ? ((DateTime)item.F_CreatorTime).ToString("yyyy-MM-dd") : "", Font12)); table.AddCell(new Phrase(item.F_Description, Font12)); Doc.Add(table); } table = new PdfPTable(new float[] { 35 }); table.WidthPercentage = 100f; table.AddCell(new Phrase("合计:一共" + i + "项", Font12)); table.AddCell(new Phrase("", Font12)); Doc.Add(table); Doc.Close(); #endregion 正文 ////页脚 //PDFFooter footer = new PDFFooter(); //footer.OnEndPage(pdfWriter, Doc); Doc.Close(); var contentType = MimeMapping.GetMimeMapping(fileName); FileResult fileResult = new FileContentResult(stream.ToArray(), contentType); fileResult.FileDownloadName = fileName; return fileResult; } } }