using NX_CommonClassLibrary;
using NX_LogClassLibrary;
using NX_ModelClassLibrary.BaseModel;
using NX_ModelClassLibrary.CustomEnum;
using NX_ModelClassLibrary.CustomEvent;
using NX_ModelClassLibrary.OpcModel;
using NX_ModelClassLibrary.SysModel;
using NX_ModelClassLibrary.WmsBalance;
using NX_WcsDal.CommonBusiness;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NX_WcsBiz.CommonBusiness
{
public class BasCommon_Biz
{
#region 单例模式
///
/// 单例模式对象
///
private static BasCommon_Biz _instance = null;
private static readonly object lockObj = new object();
///
/// 单例模式方法
///
public static BasCommon_Biz Instance
{
get
{
if (_instance == null)
{
lock (lockObj)
{
if (_instance == null)
{
_instance = new BasCommon_Biz();
}
}
}
return _instance;
}
}
#endregion
#region 全局变量
///
/// 所有基础PLC变量信息列表
///
public List basWcsPlcMdList;
///
/// 所有基础设备信息列表
///
public List basWcsDevMdList;
///
/// 所有基础设备类型信息列表
///
public List basWcsDevTypeMdList;
///
/// 所有设备OPCItem变量信息列表
///
public List allOpcItemList;
///
/// 所有配置好的站台信息列表
///
public List allWcsLocList;
///
/// 基础报警代码信息列表
///
public List allBasFaultList;
///
/// 扫码配置信息列表
///
public List allBarcodeScannerList;
///
/// 日志显示帮助类对象
///
public ShowLogToFrmHelper showLogToFrm = new ShowLogToFrmHelper();
///
/// 日志头部
///
private readonly string LogHeadText = "基础通用信息业务类 ==>> ";
#endregion
///
/// 初始化基础通用信息
///
/// 初始化是否成功。true:成功,false:失败。
public bool Init()
{
try
{
basWcsPlcMdList = BasCommon_Dal.Instance.GetBasWcsPlcMsg(AppConfigHelper.Get("CurrWcsControlRegionCode"));
basWcsDevMdList = BasCommon_Dal.Instance.GetBasWcsDevMsg(AppConfigHelper.Get("CurrWcsControlRegionCode"));
basWcsDevTypeMdList = BasCommon_Dal.Instance.GetBasWcsDevTypeMsg();
allOpcItemList = BasCommon_Dal.Instance.GetAllWcsOpcItemMsg(AppConfigHelper.Get("CurrWcsControlRegionCode"));
allWcsLocList = BasCommon_Dal.Instance.GetAllWcsLocMsg(AppConfigHelper.Get("CurrWcsControlRegionCode"));
allBasFaultList = BasCommon_Dal.Instance.GetBasFaultMsg();
allBarcodeScannerList = BasCommon_Dal.Instance.GetBarCodeScannerLst(AppConfigHelper.Get("CurrWcsControlRegionCode"));
ShowLogToForm("初始化基础通用信息类数据成功!", true, LogTypeEnum.Run);
return true;
}
catch (Exception ex)
{
ShowLogToForm($"初始化基础通用信息发生异常!【{ex.Message}】", true, LogTypeEnum.Err);
return false;
}
}
public List GetBinMonitorData()
{
return BasCommon_Dal.Instance.GetBinMonitorData();
}
public List GetOpcItemMonitorData(string devTypeCode)
{
return BasCommon_Dal.Instance.GetOpcItemMonitorData(devTypeCode);
}
public List GetWcsParameterLst(SysParameterSearchMd searchMd)
{
return BasCommon_Dal.Instance.GetWcsParameterLst(searchMd);
}
public SysParameterMd GetWcsParameterMd(string paramId)
{
return BasCommon_Dal.Instance.GetWcsParameterMd(paramId);
}
public int EditParamMsg(SysParameterMd paramMd)
{
return BasCommon_Dal.Instance.EditParamMsg(paramMd);
}
public List GetDevAlarmMsg(BasDevAlarmSearchMd searchMd)
{
return BasCommon_Dal.Instance.GetDevAlarmMsg(searchMd);
}
public BasBinMd GetEmptyBinMd(string regionCode, List shelfLst)
{
return BasCommon_Dal.Instance.GetEmptyBinMd(regionCode, shelfLst);
}
public BasBinMd GetDoubleExtensionEmptyBinMd(string regionCode, List shelfLst, string trayCode)
{
try
{
WmsTrayMd trayMd = BasCommon_Dal.Instance.GetWmsTrayMd(trayCode);
if (trayMd.TrayDtls.Count == 1)
{
List EmptyIntroversionBinLst = BasCommon_Dal.Instance.GetEmptyIntroversionBinLst(regionCode, shelfLst);
if (EmptyIntroversionBinLst.Count <= 2)
{
return null;
}
else
{
List IsGoodsOutSideExtentionBinLst = BasCommon_Dal.Instance.GetIsGoodsOutSideExtentionBinLst(regionCode, shelfLst, trayMd.TrayDtls[0].MaterielCode);
if (IsGoodsOutSideExtentionBinLst != null && IsGoodsOutSideExtentionBinLst.Count > 0)
{
List MatchedEmptyBinLst = IsGoodsOutSideExtentionBinLst.Intersect(EmptyIntroversionBinLst).ToList();
if (MatchedEmptyBinLst != null && MatchedEmptyBinLst.Count > 0)
{
return MatchedEmptyBinLst[0];
}
}
List EmptyOutSideExtentionBinLst = BasCommon_Dal.Instance.GetEmptyOutSideExtentionBinLst(regionCode, shelfLst);
if (EmptyOutSideExtentionBinLst != null && EmptyOutSideExtentionBinLst.Count > 0)
{
return EmptyOutSideExtentionBinLst[0];
}
return EmptyIntroversionBinLst[0];
}
}
else
{
return BasCommon_Dal.Instance.GetEmptyBinMd(regionCode, shelfLst);
}
}
catch (Exception ex)
{
ShowLogToForm($"获取空闲库位数据发生异常!【{ex.Message}】", false, LogTypeEnum.Err);
return null;
}
}
public List GetCrnRelationShelfLst(BasBinMd binMd)
{
return BasCommon_Dal.Instance.GetCrnRelationShelfLst(binMd);
}
#region 桌面显示Log、记录log到文本
///
/// 桌面显示Log、记录log到文本
///
/// log内容
/// 是否输出到桌面日志端。true:输出桌面;false:只记录文本
/// 日志类型枚举
private void ShowLogToForm(string msg, bool isShowFormFlag, LogTypeEnum logTypeEnum)
{
if (isShowFormFlag)
{
showLogToFrm.ShowLog(new ShowLogToFrmEventArgs(LogHeadText + msg));
}
LogHelper.WriteLog(LogHeadText + msg, logTypeEnum);
}
#endregion
}
}