You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
4.9 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using MaterialTraceability.Common;
using MaterialTraceability.Entity.DAO;
using MaterialTraceability.Entity.DTO;
using MaterialTraceability.SqlSugar;
using MaterialTraceability.SqlSugar.ServiceImpl;
using MaterialTraceability.WebService;
using System;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace MaterialTraceability.Business
{
/// <summary>
/// 业务辅助类
/// </summary>
public class BusinessHelper
{
private static IBaseServices<ProUpRecord> upRecordServices = new BaseServices<ProUpRecord>();
private static IBaseServices<ProDownRecord> downRecordServices = new BaseServices<ProDownRecord>();
private static IBaseServices<ProBindInfo> bindInfoServices = new BaseServices<ProBindInfo>();
/// <summary>
/// Mes WebService接口
/// </summary>
private IMesWebServices MesWebServices = new MesWebServicesImpl();
/// <summary>
/// 放卷位RFID标签是否重复
/// </summary>
/// <param name="rfid"></param>
/// <returns></returns>
public static async Task<bool> UpRfidIsRecur(string rfid,int position)
{
try
{
AppConfigDto appConfig = AppConfigDto.Instance;
LogHelper.Info("判断放卷位RFID" + rfid + "是否和上一次读取相同");
Expression<Func<ProUpRecord, bool>> exp = s1 => true;
exp = exp.And(x => x.PositionId == position && x.MachineId == appConfig.machineId);
Expression<Func<ProUpRecord, object>> order = (x) => x.RecordTime;
ProUpRecord upRecord = await upRecordServices.QueryFirst(exp, order, false);
if (upRecord != null)
{
if (upRecord.Rfid == rfid)
{
return true;
}
}
return false;
}catch(Exception ex)
{
LogHelper.Error("放卷位卷筒是否和上一次读取相同过滤异常", ex);
return false;
}
}
/// <summary>
/// 收卷位RFID标签是否重复
/// </summary>
/// <returns></returns>
public static async Task<bool> DownRfidIsRecur(string rfid,int position)
{
try
{
AppConfigDto appConfig = AppConfigDto.Instance;
LogHelper.Info("判断收卷位RFID"+ rfid + "是否和上一次读取相同过滤异常");
Expression<Func<ProDownRecord, bool>> exp = s1 => true;
exp = exp.And(x => x.PositionId == position && x.MachineId == appConfig.machineId);
Expression<Func<ProDownRecord, object>> order = (x) => x.RecordTime;
ProDownRecord downRecord = await downRecordServices.QueryFirst(exp, order, false);
if (downRecord != null)
{
if (downRecord.Rfid == rfid)
{
return true;
}
}
return false;
}catch(Exception ex)
{
LogHelper.Error("收卷位卷筒是否和上一次读取相同过滤异常",ex);
return false;
}
}
/// <summary>
/// 绑定RFID与SFC信息
/// </summary>
/// <param name="rfid"></param>
/// <param name="sfc"></param>
/// <returns></returns>
public static async Task<bool> BindRfidAndSfc(string rfidStr, string sfcStr)
{
Expression<Func<ProBindInfo, bool>> exp = s1 => true;
exp = exp.And(x => x.rfid == rfidStr);
Expression<Func<ProBindInfo, object>> order = (x) => x.bindTime;
ProBindInfo bindInfo = await bindInfoServices.QueryFirst(exp, order, true);
//如果有RFID更新绑定信息
if (bindInfo != null)
{
bindInfo.sfc = sfcStr;
bindInfo.bindTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
bool bindResult = await bindInfoServices.Update(bindInfo);
if (bindResult)
{
return true;
}
else
{
return false;
}
}
else //如果没有新加绑定信息
{
bindInfo = new ProBindInfo();
bindInfo.id = System.Guid.NewGuid().ToString("N");
bindInfo.rfid = rfidStr;
bindInfo.sfc = sfcStr;
bindInfo.bindTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
int addResult = await bindInfoServices.Add(bindInfo);
if (addResult > 0)
{
return true;
}
else
{
return false;
}
}
}
}
}