238 lines
11 KiB
C#
238 lines
11 KiB
C#
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;
|
|
using ZR.Model.MES.wms;
|
|
using SqlSugar;
|
|
|
|
namespace ZR.Admin.WebApi.Controllers.mes.qc.FQC
|
|
{
|
|
/// <summary>
|
|
/// 生成报表
|
|
/// </summary>
|
|
[Route("mes/qc/statistics")]
|
|
public class QCStatisticsController : BaseController
|
|
{
|
|
private readonly IQCStatisticsService qcStatistics;
|
|
public QCStatisticsController(IQCStatisticsService qcStatistics)
|
|
{
|
|
this.qcStatistics = qcStatistics;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取 统计表 首检
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[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<QcQualityStatisticsFirst>, int) list = qcStatistics.GetQualityStatisticsTable_first(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize);
|
|
|
|
return SUCCESS(list);
|
|
}
|
|
/// <summary>
|
|
/// 获取 统计表 二检
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[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<QcQualityStatisticsAgain>, int) list = qcStatistics.GetQualityStatisticsTable_again(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize);
|
|
|
|
return SUCCESS(list);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取 统计表 三检
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[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<QcQualityStatisticsFinal>, int) list = qcStatistics.GetQualityStatisticsTable_final(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize);
|
|
|
|
return SUCCESS(list);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取 统计表 总
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[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<QcQualityStatisticsTotal>, 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);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 导出对应报表
|
|
/// </summary>
|
|
/// <param name="starttime">开始时间</param>
|
|
/// <param name="endTime">结束时间</param>
|
|
/// <param name="workorderid">工单号</param>
|
|
/// <param name="partnumber">零件号</param>
|
|
/// <param name="product_description">产品描述</param>
|
|
/// <param name="team">班组</param>
|
|
/// <param name="pageNum">分页开始</param>
|
|
/// <param name="pageSize">分页结束</param>
|
|
/// <param name="type">报表类别 1-首检 2-抛光 3-包装 4-全部</param>
|
|
/// <param name="isShowDetail">是否展示细节,展示细节则根据三行,两行合并规则</param>
|
|
/// <returns></returns>
|
|
[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<QcQualityStatisticsFirstDto> excelDataList = qcStatistics.DownloadStatisticsTableExcel(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize, type);
|
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
|
var sheet = workbook.CreateSheet();
|
|
// 单元格样式
|
|
ICellStyle style = workbook.CreateCellStyle();
|
|
style.Alignment = HorizontalAlignment.Center;
|
|
style.VerticalAlignment = VerticalAlignment.Center;
|
|
// 标题列表
|
|
string[] titleDict = { "工单号", "零件号", "颜色", "描述", "生产投入数", "班次", "合格数", "合格率", "抛光总数", "打磨总数", "报废总数", "开始时间", "结束时间"};
|
|
string[] titleGroupDict = {"油漆", "设备", "毛坯", "程序", "班组操作" };
|
|
int[] titleGroupIndex = { 14, 20, 26, 32, 38 };
|
|
string[] titleDetailDict = { "备注", "缩孔", "针孔", "失光","色差","点子","其他" };
|
|
// 标题列位于第几行
|
|
int startTitle = 0;
|
|
if (isShowDetail)
|
|
{
|
|
// 调整第一行分组
|
|
startTitle = 1;
|
|
var groupTitle = sheet.CreateRow(0);
|
|
for (int i = 0; i < titleGroupDict.Length;i++)
|
|
{
|
|
var cell = groupTitle.CreateCell(i);
|
|
cell.SetCellValue(titleGroupIndex[i]);
|
|
cell.CellStyle = style;
|
|
}
|
|
// 标题列表添加详情
|
|
titleDict.Concat(titleDetailDict);
|
|
}
|
|
var rowTitle = sheet.CreateRow(startTitle);
|
|
for (int i = 0; i < titleDict.Length; i++)
|
|
{
|
|
var cell = rowTitle.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 (!isShowDetail &&_lastWorkOrderId == item.WorkorderId)
|
|
{
|
|
continue;
|
|
}
|
|
var row = sheet.CreateRow(rowIndex);
|
|
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(qcStatistics.GetDescription(item.FinishedPartNumber));
|
|
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.QualifiedNumber.ToString());
|
|
cell7.CellStyle = style;
|
|
var cell8 = row.CreateCell(7);
|
|
cell8.SetCellValue(((int)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;
|
|
if(isShowDetail)
|
|
{
|
|
// 油漆
|
|
var cell14 = row.CreateCell(13);
|
|
cell14.SetCellValue(item.PaintSuokong.ToString());
|
|
cell14.CellStyle = style;
|
|
var cell15 = row.CreateCell(14);
|
|
cell15.SetCellValue(item.PaintZhengkong.ToString());
|
|
cell15.CellStyle = style;
|
|
var cell16 = row.CreateCell(15);
|
|
cell16.SetCellValue(item.PaintShiguang.ToString());
|
|
cell16.CellStyle = style;
|
|
var cell17 = row.CreateCell(16);
|
|
cell17.SetCellValue(item.PaintSecha.ToString());
|
|
cell17.CellStyle = style;
|
|
var cell18 = row.CreateCell(17);
|
|
cell18.SetCellValue(item.PaintDianzi.ToString());
|
|
cell18.CellStyle = style;
|
|
var cell19 = row.CreateCell(18);
|
|
cell19.SetCellValue(item.PaintOther.ToString());
|
|
cell19.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导出异常"));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|