155 lines
7.6 KiB
C#
155 lines
7.6 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]);
|
|
|
|
return Context.Queryable<ProWorkorder>()
|
|
.RightJoin<ProReportwork01>((t1, t2) => t1.Workorder == t2.Workorder)
|
|
.RightJoin<QcFinishedproductDefectCollection>((t1, t2, t3) => t2.Workorder == t3.Workorder)
|
|
.Where(predicate.ToExpression())
|
|
.GroupBy((t1,t2,t3)=>new { t3.Workorder, t2.PlanNum, t2.FinishNum, t1.productionName, t1.productionCode })
|
|
.Select((t1, t2, t3) => new ResultFQCShowDto
|
|
{
|
|
Workorder = t3.Workorder,
|
|
productionName = t1.productionName,
|
|
productionCode = t1.productionCode,
|
|
PlanNum = t2.PlanNum,
|
|
FinishedNum = t2.FinishNum,
|
|
DefectAllNum = SqlFunc.AggregateSum(t3.Number),
|
|
QualifiedNum = t2.FinishNum- SqlFunc.AggregateSum(t3.Number)
|
|
}).ToPage_NO_Convert(queryFQCShow);
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|