ProcessManager.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using Newtonsoft.Json.Linq;
  2. using PTMedicalInsurance.Helper;
  3. using PTMedicalInsurance.Variables;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace PTMedicalInsurance.Business
  10. {
  11. class ProcessManager
  12. {
  13. private List<AbstractProcess> Processes { get; set; }
  14. public ProcessManager()
  15. {
  16. Processes = new List<AbstractProcess>();
  17. }
  18. public ProcessManager(List<AbstractProcess> processes)
  19. {
  20. Processes = processes;
  21. }
  22. /// <summary>
  23. /// 增加单个处理流程
  24. /// </summary>
  25. /// <param name="process"></param>
  26. public ProcessManager Add(AbstractProcess process)
  27. {
  28. Processes.Add(process);
  29. return this;
  30. }
  31. /// <summary>
  32. /// 运行
  33. /// </summary>
  34. /// <param name="input"></param>
  35. /// <returns></returns>
  36. public string Run(JObject input)
  37. {
  38. JObject orginalInput = (JObject)input?.DeepClone();
  39. string data = "";
  40. int code = 0;
  41. // 按顺序执行业务
  42. foreach (var process in Processes)
  43. {
  44. if (process.UseOrginal) {
  45. process.OrginalInput = orginalInput;
  46. input = orginalInput; //原始参数
  47. }
  48. var ret = process.Process(input);
  49. data = ret.Data;
  50. code = ret.Code;
  51. if (code < 0)
  52. {
  53. //异常
  54. if (string.IsNullOrEmpty(data))
  55. {
  56. data = ret.ErrMsg;
  57. }
  58. break;
  59. }
  60. if (!string.IsNullOrEmpty(data))
  61. {
  62. input = JObject.Parse(data);
  63. }
  64. }
  65. JObject rtn = JObject.Parse(data);
  66. //返回值检测(兼容)
  67. if (!rtn.ContainsKey("errorCode"))
  68. {
  69. rtn = JsonHelper.setIrisReturnValue(code, "",rtn);
  70. Global.writeLog("异常返回值检测", data, rtn.ToString());
  71. }
  72. return rtn.ToString();
  73. }
  74. }
  75. }