电子药箱通讯服务端
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

OperationRoomBLL.ext.cs 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using RDH.Data.Models;
  6. namespace RDH.Data.BLL
  7. {
  8. public partial class OperationRoomBLL : IOperationRoomBLL
  9. {
  10. private Dictionary<string, string> UserInfoColumnPropMaps = new Dictionary<string, string>();
  11. private void InitUserInfoMaps()
  12. {
  13. UserInfoColumnPropMaps.Add("SNAPSHOT_KEY", "SnapshotKey");
  14. UserInfoColumnPropMaps.Add("USER_ID", "UserId");
  15. UserInfoColumnPropMaps.Add("PASSWORD", "Password");
  16. UserInfoColumnPropMaps.Add("IF_CARD_ID", "IfCardId");
  17. UserInfoColumnPropMaps.Add("PINGER_PRINT_DATA", "PingerPrintData");
  18. UserInfoColumnPropMaps.Add("LOING_TRY_TIMES", "LoingTryTimes");
  19. UserInfoColumnPropMaps.Add("IS_ACTIVE", "IsActive");
  20. UserInfoColumnPropMaps.Add("LOCATION_KEY", "LocationKey");
  21. UserInfoColumnPropMaps.Add("NAME", "Name");
  22. UserInfoColumnPropMaps.Add("SEX", "Sex");
  23. UserInfoColumnPropMaps.Add("AGE", "Age");
  24. UserInfoColumnPropMaps.Add("MOBILE_PHONE", "MobilePhone");
  25. UserInfoColumnPropMaps.Add("TELPHONE", "Telphone");
  26. UserInfoColumnPropMaps.Add("ADDRESS", "Address");
  27. UserInfoColumnPropMaps.Add("CREATE_BY", "CreateBy");
  28. UserInfoColumnPropMaps.Add("CREATE_TIME", "CreateTime");
  29. UserInfoColumnPropMaps.Add("KEY", "Key");
  30. UserInfoColumnPropMaps.Add("IS_SUPPER_USER", "IsSupperUser");//COLUMN_MAPS
  31. }
  32. private string GenerateJoinSql()
  33. {
  34. StringBuilder OperationRoomValues = new StringBuilder();
  35. foreach (var c in ColumnPropMaps)
  36. {
  37. OperationRoomValues.AppendFormat("oroom.\"{0}\" \"{1}\",", c.Key, c.Value);
  38. }
  39. OperationRoomValues.Remove(OperationRoomValues.Length - 1, 1);
  40. StringBuilder UserInfoValues = new StringBuilder();
  41. foreach (var c in UserInfoColumnPropMaps)
  42. {
  43. UserInfoValues.AppendFormat("ui.\"{0}\" \"{1}\",", c.Key, c.Value);
  44. }
  45. UserInfoValues.Remove(UserInfoValues.Length - 1, 1);
  46. StringBuilder from = new StringBuilder();
  47. from.Append(" OPERATION_ROOM oroom ");
  48. from.Append(" LEFT JOIN ");
  49. from.Append("USER_INFO ui ");
  50. from.Append(" on OROOM.CREATE_BY = UI.KEY ");
  51. return string.Format("SELECT {0},'' as split1,{1} FROM {2}", OperationRoomValues, UserInfoValues, from);
  52. }
  53. public IEnumerable<OperationRoom> ListOperationRoomWithSection()
  54. {
  55. StringBuilder sqlBuilder = new StringBuilder();
  56. sqlBuilder.Append("SELECT ");
  57. foreach (KeyValuePair<String, String> pair in this.ColumnPropMaps)
  58. {
  59. sqlBuilder.AppendFormat("r.{0} {1},", pair.Key, pair.Value);
  60. }
  61. //section
  62. sqlBuilder.Append("'' spiltor,");
  63. SectionBLL sectionBLL = new SectionBLL();
  64. foreach (KeyValuePair<String, String> pair in sectionBLL.ColumnPropMaps)
  65. {
  66. sqlBuilder.AppendFormat("s.{0} {1},", pair.Key, pair.Value);
  67. }
  68. sqlBuilder.Remove(sqlBuilder.Length - 1, 1);
  69. sqlBuilder.AppendFormat(" FROM {0} r"
  70. + " LEFT JOIN {1} s ON s.key=r.ext01",
  71. this.TABLE_NAME, sectionBLL.TABLE_NAME);
  72. return SqlMapper.Query<OperationRoom, Section, OperationRoom>(
  73. ConnectionFactory.Current.GetSessionConnection(), sqlBuilder.ToString(),
  74. (r, s) =>
  75. {
  76. r.SectionInfo = s;
  77. return r;
  78. }, splitOn: "spiltor");
  79. }
  80. public IEnumerable<OperationRoom> ListOperationRoom()
  81. {
  82. InitUserInfoMaps();
  83. string sql = GenerateJoinSql();
  84. return SqlMapper.Query<OperationRoom, UserInfo, OperationRoom>(ConnectionFactory.Current.GetSessionConnection(), sql, (or, ui) =>
  85. {
  86. or.UserInfo = ui;
  87. return or;
  88. }, splitOn: "split1");
  89. }
  90. public IEnumerable<OperationRoom> ListNoDeviceRoom(Guid? deviceKey)
  91. {
  92. string sql = this.BuildBaseSql();
  93. if (deviceKey == null || deviceKey.Value == default(Guid))
  94. {
  95. ///没有手术间
  96. sql += " WHERE KEY NOT IN (SELECT D.OPERATION_ROOM_KEY FROM DISPENSING_DEVICE D WHERE D.OPERATION_ROOM_KEY IS NOT NULL AND D.ENABEL_FLAG='True')";
  97. }
  98. else
  99. {
  100. sql += "WHERE KEY NOT IN (SELECT D.OPERATION_ROOM_KEY FROM DISPENSING_DEVICE D WHERE D.OPERATION_ROOM_KEY IS NOT NULL AND D.ENABEL_FLAG='True' AND D.KEY<>:deviceKey)";
  101. }
  102. //string sql = this.BuildBaseSql() + " WHERE KEY NOT IN (SELECT D.OPERATION_ROOM_KEY FROM DISPENSING_DEVICE D WHERE D.OPERATION_ROOM_KEY IS NOT NULL)";
  103. return SqlMapper.Query<OperationRoom>(ConnectionFactory.Current.GetSessionConnection(), sql,
  104. new { deviceKey = deviceKey.GetValueOrDefault().ToString() });
  105. }
  106. public IEnumerable<OperationRoom> ListDeviceRooms()
  107. {
  108. string sql = this.BuildBaseSql();
  109. ///绑定麻车的手术间
  110. sql += " WHERE KEY IN (SELECT DD.OPERATION_ROOM_KEY FROM DISPENSING_DEVICE DD WHERE DD.ENABEL_FLAG='True')";
  111. return SqlMapper.Query<OperationRoom>(ConnectionFactory.Current.GetSessionConnection(), sql);
  112. }
  113. public OperationRoom GetByOperationRoomId(string roomId)
  114. {
  115. var sql = BuildBaseSql();
  116. return SqlMapper.Query<OperationRoom>(ConnectionFactory.Current.GetSessionConnection(), sql + " WHERE ROOM_ID = :RoomId", new { RoomId = roomId }).FirstOrDefault();
  117. }
  118. }
  119. }