Guest User

Untitled

a guest
Nov 30th, 2017
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.86 KB | None | 0 0
  1. importMeteringDeviceDataRequest = new importMeteringDeviceDataRequest
  2. {
  3. FIASHouseGuid = res.FIASHouseGUID.ToString(),
  4. MeteringDevice = new importMeteringDeviceDataRequestMeteringDevice[]
  5. {
  6. new importMeteringDeviceDataRequestMeteringDevice
  7. {
  8. TransportGUID = Guid.NewGuid().ToString(),
  9. Item = new MeteringDeviceFullInformationType
  10. {
  11. BasicChatacteristicts = new MeteringDeviceBasicCharacteristicsType
  12. {
  13. MeteringDeviceNumber = res.MeteringDeviceNumber,
  14. MeteringDeviceModel = res.MeteringDeviceModel,
  15. MeteringDeviceStamp = res.MeteringDeviceStamp, .... И.Т.Д
  16.  
  17. public async void ImportMeteringDataAdd()
  18. {
  19. inserted = 0;
  20. var importIPU = Task.Factory.StartNew(() =>
  21. {
  22. IsBusy = true;
  23. soapEntities db = new soapEntities();
  24. AuthClass auth = new Data.AuthClass();
  25. var service = new HouseManagementPortsTypeAsyncClient();
  26. service.ClientCredentials.UserName.UserName = auth.LoginEais;
  27. service.ClientCredentials.UserName.Password = auth.PasswordEais;
  28. List<string> accGuid = new List<string>();
  29. var r = db.eias_MeteringDevice.Include("eias_MeteringDevice_Account").Select(c => c).ToList();
  30. count = r.Count;
  31.  
  32. foreach (var res in r)
  33. {
  34. foreach (var item in res.eias_MeteringDevice_Account)
  35. {
  36. accGuid.Add(item.AccountGUID.ToString());
  37. }
  38.  
  39.  
  40. try
  41. {
  42. var request = new importMeteringDeviceDataRequest1
  43. {
  44.  
  45. RequestHeader = new RequestHeader
  46. {
  47.  
  48. Date = DateTime.Now,
  49. MessageGUID = Guid.NewGuid().ToString(),
  50. ItemElementName = ItemChoiceType.orgPPAGUID,
  51. Item = auth.GuidORG,
  52. IsOperatorSignature = true,
  53. IsOperatorSignatureSpecified = true
  54.  
  55.  
  56. },
  57. importMeteringDeviceDataRequest = new importMeteringDeviceDataRequest
  58. {
  59.  
  60. FIASHouseGuid = res.FIASHouseGUID.ToString(),
  61.  
  62. MeteringDevice = new importMeteringDeviceDataRequestMeteringDevice[]
  63. {
  64.  
  65. new importMeteringDeviceDataRequestMeteringDevice
  66. {
  67. TransportGUID = Guid.NewGuid().ToString(),
  68.  
  69. Item = new MeteringDeviceFullInformationType
  70.  
  71. {
  72.  
  73. BasicChatacteristicts = new MeteringDeviceBasicCharacteristicsType
  74. {
  75. MeteringDeviceNumber = res.MeteringDeviceNumber,
  76. MeteringDeviceModel = res.MeteringDeviceModel,
  77. MeteringDeviceStamp = res.MeteringDeviceStamp,
  78. CommissioningDate = res.CommissioningDate.Value,
  79. CommissioningDateSpecified = true ,
  80. // VerificationInterval = new nsiRef { }
  81. InstallationDate = res.InstallationDate.Value,
  82. RemoteMeteringMode = res.RemoteMeteringMode.Value,
  83. TemperatureSensor = res.TemperatureSensor.Value,
  84. PressureSensor =res.PressureSensor.Value ,
  85. Item = new MeteringDeviceBasicCharacteristicsTypeResidentialPremiseDevice
  86. {
  87.  
  88. AccountGUID = accGuid.ToArray() ,
  89. PremiseGUID = res.Residential_PremiseGUID.ToString().ToLower()
  90.  
  91. },
  92.  
  93.  
  94.  
  95. // // FirstVerificationDate = res.LastVerificationDate.Value
  96.  
  97.  
  98. },
  99. Item = true,
  100. Items = new MunicipalResourceNotElectricType[]
  101. {
  102. new MunicipalResourceNotElectricType
  103. {
  104. MeteringValue = res.MeteringValueT1.Value,//Первоначальное значение
  105. MunicipalResource = new Gis.Infrastructure.HouseManagementService.nsiRef
  106. {
  107. Code = res.MunicipalResource,
  108. GUID = res.MunicipalResourceGUID.ToString().ToLower()
  109. }
  110. }
  111. }
  112.  
  113.  
  114.  
  115.  
  116. }
  117. // }
  118. }
  119. }
  120. }
  121.  
  122. };
  123. var result = service.importMeteringDeviceData(request);
  124.  
  125.  
  126. GuidService gs = new GuidService
  127. {
  128. GuidID = new Guid(result.AckRequest.Ack.MessageGUID),
  129. DateGuid = DateTime.Now,
  130. MetodId = 14,
  131. Descript = result.AckRequest.Ack.RequesterMessageGUID,
  132. State = 1
  133. };
  134. db.GuidServices.Add(gs);
  135. db.SaveChanges();
  136.  
  137.  
  138. for (int i = 0; i < accGuid.Count; i++)
  139. {
  140.  
  141.  
  142. ImportMeteringDevice md = new Data.ImportMeteringDevice
  143. {
  144. GuidQ = new Guid(result.AckRequest.Ack.MessageGUID),
  145. AccountGUID = new Guid(accGuid[i].ToString()),
  146. // MetKey = res.met_key,
  147. State = 1
  148. };
  149. db.ImportMeteringDevices.Add(md);
  150. db.SaveChanges();
  151. }
  152.  
  153. inserted++;
  154. updateProgress(inserted);
  155.  
  156. }
  157.  
  158. catch (Exception e)
  159. {
  160. System.Windows.Forms.MessageBox.Show(e.Message.ToString());
  161. BrushSend = System.Windows.Media.Brushes.Red;
  162. inserted++;
  163. updateProgress(inserted);
  164. }
  165.  
  166. accGuid.Clear();
  167. }
  168. BrushSend = System.Windows.Media.Brushes.LimeGreen;
  169.  
  170. });
  171.  
  172. await importIPU;
  173. IsBusy = false;
  174. }
  175.  
  176. public async void ImportMeteringDataAdd()
  177. {
  178. IsBusy = true;
  179.  
  180. try
  181. {
  182. bool resultImport = await ImportIPU();
  183. if (resultImport)
  184. {
  185. BrushSend = System.Windows.Media.Brushes.LimeGreen;
  186. IsBusy = false;
  187. }
  188. }
  189.  
  190. catch (Exception e)
  191. {
  192. System.Windows.Forms.MessageBox.Show(e.Message.ToString());
  193. BrushSend = System.Windows.Media.Brushes.Red;
  194. inserted++;
  195. updateProgress(inserted);
  196. }
  197.  
  198. }
  199.  
  200. private async Task<bool> ImportIPU()
  201. {
  202. AuthClass auth = new Data.AuthClass();
  203. var service = await GetService(auth);
  204.  
  205. soapEntities db = new soapEntities();
  206. var ress = db.eias_MeteringDevice
  207. .Include("eias_MeteringDevice_Account")
  208. .Select(c => c)
  209. .ToList();
  210. count = ress.Count;
  211.  
  212. inserted = 0;
  213. List<string> accGuid;
  214. foreach (var res in ress)
  215. {
  216. accGuid = await GetListAccountGUID(res);
  217.  
  218. var request = await GetMeteringDeviceDataRequest(auth, res, accGuid);
  219. var result = service.importMeteringDeviceData(request);
  220.  
  221. SaveGuidService(result, db);
  222. SaveImportMeteringDevice(result, db, accGuid.Count);
  223.  
  224. inserted++;
  225. updateProgress(inserted);
  226. }
  227.  
  228. return true;
  229. }
  230.  
  231. //Вместо object нужно подставить тип res
  232. private Task<List<string>> GetListAccountGUID(object res)
  233. {
  234. var result = new List<string>();
  235.  
  236. foreach (var item in res.eias_MeteringDevice_Account())
  237. {
  238. result.Add(item.AccountGUID.ToString());
  239. }
  240.  
  241. return Task.FromResult(result);
  242. }
  243.  
  244. //Вместо object нужно подставить тип service
  245. private Task<object> GetService(AuthClass auth)
  246. {
  247. var service = new HouseManagementPortsTypeAsyncClient();
  248. service.ClientCredentials.UserName.UserName = auth.LoginEais;
  249. service.ClientCredentials.UserName.Password = auth.PasswordEais;
  250.  
  251. return Task.FromResult(service);
  252. }
  253.  
  254. //Вместо object нужно подставить тип res
  255. private Task<importMeteringDeviceDataRequest1> GetMeteringDeviceDataRequest(AuthClass auth, object res, List<string> accGuid)
  256. {
  257. var result = new importMeteringDeviceDataRequest1
  258. {
  259. RequestHeader = GetRequestHeader(auth),
  260. importMeteringDeviceDataRequest = GetCoreRequest(res, accGuid)
  261. };
  262.  
  263. return Task.FromResult(result);
  264. }
  265.  
  266. private RequestHeader GetRequestHeader(AuthClass auth)
  267. {
  268. var result = new RequestHeader
  269. {
  270.  
  271. Date = DateTime.Now,
  272. MessageGUID = Guid.NewGuid().ToString(),
  273. ItemElementName = ItemChoiceType.orgPPAGUID,
  274. Item = auth.GuidORG,
  275. IsOperatorSignature = true,
  276. IsOperatorSignatureSpecified = true
  277.  
  278.  
  279. };
  280.  
  281. return result;
  282. }
  283.  
  284. //Вместо object нужно подставить тип res
  285. private importMeteringDeviceDataRequest GetCoreRequest(object res, List<string> accGuid)
  286. {
  287. var result = new importMeteringDeviceDataRequest
  288. {
  289. FIASHouseGuid = res.FIASHouseGUID.ToString(),
  290. MeteringDevice = GetArrayMeteringDevice(res, accGuid)
  291. };
  292.  
  293. return result;
  294. }
  295.  
  296. private importMeteringDeviceDataRequestMeteringDevice[] GetArrayMeteringDevice(object res, List<string> accGuid)
  297. {
  298. var result = new importMeteringDeviceDataRequestMeteringDevice[]
  299. {
  300. //Принцип надеюсь вам понятен
  301. //Далее я думаю, вы справитесь самостоятельно:)
  302.  
  303. };
  304.  
  305. return result;
  306. }
  307.  
  308. //Вместо object нужно подставить тип result
  309. private void SaveGuidService(object result, soapEntities db)
  310. {
  311. GuidService gs = new GuidService
  312. {
  313. GuidID = new Guid(result.AckRequest.Ack.MessageGUID),
  314. DateGuid = DateTime.Now,
  315. MetodId = 14,
  316. Descript = result.AckRequest.Ack.RequesterMessageGUID,
  317. State = 1
  318. };
  319. db.GuidServices.Add(gs);
  320. db.SaveChanges();
  321. }
  322.  
  323. //Вместо object нужно подставить тип
  324. private void SaveImportMeteringDevice(object result, soapEntities db, int count)
  325. {
  326. for (int i = 0; i < count; i++)
  327. {
  328. ImportMeteringDevice md = new Data.ImportMeteringDevice
  329. {
  330. GuidQ = new Guid(result.AckRequest.Ack.MessageGUID),
  331. AccountGUID = new Guid(accGuid[i].ToString()),
  332. // MetKey = res.met_key,
  333. State = 1
  334. };
  335. db.ImportMeteringDevices.Add(md);
  336. db.SaveChanges();
  337. }
  338. }
  339. }
Add Comment
Please, Sign In to add comment