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);
        }
        public Result PutSmartWorkOrder([FromBody] IEnumerable <SmartWorkOrder> workOrders)
        {
            if (workOrders == null || !workOrders.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (workOrders.Any(x => x.WorkOrder.IsNullOrEmpty()))
            {
                return(Result.GenError <Result>(Error.SmartWorkOrderNotEmpty));
            }
            if (workOrders.GroupBy(x => x.WorkOrder).Any(y => y.Count() > 1))
            {
                return(Result.GenError <Result>(Error.SmartWorkOrderDuplicate));
            }

            var wId   = workOrders.FirstOrDefault()?.WorkshopId ?? 0;
            var sames = workOrders.Select(x => x.WorkOrder);
            var ids   = workOrders.Select(x => x.Id);

            if (SmartWorkOrderHelper.GetHaveSame(wId, sames, ids))
            {
                return(Result.GenError <Result>(Error.SmartWorkOrderIsExist));
            }

            var cnt = SmartWorkOrderHelper.Instance.GetCountByIds(ids);

            if (cnt != workOrders.Count())
            {
                return(Result.GenError <Result>(Error.SmartWorkOrderNotExist));
            }

            var markedDateTime = DateTime.Now;

            foreach (var workOrder in workOrders)
            {
                workOrder.MarkedDateTime = markedDateTime;
                workOrder.Remark         = workOrder.Remark ?? "";
            }

            SmartWorkOrderHelper.Instance.Update(workOrders);
            return(Result.GenError <Result>(Error.Success));
        }
        public Result PostSmartWorkOrder([FromBody] IEnumerable <SmartWorkOrder> workOrders)
        {
            if (workOrders == null || !workOrders.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (workOrders.Any(x => x.WorkOrder.IsNullOrEmpty()))
            {
                return(Result.GenError <Result>(Error.SmartWorkOrderNotEmpty));
            }
            if (workOrders.GroupBy(x => x.WorkOrder).Any(y => y.Count() > 1))
            {
                return(Result.GenError <Result>(Error.SmartWorkOrderDuplicate));
            }

            var wId   = workOrders.FirstOrDefault()?.WorkshopId ?? 0;
            var sames = workOrders.Select(x => x.WorkOrder);

            if (SmartWorkOrderHelper.GetHaveSame(wId, sames))
            {
                return(Result.GenError <Result>(Error.SmartWorkOrderIsExist));
            }

            var userId         = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            foreach (var workOrder in workOrders)
            {
                workOrder.CreateUserId   = userId;
                workOrder.MarkedDateTime = markedDateTime;
                workOrder.Remark         = workOrder.Remark ?? "";
            }

            SmartWorkOrderHelper.Instance.Add(workOrders);
            return(Result.GenError <Result>(Error.Success));
        }