public DataResult GetSmartWorkOrder([FromQuery] int qId, int wId, bool menu)
        {
            var result = new DataResult();

            if (menu)
            {
                var data = SmartWorkOrderHelper.GetMenu(qId, wId);
                if (qId != 0 && !data.Any())
                {
                    result.errno = Error.SmartWorkOrderNotExist;
                    return(result);
                }
                result.datas.AddRange(data);
            }
            else
            {
                var data = SmartWorkOrderHelper.GetDetail(qId, wId).Select(ClassExtension.ParentCopyToChild <SmartWorkOrder, SmartWorkOrderDetail>);
                if (qId != 0 && !menu)
                {
                    var d = data.First();
                    if (d.State != SmartWorkOrderState.未加工)
                    {
                        var taskOrders = SmartTaskOrderHelper.GetDetailByWorkOrderId(d.Id);
                        var flowCards  = SmartFlowCardHelper.GetSmartFlowCardsByTaskOrderIds(taskOrders.Select(x => x.Id));
                        var processes  = SmartFlowCardProcessHelper.GetSmartFlowCardProcessesByFlowCardIds(flowCards.Select(x => x.Id));
                        if (processes.Any())
                        {
                            var st = processes.Where(x => x.StartTime != default(DateTime)).Min(y => y.StartTime);
                            var et = processes.Where(x => x.EndTime != default(DateTime)).Min(y => y.EndTime);
                            if (d.State == SmartWorkOrderState.已完成 || d.State == SmartWorkOrderState.已取消)
                            {
                                d.Consume = (int)(et - st).TotalSeconds;
                            }
                            else
                            {
                                d.Consume = (int)(DateTime.Now - st).TotalSeconds;
                            }
                        }
                    }
                }
                result.datas.AddRange(data);
            }
            if (qId != 0 && !result.datas.Any())
            {
                result.errno = Error.SmartWorkOrderNotExist;
                return(result);
            }
            return(result);
        }