油漆
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Admin.WebApi.Filters;
|
||||
using ZR.Service.mes.qc.IService;
|
||||
using ZR.Model.MES.qc.DTO;
|
||||
using ZR.Model.MES.qc;
|
||||
|
||||
//创建时间:2024-04-11
|
||||
namespace ZR.Admin.WebApi.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
/// 质量统计-首检
|
||||
/// </summary>
|
||||
[Verify]
|
||||
[Route("mes/qc/FQC/QcQualityStatisticsFirst")]
|
||||
public class QcQualityStatisticsFirstController : BaseController
|
||||
{
|
||||
/// <summary>
|
||||
/// 质量统计-首检接口
|
||||
/// </summary>
|
||||
private readonly IQcQualityStatisticsFirstService _QcQualityStatisticsFirstService;
|
||||
|
||||
public QcQualityStatisticsFirstController(IQcQualityStatisticsFirstService QcQualityStatisticsFirstService)
|
||||
{
|
||||
_QcQualityStatisticsFirstService = QcQualityStatisticsFirstService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询质量统计-首检列表
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("list")]
|
||||
[ActionPermissionFilter(Permission = "hidepage:qcqualitystatisticsfirst:list")]
|
||||
public IActionResult QueryQcQualityStatisticsFirst([FromQuery] QcQualityStatisticsFirstQueryDto parm)
|
||||
{
|
||||
var response = _QcQualityStatisticsFirstService.GetList(parm);
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询质量统计-首检详情
|
||||
/// </summary>
|
||||
/// <param name="Id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("{Id}")]
|
||||
[ActionPermissionFilter(Permission = "hidepage:qcqualitystatisticsfirst:query")]
|
||||
public IActionResult GetQcQualityStatisticsFirst(string Id)
|
||||
{
|
||||
var response = _QcQualityStatisticsFirstService.GetInfo(Id);
|
||||
|
||||
var info = response.Adapt<QcQualityStatisticsFirst>();
|
||||
return SUCCESS(info);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加质量统计-首检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[ActionPermissionFilter(Permission = "hidepage:qcqualitystatisticsfirst:add")]
|
||||
[Log(Title = "质量统计-首检", BusinessType = BusinessType.INSERT)]
|
||||
public IActionResult AddQcQualityStatisticsFirst([FromBody] QcQualityStatisticsFirstDto parm)
|
||||
{
|
||||
var modal = parm.Adapt<QcQualityStatisticsFirst>().ToCreate(HttpContext);
|
||||
|
||||
var response = _QcQualityStatisticsFirstService.AddQcQualityStatisticsFirst(modal);
|
||||
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新质量统计-首检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
[ActionPermissionFilter(Permission = "hidepage:qcqualitystatisticsfirst:edit")]
|
||||
[Log(Title = "质量统计-首检", BusinessType = BusinessType.UPDATE)]
|
||||
public IActionResult UpdateQcQualityStatisticsFirst([FromBody] QcQualityStatisticsFirstDto parm)
|
||||
{
|
||||
var modal = parm.Adapt<QcQualityStatisticsFirst>().ToUpdate(HttpContext);
|
||||
var response = _QcQualityStatisticsFirstService.UpdateQcQualityStatisticsFirst(modal);
|
||||
|
||||
return ToResponse(response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除质量统计-首检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpDelete("{ids}")]
|
||||
[ActionPermissionFilter(Permission = "hidepage:qcqualitystatisticsfirst:delete")]
|
||||
[Log(Title = "质量统计-首检", BusinessType = BusinessType.DELETE)]
|
||||
public IActionResult DeleteQcQualityStatisticsFirst(string ids)
|
||||
{
|
||||
long[] idsArr = Tools.SpitLongArrary(ids);
|
||||
if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
|
||||
|
||||
var response = _QcQualityStatisticsFirstService.Delete(idsArr);
|
||||
|
||||
return ToResponse(response);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,336 @@
|
||||
using Infrastructure.Constant;
|
||||
using Infrastructure.Extensions;
|
||||
using JinianNet.JNTemplate;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NPOI.POIFS.Crypt.Dsig;
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
using System.Text.Json;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Admin.WebApi.Hubs;
|
||||
using ZR.Model.MES.qc.DTO;
|
||||
using ZR.Model.MES.qu;
|
||||
using ZR.Service.mes.qc.IService;
|
||||
using ZR.Service.System;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
namespace ZR.Admin.WebApi.Controllers.mes.qc.IQC
|
||||
{
|
||||
|
||||
|
||||
[Route("mes/qc/FQC")]
|
||||
public class FirstFQCController : BaseController
|
||||
{
|
||||
private readonly IFirstFQCService fQCService;
|
||||
private readonly IQcQualityStatisticsFirstService qQCQualityStatisticsFirstService;
|
||||
private readonly IHubContext<MessageHub> hubContext;
|
||||
|
||||
public FirstFQCController(IFirstFQCService fQCService, IHubContext<MessageHub> hubContext, IQcQualityStatisticsFirstService qQCQualityStatisticsFirstService)
|
||||
{
|
||||
this.fQCService = fQCService;
|
||||
this.hubContext = hubContext;
|
||||
this.qQCQualityStatisticsFirstService = qQCQualityStatisticsFirstService;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取 检测项 填充 (首检)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcheckItemTable__first")]
|
||||
public IActionResult GetcheckItemTable__first(string workorderID)
|
||||
{
|
||||
|
||||
CheckItemTableDTO itemTableDTO = fQCService.GetCheckItemTable_first(workorderID);
|
||||
|
||||
return SUCCESS(itemTableDTO);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 写入工序时间 (首检)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("writeProcessFlow_first")]
|
||||
public IActionResult WriteProcessFlow_first(string workorderID,DateTime time)
|
||||
{
|
||||
|
||||
int result = fQCService.WriteProcessFlow_first(workorderID, time);
|
||||
|
||||
return SUCCESS(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取 检测项 填充 (二检)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcheckItemTable__again")]
|
||||
public IActionResult GetcheckItemTable__again(string workorderID)
|
||||
{
|
||||
|
||||
CheckItemTableDTO itemTableDTO = fQCService.GetCheckItemTable_again(workorderID);
|
||||
|
||||
return SUCCESS(itemTableDTO);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取 检测项 填充 (三检)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcheckItemTable__thirty")]
|
||||
public IActionResult GetcheckItemTable__thirty(string workorderID)
|
||||
{
|
||||
|
||||
CheckItemTableDTO itemTableDTO = fQCService.GetCheckItemTable_thirty(workorderID);
|
||||
|
||||
return SUCCESS(itemTableDTO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前工单 一检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcurrentWorkorder_first")]
|
||||
public IActionResult GetcurrentWorkorder_first()
|
||||
{
|
||||
|
||||
QcCurrentWorkorderDto workorder= fQCService.GetcurrentWorkorder_first();
|
||||
|
||||
return SUCCESS(workorder);
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取当前工单 二检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcurrentWorkorder_again")]
|
||||
public IActionResult GetcurrentWorkorder_again()
|
||||
{
|
||||
|
||||
QcCurrentWorkorderDto workorder = fQCService.GetcurrentWorkorder_again();
|
||||
|
||||
return SUCCESS(workorder);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前工单 三检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcurrentWorkorder_thirty")]
|
||||
public IActionResult GetcurrentWorkorder_thirty()
|
||||
{
|
||||
|
||||
QcCurrentWorkorderDto workorder = fQCService.GetcurrentWorkorder_thirty();
|
||||
|
||||
return SUCCESS(workorder);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取下一个工单 一检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcurrentWorkorder_next_first")]
|
||||
public IActionResult GetcurrentWorkorder_next_first()
|
||||
{
|
||||
|
||||
QcCurrentWorkorderDto workorder = fQCService.GetcurrentWorkorder_next_first();
|
||||
|
||||
return SUCCESS(workorder);
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取下一个工单 二检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcurrentWorkorder_next_again")]
|
||||
public IActionResult GetcurrentWorkorder_next_again()
|
||||
{
|
||||
|
||||
QcCurrentWorkorderDto workorder = fQCService.GetcurrentWorkorder_next_again();
|
||||
|
||||
return SUCCESS(workorder);
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取下一个工单 三检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcurrentWorkorder_next_thirty")]
|
||||
public IActionResult GetcurrentWorkorder_next_thirty()
|
||||
{
|
||||
|
||||
QcCurrentWorkorderDto workorder = fQCService.GetcurrentWorkorder_next_thirty();
|
||||
|
||||
Console.WriteLine("workorder" + workorder);
|
||||
|
||||
|
||||
return SUCCESS(workorder);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取上一个工单 一检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcurrentWorkorder_previous_first")]
|
||||
public IActionResult GetcurrentWorkorder_previous_first()
|
||||
{
|
||||
|
||||
QcCurrentWorkorderDto workorder = fQCService.GetcurrentWorkorder_previous_first();
|
||||
|
||||
return SUCCESS(workorder);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取上一个工单 二检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcurrentWorkorder_previous_again")]
|
||||
public IActionResult GetcurrentWorkorder_previous_again()
|
||||
{
|
||||
|
||||
QcCurrentWorkorderDto workorder = fQCService.GetcurrentWorkorder_previous_again();
|
||||
|
||||
return SUCCESS(workorder);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取上一个工单 三检
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getcurrentWorkorder_previous_thirty")]
|
||||
public IActionResult GetcurrentWorkorder_previous_thirty()
|
||||
{
|
||||
|
||||
QcCurrentWorkorderDto workorder = fQCService.GetcurrentWorkorder_previous_thirty();
|
||||
|
||||
return SUCCESS(workorder);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初检累加器
|
||||
/// </summary>
|
||||
/// <param name="workorder_id"></param>
|
||||
/// <param name="checkid"></param>
|
||||
/// <param name="number">要累加的值</param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("accumulator_query_first")]
|
||||
public IActionResult Accumulator_first(string workorder_id,int checkid,int number, string inspectionModule)
|
||||
{
|
||||
|
||||
int result= fQCService.Accumulator_first(workorder_id, checkid, number, inspectionModule, HttpContext.GetName());
|
||||
|
||||
return SUCCESS(result);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 二检累加器
|
||||
/// </summary>
|
||||
/// <param name="workorder_id"></param>
|
||||
/// <param name="checkid"></param>
|
||||
/// <param name="counter"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("accumulator_query_again")]
|
||||
public IActionResult Accumulator_again(string workorder_id, int checkid, int number, string inspectionModule)
|
||||
{
|
||||
|
||||
int result = fQCService.Accumulator_again(workorder_id, checkid, number, inspectionModule, HttpContext.GetName());
|
||||
|
||||
return SUCCESS(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 三检累加器
|
||||
/// </summary>
|
||||
/// <param name="workorder_id"></param>
|
||||
/// <param name="checkid"></param>
|
||||
/// <param name="counter"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("accumulator_query_thirty")]
|
||||
public IActionResult Accumulator_thirty(string workorder_id, int checkid, int number, string inspectionModule)
|
||||
{
|
||||
|
||||
int result = fQCService.Accumulator_thirty(workorder_id, checkid, number, inspectionModule, HttpContext.GetName());
|
||||
|
||||
return SUCCESS(result);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 计算当前工单抛光总数
|
||||
/// </summary>
|
||||
/// <param name="workorder_id"></param>
|
||||
/// <param name="checkid"></param>
|
||||
/// <param name="counter"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("calculate_polish_total_number")]
|
||||
public IActionResult CalculatePolishTotalNumber(string workorder_id)
|
||||
{
|
||||
|
||||
int AllNumber = fQCService.CalculatePolishTotalNumber(workorder_id);
|
||||
|
||||
return SUCCESS(AllNumber);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 计算当前工单下的包装投入数==一次合格+抛光合格
|
||||
/// </summary>
|
||||
/// <param name="workorder_id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("calculate_packagingInvestment")]
|
||||
public IActionResult CalculatePackagingInvestment(string workorder_id)
|
||||
{
|
||||
int AllNumber = fQCService.CalculatePackagingInvestment(workorder_id);
|
||||
return SUCCESS(AllNumber);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 更改工单状态为完成态
|
||||
[HttpGet("update_workorder_status")]
|
||||
public IActionResult UpdateWorkorderStatus(string workorderID)
|
||||
{
|
||||
int result= fQCService.UpdateWorkorderStatus(workorderID);
|
||||
return SUCCESS(result);
|
||||
}
|
||||
|
||||
|
||||
// 生成质量统计报表
|
||||
[HttpGet("generateQualityStatisticsTable")]
|
||||
public IActionResult GenerateQualityStatisticsTable(string workorderID,string team, DateTime firstQuality_time)
|
||||
{
|
||||
|
||||
int result = fQCService.GenerateQualityStatisticsTable(workorderID, team, firstQuality_time.ToLocalTime());
|
||||
return SUCCESS(result);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取工单号的开始时间
|
||||
/// </summary>
|
||||
/// <param name="workOrderId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getQcQualityStatisticsFirstStartTime")]
|
||||
public IActionResult GetQcQualityStatisticsFirstStartTime(string workOrderId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(workOrderId))
|
||||
{
|
||||
return ToResponse(new ApiResult(500, "工单号传入异常!", "工单号传入异常!"));
|
||||
}
|
||||
var result = qQCQualityStatisticsFirstService.GetQcQualityStatisticsFirstStartTime(workOrderId);
|
||||
return ToResponse(new ApiResult(200, result, result));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,370 @@
|
||||
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;
|
||||
using NPOI.SS.Util;
|
||||
using NPOI.HSSF.Util;
|
||||
|
||||
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, 27, 33, 38 };
|
||||
string[] titleDetailDict = {
|
||||
"备注",
|
||||
"缩孔", "针孔", "失光","色差","点子","其他",
|
||||
"水斑", "脏点", "变形","油珠","脱落","撞伤","其他",
|
||||
"毛刺", "缩印", "擦伤","砂印","脏点","打磨",
|
||||
"流挂", "色漆 缺漆", "清漆缺漆","桔皮","其他",
|
||||
"脱落擦伤", "清漆漆块", "色漆漆块","发花","亮斑","喷漏",};
|
||||
// 标题列位于第几行
|
||||
int startTitle = 0;
|
||||
if (isShowDetail)
|
||||
{
|
||||
// 调整第一行分组
|
||||
startTitle = 1;
|
||||
var groupTitle = sheet.CreateRow(0);
|
||||
var titleCell1 = groupTitle.CreateCell(0);
|
||||
titleCell1.SetCellValue("工单信息");
|
||||
titleCell1.CellStyle = style;
|
||||
for (int i = 0; i < titleGroupDict.Length;i++)
|
||||
{
|
||||
var cell = groupTitle.CreateCell(titleGroupIndex[i]);
|
||||
cell.SetCellValue(titleGroupDict[i]);
|
||||
cell.CellStyle = style;
|
||||
}
|
||||
// 标题列表添加详情
|
||||
titleDict = titleDict.Concat(titleDetailDict).ToArray();
|
||||
|
||||
// 合并标题列
|
||||
CellRangeAddress titleRange1 = new(0, 0, 0, titleGroupIndex[0]-1);
|
||||
sheet.AddMergedRegion(titleRange1);
|
||||
CellRangeAddress titleRange2 = new(0, 0, titleGroupIndex[0], titleGroupIndex[1] - 1);
|
||||
sheet.AddMergedRegion(titleRange2);
|
||||
CellRangeAddress titleRange3 = new(0, 0, titleGroupIndex[1], titleGroupIndex[2] - 1);
|
||||
sheet.AddMergedRegion(titleRange3);
|
||||
CellRangeAddress titleRange4 = new(0, 0, titleGroupIndex[2], titleGroupIndex[3] - 1);
|
||||
sheet.AddMergedRegion(titleRange4);
|
||||
CellRangeAddress titleRange5 = new(0, 0, titleGroupIndex[3], titleGroupIndex[4] - 1);
|
||||
sheet.AddMergedRegion(titleRange5);
|
||||
CellRangeAddress titleRange6 = new(0, 0, titleGroupIndex[4], titleGroupIndex[4] + 5);
|
||||
sheet.AddMergedRegion(titleRange6);
|
||||
}
|
||||
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 = startTitle + 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(item.ProductDescription.ToString());
|
||||
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.Remark.ToString());
|
||||
cell14.CellStyle = style;
|
||||
// 油漆
|
||||
var cell15 = row.CreateCell(14);
|
||||
cell15.SetCellValue(item.PaintSuokong.ToString() == "0"? "": item.PaintSuokong.ToString());
|
||||
cell15.CellStyle = style;
|
||||
var cell16 = row.CreateCell(15);
|
||||
cell16.SetCellValue(item.PaintZhengkong.ToString() == "0" ? "" : item.PaintZhengkong.ToString());
|
||||
cell16.CellStyle = style;
|
||||
var cell17 = row.CreateCell(16);
|
||||
cell17.SetCellValue(item.PaintShiguang.ToString() == "0" ? "" : item.PaintShiguang.ToString());
|
||||
cell17.CellStyle = style;
|
||||
var cell18 = row.CreateCell(17);
|
||||
cell18.SetCellValue(item.PaintSecha.ToString() == "0" ? "" : item.PaintSecha.ToString());
|
||||
cell18.CellStyle = style;
|
||||
var cell19 = row.CreateCell(18);
|
||||
cell19.SetCellValue(item.PaintDianzi.ToString() == "0" ? "" : item.PaintDianzi.ToString());
|
||||
cell19.CellStyle = style;
|
||||
var cell20 = row.CreateCell(19);
|
||||
cell20.SetCellValue(item.PaintOther.ToString() == "0" ? "" : item.PaintOther.ToString());
|
||||
cell20.CellStyle = style;
|
||||
// 设备
|
||||
var cell21 = row.CreateCell(20);
|
||||
cell21.SetCellValue(item.DeviceShuiban.ToString() == "0" ? "" : item.DeviceShuiban.ToString());
|
||||
cell21.CellStyle = style;
|
||||
var cell22 = row.CreateCell(21);
|
||||
cell22.SetCellValue(item.DeviceZandian.ToString() == "0" ? "" : item.DeviceZandian.ToString());
|
||||
cell22.CellStyle = style;
|
||||
var cell23 = row.CreateCell(22);
|
||||
cell23.SetCellValue(item.DeviceBianxing.ToString() == "0" ? "" : item.DeviceBianxing.ToString());
|
||||
cell23.CellStyle = style;
|
||||
var cell24 = row.CreateCell(23);
|
||||
cell24.SetCellValue(item.DeviceYouzhu.ToString() == "0" ? "" : item.DeviceYouzhu.ToString());
|
||||
cell24.CellStyle = style;
|
||||
var cell25 = row.CreateCell(24);
|
||||
cell25.SetCellValue(item.DeviceTuoluo.ToString() == "0" ? "" : item.DeviceTuoluo.ToString());
|
||||
cell25.CellStyle = style;
|
||||
var cell26 = row.CreateCell(25);
|
||||
cell26.SetCellValue(item.DeviceZhuangshang.ToString() == "0" ? "" : item.DeviceZhuangshang.ToString());
|
||||
cell26.CellStyle = style;
|
||||
var cell27 = row.CreateCell(26);
|
||||
cell27.SetCellValue(item.DeviceOther.ToString() == "0" ? "" : item.DeviceOther.ToString());
|
||||
cell27.CellStyle = style;
|
||||
// 毛坯
|
||||
var cell28 = row.CreateCell(27);
|
||||
cell28.SetCellValue(item.BlankMaoci.ToString() == "0" ? "" : item.BlankMaoci.ToString());
|
||||
cell28.CellStyle = style;
|
||||
var cell29 = row.CreateCell(28);
|
||||
cell29.SetCellValue(item.BlankSuoyin.ToString() == "0" ? "" : item.BlankSuoyin.ToString());
|
||||
cell29.CellStyle = style;
|
||||
var cell30 = row.CreateCell(29);
|
||||
cell30.SetCellValue(item.BlankCanshuang.ToString() == "0" ? "" : item.BlankCanshuang.ToString());
|
||||
cell30.CellStyle = style;
|
||||
var cell31 = row.CreateCell(30);
|
||||
cell31.SetCellValue(item.BlankShaying.ToString() == "0" ? "" : item.BlankShaying.ToString());
|
||||
cell31.CellStyle = style;
|
||||
var cell32 = row.CreateCell(31);
|
||||
cell32.SetCellValue(item.BlankZangdian.ToString() == "0" ? "" : item.BlankZangdian.ToString());
|
||||
cell32.CellStyle = style;
|
||||
var cell33 = row.CreateCell(32);
|
||||
cell33.SetCellValue(item.BlankDamo.ToString() == "0" ? "" : item.BlankDamo.ToString());
|
||||
cell33.CellStyle = style;
|
||||
// 程序
|
||||
var cell34 = row.CreateCell(33);
|
||||
cell34.SetCellValue(item.ProgramLiuguang.ToString() == "0" ? "" : item.ProgramLiuguang.ToString());
|
||||
cell34.CellStyle = style;
|
||||
var cell35 = row.CreateCell(34);
|
||||
cell35.SetCellValue(item.ProgramSeqiqueqi.ToString() == "0" ? "" : item.ProgramSeqiqueqi.ToString());
|
||||
cell35.CellStyle = style;
|
||||
var cell36 = row.CreateCell(35);
|
||||
cell36.SetCellValue(item.ProgramQingqiqueqi.ToString() == "0" ? "" : item.ProgramQingqiqueqi.ToString());
|
||||
cell36.CellStyle = style;
|
||||
var cell37 = row.CreateCell(36);
|
||||
cell37.SetCellValue(item.ProgramJupi.ToString() == "0" ? "" : item.ProgramJupi.ToString());
|
||||
cell37.CellStyle = style;
|
||||
var cell38 = row.CreateCell(37);
|
||||
cell38.SetCellValue(item.ProgramOther.ToString() == "0" ? "" : item.ProgramOther.ToString());
|
||||
cell38.CellStyle = style;
|
||||
// 班组操作
|
||||
var cell39 = row.CreateCell(38);
|
||||
cell39.SetCellValue(item.TeamTuoluocanshuang.ToString() == "0" ? "" : item.TeamTuoluocanshuang.ToString());
|
||||
cell39.CellStyle = style;
|
||||
var cell40 = row.CreateCell(39);
|
||||
cell40.SetCellValue(item.TeamQingqiqikuai.ToString() == "0" ? "" : item.TeamQingqiqikuai.ToString());
|
||||
cell40.CellStyle = style;
|
||||
var cell41 = row.CreateCell(40);
|
||||
cell41.SetCellValue(item.TeamSeqiqikuai.ToString() == "0" ? "" : item.TeamSeqiqikuai.ToString());
|
||||
cell41.CellStyle = style;
|
||||
var cell42 = row.CreateCell(41);
|
||||
cell42.SetCellValue(item.TeamFahua.ToString() == "0" ? "" : item.TeamFahua.ToString());
|
||||
cell42.CellStyle = style;
|
||||
var cell43 = row.CreateCell(42);
|
||||
cell43.SetCellValue(item.TeamLiangbang.ToString() == "0" ? "" : item.TeamLiangbang.ToString());
|
||||
cell43.CellStyle = style;
|
||||
var cell44 = row.CreateCell(43);
|
||||
cell44.SetCellValue(item.TeamPenglou.ToString() == "0" ? "" : item.TeamPenglou.ToString());
|
||||
cell44.CellStyle = style;
|
||||
// 单元格合并
|
||||
// 合并行数
|
||||
int checkIndex = rowIndex + 1;
|
||||
if (type == 3)
|
||||
{
|
||||
for (int rangeCol = 0; rangeCol < 13; rangeCol++)
|
||||
{
|
||||
if (rowIndex % 2 == 0)
|
||||
{
|
||||
CellRangeAddress cellRangeAddress = new(rowIndex, rowIndex + 1, rangeCol, rangeCol);
|
||||
sheet.AddMergedRegion(cellRangeAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int rangeCol = 0; rangeCol < 13; rangeCol++)
|
||||
{
|
||||
if (checkIndex % 3 == 0)
|
||||
{
|
||||
CellRangeAddress cellRangeAddress = new(rowIndex, rowIndex + 2, rangeCol, rangeCol);
|
||||
sheet.AddMergedRegion(cellRangeAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
_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导出异常"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
using Infrastructure.Extensions;
|
||||
using JinianNet.JNTemplate;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Text.Json;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Model.mes.pro;
|
||||
using ZR.Model.MES.qc.DTO;
|
||||
using ZR.Service.mes.pro;
|
||||
using ZR.Service.mes.pro.IService;
|
||||
using ZR.Service.mes.qu.IService;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
namespace ZR.Admin.WebApi.Controllers.mes.qu
|
||||
{
|
||||
[Route("mes/qc/IQC")]
|
||||
public class QcRoughController : BaseController
|
||||
{
|
||||
private readonly IQcRoughService quRoughService;
|
||||
|
||||
public QcRoughController(IQcRoughService quRoughService)
|
||||
{
|
||||
this.quRoughService = quRoughService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有排产工单
|
||||
/// </summary>
|
||||
/// <param name="pageNum"></param>
|
||||
/// <param name="pageSize"></param>
|
||||
/// <param name="year"></param>
|
||||
/// <param name="week"></param>
|
||||
/// <param name="date"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getStatisticslist")]
|
||||
public IActionResult GetStatisticslist(int pageNum, int pageSize, int year = -1, int week = -1, int date = -1)
|
||||
{
|
||||
(List<Mr_QuRoughDTO>, int) data = quRoughService.GetStatisticslist(pageNum, pageSize, year, week, date, 1);
|
||||
|
||||
return ToResponse(new ApiResult(200, "success", data));
|
||||
}
|
||||
/// <summary>
|
||||
/// 更新统计表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
|
||||
[HttpGet("updateStatisticsTable")]
|
||||
public IActionResult UpdateStatisticsTable(string id, int actualNumber, int randomRate, int ngs, int oks, decimal oksRatio,int Isqualified)
|
||||
{
|
||||
|
||||
if (string.IsNullOrEmpty(id))
|
||||
return ToResponse(new ApiResult(200, "success", 0));
|
||||
int result = quRoughService.UpdateStatisticsTable(id, actualNumber, randomRate, ngs, oks, oksRatio,Isqualified);
|
||||
return ToResponse(new ApiResult(200, "success", result));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using Infrastructure.Extensions;
|
||||
using JinianNet.JNTemplate;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Text.Json;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Model.MES.qu;
|
||||
using ZR.Service.mes.qc.IService;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
namespace ZR.Admin.WebApi.Controllers.mes.qc
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 检测
|
||||
/// </summary>
|
||||
[Route("mes/qc/IQC")]
|
||||
public class QcinspectionItemController : BaseController
|
||||
{
|
||||
private readonly IQcinspectionItemService qcinspection;
|
||||
|
||||
public QcinspectionItemController(IQcinspectionItemService qcinspection)
|
||||
{
|
||||
|
||||
this.qcinspection = qcinspection;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回检测项列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("getinspectionItemList")]
|
||||
public IActionResult GetinspectionItemList(string inspectionModule="",string inspectionType="")
|
||||
{
|
||||
List<QcInspectionitem> data = qcinspection.GetinspectionItemList(inspectionModule, inspectionType);
|
||||
return ToResponse(new ApiResult(200, "success", data));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user