Files
kunshan-bzfm-mes-backend/DOAN.Service/MES/Quality/FQC/QcFinishedproductDefectService.cs
qianhao.xu 3449390800 1
2024-12-27 16:19:40 +08:00

144 lines
6.8 KiB
C#

using DOAN.Model;
using DOAN.Model.MES.product;
using DOAN.Model.MES.quality.FQC;
using DOAN.Model.MES.quality.IQC;
using DOAN.Model.MES.quality.IQC.Dto;
using DOAN.Model.MES.Quality.FQC.Dto;
using DOAN.Model.System;
using DOAN.Model.System.Dto;
using DOAN.Repository;
using DOAN.Service.MES.quality.FQC.IService;
using Infrastructure.Attribute;
using SqlSugar.DistributedSystem.Snowflake;
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
{
public bool AddDefectNum(QueryFQCDto queryFQCDto)
{
int flag = 0;
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;
}
// 检查 Workorder 是否存在
var existingRecord = Context.Queryable<QcFinishedproductDefectCollection>()
.Where(it => it.Workorder == queryFQCDto.WorkOrder)
.Where(it => it.DefectCode == queryFQCDto.DefectCode)
.First();
if (existingRecord != null)
{
// 更新 Number 字段
flag = Context.Updateable<QcFinishedproductDefectCollection>()
.SetColumns(it => new QcFinishedproductDefectCollection
{
Number = it.Number + 1,
UpdatedTime = DateTime.Now,
CheckDatetime = DateTime.Now,
CheckName=queryFQCDto.CheckName
})
.Where(it => it.Workorder == queryFQCDto.WorkOrder)
.Where(it => it.DefectCode == queryFQCDto.DefectCode)
.ExecuteCommand();
}
else
{
// 插入新记录
QcFinishedproductDefectCollection qcFinishedproductDefect = new QcFinishedproductDefectCollection();
qcFinishedproductDefect.Id = XueHua;
qcFinishedproductDefect.Workorder = queryFQCDto.WorkOrder;
qcFinishedproductDefect.DefectCode = queryFQCDto.DefectCode;
qcFinishedproductDefect.DefectName = Context.Queryable<QcDefectConfig>().Where(it => it.Code == queryFQCDto.DefectCode).Select(it => it.Name).First();
qcFinishedproductDefect.CheckName = queryFQCDto.CheckName;
qcFinishedproductDefect.CheckDatetime = DateTime.Now;
qcFinishedproductDefect.CreatedTime = DateTime.Now;
qcFinishedproductDefect.Number = 1;
flag = Context.Insertable(qcFinishedproductDefect).ExecuteCommand();
}
return flag > 0 ? true : false;
}
public bool UpdateDefectNum(QueryFQCDto queryFQCDto)
{
int flag = 0;
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();
}
else
{
flag = Context.Updateable<QcFinishedproductDefectCollection>()
.SetColumns(it => new QcFinishedproductDefectCollection
{
Number = queryFQCDto.num,
UpdatedTime = DateTime.Now,
CheckDatetime = DateTime.Now,
})
.Where(it => it.Workorder == queryFQCDto.WorkOrder)
.Where(it => it.DefectCode == queryFQCDto.DefectCode)
.ExecuteCommand();
}
return flag > 0 ? true : false;
}
public List<QcFinishedproductDefectCollection> SearchDefectList(string WorkOrder)
{
return Context.Queryable<QcFinishedproductDefectCollection>().Where(it => it.Workorder == WorkOrder).ToList();
}
/// <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))
.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]);
Context.Queryable<ProWorkorder>().RightJoin<ProReportwork01>((t1,t2)=>t1.Workorder==t2.Workorder)
.RightJoin<QcFinishedproductDefectCollection>((t1,t2,t3)=>
}
}
}