首站处理
This commit is contained in:
parent
7664409c8c
commit
539280caf3
@ -131,7 +131,7 @@ namespace RIZO.Service.PLCBackground.Stations.Into
|
|||||||
/// <param name="productModel">产品型号</param>
|
/// <param name="productModel">产品型号</param>
|
||||||
/// <param name="productSN">产品SN</param>
|
/// <param name="productSN">产品SN</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
protected async Task<EntryPermissionResult> checkEntryPermission(string productModel, string productSN, string workstationCode, List<ProcessOperation> processOperations)
|
protected override async Task<EntryPermissionResult> checkEntryPermission(string productModel, string productSN, string workstationCode, List<ProcessOperation> processOperations)
|
||||||
{
|
{
|
||||||
|
|
||||||
EntryPermissionResult result = EntryPermissionResult.UnkownException;
|
EntryPermissionResult result = EntryPermissionResult.UnkownException;
|
||||||
|
|||||||
@ -31,6 +31,130 @@ namespace RIZO.Service.PLCBackground.Stations.Into
|
|||||||
{
|
{
|
||||||
WorkstationCode = "OP020_2";
|
WorkstationCode = "OP020_2";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 校验是否可以进站
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="productModel">产品型号</param>
|
||||||
|
/// <param name="productSN">产品SN</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected async Task<EntryPermissionResult> checkEntryPermission(string productModel, string productSN, string workstationCode, List<ProcessOperation> processOperations)
|
||||||
|
{
|
||||||
|
|
||||||
|
EntryPermissionResult result = EntryPermissionResult.UnkownException;
|
||||||
|
|
||||||
|
|
||||||
|
//2上工位无记录
|
||||||
|
|
||||||
|
//ProcessOperation LastOperation = processOperations.Where(operation => operation.OperationSeq < processOperations.Where(it => it.OperationCode == workstationCode).Select(it => it.OperationSeq).First()).OrderByDescending(operation => operation.OperationSeq).First();
|
||||||
|
int LastOperationSeq = processOperations.Where(operation => operation.OperationCode == workstationCode).Select(operation => operation.LastOperationSeq ?? -1).First();
|
||||||
|
ProcessOperation LastOperation = processOperations.Where(it => it.OperationSeq == LastOperationSeq).First();
|
||||||
|
bool isExistLastOperationRecord = await DbScoped.SugarScope.CopyNew().Queryable<ProductPassStationRecord>()
|
||||||
|
.Where(it => it.ProductSN == productSN)
|
||||||
|
.Where(it => it.OperationCode == LastOperation.OperationCode)
|
||||||
|
.AnyAsync();
|
||||||
|
if (!isExistLastOperationRecord)
|
||||||
|
{
|
||||||
|
return EntryPermissionResult.NoRecordAtPreviousStation;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3 上工位NG 入站或者出站结果 NG
|
||||||
|
bool isExistLastOperationNG = await Context.Queryable<ProductPassStationRecord>()
|
||||||
|
.Where(it => it.ProductSN == productSN)
|
||||||
|
.Where(it => it.OperationCode == LastOperation.OperationCode)
|
||||||
|
.Where(it => it.PasstationType == 2 || it.PasstationType == 4)
|
||||||
|
.Where(it => it.ResultCode != 1)
|
||||||
|
.AnyAsync();
|
||||||
|
if (!isExistLastOperationNG)
|
||||||
|
{
|
||||||
|
result = EntryPermissionResult.PreviousStationNG;
|
||||||
|
goto InsertPassrecord;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 4 扫码产品型号错误
|
||||||
|
bool isExistproductSN = await Context.Queryable<ProductLifecycle>()
|
||||||
|
.Where(it => it.ProductSN == productSN).AnyAsync();
|
||||||
|
|
||||||
|
|
||||||
|
bool isExistproductSNProducting = await Context.Queryable<ProductLifecycle>()
|
||||||
|
.Where(it => it.ProductSN == productSN && (it.ProductCurrentStatus != 1 && it.ProductCurrentStatus != 3)).AnyAsync();
|
||||||
|
if (!isExistproductSN || !isExistproductSNProducting)
|
||||||
|
{
|
||||||
|
result = EntryPermissionResult.ProductModelError;
|
||||||
|
goto InsertPassrecord;
|
||||||
|
}
|
||||||
|
//6时间超出规定无法生产
|
||||||
|
|
||||||
|
|
||||||
|
//7固化时间未到规定时间
|
||||||
|
|
||||||
|
int LastOperationStandardTime = processOperations.Where(operation => operation.OperationCode == LastOperation.OperationCode)
|
||||||
|
.Select(operation => operation.StandardTime ?? 0).First();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (LastOperationStandardTime > 0)
|
||||||
|
{
|
||||||
|
// 上一站的入站时间 和本站的请求时间差值
|
||||||
|
DateTime LastInStationTime = await Context.Queryable<ProductPassStationRecord>()
|
||||||
|
.Where(it => it.ProductSN == productSN)
|
||||||
|
.Where(it => it.OperationCode == LastOperation.OperationCode)
|
||||||
|
.Where(it => it.PasstationType == 1)
|
||||||
|
.MaxAsync(it => it.InStationTime ?? DateTime.MinValue);
|
||||||
|
TimeSpan timeDiff = DateTime.Now - LastInStationTime;
|
||||||
|
double totalSeconds = timeDiff.TotalSeconds;
|
||||||
|
if (totalSeconds < LastOperationStandardTime)
|
||||||
|
{
|
||||||
|
result = EntryPermissionResult.CuringTimeNotReached;
|
||||||
|
goto InsertPassrecord;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//12 最大重复入站次数
|
||||||
|
int MaxRepeatEntries = processOperations.Where(operation => operation.OperationCode == workstationCode).Select(operation => operation.MaxStationCount ?? 1).First();
|
||||||
|
if (MaxRepeatEntries > 1)
|
||||||
|
{
|
||||||
|
int currentStationEntryCount = await Context.Queryable<ProductPassStationRecord>()
|
||||||
|
.Where(it => it.ProductSN == productSN)
|
||||||
|
.Where(it => it.OperationCode == workstationCode)
|
||||||
|
.Where(it => it.PasstationType == 1)
|
||||||
|
.CountAsync();
|
||||||
|
if (currentStationEntryCount >= MaxRepeatEntries)
|
||||||
|
{
|
||||||
|
result = EntryPermissionResult.MaximumRepeatedEntries;
|
||||||
|
goto InsertPassrecord;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//OK 准许进站
|
||||||
|
result = EntryPermissionResult.AllowIntoStation;
|
||||||
|
goto InsertPassrecord;
|
||||||
|
InsertPassrecord:
|
||||||
|
//插入入站请求Resp过站记录
|
||||||
|
ProductPassStationRecord RespintoStation = new ProductPassStationRecord
|
||||||
|
{
|
||||||
|
ProductSN = productSN,
|
||||||
|
WorkstationCode = WorkstationCode,
|
||||||
|
Routingcode = processOperations?.First()?.FkRoutingCode ?? "",
|
||||||
|
OperationCode = WorkstationCode,
|
||||||
|
OperationName = plcSetting.WorkStationName,
|
||||||
|
ProductionLifeStage = 1, // 1表示生产中
|
||||||
|
PasstationType = 1, // 入站完毕
|
||||||
|
PasstationDescription = "入站完毕Resp",
|
||||||
|
EffectTime = DateTime.Now,
|
||||||
|
InStationTime = DateTime.Now,
|
||||||
|
ResultCode = (int)result,
|
||||||
|
ResultDescription = result.ToString(),
|
||||||
|
CreatedTime = DateTime.Now,
|
||||||
|
|
||||||
|
};
|
||||||
|
await Context.Insertable(RespintoStation).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user