using DapperORMCore.Context.DataContext; using DapperORMCore.Model.CoreModel; using DapperORMCore.Repository.IRepositorys; using Microsoft.Extensions.Configuration; using NXWMS.IService.NXWMS.WmsTask; using NXWMS.Model.AppModels.Condition.WmsTask; using NXWMS.Model.AppModels.Result.WmsTask; using NXWMS.Model.Common; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WestDistance.DapperORM.Repository.Repositorys; namespace NXWMS.Service.NXWMS.WmsTask { /// /// 任务管理服务 /// [AutoInject(typeof(IWmsTskTaskService), InjectType.Scope)] public class WmsTskTaskService : ServiceBase, IWmsTskTaskService { #region 全局变量、构造注入 /// /// 系统操作仓储中转 /// private IDataRepositoryContext _dataContext; /// /// SQL节点仓储 /// private ISQLNodeRepository _iSQLNodeRepository; /// /// 配置 /// private IConfiguration _configuration; /// /// 构造注入 /// /// /// /// public WmsTskTaskService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository) { this._dataContext = dataRepositoryContext; this._configuration = configuration; this._iSQLNodeRepository = iSQLNodeRepository; } #endregion #region WMS大任务 /// /// 分页查询WMS大任务数据 /// /// WMS大任务查询对象 /// public OperateResultInfo> GetWmsTaskData(WmsTaskSearchMd searchMd) { try { #region SQL语句生成 StringBuilder sqlCondition = new StringBuilder(); if (!string.IsNullOrEmpty(searchMd.TaskNo)) { sqlCondition.Append($" AND TASK_NO = '{searchMd.TaskNo}'"); } if (!string.IsNullOrEmpty(searchMd.CmdNo)) { sqlCondition.Append($" AND CMD_NO = '{searchMd.CmdNo}'"); } if (!string.IsNullOrEmpty(searchMd.PalletNo)) { sqlCondition.Append($" AND PALLET_CODE = '{searchMd.PalletNo}'"); } if (!string.IsNullOrEmpty(searchMd.TrayLoadedMsg)) { sqlCondition.Append($" AND TRAY_LOADED_TYPE = '{searchMd.TrayLoadedMsg}'"); } if (!string.IsNullOrEmpty(searchMd.TaskType)) { sqlCondition.Append($" AND TASK_TYPE = '{searchMd.TaskType}'"); } if (!string.IsNullOrEmpty(searchMd.TaskStatus)) { sqlCondition.Append($" AND TASK_STATUS = '{searchMd.TaskStatus}'"); } if (!string.IsNullOrEmpty(searchMd.SLocNo)) { sqlCondition.Append($" AND SLOC_CODE = '{searchMd.SLocNo}'"); } if (!string.IsNullOrEmpty(searchMd.ELocNo)) { sqlCondition.Append($" AND ELOC_CODE = '{searchMd.ELocNo}'"); } if (!string.IsNullOrEmpty(searchMd.CLocNo)) { sqlCondition.Append($" AND CLOC_CODE = '{searchMd.CLocNo}'"); } if (!string.IsNullOrEmpty(searchMd.SBinCode)) { sqlCondition.Append($" AND SBIN_CODE = '{searchMd.SBinCode}'"); } if (!string.IsNullOrEmpty(searchMd.EBinCode)) { sqlCondition.Append($" AND EBIN_CODE = '{searchMd.EBinCode}'"); } if (!string.IsNullOrEmpty(searchMd.StartCreateTime)) { sqlCondition.Append($" AND CREATE_TIME >= '{searchMd.StartCreateTime}'"); } if (!string.IsNullOrEmpty(searchMd.EndCreateTime)) { sqlCondition.Append($" AND CREATE_TIME <= '{searchMd.EndCreateTime}'"); } StringBuilder sqlCountWmsTaskData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WMS_TSK_TASK WHERE 1=1"); sqlCountWmsTaskData.Append(sqlCondition.ToString()); int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty; int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty; StringBuilder sqlQueryWmsTaskData = new StringBuilder($@" SELECT * FROM VW_WMS_TSK_TASK WHERE 1=1 {sqlCondition} ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC OFFSET {pageStartIndex} ROWS FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY "); #endregion int dataCount = Convert.ToInt32(new DataRepository(_dataContext).ExecuteScalar(sqlCountWmsTaskData.ToString())); List resultList = new DataRepository(_dataContext).Query(sqlQueryWmsTaskData.ToString()).ToList(); OperateResultInfo> retDataMsg = SuccessStatus(resultList); retDataMsg.DataCount = dataCount; return retDataMsg; } catch (Exception ex) { return FailMessageStatus>($"查询WMS大任务数据发生异常,【{ex.Message}】", null); } } #endregion #region 堆垛机指令 /// /// 分页查询堆垛机指令数据 /// /// 堆垛机指令查询对象 /// public OperateResultInfo> GetWcsCrnCmdData(WcsCrnCmdSearchMd searchMd) { try { #region SQL语句生成 StringBuilder sqlCondition = new StringBuilder(); if (!string.IsNullOrEmpty(searchMd.TaskNo)) { sqlCondition.Append($" AND TASK_NO = '{searchMd.TaskNo}'"); } if (!string.IsNullOrEmpty(searchMd.CmdNo)) { sqlCondition.Append($" AND CMD_NO = '{searchMd.CmdNo}'"); } if (!string.IsNullOrEmpty(searchMd.PalletNo)) { sqlCondition.Append($" AND PALLET_CODE = '{searchMd.PalletNo}'"); } if (!string.IsNullOrEmpty(searchMd.TrayLoadedMsg)) { sqlCondition.Append($" AND TRAY_LOADED_TYPE = '{searchMd.TrayLoadedMsg}'"); } if (!string.IsNullOrEmpty(searchMd.TaskType)) { sqlCondition.Append($" AND TASK_TYPE = '{searchMd.TaskType}'"); } if (!string.IsNullOrEmpty(searchMd.TaskStatus)) { sqlCondition.Append($" AND TASK_STATUS = '{searchMd.TaskStatus}'"); } if (!string.IsNullOrEmpty(searchMd.CrnDevMsg)) { sqlCondition.Append($" AND CRN_DEV_NO = '{searchMd.CrnDevMsg}'"); } if (!string.IsNullOrEmpty(searchMd.SBinCode)) { sqlCondition.Append($" AND SBIN_CODE = '{searchMd.SBinCode}'"); } if (!string.IsNullOrEmpty(searchMd.EBinCode)) { sqlCondition.Append($" AND EBIN_CODE = '{searchMd.EBinCode}'"); } if (!string.IsNullOrEmpty(searchMd.StartCreateTime)) { sqlCondition.Append($" AND CREATE_TIME >= '{searchMd.StartCreateTime}'"); } if (!string.IsNullOrEmpty(searchMd.EndCreateTime)) { sqlCondition.Append($" AND CREATE_TIME <= '{searchMd.EndCreateTime}'"); } StringBuilder sqlCountWcsCrnCmdData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WCS_CRN_CMD WHERE 1=1"); sqlCountWcsCrnCmdData.Append(sqlCondition.ToString()); int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty; int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty; StringBuilder sqlQueryWcsCrnCmdData = new StringBuilder($@" SELECT * FROM VW_WCS_CRN_CMD WHERE 1=1 {sqlCondition} ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC OFFSET {pageStartIndex} ROWS FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY "); #endregion int dataCount = Convert.ToInt32(new DataRepository(_dataContext).ExecuteScalar(sqlCountWcsCrnCmdData.ToString())); List resultList = new DataRepository(_dataContext).Query(sqlQueryWcsCrnCmdData.ToString()).ToList(); OperateResultInfo> retDataMsg = SuccessStatus(resultList); retDataMsg.DataCount = dataCount; return retDataMsg; } catch (Exception ex) { return FailMessageStatus>($"查询堆垛机指令数据发生异常,【{ex.Message}】", null); } } #endregion #region 输送线指令 /// /// 分页查询输送线指令数据 /// /// 输送线指令查询对象 /// public OperateResultInfo> GetWcsTranCmdData(WcsTranCmdSearchMd searchMd) { try { #region SQL语句生成 StringBuilder sqlCondition = new StringBuilder(); if (!string.IsNullOrEmpty(searchMd.TaskNo)) { sqlCondition.Append($" AND TASK_NO = '{searchMd.TaskNo}'"); } if (!string.IsNullOrEmpty(searchMd.CmdNo)) { sqlCondition.Append($" AND CMD_NO = '{searchMd.CmdNo}'"); } if (!string.IsNullOrEmpty(searchMd.PalletNo)) { sqlCondition.Append($" AND PALLET_CODE = '{searchMd.PalletNo}'"); } if (!string.IsNullOrEmpty(searchMd.TrayLoadedMsg)) { sqlCondition.Append($" AND TRAY_LOADED_TYPE = '{searchMd.TrayLoadedMsg}'"); } if (!string.IsNullOrEmpty(searchMd.TaskType)) { sqlCondition.Append($" AND TASK_TYPE = '{searchMd.TaskType}'"); } if (!string.IsNullOrEmpty(searchMd.TaskStatus)) { sqlCondition.Append($" AND TASK_STATUS = '{searchMd.TaskStatus}'"); } if (!string.IsNullOrEmpty(searchMd.TranDevMsg)) { sqlCondition.Append($" AND TRAN_DEV_NO = '{searchMd.TranDevMsg}'"); } if (!string.IsNullOrEmpty(searchMd.SLocNo)) { sqlCondition.Append($" AND SLOC_NO = '{searchMd.SLocNo}'"); } if (!string.IsNullOrEmpty(searchMd.ELocNo)) { sqlCondition.Append($" AND ELOC_NO = '{searchMd.ELocNo}'"); } if (!string.IsNullOrEmpty(searchMd.StartCreateTime)) { sqlCondition.Append($" AND CREATE_TIME >= '{searchMd.StartCreateTime}'"); } if (!string.IsNullOrEmpty(searchMd.EndCreateTime)) { sqlCondition.Append($" AND CREATE_TIME <= '{searchMd.EndCreateTime}'"); } StringBuilder sqlCountWcsTranCmdData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WCS_TRAN_CMD WHERE 1=1"); sqlCountWcsTranCmdData.Append(sqlCondition.ToString()); int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty; int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty; StringBuilder sqlQueryWcsTranCmdData = new StringBuilder($@" SELECT * FROM VW_WCS_TRAN_CMD WHERE 1=1 {sqlCondition} ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC OFFSET {pageStartIndex} ROWS FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY "); #endregion int dataCount = Convert.ToInt32(new DataRepository(_dataContext).ExecuteScalar(sqlCountWcsTranCmdData.ToString())); List resultList = new DataRepository(_dataContext).Query(sqlQueryWcsTranCmdData.ToString()).ToList(); OperateResultInfo> retDataMsg = SuccessStatus(resultList); retDataMsg.DataCount = dataCount; return retDataMsg; } catch (Exception ex) { return FailMessageStatus>($"查询输送线指令数据发生异常,【{ex.Message}】", null); } } #endregion #region AGV指令 /// /// 分页查询AGV指令数据 /// /// AGV指令查询对象 /// public OperateResultInfo> GetWcsAgvCmdData(WcsAgvCmdSearchMd searchMd) { try { #region SQL语句生成 StringBuilder sqlCondition = new StringBuilder(); if (!string.IsNullOrEmpty(searchMd.TaskNo)) { sqlCondition.Append($" AND TASK_NO = '{searchMd.TaskNo}'"); } if (!string.IsNullOrEmpty(searchMd.CmdNo)) { sqlCondition.Append($" AND CMD_NO = '{searchMd.CmdNo}'"); } if (!string.IsNullOrEmpty(searchMd.PalletNo)) { sqlCondition.Append($" AND PALLET_CODE = '{searchMd.PalletNo}'"); } if (!string.IsNullOrEmpty(searchMd.TrayLoadedMsg)) { sqlCondition.Append($" AND TRAY_LOADED_TYPE = '{searchMd.TrayLoadedMsg}'"); } if (!string.IsNullOrEmpty(searchMd.TaskType)) { sqlCondition.Append($" AND TASK_TYPE = '{searchMd.TaskType}'"); } if (!string.IsNullOrEmpty(searchMd.TaskStatus)) { sqlCondition.Append($" AND TASK_STATUS = '{searchMd.TaskStatus}'"); } if (!string.IsNullOrEmpty(searchMd.AgvDevMsg)) { sqlCondition.Append($" AND AGV_DEV_NO = '{searchMd.AgvDevMsg}'"); } if (!string.IsNullOrEmpty(searchMd.SLocNo)) { sqlCondition.Append($" AND SLOC_NO = '{searchMd.SLocNo}'"); } if (!string.IsNullOrEmpty(searchMd.ELocNo)) { sqlCondition.Append($" AND ELOC_NO = '{searchMd.ELocNo}'"); } if (!string.IsNullOrEmpty(searchMd.SAgvLocNo)) { sqlCondition.Append($" AND SPLC_NO = '{searchMd.SAgvLocNo}'"); } if (!string.IsNullOrEmpty(searchMd.EAgvLocNo)) { sqlCondition.Append($" AND EPLC_NO = '{searchMd.EAgvLocNo}'"); } if (!string.IsNullOrEmpty(searchMd.StartCreateTime)) { sqlCondition.Append($" AND CREATE_TIME >= '{searchMd.StartCreateTime}'"); } if (!string.IsNullOrEmpty(searchMd.EndCreateTime)) { sqlCondition.Append($" AND CREATE_TIME <= '{searchMd.EndCreateTime}'"); } StringBuilder sqlCountWcsAgvCmdData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WCS_AGV_CMD WHERE 1=1"); sqlCountWcsAgvCmdData.Append(sqlCondition.ToString()); int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty; int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty; StringBuilder sqlQueryWcsAgvCmdData = new StringBuilder($@" SELECT * FROM VW_WCS_AGV_CMD WHERE 1=1 {sqlCondition} ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC OFFSET {pageStartIndex} ROWS FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY "); #endregion int dataCount = Convert.ToInt32(new DataRepository(_dataContext).ExecuteScalar(sqlCountWcsAgvCmdData.ToString())); List resultList = new DataRepository(_dataContext).Query(sqlQueryWcsAgvCmdData.ToString()).ToList(); OperateResultInfo> retDataMsg = SuccessStatus(resultList); retDataMsg.DataCount = dataCount; return retDataMsg; } catch (Exception ex) { return FailMessageStatus>($"查询AGV指令数据发生异常,【{ex.Message}】", null); } } #endregion } }