WcsMotManageService.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. using DapperORMCore.Context.DataContext;
  2. using DapperORMCore.Model.CoreModel;
  3. using DapperORMCore.Repository.IRepositorys;
  4. using Microsoft.Extensions.Configuration;
  5. using NXWMS.IService.NXWMS.Monitor;
  6. using NXWMS.Model.AppModels.Condition.Monitor;
  7. using NXWMS.Model.AppModels.Result.Base;
  8. using NXWMS.Model.AppModels.Result.Monitor;
  9. using NXWMS.Model.Common;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using WestDistance.DapperORM.Repository.Repositorys;
  16. namespace NXWMS.Service.NXWMS.Monitor
  17. {
  18. /// <summary>
  19. /// 监控管理服务
  20. /// </summary>
  21. [AutoInject(typeof(IWcsMotManageService), InjectType.Scope)]
  22. public class WcsMotManageService : ServiceBase, IWcsMotManageService
  23. {
  24. #region 全局变量、构造注入
  25. /// <summary>
  26. /// 系统操作仓储中转
  27. /// </summary>
  28. private IDataRepositoryContext _dataContext;
  29. /// <summary>
  30. /// SQL节点仓储
  31. /// </summary>
  32. private ISQLNodeRepository _iSQLNodeRepository;
  33. /// <summary>
  34. /// 配置
  35. /// </summary>
  36. private IConfiguration _configuration;
  37. /// <summary>
  38. /// 构造注入
  39. /// </summary>
  40. /// <param name="dataRepositoryContext"></param>
  41. /// <param name="configuration"></param>
  42. /// <param name="iSQLNodeRepository"></param>
  43. public WcsMotManageService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository)
  44. {
  45. this._dataContext = dataRepositoryContext;
  46. this._configuration = configuration;
  47. this._iSQLNodeRepository = iSQLNodeRepository;
  48. }
  49. #endregion
  50. #region 库位监控
  51. /// <summary>
  52. /// 获取库位监控数据
  53. /// </summary>
  54. /// <param name="searchMd">库位监控对象</param>
  55. /// <returns></returns>
  56. public OperateResultInfo<List<WcsMotBalanceMonitor>> GetBinMonitorData(WcsMotBalanceSearchMd searchMd)
  57. {
  58. try
  59. {
  60. #region SQL语句生成
  61. StringBuilder sqlCondition = new StringBuilder();
  62. if (!string.IsNullOrEmpty(searchMd.RegionMsg))
  63. {
  64. sqlCondition.Append($" AND REGION_CODE = '{searchMd.RegionMsg}'");
  65. }
  66. if (!string.IsNullOrEmpty(searchMd.ShelfMsg))
  67. {
  68. sqlCondition.Append($" AND SHELF_CODE = '{searchMd.ShelfMsg}'");
  69. }
  70. if (!string.IsNullOrEmpty(searchMd.DevTypeMsg))
  71. {
  72. sqlCondition.Append($" AND DEV_TYPE_CODE = '{searchMd.DevTypeMsg}'");
  73. }
  74. if (!string.IsNullOrEmpty(searchMd.DevMsg))
  75. {
  76. sqlCondition.Append($" AND DEV_CODE = '{searchMd.DevMsg}'");
  77. }
  78. StringBuilder sqlQueryBinMonitorData = new StringBuilder($@"
  79. SELECT
  80. *
  81. FROM
  82. VW_WMS_BALANCE_MONITOR
  83. WHERE
  84. 1=1
  85. {sqlCondition}
  86. ");
  87. #endregion
  88. List<WcsMotBalanceMonitor> resultList = new DataRepository<WcsMotBalanceMonitor>(_dataContext).Query(sqlQueryBinMonitorData.ToString()).ToList();
  89. OperateResultInfo<List<WcsMotBalanceMonitor>> retDataMsg = SuccessStatus(resultList);
  90. return retDataMsg;
  91. }
  92. catch (Exception ex)
  93. {
  94. return FailMessageStatus<List<WcsMotBalanceMonitor>>($"查询库位监控数据发生异常,【{ex.Message}】", null);
  95. }
  96. }
  97. #endregion
  98. #region 整线监控
  99. /// <summary>
  100. /// 获取整线设备监控数据
  101. /// </summary>
  102. /// <param name="searchMd">设备监控查询对象</param>
  103. /// <returns></returns>
  104. public OperateResultInfo<List<WcsMotBasDevResult>> GetBasDevData(WcsMotBasDevSearchMd searchMd)
  105. {
  106. try
  107. {
  108. #region SQL语句生成
  109. StringBuilder sqlCondition = new StringBuilder();
  110. if (!string.IsNullOrEmpty(searchMd.DevTypeMsg))
  111. {
  112. sqlCondition.Append($" AND DEV_TYPE_CODE = '{searchMd.DevTypeMsg}'");
  113. }
  114. if (!string.IsNullOrEmpty(searchMd.DevMsg))
  115. {
  116. sqlCondition.Append($" AND DEV_CODE = '{searchMd.DevMsg}'");
  117. }
  118. StringBuilder sqlQueryMotBasDevData = new StringBuilder($@"
  119. SELECT
  120. *
  121. FROM
  122. VW_WCS_BAS_DEV_MSG
  123. WHERE
  124. 1=1
  125. {sqlCondition}
  126. ");
  127. StringBuilder sqlQueryMotOpcItemData = new StringBuilder($@"
  128. SELECT
  129. *
  130. FROM
  131. VW_WCS_OPC_ITEM_MONITOR
  132. ");
  133. #endregion
  134. List<WcsMotBasDevResult> resultMotBasDevList = new DataRepository<WcsMotBasDevResult>(_dataContext).Query(sqlQueryMotBasDevData.ToString()).ToList();
  135. List<WcsMotOpcItemStatusResult> resultMotOpcItemList = new DataRepository<WcsMotOpcItemStatusResult>(_dataContext).Query(sqlQueryMotOpcItemData.ToString()).ToList();
  136. if (resultMotBasDevList.Count > 0)
  137. {
  138. foreach (WcsMotBasDevResult item in resultMotBasDevList)
  139. {
  140. List<WcsMotOpcItemStatusResult> opcItemMdList = resultMotOpcItemList.FindAll(x=>x.DEV_CODE == item.DEV_CODE);
  141. item.PlcItemList = opcItemMdList;
  142. }
  143. OperateResultInfo<List<WcsMotBasDevResult>> retDataMsg = SuccessStatus(resultMotBasDevList);
  144. return retDataMsg;
  145. }
  146. else
  147. {
  148. return FailMessageStatus<List<WcsMotBasDevResult>>($"未查询到整线设备监控数据。", null);
  149. }
  150. }
  151. catch (Exception ex)
  152. {
  153. return FailMessageStatus<List<WcsMotBasDevResult>>($"查询整线设备监控数据发生异常,【{ex.Message}】", null);
  154. }
  155. }
  156. #endregion
  157. #region 设备状态监控
  158. /// <summary>
  159. /// 获取设备状态监控数据
  160. /// </summary>
  161. /// <param name="searchMd">设备状态查询对象</param>
  162. /// <returns></returns>
  163. public OperateResultInfo<List<WcsMotOpcItemStatusResult>> GetWcsMotOpcItemStatusData(WcsMotOpcItemStatusSearchMd searchMd)
  164. {
  165. try
  166. {
  167. #region SQL语句生成
  168. StringBuilder sqlCondition = new StringBuilder();
  169. if (!string.IsNullOrEmpty(searchMd.DevTypeMsg))
  170. {
  171. sqlCondition.Append($" AND DEV_TYPE_CODE = '{searchMd.DevTypeMsg}'");
  172. }
  173. if (!string.IsNullOrEmpty(searchMd.DevMsg))
  174. {
  175. sqlCondition.Append($" AND DEV_CODE = '{searchMd.DevMsg}'");
  176. }
  177. if (!string.IsNullOrEmpty(searchMd.OpcGroupMsg))
  178. {
  179. sqlCondition.Append($" AND OPC_GROUP_CODE = '{searchMd.OpcGroupMsg}'");
  180. }
  181. if (!string.IsNullOrEmpty(searchMd.DevMsg))
  182. {
  183. sqlCondition.Append($" AND (OPC_ITEM_CODE = '{searchMd.OpcItemMsg}' OR OPC_ITEM_NAME like '%{searchMd.OpcItemMsg}%' OR OPC_ITEM_DESC like '%{searchMd.OpcItemMsg}%'");
  184. }
  185. if (!string.IsNullOrEmpty(searchMd.PlcMsg))
  186. {
  187. sqlCondition.Append($" AND PLC_CODE = '{searchMd.PlcMsg}'");
  188. }
  189. if (!string.IsNullOrEmpty(searchMd.OpcItemTypeMsg))
  190. {
  191. sqlCondition.Append($" AND OPC_ITEM_TYPE = '{searchMd.OpcItemTypeMsg}'");
  192. }
  193. StringBuilder sqlCountMotOpcItemData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WCS_OPC_ITEM_MONITOR WHERE 1=1");
  194. sqlCountMotOpcItemData.Append(sqlCondition.ToString());
  195. int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty;
  196. int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty;
  197. StringBuilder sqlQueryMotOpcItemData = new StringBuilder($@"
  198. SELECT
  199. *
  200. FROM
  201. VW_WCS_OPC_ITEM_MONITOR
  202. WHERE
  203. 1=1
  204. {sqlCondition}
  205. ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC
  206. OFFSET {pageStartIndex} ROWS
  207. FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY
  208. ");
  209. #endregion
  210. int dataCount = Convert.ToInt32(new DataRepository<object>(_dataContext).ExecuteScalar(sqlCountMotOpcItemData.ToString()));
  211. List<WcsMotOpcItemStatusResult> resultMotOpcItemList = new DataRepository<WcsMotOpcItemStatusResult>(_dataContext).Query(sqlQueryMotOpcItemData.ToString()).ToList();
  212. OperateResultInfo<List<WcsMotOpcItemStatusResult>> retDataMsg = SuccessStatus(resultMotOpcItemList);
  213. retDataMsg.DataCount = dataCount;
  214. return retDataMsg;
  215. }
  216. catch (Exception ex)
  217. {
  218. return FailMessageStatus<List<WcsMotOpcItemStatusResult>>($"查询设备状态监控数据发生异常,【{ex.Message}】", null);
  219. }
  220. }
  221. #endregion
  222. public OperateResultInfo<List<BasFaultMd>> GetBasFaultMsg()
  223. {
  224. try
  225. {
  226. string sql = $@"
  227. SELECT
  228. A.FAULT_ID,
  229. A.NEWID,
  230. A.FAULT_CODE,
  231. A.FAULT_NAME,
  232. A.DEV_TYPE_CODE,
  233. A.[DESCRIBE],
  234. A.USED_FLAG,
  235. A.DEL_FLAG,
  236. A.CREATE_BY,
  237. B.USER_CODE CreateCode,
  238. B.USER_NAME CreateName,
  239. A.CREATE_TIME,
  240. A.UPDATE_BY,
  241. C.USER_CODE UpdateCode,
  242. C.USER_NAME UpdateName,
  243. A.UPDATE_TIME,
  244. A.DATA_VERSION,
  245. A.REMARKS1,
  246. A.REMARKS2,
  247. A.REMARKS3,
  248. A.REMARKS4,
  249. A.REMARKS5
  250. FROM
  251. BAS_FAULT A
  252. LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
  253. LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
  254. WHERE
  255. A.USED_FLAG = 1
  256. AND A.DEL_FLAG = 0
  257. ";
  258. List<BasFaultMd> resultMotOpcItemList = new DataRepository<BasFaultMd>(_dataContext).Query(sql).ToList();
  259. OperateResultInfo<List<BasFaultMd>> retDataMsg = SuccessStatus(resultMotOpcItemList);
  260. retDataMsg.DataCount = resultMotOpcItemList.Count;
  261. return retDataMsg;
  262. }
  263. catch (Exception ex)
  264. {
  265. return FailMessageStatus<List<BasFaultMd>>($"查询设备基础报警码数据发生异常,【{ex.Message}】", null);
  266. }
  267. }
  268. }
  269. }