AdcSctWorker.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using Ips.Library.Basic;
  2. using Ips.Library.DxpLib;
  3. using Ips.Sps.Scheduling.Entities;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace Ips.Sps.Scheduling.SigAds
  10. {
  11. public class AdcSctWorker : AdWorkerBase
  12. {
  13. public AdcSctWorker(RunTsk Tsk) : base(Tsk)
  14. {
  15. }
  16. private DateTime _prevAdRefTime = DateTime.MinValue;
  17. public override void Execute(CancellationToken token)
  18. {
  19. var tsk = CurrentTsk;
  20. var adc = CurrentTsk.AdCard;
  21. foreach (var tarSig in tsk.TarSigList)
  22. {
  23. var adFreq = tarSig.FreqStart;
  24. do
  25. {
  26. for (int i = 0; i < ToolConfig.GetAppSetting("ScoutAdTimes").To(3); i++)
  27. {
  28. var groupTime = DateTime.Now.ClearMillisecond();
  29. var adGroup = new AdSigGroup(tsk.TskId, groupTime);
  30. OnAdSigGroupStart(new AdSigGroupStartEventArgs(adGroup));
  31. try
  32. {
  33. token.ThrowIfCancellationRequested();
  34. if ((DateTime.Now - _prevAdRefTime).Minutes > 5)
  35. {
  36. foreach (var refSig in tsk.RefSigList)
  37. {
  38. token.ThrowIfCancellationRequested();
  39. var refAdRes = ExecuteAdc(adc, refSig, token);
  40. var refSigRes = WrapSigAdResult(tsk, adGroup, adc, refSig, refAdRes.Result);
  41. if (refSigRes != null)
  42. adGroup.GroupSigList.Add(refSigRes);
  43. }
  44. _prevAdRefTime = DateTime.Now;
  45. }
  46. var adSig = tarSig.Copy();
  47. adSig.SigFreq = adFreq;
  48. var adcResult = ExecuteAdc(adc, adSig, token);
  49. var sigAdResult = WrapSigAdResult(tsk, adGroup, adc, adSig, adcResult.Result);
  50. if (sigAdResult != null)
  51. adGroup.GroupSigList.Add(sigAdResult);
  52. }
  53. catch (Exception ex)
  54. {
  55. ex.HandleCancelEx(m =>
  56. {
  57. IpsLogger.Error($"任务【{tsk.TskName}】,执行采集异常",m);
  58. });
  59. }
  60. finally
  61. {
  62. adGroup.GroupSigList.CompleteAdding();
  63. }
  64. }
  65. adFreq += tarSig.FreqStep;
  66. } while (adFreq <= tarSig.FreqEnd);
  67. }
  68. }
  69. }
  70. }