BeizeValveBackend/DOAN.Service/MES/Quality/FQC/QcFinishedproductDefectService.cs

155 lines
7.6 KiB
C#
Raw Normal View History

2024-12-27 10:08:11 +08:00
using DOAN.Model;
2024-12-27 16:19:40 +08:00
using DOAN.Model.MES.product;
2024-12-27 10:08:11 +08:00
using DOAN.Model.MES.quality.FQC;
using DOAN.Model.MES.quality.IQC;
using DOAN.Model.MES.quality.IQC.Dto;
2024-12-27 15:06:06 +08:00
using DOAN.Model.MES.Quality.FQC.Dto;
2024-12-27 15:28:05 +08:00
using DOAN.Model.System;
2024-12-27 16:19:40 +08:00
using DOAN.Model.System.Dto;
2024-12-27 10:08:11 +08:00
using DOAN.Repository;
using DOAN.Service.MES.quality.FQC.IService;
using Infrastructure.Attribute;
2024-12-27 15:28:05 +08:00
using SqlSugar.DistributedSystem.Snowflake;
2024-12-27 10:08:11 +08:00
using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
namespace DOAN.Service.MES.quality.FQC
{
/// <summary>
/// 成品缺陷收集 Service业务层处理
/// </summary>
[AppService(ServiceType = typeof(IQcFinishedproductDefectService), ServiceLifetime = LifeTime.Transient)]
public class QcFinishedproductDefectService : BaseService<QcFinishedproductDefectCollection>, IQcFinishedproductDefectService
{
2024-12-27 15:06:06 +08:00
public bool AddDefectNum(QueryFQCDto queryFQCDto)
2024-12-27 10:08:11 +08:00
{
int flag = 0;
2024-12-27 15:28:05 +08:00
if(!string.IsNullOrEmpty(queryFQCDto.CheckName))
{
string NickName = Context.Queryable<SysUser>().Where(it => it.UserName == queryFQCDto.CheckName).Select(it => it.NickName).First();
queryFQCDto.CheckName = string.IsNullOrEmpty(NickName) ? queryFQCDto.CheckName + "|异常人员|" : NickName;
}
2024-12-27 10:08:11 +08:00
// 检查 Workorder 是否存在
var existingRecord = Context.Queryable<QcFinishedproductDefectCollection>()
2024-12-27 15:06:06 +08:00
.Where(it => it.Workorder == queryFQCDto.WorkOrder)
.Where(it => it.DefectCode == queryFQCDto.DefectCode)
2024-12-27 10:08:11 +08:00
.First();
if (existingRecord != null)
{
// 更新 Number 字段
flag = Context.Updateable<QcFinishedproductDefectCollection>()
.SetColumns(it => new QcFinishedproductDefectCollection
{
Number = it.Number + 1,
2024-12-27 15:28:05 +08:00
UpdatedTime = DateTime.Now,
CheckDatetime = DateTime.Now,
CheckName=queryFQCDto.CheckName
2024-12-27 10:08:11 +08:00
})
2024-12-27 15:06:06 +08:00
.Where(it => it.Workorder == queryFQCDto.WorkOrder)
.Where(it => it.DefectCode == queryFQCDto.DefectCode)
2024-12-27 10:08:11 +08:00
.ExecuteCommand();
}
else
{
// 插入新记录
QcFinishedproductDefectCollection qcFinishedproductDefect = new QcFinishedproductDefectCollection();
qcFinishedproductDefect.Id = XueHua;
2024-12-27 15:06:06 +08:00
qcFinishedproductDefect.Workorder = queryFQCDto.WorkOrder;
qcFinishedproductDefect.DefectCode = queryFQCDto.DefectCode;
2024-12-27 15:28:05 +08:00
qcFinishedproductDefect.DefectName = Context.Queryable<QcDefectConfig>().Where(it => it.Code == queryFQCDto.DefectCode).Select(it => it.Name).First();
qcFinishedproductDefect.CheckName = queryFQCDto.CheckName;
qcFinishedproductDefect.CheckDatetime = DateTime.Now;
2024-12-27 10:08:11 +08:00
qcFinishedproductDefect.CreatedTime = DateTime.Now;
2024-12-27 15:28:05 +08:00
2024-12-27 10:08:11 +08:00
qcFinishedproductDefect.Number = 1;
flag = Context.Insertable(qcFinishedproductDefect).ExecuteCommand();
}
return flag > 0 ? true : false;
}
2024-12-27 15:06:06 +08:00
public bool UpdateDefectNum(QueryFQCDto queryFQCDto)
2024-12-27 10:08:11 +08:00
{
int flag = 0;
2024-12-27 15:28:05 +08:00
if (!string.IsNullOrEmpty(queryFQCDto.CheckName))
{
string NickName = Context.Queryable<SysUser>().Where(it => it.UserName == queryFQCDto.CheckName).Select(it => it.NickName).First();
queryFQCDto.CheckName = string.IsNullOrEmpty(NickName) ? queryFQCDto.CheckName + "|异常人员|" : NickName;
flag = Context.Updateable<QcFinishedproductDefectCollection>()
.SetColumns(it => new QcFinishedproductDefectCollection
{
Number = queryFQCDto.num,
UpdatedTime = DateTime.Now,
CheckDatetime = DateTime.Now,
CheckName = queryFQCDto.CheckName,
})
.Where(it => it.Workorder == queryFQCDto.WorkOrder)
.Where(it => it.DefectCode == queryFQCDto.DefectCode)
.ExecuteCommand();
2024-12-27 10:08:11 +08:00
2024-12-27 15:28:05 +08:00
}
else
{
flag = Context.Updateable<QcFinishedproductDefectCollection>()
2024-12-27 10:08:11 +08:00
.SetColumns(it => new QcFinishedproductDefectCollection
{
2024-12-27 15:06:06 +08:00
Number = queryFQCDto.num,
2024-12-27 15:28:05 +08:00
UpdatedTime = DateTime.Now,
CheckDatetime = DateTime.Now,
2024-12-27 10:08:11 +08:00
})
2024-12-27 15:06:06 +08:00
.Where(it => it.Workorder == queryFQCDto.WorkOrder)
.Where(it => it.DefectCode == queryFQCDto.DefectCode)
2024-12-27 10:08:11 +08:00
.ExecuteCommand();
2024-12-27 15:28:05 +08:00
}
2024-12-27 10:08:11 +08:00
return flag > 0 ? true : false;
}
public List<QcFinishedproductDefectCollection> SearchDefectList(string WorkOrder)
{
return Context.Queryable<QcFinishedproductDefectCollection>().Where(it => it.Workorder == WorkOrder).ToList();
}
2024-12-27 16:19:40 +08:00
/// <summary>
/// 分页查询缺陷统计
/// </summary>
/// <param name="queryFQCShow"></param>
/// <returns></returns>
public PagedInfo<ResultFQCShowDto> SearchDefectStatisticsPage(QueryFQCShowDto queryFQCShow)
{
var predicate = Expressionable.Create<ProWorkorder, ProReportwork01, QcFinishedproductDefectCollection>()
.AndIF(!string.IsNullOrEmpty(queryFQCShow.Workorder), (t1, t2, t3) => t1.Workorder.Contains(queryFQCShow.Workorder))
.AndIF(!string.IsNullOrEmpty(queryFQCShow.ProductName), (t1, t2, t3) => t1.productionName.Contains(queryFQCShow.ProductName))
.AndIF(!string.IsNullOrEmpty(queryFQCShow.ProductCode), (t1, t2, t3) => t1.productionCode.Contains(queryFQCShow.ProductCode))
.AndIF(!string.IsNullOrEmpty(queryFQCShow.CheckName), (t1, t2, t3) => t3.CheckName.Contains(queryFQCShow.CheckName))
.AndIF(!string.IsNullOrEmpty(queryFQCShow.DefectName), (t1, t2, t3) => t3.CheckName.Contains(queryFQCShow.DefectName))
2024-12-27 17:07:30 +08:00
.AndIF(queryFQCShow.SearchDateTime != null && queryFQCShow.SearchDateTime.Length >= 2 && queryFQCShow.SearchDateTime[0] >= DateTime.MinValue, (t1, t2, t3) => t3.CheckDatetime > queryFQCShow.SearchDateTime[0])
.AndIF(queryFQCShow.SearchDateTime != null && queryFQCShow.SearchDateTime.Length >= 2 && queryFQCShow.SearchDateTime[1] <= DateTime.MinValue, (t1, t2, t3) => t3.CheckDatetime > queryFQCShow.SearchDateTime[1]);
2024-12-27 16:19:40 +08:00
2024-12-27 16:40:12 +08:00
return Context.Queryable<ProWorkorder>()
.RightJoin<ProReportwork01>((t1, t2) => t1.Workorder == t2.Workorder)
.RightJoin<QcFinishedproductDefectCollection>((t1, t2, t3) => t2.Workorder == t3.Workorder)
.Where(predicate.ToExpression())
2025-01-15 11:22:18 +08:00
.GroupBy((t1,t2,t3)=>new { t3.Workorder, t2.FinishNum,t1.PlanNum, t1.productionName, t1.productionCode })
2024-12-27 16:40:12 +08:00
.Select((t1, t2, t3) => new ResultFQCShowDto
{
Workorder = t3.Workorder,
productionName = t1.productionName,
productionCode = t1.productionCode,
2024-12-27 17:03:17 +08:00
PlanNum = t1.PlanNum,
2024-12-27 16:40:12 +08:00
FinishedNum = t2.FinishNum,
DefectAllNum = SqlFunc.AggregateSum(t3.Number),
QualifiedNum = t2.FinishNum- SqlFunc.AggregateSum(t3.Number)
}).ToPage_NO_Convert(queryFQCShow);
2024-12-27 16:19:40 +08:00
}
2024-12-27 10:08:11 +08:00
}
}