电子药箱通讯服务端
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.ServiceModel;
  6. using RDH.Data.Models;
  7. namespace RDH.Data.BLL
  8. {
  9. public partial class ItemBLL : BaseOrclSnapshotBLL<Item>, IItemBLL
  10. {
  11. public ItemBLL() : base()
  12. {
  13. AliasTableName = "i";
  14. }
  15. internal override String TABLE_NAME { get { return "ITEM"; } }//TB_NAME
  16. internal override string ENTITY_NAME { get { return "Item"; } }
  17. internal override String KEY_COLUMN { get { return "SNAPSHOT_KEY"; } }//KEY_COLUMN
  18. internal override string SNAPSHOT_BASE { get { return "ITEM_BASE"; } }
  19. internal override void InitMaps()
  20. {
  21. ColumnPropMaps.Add("SNAPSHOT_KEY", "SnapshotKey");
  22. ColumnPropMaps.Add("CREATE_BY", "CreateBy");
  23. ColumnPropMaps.Add("CREATE_TIME", "CreateTime");
  24. ColumnPropMaps.Add("ITEM_ID", "ItemId");
  25. ColumnPropMaps.Add("BAR_CODE", "BarCode");
  26. ColumnPropMaps.Add("ITEM_COMMON_NAME", "ItemCommonName");
  27. ColumnPropMaps.Add("ITEM_BRAND_NAME", "ItemBrandName");
  28. ColumnPropMaps.Add("PIN_YIN_NAME", "PinYinName");
  29. ColumnPropMaps.Add("IS_ACTIVE", "IsActive");
  30. ColumnPropMaps.Add("ITEM_TYPE", "ItemType");
  31. ColumnPropMaps.Add("IS_MEDCINE", "IsMedcine");
  32. ColumnPropMaps.Add("IS_SUPPLY", "IsSupply");
  33. ColumnPropMaps.Add("STANDARD", "Standard");
  34. ColumnPropMaps.Add("DOSAGE_CODE", "DosageCode");
  35. ColumnPropMaps.Add("DOSAGE_NAME", "DosageName");
  36. ColumnPropMaps.Add("WEIGHT", "Weight");
  37. ColumnPropMaps.Add("VOLUMN", "Volumn");
  38. ColumnPropMaps.Add("WEIGHT_UNIT", "WeightUnit");
  39. ColumnPropMaps.Add("VOLUMN_UNIT", "VolumnUnit");
  40. ColumnPropMaps.Add("USE_UNIT", "UseUnit");
  41. ColumnPropMaps.Add("PACK_STANDARD", "PackStandard");
  42. ColumnPropMaps.Add("PACK_SIZE", "PackSize");
  43. ColumnPropMaps.Add("PACK_UNIT", "PackUnit");
  44. ColumnPropMaps.Add("MANUFACTORY", "Manufactory");
  45. ColumnPropMaps.Add("KEY", "Key");
  46. ColumnPropMaps.Add("FLAG", "Flag");
  47. ColumnPropMaps.Add("CLIENT_TIME", "ClientTime");
  48. ColumnPropMaps.Add("SERVER_TIME", "ServerTime");
  49. ColumnPropMaps.Add("EXT01", "Ext01");
  50. ColumnPropMaps.Add("EXT02", "Ext02");
  51. ColumnPropMaps.Add("EXT03", "Ext03");
  52. ColumnPropMaps.Add("EXT04", "Ext04");
  53. ColumnPropMaps.Add("EXT05", "Ext05");
  54. ColumnPropMaps.Add("EXT06", "Ext06");
  55. ColumnPropMaps.Add("EXT07", "Ext07");
  56. ColumnPropMaps.Add("EXT08", "Ext08");
  57. ColumnPropMaps.Add("EXT09", "Ext09");
  58. ColumnPropMaps.Add("EXT10", "Ext10");
  59. ColumnPropMaps.Add("CHARGE_TYPE", "ChargeType");//COLUMN_MAPS
  60. }
  61. internal override object GetParam(Item item)
  62. {
  63. return new
  64. {
  65. SnapshotKey = item.SnapshotKey,
  66. CreateBy = item.CreateBy,
  67. CreateTime = item.CreateTime,
  68. ItemId = item.ItemId,
  69. BarCode = item.BarCode,
  70. ItemCommonName = item.ItemCommonName,
  71. ItemBrandName = item.ItemBrandName,
  72. PinYinName = item.PinYinName,
  73. IsActive = item.IsActive,
  74. IsDelete = item.IsDelete,
  75. ItemType = item.ItemType,
  76. IsMedcine = item.IsMedcine,
  77. IsSupply = item.IsSupply,
  78. Standard = item.Standard,
  79. DosageCode = item.DosageCode,
  80. DosageName = item.DosageName,
  81. Weight = item.Weight,
  82. Volumn = item.Volumn,
  83. WeightUnit = item.WeightUnit,
  84. VolumnUnit = item.VolumnUnit,
  85. UseUnit = item.UseUnit,
  86. PackStandard = item.PackStandard,
  87. PackSize = item.PackSize,
  88. PackUnit = item.PackUnit,
  89. Manufactory = item.Manufactory,
  90. Key = item.Key,
  91. Flag = item.Flag,
  92. ClientTime = item.ClientTime,
  93. ServerTime = item.ServerTime,
  94. Ext01 = item.Ext01,
  95. Ext02 = item.Ext02,
  96. Ext03 = item.Ext03,
  97. Ext04 = item.Ext04,
  98. Ext05 = item.Ext05,
  99. Ext06 = item.Ext06,
  100. Ext07 = item.Ext07,
  101. Ext08 = item.Ext08,
  102. Ext09 = item.Ext09,
  103. Ext10 = item.Ext10,
  104. ChargeType = item.ChargeType, //Params
  105. };
  106. }
  107. public IEnumerable<Item> ListItems(string filter, int index, int size)
  108. {
  109. string sqlWhere = string.Format(" WHERE IS_ACTIVE = 'True' AND (UPPER(PIN_YIN_NAME) LIKE '%{0}%' OR ITEM_COMMON_NAME LIKE '%{0}%' OR ITEM_BRAND_NAME LIKE '%{0}%') ", filter == null ? "" : filter.ToUpper());
  110. var sql = BuildPageSql(sqlWhere, index, size);
  111. return SqlMapper.Query<Item>(ConnectionFactory.Current.GetSessionConnection(), sql);
  112. }
  113. public Item GetByItemId(string itemId)
  114. {
  115. var sql = BuildBaseSql();
  116. return SqlMapper.Query<Item>(ConnectionFactory.Current.GetSessionConnection(),
  117. sql + " WHERE ITEM_ID = :ItemId",
  118. new { ItemId = itemId }).FirstOrDefault();
  119. }
  120. public Item GetByItemCurrentId(string itemId)
  121. {
  122. var sql = BuildBaseSql();
  123. return SqlMapper.Query<Item>(ConnectionFactory.Current.GetSessionConnection(),
  124. sql + " WHERE EXT01 = :Ext01",
  125. new { Ext01 = itemId }).FirstOrDefault();
  126. }
  127. public Item GetIsActiveItem(Item _itemKey)
  128. {
  129. var sql = string.Format("{0} WHERE KEY=:itemKey", BuildBaseSql());
  130. return SqlMapper.Query<Item>(ConnectionFactory.Current.GetSessionConnection(), sql,
  131. new { itemKey = _itemKey.Key.GetValueOrDefault().ToString() }).FirstOrDefault();
  132. }
  133. public int GetCount(string filter)
  134. {
  135. var sql = this.BuildPageCountSql(" WHERE IS_ACTIVE = 'True'");
  136. if (!string.IsNullOrWhiteSpace(filter))
  137. {
  138. sql += string.Format(" AND (UPPER(ITEM_COMMON_NAME) like '%{0}%' OR UPPER(ITEM_BRAND_NAME) LIKE '%{0}%' OR UPPER(PIN_YIN_NAME) LIKE '%{0}%')", filter.ToUpper());
  139. }
  140. var command = ConnectionFactory.Current.GetSessionConnection().CreateCommand();
  141. command.CommandText = sql;
  142. command.CommandType = System.Data.CommandType.Text;
  143. return Convert.ToInt32(command.ExecuteScalar());
  144. }
  145. public List<Item> ListItemsWithItemLot(string filter, int index, int size)
  146. {
  147. StringBuilder sqlBuilder = new StringBuilder();
  148. sqlBuilder.Append("SELECT ");
  149. foreach (KeyValuePair<String, String> pair in this.ColumnPropMaps)
  150. {
  151. sqlBuilder.AppendFormat("{0}.{1} {2},", this.TABLE_NAME, pair.Key, pair.Value);
  152. }
  153. sqlBuilder.Append("'' spiltor1,");
  154. ItemLotBLL bllLot = new ItemLotBLL();
  155. foreach (KeyValuePair<String, String> pair in bllLot.ColumnPropMaps)
  156. {
  157. sqlBuilder.AppendFormat("{0}.{1} {2},", bllLot.TABLE_NAME, pair.Key, pair.Value);
  158. }
  159. sqlBuilder.Remove(sqlBuilder.Length - 1, 1);
  160. sqlBuilder.AppendFormat(" FROM {0}"
  161. + " LEFT JOIN {1} ON {0}.KEY={1}.ITEM_KEY"
  162. + " WHERE {0}.IS_ACTIVE='True'",
  163. this.TABLE_NAME, bllLot.TABLE_NAME);
  164. if (!string.IsNullOrWhiteSpace(filter))
  165. {
  166. sqlBuilder.AppendFormat(" AND (UPPER({0}.ITEM_COMMON_NAME) like '%{1}%' OR UPPER({0}.ITEM_BRAND_NAME) LIKE '%{1}%' OR UPPER({0}.PIN_YIN_NAME) LIKE '%{1}%')",
  167. this.TABLE_NAME, filter.ToUpper());
  168. }
  169. List<Item> listResult = new List<Item>();
  170. SqlMapper.Query<Item, ItemLot, Item>(ConnectionFactory.Current.GetSessionConnection(),
  171. BuildPageSql(sqlBuilder.ToString(), index, size),
  172. (i, il) =>
  173. {
  174. Item existItem = listResult.Find(x => x.Key == i.Key);
  175. if (existItem == null)
  176. {
  177. existItem = i;
  178. listResult.Add(i);
  179. i.ListItemLots = new List<ItemLot>();
  180. }
  181. if (il != null)
  182. {
  183. existItem.ListItemLots.Add(il);
  184. }
  185. return i;
  186. },
  187. splitOn: "spiltor1");
  188. return listResult;
  189. }
  190. public IEnumerable<Item> ListItemsWithConfigCount(DispensingDevice device, String filter)
  191. {
  192. SqlBuilder builder = new SqlBuilder(this);
  193. builder.AppendSelectionPhrases("(SELECT COUNT(*) FROM STORAGE_SPACE_ITEM si WHERE si.item_key=i.KEY AND si.device_key=:deviceKey) AS ConfigedCount");
  194. if (!String.IsNullOrWhiteSpace(filter))
  195. {
  196. filter = filter.Trim().ToUpper();
  197. }
  198. builder.AppendWherePhrases(String.Format("(UPPER(i.PIN_YIN_NAME) LIKE '%{0}%' OR i.ITEM_COMMON_NAME LIKE '%{0}%' OR i.ITEM_BRAND_NAME LIKE '%{0}%')",
  199. filter.Trim().ToUpper()));
  200. return SqlMapper.Query<Item>(ConnectionFactory.Current.GetSessionConnection(),
  201. builder.ToString(),
  202. new
  203. {
  204. deviceKey = device.Key
  205. });
  206. }
  207. }
  208. }