CmbDataSourceConvert.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. /* ==============================================================================
  2. * 功能描述:数据字典下拉列表数据源
  3. * 创 建 者:Garrett
  4. * 创建日期:2018/3/16 19:32:51
  5. * ==============================================================================*/
  6. using System.Collections.Generic;
  7. using System.ComponentModel;
  8. using System.Linq;
  9. using System.Reflection;
  10. using Newtonsoft.Json.Linq;
  11. using SAGA.DotNetUtils;
  12. using SAGA.DotNetUtils.Extend;
  13. using SAGA.DotNetUtils.WPF.UserControl.ComboboxTreeView;
  14. using SAGA.MBI.CmbData;
  15. using SAGA.MBI.Common;
  16. using SAGA.MBI.DataArrange;
  17. using SAGA.MBI.Model;
  18. using SAGA.MBI.RequestData;
  19. using SAGA.MBI.Tools;
  20. namespace SAGA.MBI.JsonConvert
  21. {
  22. /// <summary>
  23. /// CmbDataSourceRequest
  24. /// </summary>
  25. public class CmbDataSourceConvert
  26. {
  27. /// <summary>
  28. /// 查询地理信息--省市信息
  29. /// </summary>
  30. /// <returns></returns>
  31. [CacheAspect]
  32. public static List<ProvinceInfo> GeographyDic()
  33. {
  34. List<ProvinceInfo> list = new List<ProvinceInfo>();
  35. string json = CmbDataSourceRequest.GeographyDic();
  36. if (!json.IsSuccessRequest()) return list;
  37. JObject jObject = JObject.Parse(json);
  38. foreach (KeyValuePair<string, JToken> keyValuePair in (JObject)jObject["Content"])
  39. {
  40. foreach (JObject provinceJObject in (JArray)keyValuePair.Value)
  41. {
  42. string provinceName = "";
  43. switch (keyValuePair.Key)
  44. {
  45. case "normal":
  46. ProvinceInfo provinceInfo = new ProvinceInfo();
  47. provinceInfo.ProvinceCode = (string)provinceJObject["provinceCode"];
  48. provinceInfo.ProvinceName = (string)provinceJObject["provinceName"];
  49. provinceInfo.Code = (string)provinceJObject["provinceInfo"][0]["code"];
  50. provinceInfo.Name = (string)provinceJObject["provinceInfo"][0]["name"];
  51. provinceInfo.LocalCode = (string)provinceJObject["provinceInfo"][1]["code"];
  52. provinceInfo.LocalName = (string)provinceJObject["provinceInfo"][1]["name"];
  53. foreach (var cityJObject in provinceJObject["cities"])
  54. {
  55. CityInfo cityInfo = new CityInfo();
  56. cityInfo.CityCode = (string)cityJObject["cityCode"];
  57. cityInfo.CityName = (string)cityJObject["cityName"];
  58. cityInfo.Climate = (string)cityJObject["climate"];
  59. cityInfo.DevelopLevel = (string)cityJObject["developLevel"];
  60. cityInfo.Code = (string)cityJObject["cityInfo"][0]["code"];
  61. cityInfo.Name = (string)cityJObject["cityInfo"][0]["name"];
  62. cityInfo.CityInfoI = GetDistrictInfo((JObject)cityJObject["cityInfo"][0]);
  63. cityInfo.CityLocalInfoI = GetDistrictInfo((JObject)cityJObject["cityInfo"][1]);
  64. provinceInfo.Cities.Add(cityInfo);
  65. foreach (JObject districtJObject in cityJObject["district"])
  66. {
  67. DistrictInfo districtInfo = GetDistrictInfo(districtJObject);
  68. cityInfo.Districts.Add(districtInfo);
  69. }
  70. }
  71. list.Add(provinceInfo);
  72. break;
  73. case "specialDistrict":
  74. ProvinceInfo specialProvinceInfo = new ProvinceInfo();
  75. specialProvinceInfo.Code = (string)provinceJObject["code"];
  76. specialProvinceInfo.Name = (string)provinceJObject["name"];
  77. CityInfo specialCityInfo = new CityInfo();
  78. specialCityInfo.Code = (string)provinceJObject["code"];
  79. specialCityInfo.Name = (string)provinceJObject["name"];
  80. specialCityInfo.Climate = (string)provinceJObject["climate"];
  81. specialCityInfo.DevelopLevel = (string)provinceJObject["developLevel"];
  82. specialProvinceInfo.Cities.Add(specialCityInfo);
  83. DistrictInfo specialDistrictInfo = GetDistrictInfo(provinceJObject);
  84. specialCityInfo.CityInfoI = specialDistrictInfo;
  85. specialCityInfo.Districts.Add(specialDistrictInfo);
  86. list.Add(specialProvinceInfo);
  87. break;
  88. case "specialCities":
  89. ProvinceInfo specialCitiesProvinceInfo = new ProvinceInfo();
  90. specialCitiesProvinceInfo.Code = (string)provinceJObject["cityInfo"][0]["code"];
  91. specialCitiesProvinceInfo.Name = (string)provinceJObject["cityInfo"][0]["name"];
  92. CityInfo specialCitiesCityInfo = new CityInfo();
  93. specialCitiesCityInfo.Code = (string)provinceJObject["cityInfo"][0]["code"];
  94. specialCitiesCityInfo.Name = (string)provinceJObject["cityInfo"][0]["name"];
  95. specialCitiesCityInfo.Climate = (string)provinceJObject["climate"];
  96. specialCitiesCityInfo.DevelopLevel = (string)provinceJObject["developLevel"];
  97. specialCitiesCityInfo.CityInfoI = GetDistrictInfo((JObject)provinceJObject["cityInfo"][0]);
  98. specialCitiesProvinceInfo.Cities.Add(specialCitiesCityInfo);
  99. foreach (JObject districtJObject in provinceJObject["district"])
  100. {
  101. DistrictInfo districtInfo = GetDistrictInfo(districtJObject);
  102. specialCitiesCityInfo.Districts.Add(districtInfo);
  103. }
  104. list.Add(specialCitiesProvinceInfo);
  105. break;
  106. }
  107. //list.Add(name);
  108. }
  109. }
  110. return list;
  111. }
  112. /// <summary>
  113. /// 查询地理信息--省市信息,使用TreeNodeItem形式表达
  114. /// </summary>
  115. /// <returns></returns>
  116. [CacheAspect]
  117. public static List<CMBTreeNodeItem<ICMBTreeNodeItem>> GeographyTree()
  118. {
  119. List<CMBTreeNodeItem<ICMBTreeNodeItem>> list = new List<CMBTreeNodeItem<ICMBTreeNodeItem>>();
  120. var provinces = GeographyDic();
  121. foreach (ProvinceInfo provinceInfo in provinces)
  122. {
  123. var cityItems = new List<CMBTreeNodeItem<ICMBTreeNodeItem>>();
  124. foreach (var cityInfo in provinceInfo.Cities)
  125. {
  126. var districtItems = new List<CMBTreeNodeItem<ICMBTreeNodeItem>>();
  127. foreach (var districtInfo in cityInfo.Districts)
  128. {
  129. districtItems.Add(new CMBTreeNodeItem<ICMBTreeNodeItem>(districtInfo, null));
  130. }
  131. cityItems.Add(new CMBTreeNodeItem<ICMBTreeNodeItem>(cityInfo, districtItems));
  132. }
  133. list.Add(new CMBTreeNodeItem<ICMBTreeNodeItem>(provinceInfo, cityItems));
  134. }
  135. return list;
  136. }
  137. /// <summary>
  138. /// 获取区域信息
  139. /// </summary>
  140. /// <param name="jObject"></param>
  141. /// <returns></returns>
  142. private static DistrictInfo GetDistrictInfo(JObject jObject)
  143. {
  144. DistrictInfo districtInfo = new DistrictInfo();
  145. districtInfo.Altitude = (string)jObject["altitude"];
  146. districtInfo.Code = (string)jObject["code"];
  147. districtInfo.DistrictCode = jObject.GetValueEx("districtCode");
  148. districtInfo.Name = jObject.GetValueEx("districtName");
  149. if (districtInfo.Name.IsNullOrEmpty())
  150. districtInfo.Name = jObject.GetValueEx("name");
  151. districtInfo.Latitude = (string)jObject["latitude"];
  152. districtInfo.Longitude = (string)jObject["longitude"];
  153. return (districtInfo);
  154. }
  155. /// <summary>
  156. /// 气候区
  157. /// </summary>
  158. /// <returns></returns>
  159. [CacheAspect]
  160. public static List<ClimaticRegion> ClimateDic()
  161. {
  162. List<ClimaticRegion> list = new List<ClimaticRegion>();
  163. string json = CmbDataSourceRequest.ClimateDic();
  164. if (!json.IsSuccessRequest()) return list;
  165. JObject jObject = JObject.Parse(json);
  166. foreach (JObject contentJObject in (JArray)jObject["Content"])
  167. {
  168. ClimaticRegion climaticRegion = new ClimaticRegion();
  169. climaticRegion.Name = (string)contentJObject["name"];
  170. climaticRegion.Code = (string)contentJObject["code"];
  171. foreach (var subJObject in contentJObject["content"])
  172. {
  173. ClimaticRegionSub subClimaticRegion = new ClimaticRegionSub();
  174. subClimaticRegion.Name = (string)subJObject["name"];
  175. subClimaticRegion.Code = (string)subJObject["code"];
  176. subClimaticRegion.Info = (string)subJObject["info"];
  177. climaticRegion.ClimaticRegionSubs.Add(subClimaticRegion);
  178. }
  179. list.Add(climaticRegion);
  180. }
  181. return list;
  182. }
  183. /// <summary>
  184. /// 气候区
  185. /// </summary>
  186. /// <returns></returns>
  187. [CacheAspect]
  188. public static List<CMBTreeNodeItem<ICMBTreeNodeItem>> ClimateTree()
  189. {
  190. List<CMBTreeNodeItem<ICMBTreeNodeItem>> list = new List<CMBTreeNodeItem<ICMBTreeNodeItem>>();
  191. var climates = ClimateDic();
  192. foreach (ClimaticRegion climaticRegion in climates)
  193. {
  194. var subItems = new List<CMBTreeNodeItem<ICMBTreeNodeItem>>();
  195. foreach (var subClimate in climaticRegion.ClimaticRegionSubs)
  196. {
  197. subItems.Add(new CMBTreeNodeItem<ICMBTreeNodeItem>(subClimate, null));
  198. }
  199. list.Add(new CMBTreeNodeItem<ICMBTreeNodeItem>(climaticRegion, subItems));
  200. }
  201. return list;
  202. }
  203. /// <summary>
  204. /// 建筑功能类型
  205. /// </summary>
  206. /// <returns></returns>
  207. [CacheAspect]
  208. public static List<CMBTreeNodeItem<ICMBTreeNodeItem>> BuildFuncTypeDic()
  209. {
  210. List<CMBTreeNodeItem<ICMBTreeNodeItem>> list = new List<CMBTreeNodeItem<ICMBTreeNodeItem>>();
  211. string json = CmbDataSourceRequest.BuildFuncTypeDic();
  212. if (!json.IsSuccessRequest()) return list;
  213. return DalCMBTreeView.ConvertToDataSource(json); ;
  214. }
  215. /// <summary>
  216. /// 建筑 信息点的数据源
  217. /// </summary>
  218. /// <param name="infoPointCode"></param>
  219. /// <returns></returns>
  220. [CacheAspect]
  221. public static List<CMBTreeNodeItem<ICMBTreeNodeItem>> BuildingInfoDS(string infoPointCode)
  222. {
  223. string code = "building";
  224. var pdtb = PEPCodeConvert.GetPropertyDefineTb(code);
  225. var infoDefine = pdtb.PropertyDefineItems.FirstOrDefault(t => t.CodeName == infoPointCode);
  226. return DalCMBTreeView.ConvertToDataSource(infoDefine?.EnumSource);
  227. }
  228. /// <summary>
  229. /// 楼层 信息点的数据源
  230. /// </summary>
  231. /// <param name="infoPointCode"></param>
  232. /// <returns></returns>
  233. [CacheAspect]
  234. public static List<CMBTreeNodeItem<ICMBTreeNodeItem>> FloorInfoDS(string infoPointCode)
  235. {
  236. string code = "floor";
  237. var pdtb = PEPCodeConvert.GetPropertyDefineTb(code);
  238. var infoDefine = pdtb.PropertyDefineItems.FirstOrDefault(t => t.CodeName == infoPointCode);
  239. return DalCMBTreeView.ConvertToDataSource(infoDefine?.EnumSource);
  240. }
  241. /// <summary>
  242. /// 设备种族类型编码
  243. /// </summary>
  244. /// <returns></returns>
  245. [CacheAspect]
  246. public static List<MEquipmentFamily> EquipmentFamilyDic()
  247. {
  248. List<MEquipmentFamily> list = new List<MEquipmentFamily>();
  249. string json = CmbDataSourceRequest.EquipmentFamilyDic();
  250. //if (!LoginRequest.IsSuccessRequest(json)) return list;
  251. JObject jObject = JObject.Parse(json);
  252. foreach (JObject contentJObject in (JArray)jObject["Content"])
  253. {
  254. MEquipmentFamily mInfo = new MEquipmentFamily(contentJObject.ToString());
  255. list.Add(mInfo);
  256. }
  257. return list;
  258. }
  259. }
  260. }