267 lines
14 KiB
C#
267 lines
14 KiB
C#
using Infrastructure.Attribute;
|
|
using Mapster;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.IdentityModel.Tokens;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Security.AccessControl;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using ZR.Model.mes.md;
|
|
using ZR.Model.MES.qc;
|
|
using ZR.Model.MES.qc.DTO;
|
|
using ZR.Model.MES.qu;
|
|
using ZR.Service.mes.qc.IService;
|
|
|
|
namespace ZR.Service.mes.qc
|
|
{
|
|
/// <summary>
|
|
/// 查询报表
|
|
/// </summary>
|
|
[AppService(ServiceType = typeof(IQCStatisticsService), ServiceLifetime = LifeTime.Transient)]
|
|
public class QCStatisticsService : BaseService<QcQualityStatisticsFirst>, IQCStatisticsService
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <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>
|
|
/// <returns></returns>
|
|
/// <exception cref="NotImplementedException"></exception>
|
|
public (List<QcQualityStatisticsFirst>, int) GetQualityStatisticsTable_first(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize)
|
|
{
|
|
starttime = starttime.ToLocalTime();
|
|
endTime = endTime.ToLocalTime();
|
|
int totalNum = 0;
|
|
var predicate = Expressionable.Create<QcQualityStatisticsFirst>()
|
|
//XXX:修改查询日期查询的字段
|
|
.AndIF(starttime > new DateTime(2023, 1, 1, 0, 0, 0), it => it.StartTime >= starttime.ToLocalTime())
|
|
.AndIF(endTime > new DateTime(2023, 1, 1, 0, 0, 0), it => it.StartTime <= endTime.ToLocalTime())
|
|
.AndIF(!string.IsNullOrEmpty(workorderid), it => it.WorkorderId.Contains(workorderid))
|
|
.AndIF(!string.IsNullOrEmpty(partnumber), it => it.FinishedPartNumber.Contains(partnumber))
|
|
.AndIF(!string.IsNullOrEmpty(team), it => it.Team.Equals(team))
|
|
.AndIF(!string.IsNullOrEmpty(product_description), it => it.ProductDescription.Contains(product_description))
|
|
.ToExpression();
|
|
|
|
|
|
List<QcQualityStatisticsFirst> data = Context.Queryable<QcQualityStatisticsFirst>().Where(predicate).OrderBy(it => it.WorkorderId).OrderBy(it => it.Remark2).ToPageList(pageNum, pageSize, ref totalNum);
|
|
|
|
|
|
return (data, totalNum);
|
|
}
|
|
|
|
|
|
/// <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>
|
|
/// <returns></returns>
|
|
/// <exception cref="NotImplementedException"></exception>
|
|
public (List<QcQualityStatisticsAgain>, int) GetQualityStatisticsTable_again(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize)
|
|
{
|
|
starttime = starttime.ToLocalTime();
|
|
endTime = endTime.ToLocalTime();
|
|
int totalNum = 0;
|
|
var predicate = Expressionable.Create<QcQualityStatisticsAgain>()
|
|
//XXX:修改查询日期查询的字段
|
|
.AndIF(starttime > new DateTime(2023, 1, 1, 0, 0, 0), it => it.StartTime >= starttime.ToLocalTime())
|
|
.AndIF(endTime > new DateTime(2023, 1, 1, 0, 0, 0), it => it.StartTime <= endTime.ToLocalTime())
|
|
.AndIF(!string.IsNullOrEmpty(workorderid), it => it.WorkorderId.Contains(workorderid))
|
|
.AndIF(!string.IsNullOrEmpty(partnumber), it => it.FinishedPartNumber.Contains(partnumber))
|
|
.AndIF(!string.IsNullOrEmpty(team), it => it.Team.Equals(team))
|
|
.AndIF(!string.IsNullOrEmpty(product_description), it => it.ProductDescription.Contains(product_description))
|
|
.ToExpression();
|
|
|
|
|
|
List<QcQualityStatisticsAgain> data = Context.Queryable<QcQualityStatisticsAgain>().Where(predicate).OrderBy(it => it.WorkorderId).OrderBy(it => it.Remark2).ToPageList(pageNum, pageSize, ref totalNum);
|
|
|
|
|
|
return (data, totalNum);
|
|
}
|
|
|
|
/// <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>
|
|
/// <returns></returns>
|
|
/// <exception cref="NotImplementedException"></exception>
|
|
public (List<QcQualityStatisticsFinal>, int) GetQualityStatisticsTable_final(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize)
|
|
{
|
|
starttime = starttime.ToLocalTime();
|
|
endTime = endTime.ToLocalTime();
|
|
int totalNum = 0;
|
|
var predicate = Expressionable.Create<QcQualityStatisticsFinal>()
|
|
//XXX:修改查询日期查询的字段
|
|
.AndIF(starttime > new DateTime(2023, 1, 1, 0, 0, 0), it => it.StartTime >= starttime.ToLocalTime())
|
|
.AndIF(endTime > new DateTime(2023, 1, 1, 0, 0, 0), it => it.StartTime <= endTime.ToLocalTime())
|
|
.AndIF(!string.IsNullOrEmpty(workorderid), it => it.WorkorderId.Contains(workorderid))
|
|
.AndIF(!string.IsNullOrEmpty(partnumber), it => it.FinishedPartNumber.Contains(partnumber))
|
|
.AndIF(!string.IsNullOrEmpty(team), it => it.Team.Equals(team))
|
|
.AndIF(!string.IsNullOrEmpty(product_description), it => it.ProductDescription.Contains(product_description))
|
|
.ToExpression();
|
|
|
|
|
|
List<QcQualityStatisticsFinal> data = Context.Queryable<QcQualityStatisticsFinal>().Where(predicate).OrderBy(it => it.WorkorderId).OrderBy(it => it.Remark2).ToPageList(pageNum, pageSize, ref totalNum);
|
|
|
|
|
|
return (data, totalNum);
|
|
}
|
|
|
|
|
|
/// <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>
|
|
/// <returns></returns>
|
|
/// <exception cref="NotImplementedException"></exception>
|
|
public (List<QcQualityStatisticsTotal>, int) GetQualityStatisticsTable_total(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize)
|
|
{
|
|
starttime = starttime.ToLocalTime();
|
|
endTime = endTime.ToLocalTime();
|
|
int totalNum = 0;
|
|
var predicate = Expressionable.Create<QcQualityStatisticsTotal>()
|
|
//XXX:修改查询日期查询的字段
|
|
.AndIF(starttime > new DateTime(2023, 1, 1, 0, 0, 0), it => it.StartTime >= starttime.ToLocalTime())
|
|
.AndIF(endTime > new DateTime(2023, 1, 1, 0, 0, 0), it => it.StartTime <= endTime.ToLocalTime())
|
|
.AndIF(!string.IsNullOrEmpty(workorderid), it => it.WorkorderId.Contains(workorderid))
|
|
.AndIF(!string.IsNullOrEmpty(partnumber), it => it.FinishedPartNumber.Contains(partnumber))
|
|
.AndIF(!string.IsNullOrEmpty(team), it => it.Team.Equals(team))
|
|
.AndIF(!string.IsNullOrEmpty(product_description), it => it.ProductDescription.Contains(product_description))
|
|
.ToExpression();
|
|
|
|
List<QcQualityStatisticsTotal> data = Context.Queryable<QcQualityStatisticsTotal>().Where(predicate).OrderBy(it => it.WorkorderId).OrderBy(it => it.Remark2).ToPageList(pageNum, pageSize, ref totalNum);
|
|
|
|
|
|
return (data, totalNum);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除首检,二检,三检报表
|
|
/// </summary>
|
|
/// <param name="workorderid"></param>
|
|
/// <returns></returns>
|
|
public int DeleteStatisticsTable(string workorderid)
|
|
{
|
|
int num = 0;
|
|
num = num + Context.Deleteable<QcQualityStatisticsFirst>()
|
|
.Where(it => it.WorkorderId == workorderid).ExecuteCommand();
|
|
|
|
|
|
num = num + Context.Deleteable<QcQualityStatisticsAgain>().Where(it => it.WorkorderId == workorderid).ExecuteCommand();
|
|
|
|
|
|
num = num + Context.Deleteable<QcQualityStatisticsFinal>().Where(it => it.WorkorderId == workorderid).ExecuteCommand();
|
|
|
|
|
|
num = num + Context.Deleteable<QcQualityStatisticsTotal>().Where(it => it.WorkorderId == workorderid).ExecuteCommand();
|
|
|
|
|
|
return num;
|
|
|
|
}
|
|
List<QcQualityStatisticsFirstDto> IQCStatisticsService.DownloadStatisticsTableExcel(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize, int type)
|
|
{
|
|
try
|
|
{
|
|
pageNum = 1;
|
|
pageSize = 5000;
|
|
return type switch
|
|
{
|
|
// 首检
|
|
1 => DoFirstExcel(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize),
|
|
// 抛光
|
|
2 => DoSecondExcel(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize),
|
|
// 包装
|
|
3 => DoThirdExcel(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize),
|
|
// 总表
|
|
4 => DoTotalExcel(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize),
|
|
_ => throw new Exception("获取的报表类型错误!" + type),
|
|
};
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
|
|
}
|
|
public List<QcQualityStatisticsFirstDto> DoFirstExcel(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize)
|
|
{
|
|
|
|
List<QcQualityStatisticsFirst> list = GetQualityStatisticsTable_first(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize).Item1;
|
|
List<QcQualityStatisticsFirstDto> newList = list.Select(item => new QcQualityStatisticsFirstDto()
|
|
{
|
|
WorkorderId = item.WorkorderId,
|
|
FinishedPartNumber = item.FinishedPartNumber,
|
|
ProductDescription = product_description,
|
|
Color = item.Color,
|
|
RequireNumber = item.RequireNumber,
|
|
Team = item.Team,
|
|
QualifiedNumber = item.QualifiedNumber,
|
|
QualifiedRate = item.QualifiedRate ?? 0,
|
|
PaoguangTotal = item.PaoguangTotal ?? 0,
|
|
DamoTotal = item.DamoTotal ?? 0,
|
|
BaofeiTotal = item.BaofeiTotal ?? 0,
|
|
StartTime = item.StartTime,
|
|
EndTime = item.EndTime,
|
|
}).ToList();
|
|
return newList;
|
|
}
|
|
public List<QcQualityStatisticsFirstDto> DoSecondExcel(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize)
|
|
{
|
|
List<QcQualityStatisticsAgain> list = GetQualityStatisticsTable_again(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize).Item1;
|
|
List<QcQualityStatisticsFirstDto> newList = list.Select(item => new QcQualityStatisticsFirstDto()).ToList();
|
|
return newList;
|
|
}
|
|
|
|
public List<QcQualityStatisticsFirstDto> DoThirdExcel(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize)
|
|
{
|
|
List<QcQualityStatisticsFinal> list = GetQualityStatisticsTable_final(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize).Item1;
|
|
List<QcQualityStatisticsFirstDto> newList = list.Select(item => new QcQualityStatisticsFirstDto()).ToList();
|
|
return newList;
|
|
}
|
|
public List<QcQualityStatisticsFirstDto> DoTotalExcel(DateTime starttime, DateTime endTime, string workorderid, string partnumber, string product_description, string team, int pageNum, int pageSize)
|
|
{
|
|
List<QcQualityStatisticsTotal> list = GetQualityStatisticsTable_total(starttime, endTime, workorderid, partnumber, product_description, team, pageNum, pageSize).Item1;
|
|
List<QcQualityStatisticsFirstDto> newList = list.Select(item => new QcQualityStatisticsFirstDto()).ToList();
|
|
return newList;
|
|
}
|
|
}
|
|
}
|