using Newtonsoft.Json.Linq; using PTMedicalInsurance.Helper; using PTMedicalInsurance.Variables; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PTMedicalInsurance.Business { class ProcessManager { private List Processes { get; set; } public ProcessManager() { Processes = new List(); } public ProcessManager(List processes) { Processes = processes; } /// /// 增加单个处理流程 /// /// public ProcessManager Add(AbstractProcess process) { Processes.Add(process); return this; } /// /// 运行 /// /// /// public string Run(JObject input) { JObject orginalInput = (JObject)input?.DeepClone(); string data = ""; int code = 0; // 按顺序执行业务 foreach (var process in Processes) { if (process.UseOrginal) { process.OrginalInput = orginalInput; input = orginalInput; //原始参数 } var ret = process.Process(input); data = ret.Data; code = ret.Code; if (code < 0) { //异常 if (string.IsNullOrEmpty(data)) { data = ret.ErrMsg; } break; } if (!string.IsNullOrEmpty(data)) { input = JObject.Parse(data); } } JObject rtn = JObject.Parse(data); //返回值检测(兼容) if (!rtn.ContainsKey("errorCode")) { rtn = JsonHelper.setIrisReturnValue(code, "",rtn); Global.writeLog("异常返回值检测", data, rtn.ToString()); } return rtn.ToString(); } } }