using Microsoft.AspNetCore.SignalR; using ZR.Admin.WebApi.Controllers; using ZR.Admin.WebApi.Hubs; using ZR.Service.mes.qc.IService; using Microsoft.AspNetCore.Mvc; using ZR.Model.MES.qc; using System.Collections.Generic; using ZR.Model.MES.qc.DTO; using NPOI.HSSF.UserModel; using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; namespace ZR.Admin.WebApi.Controllers.mes.qc.FQC { /// /// 生成报表 /// [Route("mes/qc/statistics")] public class QCStatisticsController : BaseController { private readonly IQCStatisticsService qcStatistics; public QCStatisticsController(IQCStatisticsService qcStatistics) { this.qcStatistics = qcStatistics; } /// /// 获取 统计表 首检 /// /// [HttpGet("queryQualityStatisticsTable_first")] public IActionResult GetQualityStatisticsTable_first(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize) { (List, int) list = qcStatistics.GetQualityStatisticsTable_first(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize); return SUCCESS(list); } /// /// 获取 统计表 二检 /// /// [HttpGet("queryQualityStatisticsTable_again")] public IActionResult GetQualityStatisticsTable_again(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize) { (List, int) list = qcStatistics.GetQualityStatisticsTable_again(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize); return SUCCESS(list); } /// /// 获取 统计表 三检 /// /// [HttpGet("queryQualityStatisticsTable_final")] public IActionResult GetQualityStatisticsTable_final(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize) { (List, int) list = qcStatistics.GetQualityStatisticsTable_final(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize); return SUCCESS(list); } /// /// 获取 统计表 总 /// /// [HttpGet("queryQualityStatisticsTable_total")] public IActionResult GetQualityStatisticsTable_total(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize) { (List, int) list = qcStatistics.GetQualityStatisticsTable_total(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize); return SUCCESS(list); } [HttpGet("delete_statisticsTable")] public IActionResult DeleteStatisticsTable(string workorderid) { int deletenum = qcStatistics.DeleteStatisticsTable(workorderid); return SUCCESS(deletenum); } /// /// 导出对应报表 /// /// 开始时间 /// 结束时间 /// 工单号 /// 零件号 /// 产品描述 /// 班组 /// 分页开始 /// 分页结束 /// 报表类别 1-首检 2-抛光 3-包装 4-全部 /// 是否展示细节,展示细节则根据三行,两行合并规则 /// [HttpGet("downloadStatisticsTableExcel")] public IActionResult DownloadStatisticsTableExcel(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize, int type, bool isShowDetail) { try { string fileName = @"导出统计报表-" + DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + Guid.NewGuid() + ".xlsx"; List excelDataList = qcStatistics.DownloadStatisticsTableExcel(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize, type); XSSFWorkbook workbook = new XSSFWorkbook(); var sheet = workbook.CreateSheet(); // 标题列 var row0 = sheet.CreateRow(0); ICellStyle style = workbook.CreateCellStyle(); style.Alignment = HorizontalAlignment.Center; style.VerticalAlignment = VerticalAlignment.Center; string[] titleDict = { "工单号", "零件号", "颜色", "描述", "生产投入数", "班次", "合格数", "合格率", "抛光总数", "打磨总数", "报废总数", "开始时间", "结束时间"}; string[] titleDetailDict = { "备注", "缩孔", "针孔" }; if(isShowDetail) { titleDict.Concat(titleDetailDict); } for (int i = 0; i < titleDict.Length; i++) { var cell = row0.CreateCell(i); cell.SetCellValue(titleDict[i]); cell.CellStyle = style; } string _lastWorkOrderId = ""; int rowIndex = 1; for (int i = 0;i< excelDataList.Count;i++) { var item = excelDataList[i]; if (_lastWorkOrderId == item.WorkorderId) { continue; } var row = sheet.CreateRow(rowIndex); if (!isShowDetail) { var cell1 = row.CreateCell(0); cell1.SetCellValue(item.WorkorderId); cell1.CellStyle = style; var cell2 = row.CreateCell(1); cell2.SetCellValue(item.FinishedPartNumber); cell2.CellStyle = style; var cell3 = row.CreateCell(2); cell3.SetCellValue(item.Color); cell3.CellStyle = style; var cell4 = row.CreateCell(3); cell4.SetCellValue(item.ProductDescription); cell4.CellStyle = style; var cell5 = row.CreateCell(4); cell5.SetCellValue(item.RequireNumber.ToString()); cell5.CellStyle = style; var cell6 = row.CreateCell(5); cell6.SetCellValue(item.Team); cell6.CellStyle = style; var cell7 = row.CreateCell(6); cell7.SetCellValue(item.RequireNumber.ToString()); cell7.CellStyle = style; var cell8 = row.CreateCell(7); cell8.SetCellValue(item.QualifiedRate.ToString()); cell8.CellStyle = style; var cell9 = row.CreateCell(8); cell9.SetCellValue(item.PaoguangTotal.ToString()); cell9.CellStyle = style; var cell10 = row.CreateCell(9); cell10.SetCellValue(item.DamoTotal.ToString()); cell10.CellStyle = style; var cell11 = row.CreateCell(10); cell11.SetCellValue(item.BaofeiTotal.ToString()); cell11.CellStyle = style; var cell12 = row.CreateCell(11); cell12.SetCellValue(item.StartTime.ToString()); cell12.CellStyle = style; var cell13 = row.CreateCell(12); cell13.SetCellValue(item.EndTime.ToString()); cell13.CellStyle = style; } _lastWorkOrderId = item.WorkorderId; rowIndex++; } IWebHostEnvironment webHostEnvironment = (IWebHostEnvironment)App.ServiceProvider.GetService(typeof(IWebHostEnvironment)); string fullPath = Path.Combine(webHostEnvironment.WebRootPath, "QualityStatisticsExport", fileName); using (FileStream fs = new(fullPath, FileMode.Create, FileAccess.Write)) { workbook.Write(fs); } workbook.Dispose(); return ExportExcel(fullPath, fileName); } catch (Exception e) { return ToResponse(new ApiResult(500, e.Message, "Excel导出异常")); } } } }