using DapperORMCore.Context.DataContext; using DapperORMCore.Model.CoreModel; using DapperORMCore.Repository.IRepositorys; using Microsoft.Extensions.Configuration; using NXWMS.IService.NXWMS.Monitor; using NXWMS.Model.AppModels.Condition.Monitor; using NXWMS.Model.AppModels.Result.Base; using NXWMS.Model.AppModels.Result.Monitor; 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.Monitor { /// /// 监控管理服务 /// [AutoInject(typeof(IWcsMotManageService), InjectType.Scope)] public class WcsMotManageService : ServiceBase, IWcsMotManageService { #region 全局变量、构造注入 /// /// 系统操作仓储中转 /// private IDataRepositoryContext _dataContext; /// /// SQL节点仓储 /// private ISQLNodeRepository _iSQLNodeRepository; /// /// 配置 /// private IConfiguration _configuration; /// /// 构造注入 /// /// /// /// public WcsMotManageService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository) { this._dataContext = dataRepositoryContext; this._configuration = configuration; this._iSQLNodeRepository = iSQLNodeRepository; } #endregion #region 库位监控 /// /// 获取库位监控数据 /// /// 库位监控对象 /// public OperateResultInfo> GetBinMonitorData(WcsMotBalanceSearchMd searchMd) { try { #region SQL语句生成 StringBuilder sqlCondition = new StringBuilder(); if (!string.IsNullOrEmpty(searchMd.RegionMsg)) { sqlCondition.Append($" AND REGION_CODE = '{searchMd.RegionMsg}'"); } if (!string.IsNullOrEmpty(searchMd.ShelfMsg)) { sqlCondition.Append($" AND SHELF_CODE = '{searchMd.ShelfMsg}'"); } if (!string.IsNullOrEmpty(searchMd.DevTypeMsg)) { sqlCondition.Append($" AND DEV_TYPE_CODE = '{searchMd.DevTypeMsg}'"); } if (!string.IsNullOrEmpty(searchMd.DevMsg)) { sqlCondition.Append($" AND DEV_CODE = '{searchMd.DevMsg}'"); } StringBuilder sqlQueryBinMonitorData = new StringBuilder($@" SELECT * FROM VW_WMS_BALANCE_MONITOR WHERE 1=1 {sqlCondition} "); #endregion List resultList = new DataRepository(_dataContext).Query(sqlQueryBinMonitorData.ToString()).ToList(); OperateResultInfo> retDataMsg = SuccessStatus(resultList); return retDataMsg; } catch (Exception ex) { return FailMessageStatus>($"查询库位监控数据发生异常,【{ex.Message}】", null); } } #endregion #region 整线监控 /// /// 获取整线设备监控数据 /// /// 设备监控查询对象 /// public OperateResultInfo> GetBasDevData(WcsMotBasDevSearchMd searchMd) { try { #region SQL语句生成 StringBuilder sqlCondition = new StringBuilder(); if (!string.IsNullOrEmpty(searchMd.DevTypeMsg)) { sqlCondition.Append($" AND DEV_TYPE_CODE = '{searchMd.DevTypeMsg}'"); } if (!string.IsNullOrEmpty(searchMd.DevMsg)) { sqlCondition.Append($" AND DEV_CODE = '{searchMd.DevMsg}'"); } StringBuilder sqlQueryMotBasDevData = new StringBuilder($@" SELECT * FROM VW_WCS_BAS_DEV_MSG WHERE 1=1 {sqlCondition} "); StringBuilder sqlQueryMotOpcItemData = new StringBuilder($@" SELECT * FROM VW_WCS_OPC_ITEM_MONITOR "); #endregion List resultMotBasDevList = new DataRepository(_dataContext).Query(sqlQueryMotBasDevData.ToString()).ToList(); List resultMotOpcItemList = new DataRepository(_dataContext).Query(sqlQueryMotOpcItemData.ToString()).ToList(); if (resultMotBasDevList.Count > 0) { foreach (WcsMotBasDevResult item in resultMotBasDevList) { List opcItemMdList = resultMotOpcItemList.FindAll(x=>x.DEV_CODE == item.DEV_CODE); item.PlcItemList = opcItemMdList; } OperateResultInfo> retDataMsg = SuccessStatus(resultMotBasDevList); return retDataMsg; } else { return FailMessageStatus>($"未查询到整线设备监控数据。", null); } } catch (Exception ex) { return FailMessageStatus>($"查询整线设备监控数据发生异常,【{ex.Message}】", null); } } #endregion #region 设备状态监控 /// /// 获取设备状态监控数据 /// /// 设备状态查询对象 /// public OperateResultInfo> GetWcsMotOpcItemStatusData(WcsMotOpcItemStatusSearchMd searchMd) { try { #region SQL语句生成 StringBuilder sqlCondition = new StringBuilder(); if (!string.IsNullOrEmpty(searchMd.DevTypeMsg)) { sqlCondition.Append($" AND DEV_TYPE_CODE = '{searchMd.DevTypeMsg}'"); } if (!string.IsNullOrEmpty(searchMd.DevMsg)) { sqlCondition.Append($" AND DEV_CODE = '{searchMd.DevMsg}'"); } if (!string.IsNullOrEmpty(searchMd.OpcGroupMsg)) { sqlCondition.Append($" AND OPC_GROUP_CODE = '{searchMd.OpcGroupMsg}'"); } if (!string.IsNullOrEmpty(searchMd.DevMsg)) { sqlCondition.Append($" AND (OPC_ITEM_CODE = '{searchMd.OpcItemMsg}' OR OPC_ITEM_NAME like '%{searchMd.OpcItemMsg}%' OR OPC_ITEM_DESC like '%{searchMd.OpcItemMsg}%'"); } if (!string.IsNullOrEmpty(searchMd.PlcMsg)) { sqlCondition.Append($" AND PLC_CODE = '{searchMd.PlcMsg}'"); } if (!string.IsNullOrEmpty(searchMd.OpcItemTypeMsg)) { sqlCondition.Append($" AND OPC_ITEM_TYPE = '{searchMd.OpcItemTypeMsg}'"); } StringBuilder sqlCountMotOpcItemData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WCS_OPC_ITEM_MONITOR WHERE 1=1"); sqlCountMotOpcItemData.Append(sqlCondition.ToString()); int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty; int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty; StringBuilder sqlQueryMotOpcItemData = new StringBuilder($@" SELECT * FROM VW_WCS_OPC_ITEM_MONITOR 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(sqlCountMotOpcItemData.ToString())); List resultMotOpcItemList = new DataRepository(_dataContext).Query(sqlQueryMotOpcItemData.ToString()).ToList(); OperateResultInfo> retDataMsg = SuccessStatus(resultMotOpcItemList); retDataMsg.DataCount = dataCount; return retDataMsg; } catch (Exception ex) { return FailMessageStatus>($"查询设备状态监控数据发生异常,【{ex.Message}】", null); } } #endregion public OperateResultInfo> 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 "; List resultMotOpcItemList = new DataRepository(_dataContext).Query(sql).ToList(); OperateResultInfo> retDataMsg = SuccessStatus(resultMotOpcItemList); retDataMsg.DataCount = resultMotOpcItemList.Count; return retDataMsg; } catch (Exception ex) { return FailMessageStatus>($"查询设备基础报警码数据发生异常,【{ex.Message}】", null); } } } }