Пример #1
0
        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);
        }