123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756 |
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Extensions.Logging;
- using Ropin.Inspection.Api.Common;
- using Ropin.Inspection.Model;
- using Ropin.Inspection.Service.DEV.Interface;
- using Ropin.Inspection.Service.MTN.Interface;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using System;
- using Ropin.Inspection.Model.ViewModel.MTN;
- using Ropin.Inspection.Model.SearchModel.MTN;
- using Ropin.Inspection.Service;
- using Microsoft.AspNetCore.Authorization;
- using NPOI.SS.UserModel;
- using NPOI.Util;
- using NPOI.XSSF.UserModel;
- using NPOI.XWPF.UserModel;
- using Ropin.Inspection.Model.Common;
- using System.IO.Compression;
- using System.IO;
- using System.Linq;
- using log4net;
- using NPOI.SS.Formula.Functions;
- using Newtonsoft.Json;
- using ICSharpCode.SharpZipLib.Zip;
- using Ropin.Inspection.Common.Helper;
- using NPOI.SS.Formula;
- using Ropin.Inspection.Repository;
- namespace Ropin.Inspection.Api.Controllers.MTN
- {
- public class TmtnAlarmOrderController : BaseController
- {
- public ILogger<TmtnAlarmOrderController> _logger { get; }
- private readonly ITmtnAlarmOrderService _repository;
- private readonly IPushMsgService _pushMsgService;
- private readonly ITmtnPushMsgResultService _tmtnPushMsgResultService;
- private readonly ITsysMessageService _tsysMessageService;
- private static readonly ILog log = LogManager.GetLogger(typeof(TmtnAlarmOrderController));
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="logger"></param>
- /// <param name="repository"></param>
- /// <param name="pushMsgService"></param>
- /// <param name="tmtnPushMsgResultService"></param>
- public TmtnAlarmOrderController(ILogger<TmtnAlarmOrderController> logger, ITmtnAlarmOrderService repository, IPushMsgService pushMsgService, ITmtnPushMsgResultService tmtnPushMsgResultService, ITsysMessageService tsysMessageService)
- {
- _logger = logger;
- _repository = repository;
- _pushMsgService = pushMsgService;
- _tmtnPushMsgResultService = tmtnPushMsgResultService;
- _tsysMessageService = tsysMessageService;
- }
- /// <summary>
- /// 创建报警工单
- /// </summary>
- /// <param name="content"></param>
- /// <returns></returns>
- [HttpPost("CreateAsync")]
- public async Task<ApiResult> CreateAsync(AlarmOrderViewModel content)
- {
- if (content == null)
- {
- return new ApiResult(ReturnCode.ArgsError);
- }
- try
- {
- await _repository.CreateOneAsync(content);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- return new ApiResult(ReturnCode.Success);
- }
- /// <summary>
- /// 创建报警工单+处理记录
- /// </summary>
- /// <param name="content"></param>
- /// <returns></returns>
- [HttpPost("CreateAlarmOrderAsync")]
- public async Task<ApiResult> CreateAlarmOrderAsync(AddAlarmOrderViewModel content)
- {
- if (content == null|| content.C_MessageCode == null)
- {
- return new ApiResult(ReturnCode.ArgsError);
- }
- try
- {
- await _repository.CreateOrderAsync(content);
- log.Info($"创建报警工单+处理记录-保存数据成功【数据=[{JsonConvert.SerializeObject(content)}]】");
- //Guid guid = Guid.Parse(content.C_PushMsgResultCode);
- var PushMsg=await _tsysMessageService.GetByIdAsync(content.C_MessageCode);
- log.Info($"创建报警工单+处理记录-根据MessageCode获取 TSYS_Message 数据=[{JsonConvert.SerializeObject(PushMsg)}]");
- if (PushMsg!=null&&!string.IsNullOrEmpty(PushMsg.C_DevStoreCode))
- {
- await _pushMsgService.PushAlarmMsgAsync(new TpushMsgModel
- {
- C_DevStoreCode = PushMsg.C_DevStoreCode,
- C_MsgTypeCode = "MSG_TYPE_019",
- Msg = content.C_Record,//content.C_Name + " " + content.C_Remark,
- Subject = content.C_Name,//"上报报警," + content.C_Name,
- DevNumber = PushMsg.C_DevStoreCode,
- DevName = "",
- GenerationType = 2,
- msgStatus = 0,
- },"设备报警工单");
- }
- log.Info($"创建报警工单+处理记录-保存数据END");
- }
- catch (Exception ex)
- {
- log.Info($"创建报警工单+处理记录-保存数据成功异常【{ex.Message}】");
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- return new ApiResult(ReturnCode.Success);
- }
- /// <summary>
- /// 删除报警工单
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- [HttpDelete("DeleteAsync/{id}")]
- public async Task<ApiResult> DeleteAsync(string id)
- {
- if (string.IsNullOrEmpty(id))
- {
- return new ApiResult(ReturnCode.GeneralError);
- }
- try
- {
- await _repository.DeleteAsync(id);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- return new ApiResult(ReturnCode.Success);
- }
- /// <summary>
- /// 更新报警工单
- /// </summary>
- /// <param name="id"></param>
- /// <param name="updateModel"></param>
- /// <returns></returns>
- [HttpPut("UpdateAsync/{id}")]
- public async Task<ApiResult> UpdateAsync(string id, AlarmOrderViewModel updateModel)
- {
- if (string.IsNullOrEmpty(id))
- {
- return new ApiResult(ReturnCode.GeneralError);
- }
- try
- {
- await _repository.UpdateAsync(id, updateModel);
- log.Info($"更新报警工单-保存数据成功【id={id};数据=[{JsonConvert.SerializeObject(updateModel)}]】");
- var content = await _repository.GetByIdAsync(id);
- if (updateModel.C_Status=="5"&& content!=null&&!string.IsNullOrEmpty(content.C_DevStoreCode)) {
- await _pushMsgService.PushAlarmMsgAsync(new TpushMsgModel
- {
- C_DevStoreCode = content.C_DevStoreCode,
- C_MsgTypeCode = "MSG_TYPE_020",
- Msg = updateModel.C_Remark,//content.C_Name + " " + updateModel.C_Remark,
- Subject = content.C_Name,//"报警取消," + content.C_Name,
- DevNumber = content.C_DevStoreCode,
- DevName = content.C_DevName,
- GenerationType = 2,
- msgStatus = 0,
- },"设备报警工单");
- }
- log.Info($"更新报警工单-保存数据END");
- }
- catch (Exception ex)
- {
- log.Info($"更新报警工单-保存数据成功异常【{ex.Message}】");
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- return new ApiResult(ReturnCode.Success);
- }
- /// <summary>
- /// 报警工单-流程
- /// </summary>
- /// <param name="id"></param>
- /// <param name="updateModel"></param>
- /// <returns></returns>
- [HttpPut("OrderFlowAsync/{id}")]
- public async Task<ApiResult> OrderFlowAsync(string id, UpdateAlarmOrderViewModel updateModel)
- {
- if (string.IsNullOrEmpty(id))
- {
- return new ApiResult(ReturnCode.GeneralError);
- }
- try
- {
- await _repository.OrderFlowAsync(id, updateModel);
- log.Info($"报警工单-流程-保存数据成功【id={id};数据=[{JsonConvert.SerializeObject(updateModel)}]】");
- // 0 = 禁用(删除);1 = 上报报警(报警上报);5 = 报警取消;2 = 报警确认;
- // 3 = 正在处理报警;4 = 处理报警完成;6 = 报警处理维保返工; 7 = 报警处理完成确认
- if (updateModel.C_Status=="2"|| updateModel.C_Status=="4" || updateModel.C_Status == "7")
- {
- var content = await _repository.GetByIdAsync(id);
- if (content != null && !string.IsNullOrEmpty(content.C_DevStoreCode))
- {
- string title = ""; string code = "";
- switch (updateModel.C_Status)
- {
- case "2": title = "报警确认,"; code = "MSG_TYPE_021"; break;
- case "7": title = "报警完成确认,"; code = "MSG_TYPE_021"; break;
- case "4": title = "报警完成,"; code = "MSG_TYPE_022"; break;
- case "5": title = "报警取消,"; code = "MSG_TYPE_020"; break;
- }
- await _pushMsgService.PushAlarmMsgAsync(new TpushMsgModel
- {
- C_DevStoreCode = content.C_DevStoreCode,
- C_MsgTypeCode = code,
- Msg = updateModel.C_Record,//content.C_Name + " " + updateModel.C_Remark,
- Subject = content.C_Name,// title + content.C_Name,
- DevNumber = content.C_DevStoreCode,
- DevName = content.C_DevName,
- GenerationType = 2,
- msgStatus = 0,
- }, "设备报警工单");
- }
- }
- log.Info($"报警工单-流程-保存数据END");
- }
- catch (Exception ex)
- {
- log.Info($"报警工单-流程-保存数据成功异常【{ex.Message}】");
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- return new ApiResult(ReturnCode.Success);
- }
- /// <summary>
- /// 通过id获取报警工单信息
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- [HttpGet("GetAlarmOrderAsync/{id}")]
- public async Task<ApiResult> GetAlarmOrderAsync(string id)
- {
- if (string.IsNullOrEmpty(id))
- {
- return new ApiResult(ReturnCode.GeneralError);
- }
- try
- {
- var content = await _repository.GetByIdAsync(id);
- return new ApiResult<AlarmOrderViewModel>(content);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- }
- /// <summary>
- /// 报警工单列表
- /// </summary>
- /// <param name="searchModel"></param>
- /// <returns></returns>
- [HttpPost("GetAlarmOrderListAsync")]
- public async Task<ApiResult> GetAlarmOrderListAsync(AlarmOrderSearchModel searchModel)
- {
- if (searchModel == null)
- {
- return new ApiResult(ReturnCode.ArgsError);
- }
- try
- {
- var contentList = await _repository.GetAlarmOrderList(searchModel);
- return new ApiResult<PagesModel<AlarmOrderViewModel>>(new PagesModel<AlarmOrderViewModel>(contentList, searchModel));
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- }
- /// <summary>
- /// 报警工单处理记录列表
- /// </summary>
- /// <param name="searchModel"></param>
- /// <returns></returns>
- [HttpPost("GetAlarmOrderRecordList")]
- public async Task<ApiResult> GetAlarmOrderRecordList(AlarmOrderSearchModel searchModel)
- {
- if (searchModel==null)
- {
- return new ApiResult(ReturnCode.ArgsError);
- }
- try
- {
- searchModel.IsPagination = false;
- var contentList = await _repository.GetAlarmOrderRecordList(searchModel);
- return new ApiResult<IEnumerable<AlarmOrderRecordViewModel>>(contentList);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- }
- /// <summary>
- /// 报警工单统计
- /// </summary>
- /// <param name="searchModel"></param>
- /// <returns></returns>
- [HttpPost("AlarmOrderStatistics")]
- public async Task<ApiResult> AlarmOrderStatistics(AlarmOrderSearchModel searchModel)
- {
- if (searchModel == null&& searchModel.C_StoreCode!=null)
- {
- return new ApiResult(ReturnCode.ArgsError);
- }
- try
- {
- searchModel.IsPagination = false;
- var contentList = await _repository.AlarmOrderStatistics(searchModel);
- return new ApiResult<AlarmOrderStatistics>(contentList);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- }
- /// <summary>
- /// 工单表移动端统计(6个月)
- /// </summary>
- /// <param name="storeCode"></param>
- /// <returns></returns>
- [HttpGet("GetAlarmOrderStatisticsAsync/{storeCode}")]
- public async Task<ApiResult> GetAlarmOrderStatisticsAsync(string storeCode)
- {
- if (string.IsNullOrEmpty(storeCode))
- {
- return new ApiResult(ReturnCode.GeneralError);
- }
- try
- {
- var content = await _repository.GetAlarmOrderStatisticsAsync(storeCode);
- return new ApiResult<RepairStatistics>(content);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- }
- /// <summary>
- /// 导出报警记录压缩包
- /// </summary>
- /// <param name="searchModel"></param>
- /// <returns></returns>
- [HttpPost("ExportZip")]
- [AllowAnonymous]
- public async Task<IActionResult> ExportZip(AlarmOrderSearchModel searchModel)
- {
- var recordList = await _repository.GetAlarmOrderList(searchModel);
- string zip = @"wwwroot\\ZipFile";
- if (!System.IO.Directory.Exists(zip))
- {
- Directory.CreateDirectory(zip);
- }
- string zipPaht = zip + "\\报警记录下载.zip";
- System.IO.File.Delete(zipPaht);
- IWorkbook workbook = new XSSFWorkbook();
- ISheet sheet = workbook.CreateSheet();
- #region
- //标题加粗居中.
- IFont font = workbook.CreateFont();
- font.IsBold = true;
- font.FontHeightInPoints = 25;
- font.FontName = "宋体";
- ICellStyle titleCellStyle = workbook.CreateCellStyle();
- titleCellStyle.SetFont(font);
- titleCellStyle.Alignment = HorizontalAlignment.Center; //字体居中
- //边框
- titleCellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
- titleCellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
- titleCellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
- titleCellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
- titleCellStyle.WrapText = true;
- #endregion
- #region
- //表头加粗居中.
- IFont font1 = workbook.CreateFont();
- font1.IsBold = true;
- font1.FontHeightInPoints = 14;
- font1.FontName = "宋体";
- ICellStyle headCellStyle = workbook.CreateCellStyle();
- headCellStyle.SetFont(font1);
- headCellStyle.Alignment = HorizontalAlignment.Center; //字体居中
- //边框
- headCellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
- headCellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
- headCellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
- headCellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
- headCellStyle.WrapText = true;
- #endregion
- #region
- //行.
- IFont font2 = workbook.CreateFont();
- font2.IsBold = false;
- font2.FontHeightInPoints = 12;
- font2.FontName = "宋体";
- ICellStyle rowCellStyle = workbook.CreateCellStyle();
- rowCellStyle.SetFont(font2);
- rowCellStyle.Alignment = HorizontalAlignment.Center; //字体居中
- //边框
- rowCellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
- rowCellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
- rowCellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
- rowCellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
- rowCellStyle.WrapText = true;
- #endregion
- #region 超链接
- // 创建样式
- ICellStyle styleLInk = workbook.CreateCellStyle();
- // 设置字体颜色为蓝色
- IFont fontLink = workbook.CreateFont();
- fontLink.IsBold = false;
- fontLink.FontHeightInPoints = 12;
- fontLink.FontName = "宋体";
- fontLink.Color = IndexedColors.Green.Index;
- styleLInk.SetFont(fontLink);
- // 设置下划线
- fontLink.Underline = FontUnderlineType.Single;
- styleLInk.SetFont(fontLink);
- styleLInk.Alignment = HorizontalAlignment.Center; //字体居中
- //边框
- styleLInk.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
- styleLInk.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
- styleLInk.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
- styleLInk.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
- styleLInk.WrapText = true;
- #endregion
- sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 7));
- IRow title = sheet.CreateRow(0);
- title.Height = 30 * 25;
- title.CreateCell(0).SetCellValue("报警记录报表" + (searchModel.C_StoreName == null ? "" : "(" + searchModel.C_StoreName + ")"));
- foreach (var item in title.Cells)
- {
- item.CellStyle = titleCellStyle;
- }
- IRow head = sheet.CreateRow(1);
- head.CreateCell(0).SetCellValue("序号");
- head.CreateCell(1).SetCellValue("报警名称");
- head.CreateCell(2).SetCellValue("状态");
- head.CreateCell(3).SetCellValue("审批人");
- head.CreateCell(4).SetCellValue("审批时间");
- head.CreateCell(5).SetCellValue("上报人员");
- head.CreateCell(6).SetCellValue("上报时间");
- head.CreateCell(7).SetCellValue("记录查看");
- foreach (var item in head.Cells)
- {
- item.CellStyle = headCellStyle;
- }
- int rowNumber = 2; int number = 1;
- if (recordList.Any() && recordList.FirstOrDefault() != null)
- {
- foreach (var x in recordList)
- {
- if (x!=null)
- {
- string status = string.Empty;
- switch (x.C_Status)
- {
- case "1": status = "报警上报"; break;
- case "2": status = "报警确认"; break;
- case "3": status = "正在处理"; break;
- case "4": status = "报警完成"; break;
- case "5": status = "报警取消"; break;
- case "6": status = "报警返工"; break;
- case "7": status = "报警完成确认"; break;
- }
- IRow content = sheet.CreateRow(rowNumber);
- content.CreateCell(0).SetCellValue(number);
- content.CreateCell(1).SetCellValue(x.C_Name);
- content.CreateCell(2).SetCellValue(status);
- content.CreateCell(3).SetCellValue(x.C_ExamineName);
- content.CreateCell(4).SetCellValue(x.D_ExamineOn?.ToString("yyyy-MM-dd"));
- content.CreateCell(5).SetCellValue(x.C_CreateName);
- content.CreateCell(6).SetCellValue(x.D_CreateOn.ToString("yyyy-MM-dd"));
- //超链接
- NPOI.SS.UserModel.ICell cell = content.CreateCell(7);
- cell.SetCellValue("附件");
- IHyperlink link = new XSSFHyperlink(HyperlinkType.Url);
- link.Address = ("报警记录/" + x.C_ID + ".docx");
- cell.Hyperlink = link;
- foreach (var item in content.Cells)
- {
- item.CellStyle = rowCellStyle;
- }
- cell.CellStyle = styleLInk;
- rowNumber++; number++;
- }
- }
- }
- else
- {
- IRow content1 = sheet.CreateRow(rowNumber);
- content1.CreateCell(0).SetCellValue("暂无数据");
- sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(2, 2, 0, 7));
- }
- for (int i = 0; i <= 7; i++)
- {
- if (i == 0)
- {
- sheet.SetColumnWidth(i, 2000);
- }
- else if (i == 1)
- {
- sheet.SetColumnWidth(i, 7000);
- }
- else
- {
- sheet.SetColumnWidth(i, 4500);
- }
- }
- using (var zipFile = new FileStream(zipPaht, FileMode.Create))
- {
- // 列表Excel
- using (var memoryStream = new NpoiMemoryStream())
- {
- workbook.Write(memoryStream);
- byte[] excelData = memoryStream.ToArray();
- using (var archive = new ZipArchive(zipFile, ZipArchiveMode.Update))
- {
- archive.CreateEntry("报警记录报表.xlsx").Open().Write(excelData, 0, excelData.Length);
- }
- }
- }
- //内容word
- foreach (var cell in recordList.ToList())
- {
- if (cell != null)
- {
- AlarmOrderSearchModel orderSearch = new AlarmOrderSearchModel();
- orderSearch.IsPagination = false;
- orderSearch.C_ID = cell.C_ID;
- var recordItems = await _repository.GetAlarmOrderRecordList(orderSearch);
- if (recordItems.Count() > 0)
- {
- XWPFDocument doc = new XWPFDocument();
- var paragraph = doc.CreateParagraph();
- var run1 = paragraph.CreateRun();
- run1.FontSize = 18;
- run1.SetText("报警名称:" + cell.C_Name);
- int serialNum = 1;
- foreach (var recordItem in recordItems)
- {
- if (recordItem==null) { continue; }
- var p0 = doc.CreateParagraph();
- var run0 = p0.CreateRun();
- run0.FontSize = 16;
- run0.SetText(" " + serialNum.ToString());
- var p1 = doc.CreateParagraph();
- var run = p1.CreateRun();
- run.FontSize = 14;
- string status = string.Empty;
- switch (recordItem.C_Status)
- {
- case "1": status = "报警上报"; break;
- case "2": status = "报警确认"; break;
- case "3": status = "正在处理"; break;
- case "4": status = "报警完成"; break;
- case "5": status = "报警取消"; break;
- case "6": status = "报警返工"; break;
- case "7": status = "报警完成确认"; break;
- }
- run.AppendText(" 操作时间:" + recordItem.D_CreateOn.ToString("yyyy-MM-dd HH:mm:ss"));
- run.AddCarriageReturn();
- run.AppendText(" 状态:" + status);
- run.AddCarriageReturn();
- run.AppendText(" 处理人员:" + recordItem.C_CreateName);
- run.AddCarriageReturn();
- run.AppendText(" 现场描述:" + recordItem.C_Remark);
- run.AddCarriageReturn();
- run.AppendText(" 现场记录:" + recordItem.C_Record);
- if (recordItem.fileList != null && recordItem.fileList.Count() > 0)
- {
- run.AddCarriageReturn();
- run.AppendText(" 现场拍照:");
- foreach (var path in recordItem.fileList)
- {
- string pathFile = path.C_Url;
- if (!string.IsNullOrEmpty(pathFile))
- {
- if (pathFile[0].ToString() == @"/")
- {
- pathFile = pathFile.Substring(1);
- }
- if (!System.IO.File.Exists(pathFile))
- {
- pathFile = @"wwwroot/error.png";
- }
- FileStream fileStream = new FileStream(pathFile, FileMode.Open, FileAccess.Read);
- run.AddCarriageReturn();
- run.AddPicture(fileStream, 6, pathFile, Units.ToEMU(100), Units.ToEMU(100));
- }
- }
- }
- serialNum++;
- }
- using (var zipFile = new FileStream(zipPaht, FileMode.OpenOrCreate))
- {
- using (var memoryStream = new NpoiMemoryStream())
- {
- doc.Write(memoryStream);
- byte[] excelData = memoryStream.ToArray();
- using (var archive = new ZipArchive(zipFile, ZipArchiveMode.Update))
- {
- archive.CreateEntry("报警记录/" + cell.C_ID + ".docx").Open().Write(excelData, 0, excelData.Length);
- }
- }
- }
- }
- }
- }
- var zipFile1 = new FileStream(zipPaht, FileMode.Open);
- // 将压缩后的数据作为响应返回给客户端(这里假设你使用的是HTTP GET请求)
- return File(zipFile1, "application/zip", "报警记录报表.zip"); // 这里假设你的文件类型是.xlsx的GZip压缩文件。你可以根据需要调整MIME类型和文件扩展名。
- }
- /// <summary>
- /// 发送邮件-根据消息ID获取报警详情
- /// </summary>
- /// <param name="searchModel"></param>
- /// <returns></returns>
- [HttpPost("SendEmilByPushMsgResultCode")]
- [AllowAnonymous]
- public async Task<ApiResult> SendEmilByPushMsgResultCode(SendAlarmOrderModel searchModel)
- {
- try
- {
- if (searchModel==null&&string.IsNullOrEmpty(searchModel.C_MessageCode))
- {
- return new ApiResult(ReturnCode.ArgsError, "请输入参数");
- }
- AlarmOrderSearchModel orderSearchModel = new AlarmOrderSearchModel();
- orderSearchModel.IsPagination = false;
- orderSearchModel.C_PushMsgResultCode = searchModel.C_MessageCode;
- var recordItems = await _repository.GetAlarmOrderRecordList(orderSearchModel);
- string zip = @"wwwroot\\ZipFile";
- if (!System.IO.Directory.Exists(zip))
- {
- Directory.CreateDirectory(zip);
- }
- string zipPaht = zip + $"\\{searchModel.C_MessageCode}报警详情下载.zip";
- if (recordItems.Count() > 0)
- {
- XWPFDocument doc = new XWPFDocument();
- var paragraph = doc.CreateParagraph();
- var run1 = paragraph.CreateRun();
- run1.FontSize = 18;
- run1.AppendText("报警时间:" + searchModel.AlarmTime);
- run1.AddCarriageReturn();
- run1.AppendText("报警内容:" + searchModel.AlarmContent);
- int serialNum = 1;
- foreach (var recordItem in recordItems)
- {
- if (recordItem == null) { continue; }
- var p0 = doc.CreateParagraph();
- var run0 = p0.CreateRun();
- run0.FontSize = 16;
- run0.SetText(" " + serialNum.ToString());
- var p1 = doc.CreateParagraph();
- var run = p1.CreateRun();
- run.FontSize = 14;
- string status = string.Empty;
- switch (recordItem.C_Status)
- {
- case "1": status = "报警上报"; break;
- case "2": status = "报警确认"; break;
- case "3": status = "正在处理"; break;
- case "4": status = "报警完成"; break;
- case "5": status = "报警取消"; break;
- case "6": status = "报警返工"; break;
- case "7": status = "报警完成确认"; break;
- }
- run.AppendText(" 操作时间:" + recordItem.D_CreateOn.ToString("yyyy-MM-dd HH:mm:ss"));
- run.AddCarriageReturn();
- run.AppendText(" 状态:" + status);
- run.AddCarriageReturn();
- run.AppendText(" 处理人员:" + recordItem.C_CreateName);
- run.AddCarriageReturn();
- run.AppendText(" 现场描述:" + recordItem.C_Remark);
- run.AddCarriageReturn();
- run.AppendText(" 现场记录:" + recordItem.C_Record);
- if (recordItem.fileList != null && recordItem.fileList.Count() > 0)
- {
- run.AddCarriageReturn();
- run.AppendText(" 现场拍照:");
- foreach (var path in recordItem.fileList)
- {
- string pathFile = path.C_Url;
- if (!string.IsNullOrEmpty(pathFile))
- {
- if (pathFile[0].ToString() == @"/")
- {
- pathFile = pathFile.Substring(1);
- }
- if (!System.IO.File.Exists(pathFile))
- {
- pathFile = @"wwwroot/error.png";
- }
- FileStream fileStream = new FileStream(pathFile, FileMode.Open, FileAccess.Read);
- run.AddCarriageReturn();
- run.AddPicture(fileStream, 6, pathFile, Units.ToEMU(100), Units.ToEMU(100));
- }
- }
- }
- serialNum++;
- }
- using (var zipFile = new FileStream(zipPaht, FileMode.Create))
- {
- using (var memoryStream = new NpoiMemoryStream())
- {
- doc.Write(memoryStream);
- byte[] excelData = memoryStream.ToArray();
- using (var archive = new ZipArchive(zipFile, ZipArchiveMode.Update))
- {
- archive.CreateEntry($"{searchModel.C_MessageCode}报警详情.docx").Open().Write(excelData, 0, excelData.Length);
- }
- }
- }
- }
- string emailName = $"{searchModel.AlarmContent}-报警详情";
- using (var zipFile1 = new FileStream(zipPaht, FileMode.Open))
- {
- await Task.Run(() =>
- {
- EmailHelper.SendEmail(searchModel.Mails, emailName, "", "详情见附件", $"{emailName}.zip", "application/zip", zipFile1);
- });
- }
- System.IO.File.Delete(zipPaht);
- return new ApiResult(ReturnCode.Success);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- }
- }
- }
|