WmsTskTaskService.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  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.WmsTask;
  6. using NXWMS.Model.AppModels.Condition.WmsTask;
  7. using NXWMS.Model.AppModels.Result.WmsTask;
  8. using NXWMS.Model.Common;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using WestDistance.DapperORM.Repository.Repositorys;
  15. namespace NXWMS.Service.NXWMS.WmsTask
  16. {
  17. /// <summary>
  18. /// 任务管理服务
  19. /// </summary>
  20. [AutoInject(typeof(IWmsTskTaskService), InjectType.Scope)]
  21. public class WmsTskTaskService : ServiceBase, IWmsTskTaskService
  22. {
  23. #region 全局变量、构造注入
  24. /// <summary>
  25. /// 系统操作仓储中转
  26. /// </summary>
  27. private IDataRepositoryContext _dataContext;
  28. /// <summary>
  29. /// SQL节点仓储
  30. /// </summary>
  31. private ISQLNodeRepository _iSQLNodeRepository;
  32. /// <summary>
  33. /// 配置
  34. /// </summary>
  35. private IConfiguration _configuration;
  36. /// <summary>
  37. /// 构造注入
  38. /// </summary>
  39. /// <param name="dataRepositoryContext"></param>
  40. /// <param name="configuration"></param>
  41. /// <param name="iSQLNodeRepository"></param>
  42. public WmsTskTaskService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository)
  43. {
  44. this._dataContext = dataRepositoryContext;
  45. this._configuration = configuration;
  46. this._iSQLNodeRepository = iSQLNodeRepository;
  47. }
  48. #endregion
  49. #region WMS大任务
  50. /// <summary>
  51. /// 分页查询WMS大任务数据
  52. /// </summary>
  53. /// <param name="searchMd">WMS大任务查询对象</param>
  54. /// <returns></returns>
  55. public OperateResultInfo<List<WmsTaskResult>> GetWmsTaskData(WmsTaskSearchMd searchMd)
  56. {
  57. try
  58. {
  59. #region SQL语句生成
  60. StringBuilder sqlCondition = new StringBuilder();
  61. if (!string.IsNullOrEmpty(searchMd.TaskNo))
  62. {
  63. sqlCondition.Append($" AND TASK_NO = '{searchMd.TaskNo}'");
  64. }
  65. if (!string.IsNullOrEmpty(searchMd.CmdNo))
  66. {
  67. sqlCondition.Append($" AND CMD_NO = '{searchMd.CmdNo}'");
  68. }
  69. if (!string.IsNullOrEmpty(searchMd.PalletNo))
  70. {
  71. sqlCondition.Append($" AND PALLET_CODE = '{searchMd.PalletNo}'");
  72. }
  73. if (!string.IsNullOrEmpty(searchMd.TrayLoadedMsg))
  74. {
  75. sqlCondition.Append($" AND TRAY_LOADED_TYPE = '{searchMd.TrayLoadedMsg}'");
  76. }
  77. if (!string.IsNullOrEmpty(searchMd.TaskType))
  78. {
  79. sqlCondition.Append($" AND TASK_TYPE = '{searchMd.TaskType}'");
  80. }
  81. if (!string.IsNullOrEmpty(searchMd.TaskStatus))
  82. {
  83. sqlCondition.Append($" AND TASK_STATUS = '{searchMd.TaskStatus}'");
  84. }
  85. if (!string.IsNullOrEmpty(searchMd.SLocNo))
  86. {
  87. sqlCondition.Append($" AND SLOC_CODE = '{searchMd.SLocNo}'");
  88. }
  89. if (!string.IsNullOrEmpty(searchMd.ELocNo))
  90. {
  91. sqlCondition.Append($" AND ELOC_CODE = '{searchMd.ELocNo}'");
  92. }
  93. if (!string.IsNullOrEmpty(searchMd.CLocNo))
  94. {
  95. sqlCondition.Append($" AND CLOC_CODE = '{searchMd.CLocNo}'");
  96. }
  97. if (!string.IsNullOrEmpty(searchMd.SBinCode))
  98. {
  99. sqlCondition.Append($" AND SBIN_CODE = '{searchMd.SBinCode}'");
  100. }
  101. if (!string.IsNullOrEmpty(searchMd.EBinCode))
  102. {
  103. sqlCondition.Append($" AND EBIN_CODE = '{searchMd.EBinCode}'");
  104. }
  105. if (!string.IsNullOrEmpty(searchMd.StartCreateTime))
  106. {
  107. sqlCondition.Append($" AND CREATE_TIME >= '{searchMd.StartCreateTime}'");
  108. }
  109. if (!string.IsNullOrEmpty(searchMd.EndCreateTime))
  110. {
  111. sqlCondition.Append($" AND CREATE_TIME <= '{searchMd.EndCreateTime}'");
  112. }
  113. StringBuilder sqlCountWmsTaskData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WMS_TSK_TASK WHERE 1=1");
  114. sqlCountWmsTaskData.Append(sqlCondition.ToString());
  115. int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty;
  116. int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty;
  117. StringBuilder sqlQueryWmsTaskData = new StringBuilder($@"
  118. SELECT
  119. *
  120. FROM
  121. VW_WMS_TSK_TASK
  122. WHERE
  123. 1=1
  124. {sqlCondition}
  125. ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC
  126. OFFSET {pageStartIndex} ROWS
  127. FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY
  128. ");
  129. #endregion
  130. int dataCount = Convert.ToInt32(new DataRepository<object>(_dataContext).ExecuteScalar(sqlCountWmsTaskData.ToString()));
  131. List<WmsTaskResult> resultList = new DataRepository<WmsTaskResult>(_dataContext).Query(sqlQueryWmsTaskData.ToString()).ToList();
  132. OperateResultInfo<List<WmsTaskResult>> retDataMsg = SuccessStatus(resultList);
  133. retDataMsg.DataCount = dataCount;
  134. return retDataMsg;
  135. }
  136. catch (Exception ex)
  137. {
  138. return FailMessageStatus<List<WmsTaskResult>>($"查询WMS大任务数据发生异常,【{ex.Message}】", null);
  139. }
  140. }
  141. #endregion
  142. #region 堆垛机指令
  143. /// <summary>
  144. /// 分页查询堆垛机指令数据
  145. /// </summary>
  146. /// <param name="searchMd">堆垛机指令查询对象</param>
  147. /// <returns></returns>
  148. public OperateResultInfo<List<WcsCrnCmdResult>> GetWcsCrnCmdData(WcsCrnCmdSearchMd searchMd)
  149. {
  150. try
  151. {
  152. #region SQL语句生成
  153. StringBuilder sqlCondition = new StringBuilder();
  154. if (!string.IsNullOrEmpty(searchMd.TaskNo))
  155. {
  156. sqlCondition.Append($" AND TASK_NO = '{searchMd.TaskNo}'");
  157. }
  158. if (!string.IsNullOrEmpty(searchMd.CmdNo))
  159. {
  160. sqlCondition.Append($" AND CMD_NO = '{searchMd.CmdNo}'");
  161. }
  162. if (!string.IsNullOrEmpty(searchMd.PalletNo))
  163. {
  164. sqlCondition.Append($" AND PALLET_CODE = '{searchMd.PalletNo}'");
  165. }
  166. if (!string.IsNullOrEmpty(searchMd.TrayLoadedMsg))
  167. {
  168. sqlCondition.Append($" AND TRAY_LOADED_TYPE = '{searchMd.TrayLoadedMsg}'");
  169. }
  170. if (!string.IsNullOrEmpty(searchMd.TaskType))
  171. {
  172. sqlCondition.Append($" AND TASK_TYPE = '{searchMd.TaskType}'");
  173. }
  174. if (!string.IsNullOrEmpty(searchMd.TaskStatus))
  175. {
  176. sqlCondition.Append($" AND TASK_STATUS = '{searchMd.TaskStatus}'");
  177. }
  178. if (!string.IsNullOrEmpty(searchMd.CrnDevMsg))
  179. {
  180. sqlCondition.Append($" AND CRN_DEV_NO = '{searchMd.CrnDevMsg}'");
  181. }
  182. if (!string.IsNullOrEmpty(searchMd.SBinCode))
  183. {
  184. sqlCondition.Append($" AND SBIN_CODE = '{searchMd.SBinCode}'");
  185. }
  186. if (!string.IsNullOrEmpty(searchMd.EBinCode))
  187. {
  188. sqlCondition.Append($" AND EBIN_CODE = '{searchMd.EBinCode}'");
  189. }
  190. if (!string.IsNullOrEmpty(searchMd.StartCreateTime))
  191. {
  192. sqlCondition.Append($" AND CREATE_TIME >= '{searchMd.StartCreateTime}'");
  193. }
  194. if (!string.IsNullOrEmpty(searchMd.EndCreateTime))
  195. {
  196. sqlCondition.Append($" AND CREATE_TIME <= '{searchMd.EndCreateTime}'");
  197. }
  198. StringBuilder sqlCountWcsCrnCmdData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WCS_CRN_CMD WHERE 1=1");
  199. sqlCountWcsCrnCmdData.Append(sqlCondition.ToString());
  200. int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty;
  201. int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty;
  202. StringBuilder sqlQueryWcsCrnCmdData = new StringBuilder($@"
  203. SELECT
  204. *
  205. FROM
  206. VW_WCS_CRN_CMD
  207. WHERE
  208. 1=1
  209. {sqlCondition}
  210. ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC
  211. OFFSET {pageStartIndex} ROWS
  212. FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY
  213. ");
  214. #endregion
  215. int dataCount = Convert.ToInt32(new DataRepository<object>(_dataContext).ExecuteScalar(sqlCountWcsCrnCmdData.ToString()));
  216. List<WcsCrnCmdResult> resultList = new DataRepository<WcsCrnCmdResult>(_dataContext).Query(sqlQueryWcsCrnCmdData.ToString()).ToList();
  217. OperateResultInfo<List<WcsCrnCmdResult>> retDataMsg = SuccessStatus(resultList);
  218. retDataMsg.DataCount = dataCount;
  219. return retDataMsg;
  220. }
  221. catch (Exception ex)
  222. {
  223. return FailMessageStatus<List<WcsCrnCmdResult>>($"查询堆垛机指令数据发生异常,【{ex.Message}】", null);
  224. }
  225. }
  226. #endregion
  227. #region 输送线指令
  228. /// <summary>
  229. /// 分页查询输送线指令数据
  230. /// </summary>
  231. /// <param name="searchMd">输送线指令查询对象</param>
  232. /// <returns></returns>
  233. public OperateResultInfo<List<WcsTranCmdResult>> GetWcsTranCmdData(WcsTranCmdSearchMd searchMd)
  234. {
  235. try
  236. {
  237. #region SQL语句生成
  238. StringBuilder sqlCondition = new StringBuilder();
  239. if (!string.IsNullOrEmpty(searchMd.TaskNo))
  240. {
  241. sqlCondition.Append($" AND TASK_NO = '{searchMd.TaskNo}'");
  242. }
  243. if (!string.IsNullOrEmpty(searchMd.CmdNo))
  244. {
  245. sqlCondition.Append($" AND CMD_NO = '{searchMd.CmdNo}'");
  246. }
  247. if (!string.IsNullOrEmpty(searchMd.PalletNo))
  248. {
  249. sqlCondition.Append($" AND PALLET_CODE = '{searchMd.PalletNo}'");
  250. }
  251. if (!string.IsNullOrEmpty(searchMd.TrayLoadedMsg))
  252. {
  253. sqlCondition.Append($" AND TRAY_LOADED_TYPE = '{searchMd.TrayLoadedMsg}'");
  254. }
  255. if (!string.IsNullOrEmpty(searchMd.TaskType))
  256. {
  257. sqlCondition.Append($" AND TASK_TYPE = '{searchMd.TaskType}'");
  258. }
  259. if (!string.IsNullOrEmpty(searchMd.TaskStatus))
  260. {
  261. sqlCondition.Append($" AND TASK_STATUS = '{searchMd.TaskStatus}'");
  262. }
  263. if (!string.IsNullOrEmpty(searchMd.TranDevMsg))
  264. {
  265. sqlCondition.Append($" AND TRAN_DEV_NO = '{searchMd.TranDevMsg}'");
  266. }
  267. if (!string.IsNullOrEmpty(searchMd.SLocNo))
  268. {
  269. sqlCondition.Append($" AND SLOC_NO = '{searchMd.SLocNo}'");
  270. }
  271. if (!string.IsNullOrEmpty(searchMd.ELocNo))
  272. {
  273. sqlCondition.Append($" AND ELOC_NO = '{searchMd.ELocNo}'");
  274. }
  275. if (!string.IsNullOrEmpty(searchMd.StartCreateTime))
  276. {
  277. sqlCondition.Append($" AND CREATE_TIME >= '{searchMd.StartCreateTime}'");
  278. }
  279. if (!string.IsNullOrEmpty(searchMd.EndCreateTime))
  280. {
  281. sqlCondition.Append($" AND CREATE_TIME <= '{searchMd.EndCreateTime}'");
  282. }
  283. StringBuilder sqlCountWcsTranCmdData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WCS_TRAN_CMD WHERE 1=1");
  284. sqlCountWcsTranCmdData.Append(sqlCondition.ToString());
  285. int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty;
  286. int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty;
  287. StringBuilder sqlQueryWcsTranCmdData = new StringBuilder($@"
  288. SELECT
  289. *
  290. FROM
  291. VW_WCS_TRAN_CMD
  292. WHERE
  293. 1=1
  294. {sqlCondition}
  295. ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC
  296. OFFSET {pageStartIndex} ROWS
  297. FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY
  298. ");
  299. #endregion
  300. int dataCount = Convert.ToInt32(new DataRepository<object>(_dataContext).ExecuteScalar(sqlCountWcsTranCmdData.ToString()));
  301. List<WcsTranCmdResult> resultList = new DataRepository<WcsTranCmdResult>(_dataContext).Query(sqlQueryWcsTranCmdData.ToString()).ToList();
  302. OperateResultInfo<List<WcsTranCmdResult>> retDataMsg = SuccessStatus(resultList);
  303. retDataMsg.DataCount = dataCount;
  304. return retDataMsg;
  305. }
  306. catch (Exception ex)
  307. {
  308. return FailMessageStatus<List<WcsTranCmdResult>>($"查询输送线指令数据发生异常,【{ex.Message}】", null);
  309. }
  310. }
  311. #endregion
  312. #region AGV指令
  313. /// <summary>
  314. /// 分页查询AGV指令数据
  315. /// </summary>
  316. /// <param name="searchMd">AGV指令查询对象</param>
  317. /// <returns></returns>
  318. public OperateResultInfo<List<WcsAgvCmdResult>> GetWcsAgvCmdData(WcsAgvCmdSearchMd searchMd)
  319. {
  320. try
  321. {
  322. #region SQL语句生成
  323. StringBuilder sqlCondition = new StringBuilder();
  324. if (!string.IsNullOrEmpty(searchMd.TaskNo))
  325. {
  326. sqlCondition.Append($" AND TASK_NO = '{searchMd.TaskNo}'");
  327. }
  328. if (!string.IsNullOrEmpty(searchMd.CmdNo))
  329. {
  330. sqlCondition.Append($" AND CMD_NO = '{searchMd.CmdNo}'");
  331. }
  332. if (!string.IsNullOrEmpty(searchMd.PalletNo))
  333. {
  334. sqlCondition.Append($" AND PALLET_CODE = '{searchMd.PalletNo}'");
  335. }
  336. if (!string.IsNullOrEmpty(searchMd.TrayLoadedMsg))
  337. {
  338. sqlCondition.Append($" AND TRAY_LOADED_TYPE = '{searchMd.TrayLoadedMsg}'");
  339. }
  340. if (!string.IsNullOrEmpty(searchMd.TaskType))
  341. {
  342. sqlCondition.Append($" AND TASK_TYPE = '{searchMd.TaskType}'");
  343. }
  344. if (!string.IsNullOrEmpty(searchMd.TaskStatus))
  345. {
  346. sqlCondition.Append($" AND TASK_STATUS = '{searchMd.TaskStatus}'");
  347. }
  348. if (!string.IsNullOrEmpty(searchMd.AgvDevMsg))
  349. {
  350. sqlCondition.Append($" AND AGV_DEV_NO = '{searchMd.AgvDevMsg}'");
  351. }
  352. if (!string.IsNullOrEmpty(searchMd.SLocNo))
  353. {
  354. sqlCondition.Append($" AND SLOC_NO = '{searchMd.SLocNo}'");
  355. }
  356. if (!string.IsNullOrEmpty(searchMd.ELocNo))
  357. {
  358. sqlCondition.Append($" AND ELOC_NO = '{searchMd.ELocNo}'");
  359. }
  360. if (!string.IsNullOrEmpty(searchMd.SAgvLocNo))
  361. {
  362. sqlCondition.Append($" AND SPLC_NO = '{searchMd.SAgvLocNo}'");
  363. }
  364. if (!string.IsNullOrEmpty(searchMd.EAgvLocNo))
  365. {
  366. sqlCondition.Append($" AND EPLC_NO = '{searchMd.EAgvLocNo}'");
  367. }
  368. if (!string.IsNullOrEmpty(searchMd.StartCreateTime))
  369. {
  370. sqlCondition.Append($" AND CREATE_TIME >= '{searchMd.StartCreateTime}'");
  371. }
  372. if (!string.IsNullOrEmpty(searchMd.EndCreateTime))
  373. {
  374. sqlCondition.Append($" AND CREATE_TIME <= '{searchMd.EndCreateTime}'");
  375. }
  376. StringBuilder sqlCountWcsAgvCmdData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WCS_AGV_CMD WHERE 1=1");
  377. sqlCountWcsAgvCmdData.Append(sqlCondition.ToString());
  378. int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty;
  379. int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty;
  380. StringBuilder sqlQueryWcsAgvCmdData = new StringBuilder($@"
  381. SELECT
  382. *
  383. FROM
  384. VW_WCS_AGV_CMD
  385. WHERE
  386. 1=1
  387. {sqlCondition}
  388. ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC
  389. OFFSET {pageStartIndex} ROWS
  390. FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY
  391. ");
  392. #endregion
  393. int dataCount = Convert.ToInt32(new DataRepository<object>(_dataContext).ExecuteScalar(sqlCountWcsAgvCmdData.ToString()));
  394. List<WcsAgvCmdResult> resultList = new DataRepository<WcsAgvCmdResult>(_dataContext).Query(sqlQueryWcsAgvCmdData.ToString()).ToList();
  395. OperateResultInfo<List<WcsAgvCmdResult>> retDataMsg = SuccessStatus(resultList);
  396. retDataMsg.DataCount = dataCount;
  397. return retDataMsg;
  398. }
  399. catch (Exception ex)
  400. {
  401. return FailMessageStatus<List<WcsAgvCmdResult>>($"查询AGV指令数据发生异常,【{ex.Message}】", null);
  402. }
  403. }
  404. #endregion
  405. }
  406. }