public object GetProduction([FromQuery] int qId, int wId, bool menu, bool step) { if (step && qId != 0) { var data = ProductionHelper.GetDetail(wId, qId); var flowIds = data.SelectMany(x => x.FlowIds); if (flowIds.Any()) { var flows = FlowCodeHelper.Instance.GetByIds <FlowCode>(flowIds).ToDictionary(x => x.Id); foreach (var d in data) { d.Flows = d.FlowIds.Where(flowId => flows.ContainsKey(flowId)).Select(flowId => flows[flowId].Code).Join(); } } var pIds = data.Select(x => x.Id); if (pIds.Any()) { var args = ProductionArgHelper.GetDetails(pIds, null); var stepIds = data.SelectMany(x => x.Args.Select(y => y.StepId)); var steps = stepIds.Any() ? FlowStepHelper.Instance.GetByIds <FlowStep>(stepIds).ToDictionary(x => x.Id) : new Dictionary <int, FlowStep>(); foreach (var d in data) { d.Args.AddRange(args.Where(x => x.ProductionId == d.Id).Select(x => { var y = ClassExtension.ParentCopyToChild <ProductionArg, ProductionArgFormat>(x); y.FormatId = steps.ContainsKey(x.StepId) ? steps[x.StepId].FormatId : 0; return(y); })); } } return(new { errno = 0, errmsg = "成功", datas = data }); } var result = new DataResult(); if (menu) { result.datas.AddRange(ProductionHelper.GetMenu(wId, qId)); } else { var data = ProductionHelper.GetDetail(wId, qId); var flowIds = data.SelectMany(x => x.FlowIds); if (flowIds.Any()) { var flows = FlowCodeHelper.Instance.GetByIds <FlowCode>(flowIds).ToDictionary(x => x.Id); foreach (var d in data) { d.Flows = d.FlowIds.Where(flowId => flows.ContainsKey(flowId)).Select(flowId => flows[flowId].Code).Join(); } } result.datas.AddRange(data); } if (qId != 0 && !result.datas.Any()) { result.errno = Error.ProductionNotExist; return(result); } return(result); }