MiddleDBModelHelper.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865
  1. using FluentNHibernate.Cfg;
  2. using FluentNHibernate.Mapping;
  3. using NHibernate;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Reflection;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace ProjectManagementSystem.NHibernateDBHelper
  11. {
  12. class MiddleDBModelHelper
  13. {
  14. static private volatile ISessionFactory m_factory = null;
  15. static private object obj = new object();
  16. static private string _connectionString;
  17. static public ISession Session//
  18. {
  19. get
  20. {
  21. if (m_factory == null)
  22. {
  23. lock (obj)
  24. {
  25. try
  26. {
  27. if (m_factory == null) m_factory = createSessionFactory();
  28. }
  29. catch { throw; }
  30. }
  31. }
  32. return m_factory.OpenSession();
  33. }
  34. }
  35. static public void initialize(string path)
  36. {
  37. _connectionString = "Data Source =" + path;
  38. try
  39. {
  40. if (m_factory != null) m_factory.Dispose();
  41. m_factory = createSessionFactory();
  42. }
  43. catch (Exception ex) { Console.Write(ex.ToString()); throw; }
  44. }
  45. public static void initialize(string strDatabaseServer,
  46. int databasePort,
  47. string strDatabaseName,
  48. string strUserName,
  49. string strPassword)
  50. {
  51. //if (m_sessionFactory != null) return;
  52. try
  53. {
  54. string connectionString = string.Format("Server={0};Port={1};Database={2};Uid={3};Pwd={4};",
  55. strDatabaseServer, databasePort, strDatabaseName, strUserName, strPassword);
  56. FluentConfiguration config = Fluently.Configure()
  57. .Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2008
  58. .ConnectionString(connectionString));
  59. Assembly curAssembly = Assembly.GetExecutingAssembly();
  60. NHibernate.Cfg.Configuration cfg = config.Mappings(m => m.FluentMappings.AddFromAssembly(curAssembly)).BuildConfiguration();
  61. m_factory = cfg.BuildSessionFactory();
  62. // m_mappingSet.buildMappings(cfg);
  63. }
  64. catch { throw; }
  65. }
  66. static public void close()
  67. {
  68. if (m_factory != null) { m_factory.Close(); m_factory = null; }
  69. }
  70. static private ISessionFactory createSessionFactory()
  71. {
  72. try
  73. {
  74. string connectionString = _connectionString;
  75. FluentConfiguration config = Fluently.Configure()
  76. .Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2008
  77. .ConnectionString(connectionString));
  78. Assembly curAssembly = Assembly.GetExecutingAssembly();
  79. NHibernate.Cfg.Configuration cfg = config.Mappings(m => m.FluentMappings.AddFromAssembly(curAssembly))
  80. .ExposeConfiguration(f => f.SetInterceptor(new SqlStatementInterceptor()))
  81. .BuildConfiguration();
  82. return cfg.BuildSessionFactory();
  83. }
  84. catch { throw; }
  85. }
  86. public class SqlStatementInterceptor : EmptyInterceptor
  87. {
  88. public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql)
  89. {
  90. //#if DEBUG
  91. try
  92. {
  93. //File.AppendAllText("c:\\log.txt", string.Format("{0}\n", sql.ToString()));
  94. }
  95. catch
  96. {
  97. }
  98. return sql;
  99. }
  100. }
  101. }
  102. #region MiddleTask
  103. public class MiddleTask
  104. {
  105. private string _TaskType;
  106. private string _ArrLength;
  107. private string _PosArr;
  108. private string _ManualOrAuto;
  109. public MiddleTask()
  110. {
  111. }
  112. public MiddleTask(string posarr, string arrlen, string tasktype, string manualorauto)
  113. {
  114. _PosArr = posarr;
  115. _TaskType = tasktype;
  116. _ManualOrAuto = manualorauto;
  117. _ArrLength = arrlen;
  118. }
  119. public virtual string TaskType
  120. {
  121. get
  122. {
  123. return _TaskType;
  124. }
  125. set
  126. {
  127. _TaskType = value;
  128. }
  129. }
  130. public virtual string PosArr
  131. {
  132. get
  133. {
  134. return _PosArr;
  135. }
  136. set
  137. {
  138. _PosArr = value;
  139. }
  140. }
  141. public virtual string ArrLength
  142. {
  143. get
  144. {
  145. return _ArrLength;
  146. }
  147. set
  148. {
  149. _ArrLength = value;
  150. }
  151. }
  152. public virtual string ManualOrAuto
  153. {
  154. get
  155. {
  156. return _ManualOrAuto;
  157. }
  158. set
  159. {
  160. _ManualOrAuto = value;
  161. }
  162. }
  163. }
  164. class MappingMiddleTask : ClassMap<MiddleTask>
  165. {
  166. public MappingMiddleTask()
  167. {
  168. Table("MiddleTask");
  169. Id(m => m.PosArr).GeneratedBy.Assigned();//.Increment();
  170. Map(m => m.ManualOrAuto);
  171. Map(m => m.ArrLength);
  172. Map(m => m.TaskType);
  173. }
  174. //private void Table(string v)
  175. //{
  176. // //throw new NotImplementedException();
  177. //}
  178. }
  179. #endregion
  180. #region CarrierCommand
  181. public class CarrierCommand
  182. {
  183. private int _UID;
  184. private int _Carrier;
  185. private int _Command;
  186. private int _Status;
  187. private DateTime _Timestamp;
  188. public CarrierCommand()
  189. {
  190. }
  191. public CarrierCommand(int carrier, int command, int status)
  192. {
  193. _Command = command;
  194. _Status = status;
  195. _Carrier = carrier;
  196. _Timestamp = DateTime.Now;
  197. }
  198. public virtual int UID
  199. {
  200. get
  201. {
  202. return _UID;
  203. }
  204. set
  205. {
  206. _UID = value;
  207. }
  208. }
  209. public virtual int Command
  210. {
  211. get
  212. {
  213. return _Command;
  214. }
  215. set
  216. {
  217. _Command = value;
  218. }
  219. }
  220. public virtual int Carrier
  221. {
  222. get
  223. {
  224. return _Carrier;
  225. }
  226. set
  227. {
  228. _Carrier = value;
  229. }
  230. }
  231. public virtual int Status
  232. {
  233. get
  234. {
  235. return _Status;
  236. }
  237. set
  238. {
  239. _Status = value;
  240. }
  241. }
  242. public virtual DateTime Timestamp
  243. {
  244. get
  245. {
  246. return _Timestamp;
  247. }
  248. set
  249. {
  250. _Timestamp = value;
  251. }
  252. }
  253. }
  254. class MappingCarrierCommand : ClassMap<CarrierCommand>
  255. {
  256. public MappingCarrierCommand()
  257. {
  258. Table("CarrierCommand");
  259. Id(m => m.UID).GeneratedBy.Increment();//Assigned()
  260. Map(m => m.Status);
  261. Map(m => m.Carrier);
  262. Map(m => m.Command);
  263. Map(m => m.Timestamp);
  264. }
  265. //private void Table(string v)
  266. //{
  267. // //throw new NotImplementedException();
  268. //}
  269. }
  270. #endregion
  271. #region Order
  272. //public enum OrderState { None, Add, Loaded, Start, Started, Executing, Finish, Finished, Cancel, Canceled, TerminateTask, Exception, Exceptioned, RecoveryException, 到风淋窗 = 76, 进车间风淋中 = 77, 出车间风淋中 = 78, 到工位, 待取料, 缓存位, 缓存中, 充电任务中, 电梯缓存中 }
  273. public enum WCSOrderState { None, NDC, BindingAGV, RunToUpWarehouse, Uploaded, RunToDownWarehouse, Downloaded, Finished, Canceled}
  274. public enum OrderType { None, One, Tow, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Eleven, Twrive }
  275. //public enum ETaskState
  276. //{
  277. // None = 0,
  278. // Add = 1,
  279. // Loaded = 2,
  280. // Start = 3,
  281. // Started = 4,
  282. // Executing = 5,
  283. // Finish = 6,
  284. // Finished = 7,
  285. // Cancel = 8,
  286. // Canceled = 9,
  287. // TerminateTask = 10,
  288. // Exception = 11,
  289. // Exceptioned = 12,
  290. // RecoveryException = 13
  291. //}
  292. //public class Order
  293. //{
  294. // private string _OrderID;
  295. // private int _Carrier;
  296. // private OrderType _OrderType;
  297. // private int _OrderState;
  298. // private DateTime _CallTime;
  299. // private DateTime _FinishTime;
  300. // private bool _Suspend;
  301. // private string _Material;
  302. // private string _UpPos;
  303. // private string _MiddlePos;
  304. // private string _DownPos;
  305. // private string _CurPos;
  306. // private int _Remain;
  307. // public Order()
  308. // {
  309. // }
  310. // public Order(string orderid, OrderType ordertype, string uppos, string middlepos, string downpos, int orderstate = -1, int remain = 0, string material = "", int carrier = 0, bool suspend = false)
  311. // {
  312. // _OrderType = ordertype;
  313. // _OrderState = orderstate;
  314. // _Carrier = carrier;
  315. // _DownPos = downpos;
  316. // _UpPos = uppos;
  317. // _MiddlePos = middlepos;
  318. // _Suspend = suspend;
  319. // _OrderID = orderid;
  320. // _Material = material;
  321. // _CallTime = DateTime.Now;
  322. // _FinishTime = DateTime.Now;
  323. // _CurPos = "";
  324. // _Remain = remain;
  325. // }
  326. // public virtual string OrderID
  327. // {
  328. // get
  329. // {
  330. // return _OrderID;
  331. // }
  332. // set
  333. // {
  334. // _OrderID = value;
  335. // }
  336. // }
  337. // public virtual OrderType OrderType
  338. // {
  339. // get
  340. // {
  341. // return _OrderType;
  342. // }
  343. // set
  344. // {
  345. // _OrderType = value;
  346. // }
  347. // }
  348. // public virtual int Carrier
  349. // {
  350. // get
  351. // {
  352. // return _Carrier;
  353. // }
  354. // set
  355. // {
  356. // _Carrier = value;
  357. // }
  358. // }
  359. // public virtual int OrderState
  360. // {
  361. // get
  362. // {
  363. // return _OrderState;
  364. // }
  365. // set
  366. // {
  367. // _OrderState = value;
  368. // }
  369. // }
  370. // public virtual DateTime CallTime
  371. // {
  372. // get
  373. // {
  374. // return _CallTime;
  375. // }
  376. // set
  377. // {
  378. // _CallTime = value;
  379. // }
  380. // }
  381. // public virtual DateTime FinishTime
  382. // {
  383. // get
  384. // {
  385. // return _FinishTime;
  386. // }
  387. // set
  388. // {
  389. // _FinishTime = value;
  390. // }
  391. // }
  392. // public virtual bool Suspend
  393. // {
  394. // get
  395. // {
  396. // return _Suspend;
  397. // }
  398. // set
  399. // {
  400. // _Suspend = value;
  401. // }
  402. // }
  403. // public virtual string UpPos
  404. // {
  405. // get
  406. // {
  407. // return _UpPos;
  408. // }
  409. // set
  410. // {
  411. // _UpPos = value;
  412. // }
  413. // }
  414. // public virtual string MiddlePos
  415. // {
  416. // get
  417. // {
  418. // return _MiddlePos;
  419. // }
  420. // set
  421. // {
  422. // _MiddlePos = value;
  423. // }
  424. // }
  425. // public virtual string DownPos
  426. // {
  427. // get
  428. // {
  429. // return _DownPos;
  430. // }
  431. // set
  432. // {
  433. // _DownPos = value;
  434. // }
  435. // }
  436. // public virtual string CurPos
  437. // {
  438. // get
  439. // {
  440. // return _CurPos;
  441. // }
  442. // set
  443. // {
  444. // _CurPos = value;
  445. // }
  446. // }
  447. // public virtual string Material
  448. // {
  449. // get
  450. // {
  451. // return _Material;
  452. // }
  453. // set
  454. // {
  455. // _Material = value;
  456. // }
  457. // }
  458. // public virtual int Remain
  459. // {
  460. // get
  461. // {
  462. // return _Remain;
  463. // }
  464. // set
  465. // {
  466. // _Remain = value;
  467. // }
  468. // }
  469. //}
  470. //class MappingOrder : ClassMap<Order>
  471. //{
  472. // public MappingOrder()
  473. // {
  474. // Table("MiddleOrder");
  475. // Id(m => m.OrderID).GeneratedBy.Assigned();//Assigned()
  476. // Map(m => m.OrderState);
  477. // Map(m => m.Carrier);
  478. // Map(m => m.OrderType).CustomType<OrderType>();
  479. // Map(m => m.CallTime);
  480. // Map(m => m.FinishTime);
  481. // Map(m => m.Material);
  482. // Map(m => m.UpPos);
  483. // Map(m => m.MiddlePos);
  484. // Map(m => m.DownPos);
  485. // Map(m => m.Suspend);
  486. // Map(m => m.CurPos);
  487. // Map(m => m.Remain);
  488. // }
  489. // //private void Table(string v)
  490. // //{
  491. // // //throw new NotImplementedException();
  492. // //}
  493. //}
  494. public class Order
  495. {
  496. private string _OrderID;
  497. private int _Carrier;
  498. private OrderType _OrderType;
  499. private int _OrderState;
  500. private DateTime _CallTime;
  501. private DateTime _FinishTime;
  502. private bool _Suspend;
  503. private string _Material;//taskid
  504. private string _UpPos;
  505. private string _MiddlePos;
  506. private string _DownPos;
  507. private string _CurPos;
  508. private int _Remain;//agvid
  509. public Order()
  510. {
  511. }
  512. public Order(string orderid, OrderType ordertype, string uppos, string middlepos, string downpos, int orderstate = -1, int remain = 0, string material = "", int carrier = 0, bool suspend = false)
  513. {
  514. _OrderType = ordertype;
  515. _OrderState = orderstate;
  516. _Carrier = carrier;
  517. _DownPos = downpos;
  518. _UpPos = uppos;
  519. _MiddlePos = middlepos;
  520. _Suspend = suspend;
  521. _OrderID = orderid;
  522. _Material = material;
  523. _CallTime = DateTime.Now;
  524. _FinishTime = DateTime.Now;
  525. _CurPos = "";
  526. _Remain = remain;
  527. }
  528. public virtual string OrderID
  529. {
  530. get
  531. {
  532. return _OrderID;
  533. }
  534. set
  535. {
  536. _OrderID = value;
  537. }
  538. }
  539. public virtual OrderType OrderType
  540. {
  541. get
  542. {
  543. return _OrderType;
  544. }
  545. set
  546. {
  547. _OrderType = value;
  548. }
  549. }
  550. public virtual int Carrier
  551. {
  552. get
  553. {
  554. return _Carrier;
  555. }
  556. set
  557. {
  558. _Carrier = value;
  559. }
  560. }
  561. public virtual int OrderState
  562. {
  563. get
  564. {
  565. return _OrderState;
  566. }
  567. set
  568. {
  569. _OrderState = value;
  570. }
  571. }
  572. public virtual DateTime CallTime
  573. {
  574. get
  575. {
  576. return _CallTime;
  577. }
  578. set
  579. {
  580. _CallTime = value;
  581. }
  582. }
  583. public virtual DateTime FinishTime
  584. {
  585. get
  586. {
  587. return _FinishTime;
  588. }
  589. set
  590. {
  591. _FinishTime = value;
  592. }
  593. }
  594. public virtual bool Suspend
  595. {
  596. get
  597. {
  598. return _Suspend;
  599. }
  600. set
  601. {
  602. _Suspend = value;
  603. }
  604. }
  605. public virtual string UpPos
  606. {
  607. get
  608. {
  609. return _UpPos;
  610. }
  611. set
  612. {
  613. _UpPos = value;
  614. }
  615. }
  616. public virtual string MiddlePos
  617. {
  618. get
  619. {
  620. return _MiddlePos;
  621. }
  622. set
  623. {
  624. _MiddlePos = value;
  625. }
  626. }
  627. public virtual string DownPos
  628. {
  629. get
  630. {
  631. return _DownPos;
  632. }
  633. set
  634. {
  635. _DownPos = value;
  636. }
  637. }
  638. public virtual string CurPos
  639. {
  640. get
  641. {
  642. return _CurPos;
  643. }
  644. set
  645. {
  646. _CurPos = value;
  647. }
  648. }
  649. public virtual string Material
  650. {
  651. get
  652. {
  653. return _Material;
  654. }
  655. set
  656. {
  657. _Material = value;
  658. }
  659. }
  660. public virtual int Remain
  661. {
  662. get
  663. {
  664. return _Remain;
  665. }
  666. set
  667. {
  668. _Remain = value;
  669. }
  670. }
  671. public virtual string OrderStateString
  672. {
  673. get
  674. {
  675. string state = "";
  676. switch (_OrderState)
  677. {
  678. case -2:
  679. state = "待备料";
  680. break;
  681. case -1:
  682. state = "排队中";
  683. break;
  684. case 0:
  685. state = "默认";
  686. break;
  687. case 1:
  688. state = "已添加";
  689. break;
  690. case 2:
  691. state = "创建中";
  692. break;
  693. case 3:
  694. state = "排队中";
  695. break;
  696. case 4:
  697. state = "分配中";
  698. break;
  699. case 5:
  700. state = "运送中";
  701. break;
  702. case 6:
  703. state = "操作中";
  704. break;
  705. case 7:
  706. state = "完成";
  707. break;
  708. case 8:
  709. state = "取消";
  710. break;
  711. case 9:
  712. state = "挂起";
  713. break;
  714. case 10:
  715. state = "续接";
  716. break;
  717. case 11:
  718. state = "续接"; //AppendCreate
  719. break;
  720. case 76:
  721. state = "到风淋窗";
  722. break;
  723. case 77:
  724. state = "进车间风淋中";
  725. break;
  726. case 78:
  727. state = "出车间风淋中";
  728. break;
  729. case 255:
  730. state = "异常";
  731. break;
  732. default:
  733. break;
  734. }
  735. return state;
  736. }
  737. }
  738. }
  739. class MappingOrder : ClassMap<Order>
  740. {
  741. public MappingOrder()
  742. {
  743. Table("MiddleOrder");
  744. Id(m => m.OrderID).GeneratedBy.Assigned();//Assigned()
  745. Map(m => m.OrderState);
  746. Map(m => m.Carrier);
  747. Map(m => m.OrderType).CustomType<OrderType>();
  748. Map(m => m.CallTime);
  749. Map(m => m.FinishTime);
  750. Map(m => m.Material);
  751. Map(m => m.UpPos);
  752. Map(m => m.MiddlePos);
  753. Map(m => m.DownPos);
  754. Map(m => m.Suspend);
  755. Map(m => m.CurPos);
  756. Map(m => m.Remain);
  757. }
  758. //private void Table(string v)
  759. //{
  760. // //throw new NotImplementedException();
  761. //}
  762. }
  763. #endregion
  764. }