TaskRequest_Dal.cs 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014
  1. using NX_CommonClassLibrary;
  2. using NX_DbClassLibrary;
  3. using NX_JsonClassLibrary;
  4. using NX_LogClassLibrary;
  5. using NX_ModelClassLibrary.BaseModel;
  6. using NX_ModelClassLibrary.Common;
  7. using NX_ModelClassLibrary.CrnModel;
  8. using NX_ModelClassLibrary.CustomEnum;
  9. using NX_ModelClassLibrary.TranModel;
  10. using NX_ModelClassLibrary.WcsDispatch;
  11. using NX_ModelClassLibrary.WmsTask;
  12. using NX_WcsDal.CommonBusiness;
  13. using System;
  14. using System.Collections.Generic;
  15. using System.Data;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. namespace NX_WcsDal.WcsDispatch
  20. {
  21. public class TaskRequest_Dal
  22. {
  23. #region 单例模式
  24. /// <summary>
  25. /// 单例模式对象
  26. /// </summary>
  27. private static TaskRequest_Dal _instance = null;
  28. private static readonly object lockObj = new object();
  29. /// <summary>
  30. /// 单例模式方法
  31. /// </summary>
  32. public static TaskRequest_Dal Instance
  33. {
  34. get
  35. {
  36. if (_instance == null)
  37. {
  38. lock (lockObj)
  39. {
  40. if (_instance == null)
  41. {
  42. _instance = new TaskRequest_Dal();
  43. }
  44. }
  45. }
  46. return _instance;
  47. }
  48. }
  49. #endregion
  50. public WmsTskTaskMd GetUnfinishWmsTaskOfPalletCode(string palletCode)
  51. {
  52. try
  53. {
  54. string sqlGetUnfinishWmsTask = $@"
  55. SELECT
  56. TOP 1
  57. A.TASK_ID,
  58. A.NEWID,
  59. A.WAREHOUSE_CODE,
  60. A.WAREHOUSE_NAME,
  61. A.TASK_NO,
  62. A.TRAY_CODE,
  63. A.PALLET_CODE,
  64. A.TRAY_LOADED_TYPE,
  65. A.SLOC_CODE,
  66. A.ELOC_CODE,
  67. A.CLOC_CODE,
  68. A.TASK_TYPE,
  69. A.TASK_MSG,
  70. A.ERR_FLAG,
  71. A.TASK_PRIORITY,
  72. A.TASK_STATUS,
  73. A.SBIN_CODE,
  74. A.EBIN_CODE,
  75. A.CMD_NO,
  76. A.ROUTE_CODE,
  77. A.CREATE_BY,
  78. B.USER_CODE CreateCode,
  79. B.USER_NAME CreateName,
  80. A.CREATE_TIME,
  81. A.UPDATE_BY,
  82. C.USER_CODE UpdateCode,
  83. C.USER_NAME UpdateName,
  84. A.UPDATE_TIME,
  85. A.DATA_VERSION,
  86. A.REMARKS1,
  87. A.REMARKS2,
  88. A.REMARKS3,
  89. A.REMARKS4,
  90. A.REMARKS5
  91. FROM
  92. WMS_TSK_TASK A
  93. LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
  94. LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
  95. WHERE
  96. A.PALLET_CODE = '{palletCode}'
  97. AND A.TASK_STATUS < '{(int)WmsTaskStatusEnum.任务完成}'
  98. ";
  99. DataTable dtGetUnfinishWmsTask = LeadDbHelperSQLServer.Query(sqlGetUnfinishWmsTask).Tables[0];
  100. if (dtGetUnfinishWmsTask != null && dtGetUnfinishWmsTask.Rows.Count > 0)
  101. {
  102. DataRow item = dtGetUnfinishWmsTask.Rows[0];
  103. WmsTskTaskMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty<WmsTskTaskMd>(dtGetUnfinishWmsTask.Columns, item);
  104. return retMd;
  105. }
  106. else
  107. {
  108. return null;
  109. }
  110. }
  111. catch (Exception ex)
  112. {
  113. LogHelper.WriteLog($"根据托盘号获取WMS未完成的大任务数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  114. return null;
  115. }
  116. }
  117. public BasWcsDevMd GetCrnDevMsg(string shelfCode)
  118. {
  119. try
  120. {
  121. string sql = $@"
  122. SELECT
  123. *
  124. FROM
  125. WCS_BAS_DEV
  126. WHERE
  127. DEV_CODE = (
  128. SELECT
  129. DEV_CODE
  130. FROM
  131. BAS_SHELF
  132. WHERE
  133. SHELF_CODE = '{shelfCode}'
  134. )
  135. ";
  136. DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
  137. if (dt != null && dt.Rows.Count > 0)
  138. {
  139. DataRow item = dt.Rows[0];
  140. BasWcsDevMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty<BasWcsDevMd>(dt.Columns, item);
  141. return retMd;
  142. }
  143. else
  144. {
  145. return null;
  146. }
  147. }
  148. catch (Exception ex)
  149. {
  150. LogHelper.WriteLog($"获取堆垛机设备信息发生异常!【{ex.Message}】", LogTypeEnum.Err);
  151. return null;
  152. }
  153. }
  154. public WcsCrnCmdMd GetUnfinishWcsCrnCmdOfPalletCode(string palletCode)
  155. {
  156. try
  157. {
  158. string sqlQueryCrnUnFinishedCmd = $@"
  159. SELECT
  160. TOP 1
  161. A.CRN_CMD_ID,
  162. A.NEWID,
  163. A.TASK_NO,
  164. A.CMD_NO,
  165. A.TRAY_CODE,
  166. A.PALLET_CODE,
  167. A.TRAY_STATUS,
  168. A.CRN_DEV_NO,
  169. A.CRN_FORK_DEV_NO,
  170. A.SBIN_NO,
  171. A.SBIN_ROW,
  172. A.SBIN_COL,
  173. A.SBIN_LAYER,
  174. A.S_EXTENSION_GROUP,
  175. A.S_EXTENSION_IDX,
  176. A.EBIN_NO,
  177. A.EBIN_ROW,
  178. A.EBIN_COL,
  179. A.EBIN_LAYER,
  180. A.E_EXTENSION_GROUP,
  181. A.E_EXTENSION_IDX,
  182. A.CMD_TYPE,
  183. A.ACTIVE_TYPE,
  184. A.CMD_PRIORITY,
  185. A.CMD_STATUS,
  186. A.CMD_LOG,
  187. A.ERR_FLAG,
  188. A.ERR_LOG,
  189. A.CREATE_BY,
  190. B.USER_CODE CreateCode,
  191. B.USER_NAME CreateName,
  192. A.CREATE_TIME,
  193. A.EXECUTE_TIME,
  194. A.FINISH_TIME,
  195. A.UPDATE_BY,
  196. C.USER_CODE UpdateCode,
  197. C.USER_NAME UpdateName,
  198. A.UPDATE_TIME,
  199. A.DATA_VERSION,
  200. A.REMARKS1,
  201. A.REMARKS2,
  202. A.REMARKS3,
  203. A.REMARKS4,
  204. A.REMARKS5
  205. FROM
  206. WCS_CRN_CMD A
  207. LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
  208. LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
  209. WHERE A.PALLET_CODE = '{palletCode}' AND A.CMD_STATUS < '{(int)CrnCmdStatusEnum.完成}'
  210. ";
  211. DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryCrnUnFinishedCmd).Tables[0];
  212. if (dt != null && dt.Rows.Count > 0)
  213. {
  214. DataRow item = dt.Rows[0];
  215. WcsCrnCmdMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty<WcsCrnCmdMd>(dt.Columns, item);
  216. return retMd;
  217. }
  218. else
  219. {
  220. return null;
  221. }
  222. }
  223. catch (Exception ex)
  224. {
  225. LogHelper.WriteLog($"根据托盘号获取未完成的堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  226. return null;
  227. }
  228. }
  229. public WcsTranCmdMd GetUnfinishWcsTranCmdOfPalletCode(string palletCode)
  230. {
  231. try
  232. {
  233. string sqlQueryCrnUnFinishedCmd = $@"
  234. SELECT
  235. TOP 1
  236. A.TRAN_CMD_ID,
  237. A.NEWID,
  238. A.TASK_NO,
  239. A.CMD_NO,
  240. A.TRAY_CODE,
  241. A.PALLET_CODE,
  242. A.TRAY_STATUS,
  243. A.TRAN_DEV_NO,
  244. A.SLOC_NO,
  245. A.SPLC_NO,
  246. A.ELOC_NO,
  247. A.EPLC_NO,
  248. A.CMD_TYPE,
  249. A.ACTIVE_TYPE,
  250. A.CMD_PRIORITY,
  251. A.CMD_STATUS,
  252. A.CMD_LOG,
  253. A.ERR_FLAG,
  254. A.ERR_LOG,
  255. A.CREATE_BY,
  256. B.USER_CODE CreateCode,
  257. B.USER_NAME CreateName,
  258. A.CREATE_TIME,
  259. A.EXECUTE_TIME,
  260. A.FINISH_TIME,
  261. A.UPDATE_BY,
  262. C.USER_CODE UpdateCode,
  263. C.USER_NAME UpdateName,
  264. A.UPDATE_TIME,
  265. A.DATA_VERSION,
  266. A.REMARKS1,
  267. A.REMARKS2,
  268. A.REMARKS3,
  269. A.REMARKS4,
  270. A.REMARKS5
  271. FROM
  272. WCS_TRAN_CMD A
  273. LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
  274. LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
  275. WHERE A.PALLET_CODE = '{palletCode}' AND A.CMD_STATUS < '{(int)TranCmdStatusEnum.完成}'
  276. ";
  277. DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryCrnUnFinishedCmd).Tables[0];
  278. if (dt != null && dt.Rows.Count > 0)
  279. {
  280. DataRow item = dt.Rows[0];
  281. WcsTranCmdMd tmpMd = ColumnToClassPropertyHelper.ColumnToClassProperty<WcsTranCmdMd>(dt.Columns, item);
  282. return tmpMd;
  283. }
  284. else
  285. {
  286. return null;
  287. }
  288. }
  289. catch (Exception ex)
  290. {
  291. LogHelper.WriteLog($"根据托盘号获取未完成的堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  292. return null;
  293. }
  294. }
  295. public bool VerifyTrayMsgAndBalanceMsg(string palletCode,out string trayCode)
  296. {
  297. try
  298. {
  299. string sqlVerifyTrayAndBalanceMsg = $@"
  300. SELECT
  301. A.TRAY_CODE
  302. FROM
  303. WMS_STK_BALANCE A
  304. LEFT JOIN WMS_STK_TRAY B ON A.TRAY_ID = B.TRAY_ID
  305. WHERE
  306. A.PALLET_CODE = '{palletCode}'
  307. AND A.REGION_CODE = 'SHDJ_Region'
  308. AND A.BALANCE_STATUS = '55'
  309. AND B.TRAY_STATUS = '55'
  310. ";
  311. DataTable dt = LeadDbHelperSQLServer.Query(sqlVerifyTrayAndBalanceMsg).Tables[0];
  312. if (dt != null && dt.Rows.Count > 0)
  313. {
  314. trayCode = dt.Rows[0][0].ToString();
  315. return true;
  316. }
  317. else
  318. {
  319. trayCode = null;
  320. return false;
  321. }
  322. }
  323. catch (Exception ex)
  324. {
  325. LogHelper.WriteLog($"校验托盘号库存和组盘信息发生异常!【{ex.Message}】", LogTypeEnum.Err);
  326. trayCode = null;
  327. return false;
  328. }
  329. }
  330. public BasRegionMd GetRegionMd(string regionCode)
  331. {
  332. try
  333. {
  334. string sql = $@"select * from BAS_REGION where REGION_CODE = '{regionCode}'";
  335. DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
  336. if (dt != null && dt.Rows.Count > 0)
  337. {
  338. DataRow item = dt.Rows[0];
  339. BasRegionMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty<BasRegionMd>(dt.Columns, item);
  340. return retMd;
  341. }
  342. else
  343. {
  344. return null;
  345. }
  346. }
  347. catch (Exception ex)
  348. {
  349. LogHelper.WriteLog($"获取库区信息发生异常!{ex.Message}", LogTypeEnum.Err);
  350. return null;
  351. }
  352. }
  353. public BasNextLocRouteMd GetRouteMsg(BasWcsLocMd sLocNo, BasWcsLocMd eLocNo)
  354. {
  355. try
  356. {
  357. string sqlGetRoute = $@"SELECT * FROM dbo.FN_GetAllNextRoute('{sLocNo.LocCode}','{eLocNo.LocCode}')";
  358. DataTable dt = LeadDbHelperSQLServer.Query(sqlGetRoute).Tables[0];
  359. if (dt != null && dt.Rows.Count > 0)
  360. {
  361. DataRow item = dt.Rows[0];
  362. BasNextLocRouteMd nextLocRouteMd = ColumnToClassPropertyHelper.ColumnToClassProperty<BasNextLocRouteMd>(dt.Columns, item);
  363. return nextLocRouteMd;
  364. }
  365. else
  366. {
  367. return null;
  368. }
  369. }
  370. catch (Exception ex)
  371. {
  372. LogHelper.WriteLog($"获取起点站台:【{sLocNo.LocCode}】到终点站台:【{eLocNo.LocCode}】的路径信息发生异常!【{ex.Message}】", LogTypeEnum.Err);
  373. return null;
  374. }
  375. }
  376. public int InsertWmsTaskData(TaskRequestMd taskRequestMd, BasWcsLocMd eLocNo, string trayCode, BasNextLocRouteMd basNextLocRouteMd, BasRegionMd regionMd)
  377. {
  378. try
  379. {
  380. string taskNo = BasCommon_Dal.Instance.GetSysSequence("Task_No");
  381. string sqlInsertWmsTask = $@"
  382. INSERT INTO [dbo].[WMS_TSK_TASK] (
  383. [WAREHOUSE_CODE],
  384. [WAREHOUSE_NAME],
  385. [REGION_CODE],
  386. [TASK_NO],
  387. [TRAY_CODE],
  388. [PALLET_CODE],
  389. [TRAY_LOADED_TYPE],
  390. [SLOC_CODE],
  391. [ELOC_CODE],
  392. [CLOC_CODE],
  393. [TASK_TYPE],
  394. [TASK_MSG],
  395. [ERR_FLAG],
  396. [TASK_PRIORITY],
  397. [TASK_STATUS],
  398. [SBIN_CODE],
  399. [EBIN_CODE],
  400. [CMD_NO],
  401. [ROUTE_CODE],
  402. [CREATE_BY],
  403. [CREATE_TIME],
  404. [UPDATE_BY],
  405. [UPDATE_TIME],
  406. [DATA_VERSION],
  407. [REMARKS1],
  408. [REMARKS2],
  409. [REMARKS3],
  410. [REMARKS4],
  411. [REMARKS5]
  412. )
  413. VALUES
  414. (
  415. '{regionMd.WarehouseCode}',
  416. '{regionMd.WarehouseName}',
  417. '{regionMd.RegionCode}',
  418. '{taskNo}',
  419. '{trayCode}',
  420. '{taskRequestMd.PalletCode}',
  421. '{(int)TrayStatusEnum.满盘}',
  422. '{taskRequestMd.CurrentLocNo}',
  423. '{eLocNo.LocCode}',
  424. '{taskRequestMd.CurrentLocNo}',
  425. '{(int)WmsTaskTypeEnum.正常收货入库}',
  426. NULL,
  427. '{(int)WcsCmdErrFlagEnum.正常}',
  428. '{100}',
  429. '{(int)WmsTaskStatusEnum.初始创建}',
  430. NULL,
  431. NULL,
  432. NULL,
  433. '{basNextLocRouteMd.SectionNo}',
  434. 1,
  435. getdate(),
  436. 1,
  437. getdate(),
  438. 0,
  439. NULL,
  440. NULL,
  441. NULL,
  442. NULL,
  443. NULL
  444. );
  445. ";
  446. return LeadDbHelperSQLServer.ExecuteSql(sqlInsertWmsTask);
  447. }
  448. catch (Exception ex)
  449. {
  450. LogHelper.WriteLog($"插入WMS大任务数据发生异常!【{ex.Message}】请求参数:【{JsonHelper.ToJson(taskRequestMd)}】终点站台:【{JsonHelper.ToJson(eLocNo)}】", LogTypeEnum.Err);
  451. return 0;
  452. }
  453. }
  454. public int GetRuningWmsTaskNum()
  455. {
  456. try
  457. {
  458. string sqlGetUnfinishWmsTaskNum = $@"
  459. SELECT
  460. COUNT (1)
  461. FROM
  462. WMS_TSK_TASK
  463. WHERE
  464. TASK_STATUS > '{(int)WmsTaskStatusEnum.初始创建}'
  465. AND TASK_STATUS < '{(int)WmsTaskStatusEnum.任务完成}'
  466. ";
  467. object obj = LeadDbHelperSQLServer.GetSingle(sqlGetUnfinishWmsTaskNum);
  468. if (obj == null)
  469. {
  470. return 0;
  471. }
  472. else
  473. {
  474. return Convert.ToInt32(obj);
  475. }
  476. }
  477. catch (Exception ex)
  478. {
  479. LogHelper.WriteLog($"获取正在执行的WMS大任务总数发生异常!【{ex.Message}】", LogTypeEnum.Err);
  480. return 0;
  481. }
  482. }
  483. public WmsTskTaskMd GetWmsTaskOriginalState(string regionCode)
  484. {
  485. try
  486. {
  487. string sqlGetUnfinishWmsTask = $@"
  488. SELECT
  489. TOP 1
  490. A.TASK_ID,
  491. A.NEWID,
  492. A.WAREHOUSE_CODE,
  493. A.WAREHOUSE_NAME,
  494. A.TASK_NO,
  495. A.TRAY_CODE,
  496. A.PALLET_CODE,
  497. A.TRAY_LOADED_TYPE,
  498. A.SLOC_CODE,
  499. A.ELOC_CODE,
  500. A.CLOC_CODE,
  501. A.TASK_TYPE,
  502. A.TASK_MSG,
  503. A.ERR_FLAG,
  504. A.TASK_PRIORITY,
  505. A.TASK_STATUS,
  506. A.SBIN_CODE,
  507. A.EBIN_CODE,
  508. A.CMD_NO,
  509. A.ROUTE_CODE,
  510. A.CREATE_BY,
  511. B.USER_CODE CreateCode,
  512. B.USER_NAME CreateName,
  513. A.CREATE_TIME,
  514. A.UPDATE_BY,
  515. C.USER_CODE UpdateCode,
  516. C.USER_NAME UpdateName,
  517. A.UPDATE_TIME,
  518. A.DATA_VERSION,
  519. A.REMARKS1,
  520. A.REMARKS2,
  521. A.REMARKS3,
  522. A.REMARKS4,
  523. A.REMARKS5
  524. FROM
  525. WMS_TSK_TASK A
  526. LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
  527. LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
  528. WHERE
  529. 1=1
  530. AND A.TASK_STATUS = '{(int)WmsTaskStatusEnum.初始创建}'
  531. AND A.REGION_CODE = '{regionCode}'
  532. ORDER BY A.TASK_PRIORITY,A.TASK_TYPE,A.CREATE_TIME
  533. ";
  534. DataTable dtGetUnfinishWmsTask = LeadDbHelperSQLServer.Query(sqlGetUnfinishWmsTask).Tables[0];
  535. if (dtGetUnfinishWmsTask != null && dtGetUnfinishWmsTask.Rows.Count > 0)
  536. {
  537. DataRow item = dtGetUnfinishWmsTask.Rows[0];
  538. WmsTskTaskMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty<WmsTskTaskMd>(dtGetUnfinishWmsTask.Columns, item);
  539. return retMd;
  540. }
  541. else
  542. {
  543. return null;
  544. }
  545. }
  546. catch (Exception ex)
  547. {
  548. LogHelper.WriteLog($"获取初始创建的WMS大任务数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  549. return null;
  550. }
  551. }
  552. public WmsTskTaskMd InsertTranCmdAndUpdateWmsTask(WmsTskTaskMd wmsTskTaskMd, BasWcsLocMd sLocNo, BasWcsLocMd eLocNo, BasNextLocRouteMd locRouteMd)
  553. {
  554. try
  555. {
  556. string cmdNo = BasCommon_Dal.Instance.GetSysSequence("Cmd_No");
  557. string sqlInsertTranCmd = $@"
  558. INSERT INTO [dbo].[WCS_TRAN_CMD] (
  559. [TASK_NO],
  560. [CMD_NO],
  561. [TRAY_CODE],
  562. [PALLET_CODE],
  563. [TRAY_STATUS],
  564. [TRAN_DEV_NO],
  565. [SLOC_NO],
  566. [SPLC_NO],
  567. [ELOC_NO],
  568. [EPLC_NO],
  569. [CMD_TYPE],
  570. [ACTIVE_TYPE],
  571. [CMD_PRIORITY],
  572. [CMD_STATUS],
  573. [CMD_LOG],
  574. [ERR_FLAG],
  575. [ERR_LOG],
  576. [CREATE_BY],
  577. [CREATE_TIME],
  578. [UPDATE_BY],
  579. [UPDATE_TIME],
  580. [DATA_VERSION],
  581. [REMARKS1],
  582. [REMARKS2],
  583. [REMARKS3],
  584. [REMARKS4],
  585. [REMARKS5]
  586. )
  587. VALUES
  588. (
  589. '{wmsTskTaskMd.TaskNo}',
  590. '{cmdNo}',
  591. '{wmsTskTaskMd.TrayCode}',
  592. '{wmsTskTaskMd.PalletCode}',
  593. '{(int)wmsTskTaskMd.TrayLoadedType}',
  594. '{locRouteMd.DevNo}',
  595. '{sLocNo.LocCode}',
  596. '{sLocNo.LocCode}',
  597. '{eLocNo.LocCode}',
  598. '{eLocNo.LocCode}',
  599. '{(int)TranCmdTypeEnum.TRANSFER}',
  600. '{(int)TranActiveTypeEnum.直行}',
  601. 100,
  602. '{(int)TranCmdStatusEnum.初始创建}',
  603. NULL,
  604. '{(int)WcsCmdErrFlagEnum.正常}',
  605. NULL,
  606. '{wmsTskTaskMd.UpdateBy}',
  607. getdate(),
  608. {wmsTskTaskMd.UpdateBy},
  609. getdate(),
  610. 0,
  611. NULL,
  612. NULL,
  613. NULL,
  614. NULL,
  615. NULL
  616. );
  617. ";
  618. string sqlUpdateWmsTask = $@"
  619. UPDATE WMS_TSK_TASK
  620. SET CLOC_CODE = '{locRouteMd.SlocNo}',
  621. CMD_NO = '{cmdNo}',
  622. ROUTE_CODE = '{locRouteMd.SectionNo}',
  623. TASK_STATUS = '{(int)WmsTaskStatusEnum.指令下发}',
  624. UPDATE_TIME = GETDATE()
  625. WHERE
  626. TASK_ID = '{wmsTskTaskMd.TaskId}'
  627. ";
  628. List<string> sqlLst = new List<string>
  629. {
  630. sqlUpdateWmsTask,
  631. sqlInsertTranCmd
  632. };
  633. int row = LeadDbHelperSQLServer.ExecuteSqlTran(sqlLst);
  634. if (row > 0)
  635. {
  636. wmsTskTaskMd.ClocCode = locRouteMd.SlocNo;
  637. wmsTskTaskMd.CmdNo = Convert.ToInt32(cmdNo);
  638. wmsTskTaskMd.RouteCode = locRouteMd.SectionNo;
  639. wmsTskTaskMd.TaskStatus = WmsTaskStatusEnum.指令下发;
  640. wmsTskTaskMd.UpdateTime = DateTime.Now;
  641. return wmsTskTaskMd;
  642. }
  643. else
  644. {
  645. return null;
  646. }
  647. }
  648. catch (Exception ex)
  649. {
  650. LogHelper.WriteLog($"修改WMS大任务状态、新增输送线指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  651. return null;
  652. }
  653. }
  654. public BasBinMd GetBinMdOfCode(string binCode)
  655. {
  656. try
  657. {
  658. string sqlGetBinMdOfCodeAndType = $@"
  659. SELECT
  660. TOP 1 A.*, B.USER_CODE CreateCode,
  661. B.USER_NAME CreateName,
  662. C.USER_CODE UpdateCode,
  663. C.USER_NAME UpdateName
  664. FROM
  665. BAS_BIN A
  666. LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
  667. LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
  668. WHERE
  669. A.USED_FLAG = 1
  670. AND A.DEL_FLAG = 0
  671. AND A.BIN_CODE = '{binCode}'
  672. ";
  673. DataTable dt = LeadDbHelperSQLServer.Query(sqlGetBinMdOfCodeAndType).Tables[0];
  674. if (dt != null && dt.Rows.Count > 0)
  675. {
  676. DataRow item = dt.Rows[0];
  677. BasBinMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty<BasBinMd>(dt.Columns, item);
  678. return retMd;
  679. }
  680. else
  681. {
  682. return null;
  683. }
  684. }
  685. catch (Exception ex)
  686. {
  687. LogHelper.WriteLog($"获取库位号:【{binCode}】的详细库位信息发生异常!【{ex.Message}】", LogTypeEnum.Err);
  688. return null;
  689. }
  690. }
  691. public WmsTskTaskMd InsertCrnCmdAndUpdateWmsTask(WmsTskTaskMd wmsTskTaskMd, BasBinMd sBinMd, BasBinMd eBinMd, BasWcsDevMd devMd)
  692. {
  693. try
  694. {
  695. string cmdNo = BasCommon_Dal.Instance.GetSysSequence("Cmd_No");
  696. string sqlInsertCrnCmd = $@"
  697. INSERT INTO [dbo].[WCS_CRN_CMD] (
  698. [TASK_NO],
  699. [CMD_NO],
  700. [TRAY_CODE],
  701. [PALLET_CODE],
  702. [TRAY_STATUS],
  703. [CRN_DEV_NO],
  704. [CRN_FORK_DEV_NO],
  705. [SBIN_NO],
  706. [SBIN_ROW],
  707. [SBIN_COL],
  708. [SBIN_LAYER],
  709. [S_EXTENSION_GROUP],
  710. [S_EXTENSION_IDX],
  711. [EBIN_NO],
  712. [EBIN_ROW],
  713. [EBIN_COL],
  714. [EBIN_LAYER],
  715. [E_EXTENSION_GROUP],
  716. [E_EXTENSION_IDX],
  717. [CMD_TYPE],
  718. [ACTIVE_TYPE],
  719. [CMD_PRIORITY],
  720. [CMD_STATUS],
  721. [CMD_LOG],
  722. [ERR_FLAG],
  723. [ERR_LOG],
  724. [CREATE_BY],
  725. [CREATE_TIME],
  726. [UPDATE_BY],
  727. [UPDATE_TIME],
  728. [DATA_VERSION],
  729. [REMARKS1],
  730. [REMARKS2],
  731. [REMARKS3],
  732. [REMARKS4],
  733. [REMARKS5]
  734. )
  735. VALUES
  736. (
  737. '{wmsTskTaskMd.TaskNo}',
  738. '{cmdNo}',
  739. '{wmsTskTaskMd.TrayCode}',
  740. '{wmsTskTaskMd.PalletCode}',
  741. '{(int)wmsTskTaskMd.TrayLoadedType}',
  742. '{devMd.DevCode}',
  743. '{devMd.DevCode}',
  744. '{sBinMd.BinCode}',
  745. '{sBinMd.BinRow}',
  746. '{sBinMd.BinColumn}',
  747. '{sBinMd.BinLayer}',
  748. '{sBinMd.EXTENSION_GROUP}',
  749. '{sBinMd.EXTENSION_IDX}',
  750. '{eBinMd.BinCode}',
  751. '{eBinMd.BinRow}',
  752. '{eBinMd.BinColumn}',
  753. '{eBinMd.BinLayer}',
  754. '{eBinMd.EXTENSION_GROUP}',
  755. '{eBinMd.EXTENSION_IDX}',
  756. '{CrnCmdTypeEnum.MOVE}',
  757. '{(int)CrnActiveTypeEnum.取放货}',
  758. 1,
  759. '{(int)CrnCmdStatusEnum.初始创建}',
  760. NULL,
  761. '{(int)WcsCmdErrFlagEnum.正常}',
  762. NULL,
  763. '{wmsTskTaskMd.UpdateBy}',
  764. getdate(),
  765. '{wmsTskTaskMd.UpdateBy}',
  766. getdate(),
  767. 0,
  768. NULL,
  769. NULL,
  770. NULL,
  771. NULL,
  772. NULL
  773. );
  774. ";
  775. string sqlUpdateWmsTask = $@"
  776. UPDATE WMS_TSK_TASK
  777. SET CLOC_CODE = '{wmsTskTaskMd.SlocCode}',
  778. CMD_NO = '{cmdNo}',
  779. ROUTE_CODE = '',
  780. TASK_STATUS = '{(int)WmsTaskStatusEnum.指令下发}',
  781. UPDATE_TIME = GETDATE()
  782. WHERE
  783. TASK_ID = '{wmsTskTaskMd.TaskId}'
  784. ";
  785. List<string> sqlLst = new List<string>
  786. {
  787. sqlUpdateWmsTask,
  788. sqlInsertCrnCmd
  789. };
  790. int row = LeadDbHelperSQLServer.ExecuteSqlTran(sqlLst);
  791. if (row > 0)
  792. {
  793. wmsTskTaskMd.ClocCode = wmsTskTaskMd.SlocCode;
  794. wmsTskTaskMd.CmdNo = Convert.ToInt32(cmdNo);
  795. wmsTskTaskMd.RouteCode = "";
  796. wmsTskTaskMd.TaskStatus = WmsTaskStatusEnum.指令下发;
  797. wmsTskTaskMd.UpdateTime = DateTime.Now;
  798. return wmsTskTaskMd;
  799. }
  800. else
  801. {
  802. return null;
  803. }
  804. }
  805. catch (Exception ex)
  806. {
  807. LogHelper.WriteLog($"修改WMS大任务状态、新增堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  808. return null;
  809. }
  810. }
  811. public WmsTskTaskMd InsertCrnCmdAndUpdateWmsTask(WmsTskTaskMd wmsTskTaskMd, BasBinMd sBinMd, BasBinMd eBinMd, BasNextLocRouteMd locRouteMd)
  812. {
  813. try
  814. {
  815. string cmdNo = BasCommon_Dal.Instance.GetSysSequence("Cmd_No");
  816. string sqlInsertCrnCmd = $@"
  817. INSERT INTO [dbo].[WCS_CRN_CMD] (
  818. [TASK_NO],
  819. [CMD_NO],
  820. [TRAY_CODE],
  821. [PALLET_CODE],
  822. [TRAY_STATUS],
  823. [CRN_DEV_NO],
  824. [CRN_FORK_DEV_NO],
  825. [SBIN_NO],
  826. [SBIN_ROW],
  827. [SBIN_COL],
  828. [SBIN_LAYER],
  829. [S_EXTENSION_GROUP],
  830. [S_EXTENSION_IDX],
  831. [EBIN_NO],
  832. [EBIN_ROW],
  833. [EBIN_COL],
  834. [EBIN_LAYER],
  835. [E_EXTENSION_GROUP],
  836. [E_EXTENSION_IDX],
  837. [CMD_TYPE],
  838. [ACTIVE_TYPE],
  839. [CMD_PRIORITY],
  840. [CMD_STATUS],
  841. [CMD_LOG],
  842. [ERR_FLAG],
  843. [ERR_LOG],
  844. [CREATE_BY],
  845. [CREATE_TIME],
  846. [UPDATE_BY],
  847. [UPDATE_TIME],
  848. [DATA_VERSION],
  849. [REMARKS1],
  850. [REMARKS2],
  851. [REMARKS3],
  852. [REMARKS4],
  853. [REMARKS5]
  854. )
  855. VALUES
  856. (
  857. '{wmsTskTaskMd.TaskNo}',
  858. '{cmdNo}',
  859. '{wmsTskTaskMd.TrayCode}',
  860. '{wmsTskTaskMd.PalletCode}',
  861. '{(int)wmsTskTaskMd.TrayLoadedType}',
  862. '{locRouteMd.DevNo}',
  863. '{locRouteMd.DevNo}',
  864. '{sBinMd.BinCode}',
  865. '{sBinMd.BinRow}',
  866. '{sBinMd.BinColumn}',
  867. '{sBinMd.BinLayer}',
  868. '{sBinMd.EXTENSION_GROUP}',
  869. '{sBinMd.EXTENSION_IDX}',
  870. '{eBinMd.BinCode}',
  871. '{eBinMd.BinRow}',
  872. '{eBinMd.BinColumn}',
  873. '{eBinMd.BinLayer}',
  874. '{eBinMd.EXTENSION_GROUP}',
  875. '{eBinMd.EXTENSION_IDX}',
  876. '{CrnCmdTypeEnum.IN}',
  877. '{(int)CrnActiveTypeEnum.取放货}',
  878. '{wmsTskTaskMd.TaskPriority}',
  879. '{(int)CrnCmdStatusEnum.初始创建}',
  880. NULL,
  881. '{(int)WcsCmdErrFlagEnum.正常}',
  882. NULL,
  883. '{wmsTskTaskMd.UpdateBy}',
  884. getdate(),
  885. '{wmsTskTaskMd.UpdateBy}',
  886. getdate(),
  887. 0,
  888. NULL,
  889. NULL,
  890. NULL,
  891. NULL,
  892. NULL
  893. );
  894. ";
  895. string sqlUpdateWmsTask = $@"
  896. UPDATE WMS_TSK_TASK
  897. SET CLOC_CODE = '{locRouteMd.SlocNo}',
  898. CMD_NO = '{cmdNo}',
  899. ROUTE_CODE = '{locRouteMd.SectionNo}',
  900. TASK_STATUS = '{(int)WmsTaskStatusEnum.指令下发}',
  901. UPDATE_TIME = GETDATE()
  902. WHERE
  903. TASK_ID = '{wmsTskTaskMd.TaskId}'
  904. ";
  905. List<string> sqlLst = new List<string>
  906. {
  907. sqlUpdateWmsTask,
  908. sqlInsertCrnCmd
  909. };
  910. int row = LeadDbHelperSQLServer.ExecuteSqlTran(sqlLst);
  911. if (row > 0)
  912. {
  913. wmsTskTaskMd.ClocCode = locRouteMd.SlocNo;
  914. wmsTskTaskMd.CmdNo = Convert.ToInt32(cmdNo);
  915. wmsTskTaskMd.RouteCode = locRouteMd.SectionNo;
  916. wmsTskTaskMd.TaskStatus = WmsTaskStatusEnum.指令下发;
  917. wmsTskTaskMd.UpdateTime = DateTime.Now;
  918. return wmsTskTaskMd;
  919. }
  920. else
  921. {
  922. return null;
  923. }
  924. }
  925. catch (Exception ex)
  926. {
  927. LogHelper.WriteLog($"修改WMS大任务状态、新增堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  928. return null;
  929. }
  930. }
  931. public int GetLimitWmsTaskNum(string val)
  932. {
  933. try
  934. {
  935. string sql = $@"SELECT PARAMETER_VALUE FROM SYS_PARAMETER WHERE PARAMETER_CODE = '{val}'";
  936. DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
  937. if (dt != null && dt.Rows.Count > 0)
  938. {
  939. return Convert.ToInt32(dt.Rows[0][0]);
  940. }
  941. else
  942. {
  943. return 0;
  944. }
  945. }
  946. catch (Exception ex)
  947. {
  948. LogHelper.WriteLog($"获取参数信息数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  949. return 0;
  950. }
  951. }
  952. public int GetRuningWmsInstockTaskNum()
  953. {
  954. try
  955. {
  956. string sql = $@"SELECT COUNT(1) FROM WMS_TSK_TASK WHERE TASK_TYPE IN (1,2,3,4,5) AND TASK_STATUS < 99";
  957. DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
  958. if (dt != null && dt.Rows.Count > 0)
  959. {
  960. return Convert.ToInt32(dt.Rows[0][0]);
  961. }
  962. else
  963. {
  964. return 0;
  965. }
  966. }
  967. catch (Exception ex)
  968. {
  969. LogHelper.WriteLog($"获取正在作业的入库大任务统计数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  970. return 0;
  971. }
  972. }
  973. public int GetRuningWmsOutstockTaskNum()
  974. {
  975. try
  976. {
  977. string sql = $@"SELECT COUNT(1) FROM WMS_TSK_TASK WHERE TASK_TYPE IN (6,7,8,9) AND TASK_STATUS < 99";
  978. DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
  979. if (dt != null && dt.Rows.Count > 0)
  980. {
  981. return Convert.ToInt32(dt.Rows[0][0]);
  982. }
  983. else
  984. {
  985. return 0;
  986. }
  987. }
  988. catch (Exception ex)
  989. {
  990. LogHelper.WriteLog($"获取正在作业的入库大任务统计数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  991. return 0;
  992. }
  993. }
  994. }
  995. }