using NX_CommonClassLibrary; using NX_DbClassLibrary; using NX_LogClassLibrary; using NX_ModelClassLibrary.BaseModel; using NX_ModelClassLibrary.CrnModel; using NX_ModelClassLibrary.CustomEnum; using NX_ModelClassLibrary.WmsTask; using NX_WcsDal.CommonBusiness; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace NX_WcsDal.WcsBusiness { public class Crn_Dal { #region 单例模式 /// /// 单例模式对象 /// private static Crn_Dal _instance = null; private static readonly object lockObj = new object(); /// /// 单例模式方法 /// public static Crn_Dal Instance { get { if (_instance == null) { lock (lockObj) { if (_instance == null) { _instance = new Crn_Dal(); } } } return _instance; } } #endregion /// /// 加载堆垛机未完成指令 /// /// 堆垛机设备对象 /// 是否加载未完成指令 /// public WcsCrnCmdMd LoadCrnUnFinishedCmd(BasWcsDevMd basWcsDevMd,bool isLoadUnFinish, string crnCmdTypeMd) { try { string sqlCondition = string.Empty; if (isLoadUnFinish) { sqlCondition = $" AND A.CMD_STATUS > '{(int)CrnCmdStatusEnum.初始创建}' AND A.CMD_STATUS < '{(int)CrnCmdStatusEnum.完成}'"; } else { sqlCondition = $" AND A.CMD_STATUS = '{(int)CrnCmdStatusEnum.初始创建}'"; } if (Convert.ToInt32(AppConfigHelper.Get("CrnAutoTest")) == 1) { sqlCondition = $" AND A.REMARKS1 = 'AutoTest'"; } if (!string.IsNullOrEmpty(crnCmdTypeMd)) { if (Enum.TryParse(crnCmdTypeMd, out CrnCmdTypeEnum tmpCrnTypeMd)) { sqlCondition = $" AND A.CMD_TYPE = '{tmpCrnTypeMd}'"; } } string sqlQueryCrnUnFinishedCmd = $@" SELECT TOP 1 A.CRN_CMD_ID, A.NEWID, A.TASK_NO, A.CMD_NO, A.TRAY_CODE, A.PALLET_CODE, A.TRAY_STATUS, A.CRN_DEV_NO, A.CRN_FORK_DEV_NO, A.SBIN_NO, A.SBIN_ROW, A.SBIN_COL, A.SBIN_LAYER, A.S_EXTENSION_GROUP, A.S_EXTENSION_IDX, A.EBIN_NO, A.EBIN_ROW, A.EBIN_COL, A.EBIN_LAYER, A.E_EXTENSION_GROUP, A.E_EXTENSION_IDX, A.CMD_TYPE, A.ACTIVE_TYPE, A.CMD_PRIORITY, A.CMD_STATUS, A.CMD_LOG, A.ERR_FLAG, A.ERR_LOG, A.CREATE_BY, B.USER_CODE CreateCode, B.USER_NAME CreateName, A.CREATE_TIME, A.EXECUTE_TIME, A.FINISH_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_CRN_CMD 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.CRN_DEV_NO = '{basWcsDevMd.DevCode}' AND A.REGION_CODE = '{basWcsDevMd.RegionCode}' {sqlCondition} ORDER BY A.CMD_PRIORITY,A.CREATE_TIME "; DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryCrnUnFinishedCmd).Tables[0]; if (dt != null && dt.Rows.Count > 0) { DataRow item = dt.Rows[0]; WcsCrnCmdMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); return retMd; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"加载堆垛机未完成指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public WmsBalanceMd GetIntroversionBinBalanceMd(string ExtensionGroupCode, int ExtensionIdx ,string RegionCode) { try { string sql = $@" SELECT * FROM VW_WMS_STK_BALANCE WHERE BIN_CODE = ( SELECT BIN_CODE FROM BAS_BIN WHERE EXTENSION_GROUP = '{ExtensionGroupCode}' AND EXTENSION_IDX = '{ExtensionIdx}' AND REGION_CODE = '{RegionCode}' ) AND BALANCE_STATUS < 99 "; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { DataRow item = dt.Rows[0]; WmsBalanceMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); return retMd; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取内伸库位库存信息发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public WmsTskTaskMd GetIntroversionBinMoveWmsTaskMd(WmsBalanceMd balanceMd) { try { string sqlGetUnfinishWmsTask = $@" SELECT TOP 1 A.TASK_ID, A.NEWID, A.WAREHOUSE_CODE, A.WAREHOUSE_NAME, A.TASK_NO, A.TRAY_CODE, A.PALLET_CODE, A.TRAY_LOADED_TYPE, A.SLOC_CODE, A.ELOC_CODE, A.CLOC_CODE, A.TASK_TYPE, A.TASK_MSG, A.ERR_FLAG, A.TASK_PRIORITY, A.TASK_STATUS, A.SBIN_CODE, A.EBIN_CODE, A.CMD_NO, A.ROUTE_CODE, 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 WMS_TSK_TASK 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 A.TASK_TYPE = '{(int)WmsTaskTypeEnum.内伸货位移库任务}' AND A.REGION_CODE = '{balanceMd.RegionCode}' AND A.TRAY_CODE = '{balanceMd.TrayCode}' "; DataTable dtGetUnfinishWmsTask = LeadDbHelperSQLServer.Query(sqlGetUnfinishWmsTask).Tables[0]; if (dtGetUnfinishWmsTask != null && dtGetUnfinishWmsTask.Rows.Count > 0) { DataRow item = dtGetUnfinishWmsTask.Rows[0]; WmsTskTaskMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dtGetUnfinishWmsTask.Columns, item); return retMd; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取内伸库位WMS移库大任务信息发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public BasRegionMd GetRegionMd(string regionCode) { try { string sql = $@"select * from BAS_REGION where REGION_CODE = '{regionCode}'"; DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0]; if (dt != null && dt.Rows.Count > 0) { DataRow item = dt.Rows[0]; BasRegionMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); return retMd; } else { return null; } } catch (Exception ex) { LogHelper.WriteLog($"获取库区信息发生异常!{ex.Message}", LogTypeEnum.Err); return null; } } public void InsertIntroversionBinMoveWmsTask(BasWcsLocMd RegiongLocNo, BasRegionMd regionMd, WmsBalanceMd balanceMd, BasBinMd EbinMd) { try { string taskNo = BasCommon_Dal.Instance.GetSysSequence("Task_No"); string sqlInsertWmsTask = $@" INSERT INTO [dbo].[WMS_TSK_TASK] ( [WAREHOUSE_CODE], [WAREHOUSE_NAME], [REGION_CODE], [TASK_NO], [TRAY_CODE], [PALLET_CODE], [TRAY_LOADED_TYPE], [SLOC_CODE], [ELOC_CODE], [CLOC_CODE], [TASK_TYPE], [TASK_MSG], [ERR_FLAG], [TASK_PRIORITY], [TASK_STATUS], [SBIN_CODE], [EBIN_CODE], [CMD_NO], [ROUTE_CODE], [CREATE_BY], [CREATE_TIME], [UPDATE_BY], [UPDATE_TIME], [DATA_VERSION], [REMARKS1], [REMARKS2], [REMARKS3], [REMARKS4], [REMARKS5] ) VALUES ( '{regionMd.WarehouseCode}', '{regionMd.WarehouseName}', '{regionMd.RegionCode}', '{taskNo}', '{balanceMd.TrayCode}', '{balanceMd.PalletCode}', '{(int)TrayStatusEnum.满盘}', '{RegiongLocNo.LocCode}', '{RegiongLocNo.LocCode}', '{RegiongLocNo.LocCode}', '{(int)WmsTaskTypeEnum.内伸货位移库任务}', NULL, '{(int)WcsCmdErrFlagEnum.正常}', '{1}', '{(int)WmsTaskStatusEnum.初始创建}', '{balanceMd.BinCode}', '{EbinMd.BinCode}', NULL, '', 1, getdate(), 1, getdate(), 0, NULL, NULL, NULL, NULL, NULL ); "; string sqlUpdateBalance = $@"update WMS_STK_BALANCE set BALANCE_STATUS = '66',UPDATE_TIME = getdate() where BALANCE_ID = '{balanceMd.BalanceId}'"; string balanceId = BasCommon_Dal.Instance.GetSysSequence("Balance_Id"); string sqlAddWmsStkBalance = $@" INSERT INTO [WMS_STK_BALANCE] ( [BALANCE_ID], [AREA_CODE], [AREA_NAME], [WAREHOUSE_CODE], [WAREHOUSE_NAME], [REGION_CODE], [REGION_NAME], [BIN_CODE], [BIN_NAME], [TRAY_ID], [TRAY_CODE], [PALLET_CODE], [INWH_TIME], [BALANCE_STATUS], [DESCRIBE], [CREATE_BY], [CREATE_TIME], [UPDATE_BY], [UPDATE_TIME], [DATA_VERSION], [REMARKS1], [REMARKS2], [REMARKS3], [REMARKS4], [REMARKS5] ) VALUES ( '{balanceId}', '{balanceMd.AreaCode}', '{balanceMd.AreaName}', '{balanceMd.WarehouseCode}', '{balanceMd.WarehouseName}', '{regionMd.RegionCode}', '{regionMd.RegionName}', '{EbinMd.BinCode}', '{EbinMd.BinName}', '{balanceMd.TrayId}', '{balanceMd.TrayCode}', '{balanceMd.PalletCode}', getdate(), '11', '{balanceMd.Describe}', '{balanceMd.CreateBy}', getdate(), '{balanceMd.CreateBy}', getdate(), 0, NULL, NULL, NULL, NULL, NULL ); "; List sqlList = new List(); sqlList.Add(sqlInsertWmsTask); sqlList.Add(sqlUpdateBalance); sqlList.Add(sqlAddWmsStkBalance); LeadDbHelperSQLServer.ExecuteSql(sqlUpdateBalance); } catch (Exception ex) { LogHelper.WriteLog($"插入内伸货位WMS移库大任务数据发生异常!【{ex.Message}】", LogTypeEnum.Err); } } #region 演示模式 public void InsertTestCrnCmd(string dev_no) { try { string cmdNo = BasCommon_Dal.Instance.GetSysSequence("Cmd_No"); string taskNo = BasCommon_Dal.Instance.GetSysSequence("Task_No"); string trayCode = BasCommon_Dal.Instance.GetSysSequence("Tray_Code"); string sqlTestBin = $@" 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.USED_FLAG = 1 AND A.DEL_FLAG = 0 AND A.BIN_TYPE = 3 AND A.REGION_CODE = 'YCLK_Region' "; DataTable dt = LeadDbHelperSQLServer.Query(sqlTestBin).Tables[0]; List binLst = new List(); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow item in dt.Rows) { BasBinMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); binLst.Add(retMd); } } string sqlTestBin1 = $@" 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.BIN_TYPE = 3 AND A.REGION_CODE = 'YCLK_Region' AND A.BIN_CODE = '{AppConfigHelper.Get("CrnAutoTestLockedBin")}' "; DataTable dt1 = LeadDbHelperSQLServer.Query(sqlTestBin1).Tables[0]; DataRow item1 = dt1.Rows[0]; BasBinMd randomSBin = ColumnToClassPropertyHelper.ColumnToClassProperty(dt1.Columns, item1); BasBinMd randomSBin1 = binLst.FirstOrDefault(x => x.BinCode == AppConfigHelper.Get("CrnAutoTestLockedBin")); if (randomSBin1 != null) { binLst.Remove(randomSBin1); } Random r = new Random(); BasBinMd randomEBin = binLst[r.Next(0, binLst.Count)]; string sql = $@" INSERT INTO [dbo].[WCS_CRN_CMD] ( [TASK_NO], [CMD_NO], [TRAY_CODE], [PALLET_CODE], [TRAY_STATUS], [CRN_DEV_NO], [CRN_FORK_DEV_NO], [SBIN_NO], [SBIN_ROW], [SBIN_COL], [SBIN_LAYER], [S_EXTENSION_GROUP], [S_EXTENSION_IDX], [EBIN_NO], [EBIN_ROW], [EBIN_COL], [EBIN_LAYER], [E_EXTENSION_GROUP], [E_EXTENSION_IDX], [CMD_TYPE], [ACTIVE_TYPE], [CMD_PRIORITY], [CMD_STATUS], [CMD_LOG], [ERR_FLAG], [ERR_LOG], [CREATE_BY], [CREATE_TIME], [UPDATE_BY], [UPDATE_TIME], [DATA_VERSION], [REMARKS1], [REMARKS2], [REMARKS3], [REMARKS4], [REMARKS5] ) VALUES ( '{taskNo}', '{cmdNo}', '{trayCode}', '123456', '{1}', '{dev_no}', '{dev_no}', '{randomSBin.BinCode}', '{randomSBin.BinRow}', '{randomSBin.BinColumn}', '{randomSBin.BinLayer}', '{randomSBin.EXTENSION_GROUP}', '{randomSBin.EXTENSION_IDX}', '{randomEBin.BinCode}', '{randomEBin.BinRow}', '{randomEBin.BinColumn}', '{randomEBin.BinLayer}', '{randomEBin.EXTENSION_GROUP}', '{randomEBin.EXTENSION_IDX}', '{CrnCmdTypeEnum.IN}', '{(int)CrnActiveTypeEnum.取放货}', 100, '{(int)CrnCmdStatusEnum.初始创建}', NULL, '{(int)WcsCmdErrFlagEnum.正常}', NULL, '{1}', getdate(), '{1}', getdate(), 0, 'AutoTest', NULL, NULL, NULL, NULL ); "; LeadDbHelperSQLServer.ExecuteSql(sql); string sqlUpdateBin = $@"update BAS_BIN set USED_FLAG = 1 where BIN_CODE = '{randomSBin.BinCode}'"; LeadDbHelperSQLServer.ExecuteSql(sqlUpdateBin); } catch (Exception ex) { LogHelper.WriteLog($"插入堆垛机演示指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err); } } public void DeleteTestCrnCmd() { try { string sqlQueryCrnUnFinishedCmd = $@" SELECT TOP 1 A.CRN_CMD_ID, A.NEWID, A.TASK_NO, A.CMD_NO, A.TRAY_CODE, A.PALLET_CODE, A.TRAY_STATUS, A.CRN_DEV_NO, A.CRN_FORK_DEV_NO, A.SBIN_NO, A.SBIN_ROW, A.SBIN_COL, A.SBIN_LAYER, A.S_EXTENSION_GROUP, A.S_EXTENSION_IDX, A.EBIN_NO, A.EBIN_ROW, A.EBIN_COL, A.EBIN_LAYER, A.E_EXTENSION_GROUP, A.E_EXTENSION_IDX, A.CMD_TYPE, A.ACTIVE_TYPE, A.CMD_PRIORITY, A.CMD_STATUS, A.CMD_LOG, A.ERR_FLAG, A.ERR_LOG, A.CREATE_BY, B.USER_CODE CreateCode, B.USER_NAME CreateName, A.CREATE_TIME, A.EXECUTE_TIME, A.FINISH_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_CRN_CMD 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.CRN_DEV_NO = 'Crn001' AND A.REMARKS1 = 'AutoTest' "; DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryCrnUnFinishedCmd).Tables[0]; if (dt != null && dt.Rows.Count > 0) { DataRow item = dt.Rows[0]; WcsCrnCmdMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item); if (retMd.CmdStatus == CrnCmdStatusEnum.初始创建) { string sqlUpdateBin = $@"update BAS_BIN set USED_FLAG = 1 where BIN_CODE = '{retMd.SbinNo}'"; LeadDbHelperSQLServer.ExecuteSql(sqlUpdateBin); } else { string sqlUpdateBin = $@"update BAS_BIN set USED_FLAG = 1 where BIN_CODE = '{retMd.EbinNo}'"; LeadDbHelperSQLServer.ExecuteSql(sqlUpdateBin); } string sqlDeleteCrnCmd = $@"delete from WCS_CRN_CMD where CRN_CMD_ID = '{retMd.CrnCmdId}' AND REMARKS1 = 'AutoTest'"; LeadDbHelperSQLServer.ExecuteSql(sqlDeleteCrnCmd); } } catch (Exception ex) { LogHelper.WriteLog($"插入堆垛机演示指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err); } } #endregion /// /// 更新堆垛机指令状态 /// /// 堆垛机指令对象 public void UpdateCrnCmdStatus(WcsCrnCmdMd wcsCrnCmdMd) { try { string sqlUpdateCrnCmdStatus = string.Empty; string sqlDeleteCrnCmd = string.Empty; if (wcsCrnCmdMd.CmdStatus == CrnCmdStatusEnum.已下发PLC) { sqlUpdateCrnCmdStatus = $@" UPDATE WCS_CRN_CMD SET CMD_STATUS = '{(int)wcsCrnCmdMd.CmdStatus}', UPDATE_BY = '{wcsCrnCmdMd.UpdateBy}', UPDATE_TIME = GETDATE(), EXECUTE_TIME = GETDATE() WHERE CRN_CMD_ID = '{wcsCrnCmdMd.CrnCmdId}' "; if (AppConfigHelper.Get("CrnAutoTest") == "1") { string sqlUpdateBin = $@"update BAS_BIN set USED_FLAG = 0 where BIN_CODE = '{wcsCrnCmdMd.EbinNo}'"; LeadDbHelperSQLServer.ExecuteSql(sqlUpdateBin); AppConfigHelper.Update("CrnAutoTestLockedBin", wcsCrnCmdMd.EbinNo); } } else if (wcsCrnCmdMd.CmdStatus == CrnCmdStatusEnum.完成) { sqlUpdateCrnCmdStatus = $@" UPDATE WCS_CRN_CMD SET CMD_STATUS = '{(int)wcsCrnCmdMd.CmdStatus}', UPDATE_BY = '{wcsCrnCmdMd.UpdateBy}', UPDATE_TIME = GETDATE(), FINISH_TIME = GETDATE() WHERE CRN_CMD_ID = '{wcsCrnCmdMd.CrnCmdId}' "; sqlDeleteCrnCmd = $@"delete from WCS_CRN_CMD where CRN_CMD_ID = '{wcsCrnCmdMd.CrnCmdId}' AND REMARKS1 = 'AutoTest'"; } else { sqlUpdateCrnCmdStatus = $@" UPDATE WCS_CRN_CMD SET CMD_STATUS = '{(int)wcsCrnCmdMd.CmdStatus}', UPDATE_BY = '{wcsCrnCmdMd.UpdateBy}', UPDATE_TIME = GETDATE() WHERE CRN_CMD_ID = '{wcsCrnCmdMd.CrnCmdId}' "; } LeadDbHelperSQLServer.ExecuteSql(sqlUpdateCrnCmdStatus); if (AppConfigHelper.Get("CrnAutoTest") == "1") { LeadDbHelperSQLServer.ExecuteSql(sqlDeleteCrnCmd); } } catch (Exception ex) { LogHelper.WriteLog($"更新堆垛机指令状态发生异常!【{ex.Message}】", LogTypeEnum.Err); } } public BasBinMd GetBinMdOfCode(string binCode) { try { string sqlGetBinMdOfCodeAndType = $@" 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 = '{binCode}' "; DataTable dt = LeadDbHelperSQLServer.Query(sqlGetBinMdOfCodeAndType).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($"获取库位号:【{binCode}】的详细库位信息发生异常!【{ex.Message}】", LogTypeEnum.Err); return null; } } public List LoadCurrentWorkingCrnCmd() { try { string sqlLoadCurrentWorkingCrnCmd = $@" SELECT TOP 1 A.CRN_CMD_ID, A.NEWID, A.TASK_NO, A.CMD_NO, A.TRAY_CODE, A.PALLET_CODE, A.TRAY_STATUS, A.CRN_DEV_NO, A.CRN_FORK_DEV_NO, A.SBIN_NO, A.SBIN_ROW, A.SBIN_COL, A.SBIN_LAYER, A.S_EXTENSION_GROUP, A.S_EXTENSION_IDX, A.EBIN_NO, A.EBIN_ROW, A.EBIN_COL, A.EBIN_LAYER, A.E_EXTENSION_GROUP, A.E_EXTENSION_IDX, A.CMD_TYPE, A.ACTIVE_TYPE, A.CMD_PRIORITY, A.CMD_STATUS, A.CMD_LOG, A.ERR_FLAG, A.ERR_LOG, A.CREATE_BY, B.USER_CODE CreateCode, B.USER_NAME CreateName, A.CREATE_TIME, A.EXECUTE_TIME, A.FINISH_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_CRN_CMD 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.CMD_STATUS > '{(int)CrnCmdStatusEnum.初始创建}' AND A.CMD_STATUS < '{CrnCmdStatusEnum.完成}' "; DataTable dt = LeadDbHelperSQLServer.Query(sqlLoadCurrentWorkingCrnCmd).Tables[0]; if (dt != null && dt.Rows.Count > 0) { List retLst = new List(); foreach (DataRow item in dt.Rows) { WcsCrnCmdMd 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 LoadAllCrnCmd(WcsCrnCmdSearchMd searchMd) { try { string sqlQuery = string.Empty; if (!string.IsNullOrEmpty(searchMd.TaskNo)) { sqlQuery += $" AND TASK_NO = '{searchMd.TaskNo}'"; } if (!string.IsNullOrEmpty(searchMd.CmdNo)) { sqlQuery += $" AND CMD_NO = '{searchMd.CmdNo}'"; } if (!string.IsNullOrEmpty(searchMd.PalletCode)) { sqlQuery += $" AND PALLET_CODE like '%{searchMd.PalletCode}%'"; } if (!string.IsNullOrEmpty(searchMd.DevMsg)) { sqlQuery += $" AND CRN_DEV_NO = '{searchMd.DevMsg}'"; } if (!string.IsNullOrEmpty(searchMd.SbinCode)) { sqlQuery += $" AND SBIN_NO like '%{searchMd.SbinCode}%'"; } if (!string.IsNullOrEmpty(searchMd.EbinCode)) { sqlQuery += $" AND EBIN_NO like '%{searchMd.EbinCode}%'"; } if (!string.IsNullOrEmpty(searchMd.CmdType)) { sqlQuery += $" AND CMD_TYPE = '{searchMd.CmdType}'"; } if (!string.IsNullOrEmpty(searchMd.CmdStatus)) { sqlQuery += $" AND CMD_STATUS = '{searchMd.CmdStatus}'"; } if (!string.IsNullOrEmpty(searchMd.TrayLoadedType)) { sqlQuery += $" AND TRAY_STATUS = '{searchMd.TrayLoadedType}'"; } if (!string.IsNullOrEmpty(searchMd.StartExcuteTime)) { sqlQuery += $" AND EXECUTE_TIME >= '{searchMd.StartExcuteTime}'"; } if (!string.IsNullOrEmpty(searchMd.EndExcuteTime)) { sqlQuery += $" AND EXECUTE_TIME <= '{searchMd.EndExcuteTime}'"; } if (!string.IsNullOrEmpty(searchMd.StartFinishTime)) { sqlQuery += $" AND FINISH_TIME >= '{searchMd.StartFinishTime}'"; } if (!string.IsNullOrEmpty(searchMd.EndFinishTime)) { sqlQuery += $" AND FINISH_TIME <= '{searchMd.EndFinishTime}'"; } int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty; int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty; string sql = $@"select * from VW_ZBK_WCS_CRN_CMD 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) { WcsCrnCmdMd 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; } } } }