using NX_CommonClassLibrary; using NX_DbClassLibrary; using NX_LogClassLibrary; using NX_ModelClassLibrary.BaseModel; using NX_ModelClassLibrary.CustomEnum; using NX_ModelClassLibrary.OpcModel; using NX_ModelClassLibrary.SysModel; using NX_ModelClassLibrary.WmsBalance; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NX_WcsDal.CommonBusiness { public class BasCommon_Dal { #region 单例模式 /// /// 单例模式对象 /// private static BasCommon_Dal _instance = null; private static readonly object lockObj = new object(); /// /// 单例模式方法 /// public static BasCommon_Dal Instance { get { if (_instance == null) { lock (lockObj) { if (_instance == null) { _instance = new BasCommon_Dal(); } } } return _instance; } } #endregion #region 获取基础配置信息 PLC、设备、设备类型 /// /// 获取基础PLC配置信息数据 /// /// public List GetBasWcsPlcMsg(string regionCode) { try { string sqlQueryBasWcsPlc = $@" SELECT A.PLC_ID, A.NEWID, A.REGION_CODE, A.PLC_CODE, A.PLC_NAME, A.CONN_TYPE_CODE, A.PLC_TYPE_CODE, A.IP_ADDR, A.PORT_NO, A.READ_BLOCK_NO, A.READ_START_POS, A.READ_LEN, A.WRITE_BLOCK_NO, A.WRITE_START_POS, A.WRITE_LEN, A.USED_FLAG, A.DEL_FLAG, A.CREATE_BY, A.CREATE_TIME, A.UPDATE_BY, A.UPDATE_TIME, A.DATA_VERSION, A.REMARKS1, A.REMARKS2, A.REMARKS3, A.REMARKS4, A.REMARKS5, B.USER_CODE CreateCode, B.USER_NAME CreateName, C.USER_CODE UpdateCode, C.USER_NAME UpdateName FROM WCS_BAS_PLC A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID WHERE A.USED_FLAG = 1 AND A.DEL_FLAG = 0 AND A.REGION_CODE = '{regionCode}' "; DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryBasWcsPlc).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { retLst.Add(ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item)); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取基础PLC配置信息数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } /// /// 获取基础设备配置信息数据 /// /// public List GetBasWcsDevMsg(string regionCode) { try { string sqlQueryBasWcsDev = $@" SELECT A.DEV_ID, A.NEWID, A.REGION_CODE, A.DEV_TYPE_CODE, A.DEV_CODE, A.DEV_NAME, A.DEV_PLC_NO, A.USED_FLAG, A.DEL_FLAG, A.CREATE_BY, B.USER_CODE CreateCode, B.USER_NAME CreateName, A.CREATE_TIME, A.UPDATE_BY, C.USER_CODE UpdateCode, C.USER_NAME UpdateName, A.UPDATE_TIME, A.DATA_VERSION, A.REMARKS1, A.REMARKS2, A.REMARKS3, A.REMARKS4, A.REMARKS5 FROM WCS_BAS_DEV A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID WHERE A.USED_FLAG = 1 AND A.DEL_FLAG = 0 AND A.REGION_CODE = '{regionCode}' "; DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryBasWcsDev).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { retLst.Add(ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item)); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取基础设备配置信息数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } /// /// 获取基础设备类型配置信息数据 /// /// public List GetBasWcsDevTypeMsg() { try { string sqlQueryBasWcsDevType = $@" SELECT A.DEV_TYPE_ID, A.NEWID, A.DEV_TYPE_CODE, A.DEV_TYPE_NAME, A.[DESCRIBE], A.USED_FLAG, A.DEL_FLAG, A.CREATE_BY, B.USER_CODE CreateCode, B.USER_NAME CreateName, A.CREATE_TIME, A.UPDATE_BY, C.USER_CODE UpdateCode, C.USER_NAME UpdateName, A.UPDATE_TIME, A.DATA_VERSION, A.REMARKS1, A.REMARKS2, A.REMARKS3, A.REMARKS4, A.REMARKS5 FROM WCS_BAS_DEV_TYPE A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID WHERE A.USED_FLAG = 1 AND A.DEL_FLAG = 0 "; DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryBasWcsDevType).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { retLst.Add(ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item)); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取基础设备类型配置信息数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } /// /// 获取所有OPCItem变量数据 /// /// public List GetAllWcsOpcItemMsg(string regionCode) { try { string sqlQueryOpcItem = $@" SELECT A.OPC_ITEM_ID, A.NEWID, A.OPC_GROUP_CODE, A.OPC_ITEM_CODE, A.OPC_ITEM_NAME, A.OPC_ITEM_DESC, A.PLC_CODE, D.PLC_NAME, A.DEV_CODE, E.DEV_NAME, A.OPC_ITEM_TYPE, F.PLC_ITEM_DATA_TYPE, A.OPC_ITEM_POS, A.USED_FLAG, A.DEL_FLAG, A.CREATE_BY, B.USER_CODE CreateCode, B.USER_NAME CreateName, A.CREATE_TIME, A.UPDATE_BY, C.USER_CODE UpdateCode, C.USER_NAME UpdateName, A.UPDATE_TIME, A.DATA_VERSION, A.REMARKS1, A.REMARKS2, A.REMARKS3, A.REMARKS4, A.REMARKS5 FROM WCS_BAS_OPC_ITEM A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID left JOIN WCS_BAS_PLC D ON A.PLC_CODE = D.PLC_CODE LEFT JOIN WCS_BAS_DEV E ON A.DEV_CODE = E.DEV_CODE LEFT JOIN WCS_MOT_PLC_ITEM F ON A.OPC_ITEM_CODE = F.PLC_ITEM_CODE AND A.DEV_CODE = F.DEV_CODE WHERE A.USED_FLAG = 1 AND A.DEL_FLAG = 0 AND D.REGION_CODE = '{regionCode}' AND E.REGION_CODE = '{regionCode}' "; DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryOpcItem).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { retLst.Add(ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item)); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取所有OPCItem变量数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } /// /// 获取所有配置好的站台信息数据 /// /// public List GetAllWcsLocMsg(string regionCode) { try { string sqlQueryAllWcsLoc = $@" SELECT A.LOC_ID, A.NEWID, A.REGION_CODE, A.LOC_CODE, A.LOC_NAME, A.LOC_TYPE_CODE, A.LOC_EXT_MSG, A.LOC_BIN_EXT_MSG, A.VIRTUAL_FLAG, A.CACHE_FLAG, A.CACHE_SIZE, A.USED_FLAG, A.DEL_FLAG, A.CREATE_BY, B.USER_CODE CreateCode, B.USER_NAME CreateName, A.CREATE_TIME, A.UPDATE_BY, C.USER_CODE UpdateCode, C.USER_NAME UpdateName, A.UPDATE_TIME, A.DATA_VERSION, A.REMARKS1, A.REMARKS2, A.REMARKS3, A.REMARKS4, A.REMARKS5 FROM WCS_BAS_LOC A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID WHERE A.USED_FLAG = 1 AND A.DEL_FLAG = 0 AND A.REGION_CODE = '{regionCode}' "; DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryAllWcsLoc).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { BasWcsLocMd tmpMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); retLst.Add(tmpMd); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取所有配置好的站台信息数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } #endregion #region 获取序列号 /// /// 调用存储过程获取序列号 /// /// 序列号编码 /// public string GetSysSequence(string sqCode) { try { SqlParameter[] pr = { new SqlParameter("@sq_code",SqlDbType.VarChar,100) , new SqlParameter("@count",SqlDbType.Int), new SqlParameter("@out_id",SqlDbType.VarChar,100) }; pr[0].Direction = ParameterDirection.Input; pr[0].Value = sqCode; pr[1].Direction = ParameterDirection.Input; pr[1].Value = 1; pr[2].Direction = ParameterDirection.Output; pr[2].Value = ""; LeadDbHelperSQLServer.RunProcedure("Sys_Proc_Get_Sequences", pr); return pr[2].Value.ToString(); } catch (Exception ex) { LogHelper.WriteLog($"获取序列号发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } #endregion public List GetBarCodeScannerLst(string regionCode) { try { string sql = $@"select * from BAS_BARCODE_SCANNER where REGION_CODE = '{regionCode}' and USED_FLAG = 1"; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { BasBarcodeScannerMd tmpMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); retLst.Add(tmpMd); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取库位监控数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public List GetBinMonitorData() { try { string sql = $@"select * from VW_WMS_BALANCE_MONITOR"; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { BasBinMonitorMd tmpMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); retLst.Add(tmpMd); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取库位监控数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public WmsTrayMd GetWmsTrayMd(string trayCode) { try { string sqlWmsTray = $@"select * from VW_WMS_STK_TRAY where TRAY_CODE = '{trayCode}' and TRAY_STATUS < 99"; DataTable dt = LeadDbHelperSQLServer.Query(sqlWmsTray).Tables[0]; if (dt != null && dt.Rows.Count > 0) { DataRow item = dt.Rows[0]; WmsTrayMd trayMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); string sqlWmsTrayDtlExt = $@"select * from VW_WMS_STK_TRAY_DTL_EXT where TRAY_ID = '{trayMd.TrayId}'"; DataTable dtTrayDtlExt = LeadDbHelperSQLServer.Query(sqlWmsTrayDtlExt).Tables[0]; List trayDtlExtLst = new List(); if (dtTrayDtlExt != null && dtTrayDtlExt.Rows.Count > 0) { foreach (DataRow drTrayDtlExtMd in dtTrayDtlExt.Rows) { WmsTrayDtlExtMd trayDtlExtMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dtTrayDtlExt.Columns, drTrayDtlExtMd); trayDtlExtLst.Add(trayDtlExtMd); } } string sqlWmsTrayDtl = $@"select * from VW_WMS_STK_TRAY_DTL where TRAY_ID = '{trayMd.TrayId}'"; DataTable dtTrayDtl = LeadDbHelperSQLServer.Query(sqlWmsTrayDtl).Tables[0]; List trayDtlLst = new List(); if (dtTrayDtl != null && dtTrayDtl.Rows.Count > 0) { foreach (DataRow drTrayDtlMd in dtTrayDtl.Rows) { WmsTrayDtlMd trayDtlMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dtTrayDtl.Columns, drTrayDtlMd); trayDtlMd.trayDtlExtMd = trayDtlExtLst.Find(x => x.TrayDtlId == trayDtlMd.TrayDtlId); trayDtlLst.Add(trayDtlMd); } } trayMd.TrayDtls = trayDtlLst; return trayMd; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取组盘数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public List GetEmptyOutSideExtentionBinLst(string regionCode, List shelfLst) { try { string str = string.Join("','", shelfLst.Select(x => x.ShelfCode)); str = str.Substring(0, str.Length - 2); string shelfCondition = "('" + str + ")"; string sql = $@" SELECT A.*, B.USER_CODE CreateCode, B.USER_NAME CreateName, C.USER_CODE UpdateCode, C.USER_NAME UpdateName FROM BAS_BIN A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID WHERE A.REGION_CODE = '{regionCode}' AND A.BIN_TYPE = '3' AND A.USED_FLAG = '1' AND A.EXTENSION_IDX = 2 -- 外伸 AND A.BIN_CODE NOT IN ( SELECT BIN_CODE FROM VW_BALANCE_TEMP ) AND A.EXTENSION_GROUP NOT IN ( SELECT B.EXTENSION_GROUP FROM VW_BALANCE_TEMP A LEFT JOIN BAS_BIN B ON A.BIN_CODE = B.BIN_CODE ) AND A.SHELF_CODE IN {shelfCondition} ORDER BY A.BIN_LAYER, A.BIN_COLUMN, A.BIN_ROW "; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { BasBinMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); retLst.Add(retMd); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取空闲的内伸无货的外伸库位数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public List GetCrnRelationShelfLst(BasBinMd binMd) { try { string sql = $@" SELECT * FROM BAS_SHELF WHERE DEV_CODE = ( SELECT DEV_CODE FROM BAS_SHELF WHERE SHELF_CODE = '{binMd.ShelfCode}' ) "; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { BasShelfMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); retLst.Add(retMd); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取堆垛机关联的货架排数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public List GetIsGoodsOutSideExtentionBinLst(string regionCode, List shelfLst, string materielCode) { try { string str = string.Join("','", shelfLst.Select(x => x.ShelfCode)); str = str.Substring(0, str.Length - 2); string shelfCondition = "('" + str + ")"; string sql = $@" SELECT B.*, C.USER_CODE CreateCode, C.USER_NAME CreateName, D.USER_CODE UpdateCode, D.USER_NAME UpdateName FROM WMS_STK_BALANCE A LEFT JOIN BAS_BIN B ON A.BIN_CODE = B.BIN_CODE LEFT JOIN SYS_USER C ON B.CREATE_BY = C.USER_ID LEFT JOIN SYS_USER D ON B.UPDATE_BY = D.USER_ID WHERE A.TRAY_ID IN ( SELECT TRAY_ID FROM WMS_STK_TRAY_DTL WHERE MATERIEL_CODE = '{materielCode}' AND TRAY_DTL_STATUS < 99 ) -- 如果后续管控批次,管理库存拓展表,在此添加批次条件即可 AND A.BALANCE_STATUS < 99 AND B.EXTENSION_IDX = 2 AND B.REGION_CODE = '{regionCode}' AND A.REGION_CODE = '{regionCode}' AND B.SHELF_CODE IN {shelfCondition} ORDER BY B.BIN_COLUMN, B.BIN_LAYER, B.BIN_ROW "; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { BasBinMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); retLst.Add(retMd); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取同一个商品已分配的外伸库位数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public List GetEmptyIntroversionBinLst(string regionCode, List shelfLst) { try { string str = string.Join("','", shelfLst.Select(x => x.ShelfCode)); str = str.Substring(0, str.Length - 2); string shelfCondition = "('" + str + ")"; string sql = $@" SELECT A.*, B.USER_CODE CreateCode, B.USER_NAME CreateName, C.USER_CODE UpdateCode, C.USER_NAME UpdateName FROM BAS_BIN A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID WHERE A.REGION_CODE = '{regionCode}' AND A.BIN_TYPE = '3' AND A.USED_FLAG = '1' AND A.EXTENSION_IDX = 1 -- 内伸 AND A.BIN_CODE NOT IN ( SELECT BIN_CODE FROM VW_BALANCE_TEMP WHERE REGION_CODE = '{regionCode}' ) AND A.SHELF_CODE IN {shelfCondition} ORDER BY A.BIN_COLUMN, A.BIN_LAYER, A.BIN_ROW "; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { BasBinMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); retLst.Add(retMd); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取空闲的内伸库位发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public BasBinMd GetEmptyBinMd(string regionCode, List shelfLst) { try { string str = string.Join("','", shelfLst.Select(x => x.ShelfCode)); str = str.Substring(0, str.Length - 2); string shelfCondition = "('" + str + ")"; string sqlQueryEmptyBin = $@" SELECT TOP 1 A.*, B.USER_CODE CreateCode, B.USER_NAME CreateName, C.USER_CODE UpdateCode, C.USER_NAME UpdateName FROM BAS_BIN A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID WHERE A.USED_FLAG = 1 AND A.DEL_FLAG = 0 AND A.BIN_CODE NOT IN ( SELECT BIN_CODE FROM WMS_STK_BALANCE WHERE BALANCE_STATUS < 99 AND REGION_CODE = '{regionCode}' ) AND A.SHELF_CODE IN {shelfCondition} AND A.REGION_CODE = '{regionCode}' ORDER BY A.BIN_COLUMN, A.BIN_LAYER, A.BIN_ROW "; DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryEmptyBin).Tables[0]; if (dt != null && dt.Rows.Count > 0) { DataRow item = dt.Rows[0]; BasBinMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); return retMd; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取库区:【{regionCode}】的空闲库位发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public List GetOpcItemMonitorData(string devTypeCode) { try { string sql = $@"SELECT A.*,B.DEV_NAME FROM WCS_MOT_PLC_ITEM A LEFT JOIN WCS_BAS_DEV B ON A.DEV_CODE = B.DEV_CODE LEFT JOIN WCS_BAS_DEV_TYPE C ON B.DEV_TYPE_CODE = C.DEV_TYPE_CODE WHERE B.DEV_TYPE_CODE = '{devTypeCode}'"; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { WcsOpcItemMonitorMd tmpMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); retLst.Add(tmpMd); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取OPC变量监控数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } private readonly object thLock = new object(); public void UpdateOpcItemMonitorToDataBase(WcsOpcItemMd wcsOpcItemMd) { lock (thLock) { try { string sql = $@"update WCS_MOT_PLC_ITEM set PLC_ITEM_VALUE = '{wcsOpcItemMd.OpcItemValue}' where DEV_CODE = '{wcsOpcItemMd.DevCode}' and PLC_ITEM_CODE = '{wcsOpcItemMd.OpcItemCode}'"; LeadDbHelperSQLServer.ExecuteSql(sql); } catch (Exception ex) { LogHelper.WriteLog($"OPC变量监控实时数据更新到数据库发生异常!【{ex.Message}】", LogTypeEnum.Err); } } } public List GetWcsParameterLst(SysParameterSearchMd searchMd) { try { string sqlQuery = string.Empty; if (!string.IsNullOrEmpty(searchMd.ParameterMsg)) { sqlQuery += $" AND (A.PARAMETER_CODE like '%{searchMd.ParameterMsg}%' or A.PARAMETER_NAME like '%{searchMd.ParameterMsg}%')"; } if (!string.IsNullOrEmpty(searchMd.ParameterValue)) { sqlQuery += $" AND A.PARAMETER_VALUE = '{searchMd.ParameterValue}'"; } if (!string.IsNullOrEmpty(searchMd.ParameterEditFlag)) { sqlQuery += $" AND A.ALLOW_EDIT_FLAG = '{searchMd.ParameterEditFlag}'"; } string sql = $@" SELECT A.*, B.USER_CODE CreateCode, B.USER_NAME CreateName, C.USER_CODE UpdateCode, C.USER_NAME UpdateName FROM SYS_PARAMETER A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID WHERE 1 = 1 AND PARAMETER_TYPE = 'WCS' {sqlQuery} "; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { retLst.Add(ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item)); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取WCS参数信息发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public SysParameterMd GetWcsParameterMd(string paramId) { try { string sql = $@" SELECT A.*, B.USER_CODE CreateCode, B.USER_NAME CreateName, C.USER_CODE UpdateCode, C.USER_NAME UpdateName FROM SYS_PARAMETER A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID WHERE PARAMETER_ID = '{paramId}' "; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { DataRow item = dt.Rows[0]; return ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取WCS参数信息发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public int EditParamMsg(SysParameterMd paramMd) { try { string sql = $@"update SYS_PARAMETER set PARAMETER_NAME = '{paramMd.ParameterName}',PARAMETER_VALUE = '{paramMd.ParameterValue}',UPDATE_TIME = getdate(),DATA_VERSION = DATA_VERSION + 1 where PARAMETER_ID = '{paramMd.ParameterId}'"; return LeadDbHelperSQLServer.ExecuteSql(sql); } catch (Exception ex) { LogHelper.WriteLog($"编辑WCS参数信息发生异常!【{ex.Message}】", LogTypeEnum.Err); return 0; } } public List GetDevAlarmMsg(BasDevAlarmSearchMd searchMd) { try { string sqlQuery = string.Empty; if (!string.IsNullOrEmpty(searchMd.DevTypeMsg)) { sqlQuery += $" AND C.DEV_TYPE_CODE = '{searchMd.DevTypeMsg}'"; } if (!string.IsNullOrEmpty(searchMd.DevMsg)) { sqlQuery += $" AND B.DEV_CODE = '{searchMd.DevMsg}'"; } if (!string.IsNullOrEmpty(searchMd.FaultMsg)) { sqlQuery += $" AND (A.FAULT_NO like '%{searchMd.FaultMsg}%' OR A.FAULT_DESC like '%{searchMd.FaultMsg}%')"; } if (!string.IsNullOrEmpty(searchMd.StartFaultTime)) { sqlQuery += $" AND A.FAULT_TIME >= '{searchMd.StartFaultTime}'"; } if (!string.IsNullOrEmpty(searchMd.EndFaultTime)) { sqlQuery += $" AND A.FAULT_TIME <= '{searchMd.EndFaultTime}'"; } int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty; int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty; string sql = $@" SELECT A.LOG_FAULT_ID, C.DEV_TYPE_NAME, B.DEV_NAME, A.FAULT_NO, A.FAULT_DESC, A.FAULT_TIME, A.WARING_STATUS, A.END_TIME FROM WMS_LOG_FAULT_MSG A LEFT JOIN WCS_BAS_DEV B ON A.FAULT_DEV_CODE = B.DEV_CODE LEFT JOIN WCS_BAS_DEV_TYPE C ON B.DEV_TYPE_CODE = C.DEV_TYPE_CODE WHERE 1 = 1 {sqlQuery} ORDER BY A.UPDATE_TIME DESC,A.CREATE_TIME DESC OFFSET {pageStartIndex} ROWS FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY "; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { retLst.Add(ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item)); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取设备报警信息发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public List GetBasFaultMsg() { try { string sql = $@" SELECT A.FAULT_ID, A.NEWID, A.FAULT_CODE, A.FAULT_NAME, A.DEV_TYPE_CODE, A.[DESCRIBE], A.USED_FLAG, A.DEL_FLAG, A.CREATE_BY, B.USER_CODE CreateCode, B.USER_NAME CreateName, A.CREATE_TIME, A.UPDATE_BY, C.USER_CODE UpdateCode, C.USER_NAME UpdateName, A.UPDATE_TIME, A.DATA_VERSION, A.REMARKS1, A.REMARKS2, A.REMARKS3, A.REMARKS4, A.REMARKS5 FROM BAS_FAULT A LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID WHERE A.USED_FLAG = 1 AND A.DEL_FLAG = 0 "; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { retLst.Add(ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item)); } return retLst; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取基础报警代码信息发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } } }