using Furion.DatabaseAccessor;
|
using Furion.DatabaseAccessor.Extensions;
|
using Furion.DependencyInjection;
|
using Furion.DynamicApiController;
|
using Furion.FriendlyException;
|
using Furion.JsonSerialization;
|
using iWare.Wms.Core;
|
using iWare.Wms.Core.Util;
|
using Mapster;
|
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore.Internal;
|
using Newtonsoft.Json;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Linq.Dynamic.Core;
|
using System.Text;
|
using System.Web;
|
|
namespace iWare.Wms.Application
|
{
|
/// <summary>
|
/// 质量数据查询服务
|
/// </summary>
|
[ApiDescriptionSettings("数据查询服务", Name = "QualityDataInfo", Order = 100)]
|
[Route("api/[Controller]")]
|
public class QualityDataInfoService : IQualityDataInfoService, IDynamicApiController, ITransient
|
{
|
private readonly IRepository<QualityDataInfo, MasterDbContextLocator> _qualityDataInfoRep;
|
private readonly IRepository<EquipmentBaseInfo, MasterDbContextLocator> _equipmentBaseInfoRep;
|
private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
|
private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
|
private readonly IRepository<AccessInterfaceLog, MasterDbContextLocator> _accessInterfaceLogRep;
|
|
/// <summary>
|
/// 质量数据查询构造
|
/// </summary>
|
/// <param name="qualityDataInfoRep"></param>
|
/// <param name="equipmentBaseInfoRep"></param>
|
/// <param name="sysDictTypeRep"></param>
|
/// <param name="sysDictDataRep"></param>
|
public QualityDataInfoService(
|
IRepository<QualityDataInfo, MasterDbContextLocator> qualityDataInfoRep,
|
IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep,
|
IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
|
IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
|
IRepository<AccessInterfaceLog, MasterDbContextLocator> accessInterfaceLogRep)
|
{
|
_qualityDataInfoRep = qualityDataInfoRep;
|
_equipmentBaseInfoRep = equipmentBaseInfoRep;
|
_sysDictTypeRep = sysDictTypeRep;
|
_sysDictDataRep = sysDictDataRep;
|
_sysDictDataRep = sysDictDataRep;
|
_accessInterfaceLogRep = accessInterfaceLogRep;
|
}
|
/// <summary>
|
/// 根据质量ID获取SPC质量信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("GetQualityInfoSPCForID")]
|
public async Task<AddQualityDataInfoInputV2> GetQualityInfoSPCForID([FromQuery] QualityDataInfoSearch2 input)
|
{
|
var interfaceLog = _accessInterfaceLogRep.DetachedEntities.Where(o => o.Id == input.QualityDataInfoID).FirstOrDefault();
|
if (interfaceLog == null || interfaceLog.Id < 1)
|
{//没有查询到
|
throw Oops.Oh($"当前工件{input.WorkPieceID ?? ""}没有SPC反馈信息!");
|
}
|
var output = JsonConvert.DeserializeObject<AddQualityDataInfoInputV2>(interfaceLog.ParaJSON);
|
return output;
|
}
|
/// <summary>
|
/// 根据质量ID获取质量信息
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("GetQualityInfoForID")]
|
public async Task<QualityDataInfoOutput> GetQualityInfoForID([FromQuery] QualityDataInfoSearch2 input)
|
{
|
QualityDataInfoOutput qualityDataInfo = new QualityDataInfoOutput();
|
if (input == null || string.IsNullOrEmpty(input.OperationType))
|
{
|
throw Oops.Oh("传参异常!");
|
}
|
if (input.OperationType.Equals("SPC"))
|
{
|
|
}
|
else
|
{
|
qualityDataInfo = await _qualityDataInfoRep.DetachedEntities
|
.Join(_equipmentBaseInfoRep.DetachedEntities, a => a.EquipmentID, b => b.EquipmentId, (a, b) => new { a, b })
|
//.Join(_sysDictDataRep.DetachedEntities, e => e.a.QualityState.ToString(), f => f.Code, (e, f) => new { e, f })
|
//.Join(_sysDictTypeRep.DetachedEntities, g => g.f.TypeId, h => h.Id, (f, g) => new { f, g })
|
//.Where(x => (x.g.Code.Equals("quality_state")))
|
.Where(input.WorkPieceID != null, w => w.a.WorkPieceID.Equals(input.WorkPieceID))
|
.Select(m => new QualityDataInfoOutput
|
{
|
Id = m.a.Id,
|
WorkPieceID = m.a.WorkPieceID,
|
EquipmentName = m.b.EquipmentName,
|
WorkingProcedure = m.a.WorkingProcedure,
|
QualityState = m.a.QualityState,
|
//QualityStateName = m.f.f.Value,
|
QualityStateUpdateMode = m.a.QualityStateUpdateMode,
|
QualityStateUpdateUser = m.a.QualityStateUpdateUser,
|
QualityReceiveTime = m.a.QualityReceiveTime,
|
OfflineTime = m.a.OfflineTime,
|
QualityOP10To1 = m.a.QualityOP10To1,
|
QualityOP40To1 = m.a.QualityOP40To1,
|
QualityOP20To1 = m.a.QualityOP20To1,
|
QualityOP30To1 = m.a.QualityOP30To1,
|
QualityOP30To2 = m.a.QualityOP30To2,
|
QualityOP30To3 = m.a.QualityOP30To3,
|
QualityOP30To4 = m.a.QualityOP30To4,
|
QualityOP30To5 = m.a.QualityOP30To5,
|
QualityOP30To6 = m.a.QualityOP30To6,
|
QualityOP30To7 = m.a.QualityOP30To7,
|
QualityOP30To8 = m.a.QualityOP30To8,
|
QualityOP30To9 = m.a.QualityOP30To9,
|
QualityOP30To10 = m.a.QualityOP30To10,
|
QualityOP30To11 = m.a.QualityOP30To11,
|
QualityOP35To1 = m.a.QualityOP35To1,
|
QualityOP35To2 = m.a.QualityOP35To2,
|
QualityOP60To1 = m.a.QualityOP60To1,
|
QualityOP60To2 = m.a.QualityOP60To2,
|
QualityOP70To1 = m.a.QualityOP70To1,
|
QualityOP70To2 = m.a.QualityOP70To2,
|
QualityOP70To3 = m.a.QualityOP70To3,
|
QualityOP80To1 = m.a.QualityOP80To1,
|
QualityOP80To2 = m.a.QualityOP80To2,
|
QualityOP80To3 = m.a.QualityOP80To3,
|
QualityOP80To4 = m.a.QualityOP80To4,
|
QualityOP80To5 = m.a.QualityOP80To5,
|
QualityOP80To6 = m.a.QualityOP80To6,
|
QualityOP80To7 = m.a.QualityOP80To7,
|
QualityOP80To8 = m.a.QualityOP80To8,
|
QualityOP80To9 = m.a.QualityOP80To9,
|
QualityOP80To10 = m.a.QualityOP80To10,
|
|
//新增OP80的一些质量数据 【Editby shaocx,2024 - 06 - 13】
|
QualityOP80_Houdu = m.a.QualityOP80_Houdu,
|
QualityOP80_ZXJ = m.a.QualityOP80_ZXJ,
|
QualityOP80_DTKYZD = m.a.QualityOP80_DTKYZD,
|
QualityOP80_XTSMYD = m.a.QualityOP80_XTSMYD,
|
QualityOP80_XTXMYD = m.a.QualityOP80_XTXMYD,
|
QualityOP80_D_TKZJ = m.a.QualityOP80_D_TKZJ,
|
QualityOP80_D_S_X = m.a.QualityOP80_D_S_X,
|
QualityOP80_D_S_Y = m.a.QualityOP80_D_S_Y,
|
QualityOP80_D_X_X = m.a.QualityOP80_D_X_X,
|
QualityOP80_D_X_Y = m.a.QualityOP80_D_X_Y,
|
QualityOP80_X_TKZJ = m.a.QualityOP80_X_TKZJ,
|
QualityOP80_X_S_X = m.a.QualityOP80_X_S_X,
|
QualityOP80_X_S_Y = m.a.QualityOP80_X_S_Y,
|
QualityOP80_X_X_X = m.a.QualityOP80_X_X_X,
|
QualityOP80_X_X_Y = m.a.QualityOP80_X_X_Y,
|
|
Remarks = m.a.Remarks,
|
})
|
//.OrderBy(PageInputOrder.OrderBuilder<QualityDataInfoSearch>(input))
|
.ProjectToType<QualityDataInfoOutput>()
|
.FirstOrDefaultAsync();
|
}
|
|
return qualityDataInfo;
|
}
|
|
/// <summary>
|
/// 分页查询质量数据查询
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet("page")]
|
public async Task<PageResult<QualityDataInfoOutput>> Page([FromQuery] QualityDataInfoSearch input)
|
{
|
if (!input.StartTime.HasValue || !input.EndTime.HasValue || input.StartTime > input.EndTime)
|
{
|
throw Oops.Oh("传参异常:日期范围必须传值!");
|
}
|
if (string.IsNullOrEmpty(input.EquipmentID))
|
{
|
throw Oops.Oh("传参异常:设备编号必须传参!");
|
}
|
|
//if (!string.IsNullOrEmpty(input.EquipmentID) && input.EquipmentID.Equals("EOP10") && string.IsNullOrEmpty(input.WorkingProcedure))
|
//{
|
// throw Oops.Oh("传参异常:工序必须传值!");
|
//}
|
var qualityDataInfos = await _qualityDataInfoRep.DetachedEntities
|
.Join(_equipmentBaseInfoRep.DetachedEntities, a => a.EquipmentID, b => b.EquipmentId, (a, b) => new { a, b })
|
//.Where(o => o.a.CreatedTime.Value.Date >= input.StartTime.Value)
|
//.Where(o => o.a.UpdatedTime.Value.Date <= input.EndTime.Value)
|
.Where(!string.IsNullOrEmpty(input.WorkPieceID), w => w.a.WorkPieceID.Contains(input.WorkPieceID))
|
.Where(input.EquipmentID.Equals("EOP10") && string.IsNullOrEmpty(input.WorkingProcedure), o => (o.a.OP10QualityReceiveTime.Value.Date >= input.StartTime.Value
|
&& o.a.OP10QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP10QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP10QualityState)) || (o.a.OP40QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP40QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP40QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP40QualityState)))
|
.Where(input.EquipmentID.Equals("EOP10") && !string.IsNullOrEmpty(input.WorkingProcedure) && input.WorkingProcedure.Equals("OP10"), o => (o.a.OP10QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP10QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP10QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP10QualityState)))
|
.Where(input.EquipmentID.Equals("EOP10") && !string.IsNullOrEmpty(input.WorkingProcedure) && input.WorkingProcedure.Equals("OP40"), o => (o.a.OP40QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP40QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP40QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP40QualityState)))
|
.Where(input.EquipmentID.Equals("EOP20"), o => o.a.OP20QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP20QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP20QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP20QualityState))
|
.Where(input.EquipmentID.Equals("EOP30"), o => o.a.OP30QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP30QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP30QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP30QualityState))
|
.Where(input.EquipmentID.Equals("EOP35"), o => o.a.OP35QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP35QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP35QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP35QualityState))
|
.Where(input.EquipmentID.Equals("EOP60"), o => o.a.OP60QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP60QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP60QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP60QualityState))
|
.Where(input.EquipmentID.Equals("EOP80"), o => o.a.OP80QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP80QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP80QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP80QualityState))
|
.Where(o => !string.IsNullOrEmpty(o.a.WorkPieceID))
|
.Select(m => new QualityDataInfoOutput
|
{
|
Id = m.a.Id,
|
WorkPieceID = m.a.WorkPieceID,
|
EquipmentID = input.EquipmentID,
|
//EquipmentName = m.b.EquipmentName,
|
WorkingProcedure = input.WorkingProcedure,
|
QualityState = m.a.QualityState,
|
//QualityStateName = m.a.f.f.Value,
|
QualityStateUpdateMode = m.a.QualityStateUpdateMode,
|
QualityStateUpdateUser = m.a.QualityStateUpdateUser,
|
QualityReceiveTime = m.a.QualityReceiveTime,
|
OfflineTime = m.a.OfflineTime,
|
QualityOP10To1 = m.a.QualityOP10To1,
|
QualityOP40To1 = m.a.QualityOP40To1,
|
QualityOP20To1 = m.a.QualityOP20To1,
|
QualityOP30To1 = m.a.QualityOP30To1,
|
QualityOP30To2 = m.a.QualityOP30To2,
|
QualityOP30To3 = m.a.QualityOP30To3,
|
QualityOP30To4 = m.a.QualityOP30To4,
|
QualityOP30To5 = m.a.QualityOP30To5,
|
QualityOP30To6 = m.a.QualityOP30To6,
|
QualityOP30To7 = m.a.QualityOP30To7,
|
QualityOP30To8 = m.a.QualityOP30To8,
|
QualityOP30To9 = m.a.QualityOP30To9,
|
QualityOP30To10 = m.a.QualityOP30To10,
|
QualityOP30To11 = m.a.QualityOP30To11,
|
QualityOP35To1 = m.a.QualityOP35To1,
|
QualityOP35To2 = m.a.QualityOP35To2,
|
QualityOP60To1 = m.a.QualityOP60To1,
|
QualityOP60To2 = m.a.QualityOP60To2,
|
QualityOP70To1 = m.a.QualityOP70To1,
|
QualityOP70To2 = m.a.QualityOP70To2,
|
QualityOP70To3 = m.a.QualityOP70To3,
|
QualityOP80To1 = m.a.QualityOP80To1,
|
QualityOP80To2 = m.a.QualityOP80To2,
|
QualityOP80To3 = m.a.QualityOP80To3,
|
QualityOP80To4 = m.a.QualityOP80To4,
|
QualityOP80To5 = m.a.QualityOP80To5,
|
QualityOP80To6 = m.a.QualityOP80To6,
|
QualityOP80To7 = m.a.QualityOP80To7,
|
QualityOP80To8 = m.a.QualityOP80To8,
|
QualityOP80To9 = m.a.QualityOP80To9,
|
QualityOP80To10 = m.a.QualityOP80To10,
|
OP10QualityReceiveTime = m.a.OP10QualityReceiveTime,
|
OP20QualityReceiveTime = m.a.OP20QualityReceiveTime,
|
OP30QualityReceiveTime = m.a.OP30QualityReceiveTime,
|
OP35QualityReceiveTime = m.a.OP35QualityReceiveTime,
|
OP40QualityReceiveTime = m.a.OP40QualityReceiveTime,
|
OP60QualityReceiveTime = m.a.OP60QualityReceiveTime,
|
OP80QualityReceiveTime = m.a.OP80QualityReceiveTime,
|
OP10QualityState = m.a.OP10QualityState,
|
OP20QualityState = m.a.OP20QualityState,
|
OP30QualityState = m.a.OP30QualityState,
|
OP40QualityState = m.a.OP40QualityState,
|
OP35QualityState = m.a.OP35QualityState,
|
OP60QualityState = m.a.OP60QualityState,
|
OP80QualityState = m.a.OP80QualityState,
|
|
OP30QualityStateCH3 = m.a.OP30QualityStateCH3,
|
OP30QualityStateCH4 = m.a.OP30QualityStateCH4,
|
OP30QualityStateCH5 = m.a.OP30QualityStateCH5,
|
OP30QualityStateCH6 = m.a.OP30QualityStateCH6,
|
|
//新增OP80的一些质量数据 【Editby shaocx,2024 - 06 - 13】
|
QualityOP80_Houdu = m.a.QualityOP80_Houdu,
|
QualityOP80_ZXJ = m.a.QualityOP80_ZXJ,
|
QualityOP80_DTKYZD = m.a.QualityOP80_DTKYZD,
|
QualityOP80_XTSMYD = m.a.QualityOP80_XTSMYD,
|
QualityOP80_XTXMYD = m.a.QualityOP80_XTXMYD,
|
QualityOP80_D_TKZJ = m.a.QualityOP80_D_TKZJ,
|
QualityOP80_D_S_X = m.a.QualityOP80_D_S_X,
|
QualityOP80_D_S_Y = m.a.QualityOP80_D_S_Y,
|
QualityOP80_D_X_X = m.a.QualityOP80_D_X_X,
|
QualityOP80_D_X_Y = m.a.QualityOP80_D_X_Y,
|
QualityOP80_X_TKZJ = m.a.QualityOP80_X_TKZJ,
|
QualityOP80_X_S_X = m.a.QualityOP80_X_S_X,
|
QualityOP80_X_S_Y = m.a.QualityOP80_X_S_Y,
|
QualityOP80_X_X_X = m.a.QualityOP80_X_X_X,
|
QualityOP80_X_X_Y = m.a.QualityOP80_X_X_Y,
|
|
Remarks = m.a.Remarks,
|
UpdateTime = m.a.UpdatedTime,
|
})
|
.ProjectToType<QualityDataInfoOutput>().ToListAsync();
|
|
if (input.EquipmentID.Equals("EOP10") && !string.IsNullOrEmpty(input.WorkingProcedure) && input.WorkingProcedure.Equals("OP10"))
|
{
|
qualityDataInfos = qualityDataInfos.OrderByDescending(x => x.OP10QualityReceiveTime).ToList();
|
}
|
else if (input.EquipmentID.Equals("EOP10") && !string.IsNullOrEmpty(input.WorkingProcedure) && input.WorkingProcedure.Equals("OP40"))
|
{
|
qualityDataInfos = qualityDataInfos.OrderByDescending(x => x.OP40QualityReceiveTime).ToList();
|
}
|
else if (input.EquipmentID.Equals("EOP20"))
|
{
|
qualityDataInfos = qualityDataInfos.OrderByDescending(x => x.OP20QualityReceiveTime).ToList();
|
}
|
else if (input.EquipmentID.Equals("EOP30"))
|
{
|
qualityDataInfos = qualityDataInfos.OrderByDescending(x => x.OP30QualityReceiveTime).ToList();
|
}
|
else if (input.EquipmentID.Equals("EOP60"))
|
{
|
qualityDataInfos = qualityDataInfos.OrderByDescending(x => x.OP60QualityReceiveTime).ToList();
|
}
|
else if (input.EquipmentID.Equals("EOP80"))
|
{
|
qualityDataInfos = qualityDataInfos.OrderByDescending(x => x.OP80QualityReceiveTime).ToList();
|
}
|
|
var retData = qualityDataInfos.ToADPagedList(input.PageNo, input.PageSize);
|
return retData;
|
}
|
|
|
|
/// <summary>
|
/// 根据质量数据导出Excel
|
/// </summary>
|
/// <param name="input">质量数据传入信息</param>
|
/// <returns>导出的Excel文件</returns>
|
[HttpGet("toExcel")]
|
public async Task<IActionResult> ToExcelAsync([FromQuery] QualityDataInfoSearch input)
|
{
|
if (!input.StartTime.HasValue || !input.EndTime.HasValue || input.StartTime > input.EndTime)
|
{
|
throw Oops.Oh("传参异常:日期范围必须传值!");
|
}
|
if (string.IsNullOrEmpty(input.EquipmentID))
|
{
|
throw Oops.Oh("传参异常:设备编号必须传参!");
|
}
|
|
var qualityDataInfos = await _qualityDataInfoRep.DetachedEntities
|
.Join(_equipmentBaseInfoRep.DetachedEntities, a => a.EquipmentID, b => b.EquipmentId, (a, b) => new { a, b })
|
//.Where(o => o.a.CreatedTime.Value.Date >= input.StartTime.Value)
|
//.Where(o => o.a.UpdatedTime.Value.Date <= input.EndTime.Value)
|
.Where(!string.IsNullOrEmpty(input.WorkPieceID), w => w.a.WorkPieceID.Contains(input.WorkPieceID))
|
.Where(input.EquipmentID.Equals("EOP10") && string.IsNullOrEmpty(input.WorkingProcedure), o => (o.a.OP10QualityReceiveTime.Value.Date >= input.StartTime.Value
|
&& o.a.OP10QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP10QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP10QualityState)) || (o.a.OP40QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP40QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP40QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP40QualityState)))
|
.Where(input.EquipmentID.Equals("EOP10") && !string.IsNullOrEmpty(input.WorkingProcedure) && input.WorkingProcedure.Equals("OP10"), o => (o.a.OP10QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP10QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP10QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP10QualityState)))
|
.Where(input.EquipmentID.Equals("EOP10") && !string.IsNullOrEmpty(input.WorkingProcedure) && input.WorkingProcedure.Equals("OP40"), o => (o.a.OP40QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP40QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP40QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP40QualityState)))
|
.Where(input.EquipmentID.Equals("EOP20"), o => o.a.OP20QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP20QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP20QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP20QualityState))
|
.Where(input.EquipmentID.Equals("EOP30"), o => o.a.OP30QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP30QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP30QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP30QualityState))
|
.Where(input.EquipmentID.Equals("EOP35"), o => o.a.OP35QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP35QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP35QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP35QualityState))
|
.Where(input.EquipmentID.Equals("EOP60"), o => o.a.OP60QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP60QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP60QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP60QualityState))
|
.Where(input.EquipmentID.Equals("EOP80"), o => o.a.OP80QualityReceiveTime.Value.Date >= input.StartTime.Value && o.a.OP80QualityReceiveTime.Value.Date <= input.EndTime.Value && o.a.OP80QualityState == (input.QualityState.HasValue ? input.QualityState.ToString() : o.a.OP80QualityState))
|
.Where(o => !string.IsNullOrEmpty(o.a.WorkPieceID))
|
.Select(m => new QualityDataInfoOutput
|
{
|
Id = m.a.Id,
|
WorkPieceID = m.a.WorkPieceID,
|
EquipmentID = input.EquipmentID,
|
//EquipmentName = m.b.EquipmentName,
|
WorkingProcedure = input.WorkingProcedure,
|
QualityState = m.a.QualityState,
|
//QualityStateName = m.a.f.f.Value,
|
QualityStateUpdateMode = m.a.QualityStateUpdateMode,
|
QualityStateUpdateUser = m.a.QualityStateUpdateUser,
|
QualityReceiveTime = m.a.QualityReceiveTime,
|
OfflineTime = m.a.OfflineTime,
|
QualityOP10To1 = m.a.QualityOP10To1,
|
QualityOP40To1 = m.a.QualityOP40To1,
|
QualityOP20To1 = m.a.QualityOP20To1,
|
QualityOP30To1 = m.a.QualityOP30To1,
|
QualityOP30To2 = m.a.QualityOP30To2,
|
QualityOP30To3 = m.a.QualityOP30To3,
|
QualityOP30To4 = m.a.QualityOP30To4,
|
QualityOP30To5 = m.a.QualityOP30To5,
|
QualityOP30To6 = m.a.QualityOP30To6,
|
QualityOP30To7 = m.a.QualityOP30To7,
|
QualityOP30To8 = m.a.QualityOP30To8,
|
QualityOP30To9 = m.a.QualityOP30To9,
|
QualityOP30To10 = m.a.QualityOP30To10,
|
QualityOP30To11 = m.a.QualityOP30To11,
|
QualityOP35To1 = m.a.QualityOP35To1,
|
QualityOP35To2 = m.a.QualityOP35To2,
|
QualityOP60To1 = m.a.QualityOP60To1,
|
QualityOP60To2 = m.a.QualityOP60To2,
|
QualityOP70To1 = m.a.QualityOP70To1,
|
QualityOP70To2 = m.a.QualityOP70To2,
|
QualityOP70To3 = m.a.QualityOP70To3,
|
QualityOP80To1 = m.a.QualityOP80To1,
|
QualityOP80To2 = m.a.QualityOP80To2,
|
QualityOP80To3 = m.a.QualityOP80To3,
|
QualityOP80To4 = m.a.QualityOP80To4,
|
QualityOP80To5 = m.a.QualityOP80To5,
|
QualityOP80To6 = m.a.QualityOP80To6,
|
QualityOP80To7 = m.a.QualityOP80To7,
|
QualityOP80To8 = m.a.QualityOP80To8,
|
QualityOP80To9 = m.a.QualityOP80To9,
|
QualityOP80To10 = m.a.QualityOP80To10,
|
OP10QualityReceiveTime = m.a.OP10QualityReceiveTime,
|
OP20QualityReceiveTime = m.a.OP20QualityReceiveTime,
|
OP30QualityReceiveTime = m.a.OP30QualityReceiveTime,
|
OP35QualityReceiveTime = m.a.OP35QualityReceiveTime,
|
OP40QualityReceiveTime = m.a.OP40QualityReceiveTime,
|
OP60QualityReceiveTime = m.a.OP60QualityReceiveTime,
|
OP80QualityReceiveTime = m.a.OP80QualityReceiveTime,
|
OP10QualityState = m.a.OP10QualityState,
|
OP20QualityState = m.a.OP20QualityState,
|
OP30QualityState = m.a.OP30QualityState,
|
OP40QualityState = m.a.OP40QualityState,
|
OP35QualityState = m.a.OP35QualityState,
|
OP60QualityState = m.a.OP60QualityState,
|
OP80QualityState = m.a.OP80QualityState,
|
|
//新增OP80的一些质量数据 【Editby shaocx,2024 - 06 - 13】
|
QualityOP80_Houdu = m.a.QualityOP80_Houdu,
|
QualityOP80_ZXJ = m.a.QualityOP80_ZXJ,
|
QualityOP80_DTKYZD = m.a.QualityOP80_DTKYZD,
|
QualityOP80_XTSMYD = m.a.QualityOP80_XTSMYD,
|
QualityOP80_XTXMYD = m.a.QualityOP80_XTXMYD,
|
QualityOP80_D_TKZJ = m.a.QualityOP80_D_TKZJ,
|
QualityOP80_D_S_X = m.a.QualityOP80_D_S_X,
|
QualityOP80_D_S_Y = m.a.QualityOP80_D_S_Y,
|
QualityOP80_D_X_X = m.a.QualityOP80_D_X_X,
|
QualityOP80_D_X_Y = m.a.QualityOP80_D_X_Y,
|
QualityOP80_X_TKZJ = m.a.QualityOP80_X_TKZJ,
|
QualityOP80_X_S_X = m.a.QualityOP80_X_S_X,
|
QualityOP80_X_S_Y = m.a.QualityOP80_X_S_Y,
|
QualityOP80_X_X_X = m.a.QualityOP80_X_X_X,
|
QualityOP80_X_X_Y = m.a.QualityOP80_X_X_Y,
|
|
Remarks = m.a.Remarks,
|
UpdateTime = m.a.UpdatedTime,
|
})
|
.ProjectToType<QualityDataInfoOutput>()
|
.OrderByDescending(o => o.UpdateTime)
|
.ToListAsync()
|
;
|
|
MemoryStream ms = new();
|
List<string> headers = new List<string>();
|
List<List<object>> data = new List<List<object>>();
|
string sheetName = "";
|
|
switch (input.EquipmentID)
|
{
|
case "EOP10":
|
//var lstOP10 = EntityPropHelper.Mapper<QualityDataOP1040Output, QualityDataInfoOutput>(qualityDataInfos);
|
var lstOP10 = qualityDataInfos.Adapt<List<QualityDataOP1040Output>>();
|
DataConvertUtil.ToExcelData(lstOP10, _sysDictTypeRep, _sysDictDataRep, out headers,
|
out data, out sheetName);
|
break;
|
case "EOP20":
|
var lstOP20 = qualityDataInfos.Adapt<List<QualityDataOP20Output>>();
|
DataConvertUtil.ToExcelData(lstOP20, _sysDictTypeRep, _sysDictDataRep, out headers,
|
out data, out sheetName);
|
break;
|
case "EOP30":
|
var lstOP30 = qualityDataInfos.Adapt<List<QualityDataOP30Output>>();
|
|
DataConvertUtil.ToExcelData(lstOP30, _sysDictTypeRep, _sysDictDataRep, out headers,
|
out data, out sheetName);
|
break;
|
case "EOP35":
|
var lstOP35 = qualityDataInfos.Adapt<List<QualityDataOP35Output>>();
|
|
DataConvertUtil.ToExcelData(lstOP35, _sysDictTypeRep, _sysDictDataRep, out headers,
|
out data, out sheetName);
|
break;
|
case "EOP40":
|
break;
|
case "EOP60":
|
var lstOP60 = qualityDataInfos.Adapt<List<QualityDataOP60Output>>();
|
|
DataConvertUtil.ToExcelData(lstOP60, _sysDictTypeRep, _sysDictDataRep, out headers,
|
out data, out sheetName);
|
break;
|
case "EOP70":
|
break;
|
case "EOP80":
|
var lstOP80 = qualityDataInfos.Adapt<List<QualityDataOP80Output>>();
|
|
DataConvertUtil.ToExcelData(lstOP80, _sysDictTypeRep, _sysDictDataRep, out headers,
|
out data, out sheetName);
|
break;
|
default:
|
DataConvertUtil.ToExcelData(qualityDataInfos, _sysDictTypeRep, _sysDictDataRep, out headers,
|
out data, out sheetName);
|
break;
|
}
|
|
ExcelUtil.ToExcel(headers, data, sheetName, ms);
|
ms.Position = 0;
|
var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
|
return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
|
}
|
|
}
|
}
|