public Result CancelDeviceOperateSchedule([FromBody] DeviceOperateSchedule schedule)
        {
            var qId = schedule.Id;
            var old = DeviceOperateScheduleHelper.GetOpDetail(qId);

            if (old == null)
            {
                return(Result.GenError <Result>(Error.DeviceOperateScheduleNotExist));
            }
            //if (old.OperatorId != schedule.OperatorId)
            //{
            //    return Result.GenError<Result>(Error.DeviceOperateScheduleOperatorError);
            //}
            if (old.State != DeviceOperateScheduleState.未开始)
            {
                return(Result.GenError <Result>(Error.DeviceOperateScheduleNotWait));
            }

            var optor = schedule.OperatorId != 0 ? DeviceOperateOperatorHelper.GetDetail(schedule.OpId, schedule.OperatorId) : null;

            schedule.OperatorId = optor?.Id ?? 0;
            var userId         = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            old.MarkedDateTime = markedDateTime;
            var log = ClassExtension.CopyTo <DeviceOperateScheduleDetail, DeviceOperateLog>(old);

            log.Type         = DeviceOperateLogType.延后;
            log.CreateUserId = userId;
            log.EndTime      = markedDateTime;
            DeviceOperateScheduleHelper.BackSchedule(old);
            DeviceOperateLogHelper.Instance.Add(log);
            return(Result.GenError <Result>(Error.Success));
        }
        public Result CompleteDeviceOperateSchedule([FromBody] DeviceOperateSchedule schedule)
        {
            var qId = schedule.Id;
            var old = DeviceOperateScheduleHelper.GetOpDetail(qId);

            if (old == null)
            {
                return(Result.GenError <Result>(Error.DeviceOperateScheduleNotExist));
            }
            var opr = DeviceOperateOperatorHelper.GetDetail(schedule.OpId, schedule.OperatorId);

            if (opr == null)
            {
                return(Result.GenError <Result>(Error.DeviceOperateOperatorNotExist));
            }
            schedule.OperatorId = opr.Id;
            if (old.OperatorId != schedule.OperatorId)
            {
                return(Result.GenError <Result>(Error.DeviceOperateScheduleOperatorError));
            }
            if (old.State == DeviceOperateScheduleState.未开始)
            {
                return(Result.GenError <Result>(Error.DeviceOperateScheduleNotStart));
            }

            var optor = DeviceOperateOperatorHelper.Instance.Get <DeviceOperateOperator>(schedule.OperatorId);

            if (optor == null)
            {
                return(Result.GenError <Result>(Error.DeviceOperateOperatorIsExist));
            }
            var userId         = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            if (old.State == DeviceOperateScheduleState.进行中)
            {
                var total = (int)(markedDateTime - old.StartTime).TotalSeconds;
                old.OpCost += total;
            }
            else if (old.State == DeviceOperateScheduleState.已暂停)
            {
                var total = (int)(markedDateTime - old.StartTime).TotalSeconds;
                old.OpCost += total;
            }
            old.MarkedDateTime = markedDateTime;
            old.EndTime        = markedDateTime;
            old.EndCount++;
            var log = ClassExtension.CopyTo <DeviceOperateScheduleDetail, DeviceOperateLog>(old);

            log.CreateUserId = userId;
            log.Type         = DeviceOperateLogType.完成;
            old.LastLogId    = DeviceOperateLogHelper.Instance.AddBackId(log);
            DeviceOperateScheduleHelper.CompleteSchedule(old);
            return(Result.GenError <Result>(Error.Success));
        }
        public DataResult GetDeviceOperateSchedule([FromQuery] bool menu, int opId, int qId)
        {
            var result = new DataResult();

            result.datas.AddRange(menu
                ? DeviceOperateScheduleHelper.GetMenus(opId, qId)
                : DeviceOperateScheduleHelper.GetOpTimeDetails(opId, qId));
            if (qId != 0 && !result.datas.Any())
            {
                result.errno = Error.DeviceOperateScheduleNotExist;
                return(result);
            }
            return(result);
        }
        public Result StartDeviceOperateSchedule([FromBody] DeviceOperateSchedule schedule)
        {
            var qId = schedule.Id;
            var old = DeviceOperateScheduleHelper.GetOpDetail(qId);

            if (old == null)
            {
                return(Result.GenError <Result>(Error.DeviceOperateScheduleNotExist));
            }
            var opr = DeviceOperateOperatorHelper.GetDetail(schedule.OpId, schedule.OperatorId);

            if (opr == null)
            {
                return(Result.GenError <Result>(Error.DeviceOperateOperatorNotExist));
            }
            schedule.OperatorId = opr.Id;
            if (old.OperatorId != schedule.OperatorId)
            {
                return(Result.GenError <Result>(Error.DeviceOperateScheduleOperatorError));
            }
            if (old.State == DeviceOperateScheduleState.进行中)
            {
                return(Result.GenError <Result>(Error.DeviceOperateScheduleDoing));
            }

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

            if (old.State == DeviceOperateScheduleState.已暂停)
            {
                var total = (int)(markedDateTime - old.PauseTime).TotalSeconds;
                old.PauseCost += total;
            }
            old.MarkedDateTime = markedDateTime;
            old.FirstStartTime = old.FirstStartTime == default(DateTime) ? markedDateTime : old.FirstStartTime;
            old.StartTime      = markedDateTime;
            old.StartCount++;
            old.Remark = schedule.Remark ?? old.Remark;
            var log = ClassExtension.CopyTo <DeviceOperateScheduleDetail, DeviceOperateLog>(old);

            log.CreateUserId = userId;
            log.Type         = DeviceOperateLogType.开始;
            DeviceOperateScheduleHelper.StartSchedule(old);
            DeviceOperateLogHelper.Instance.Add(log);
            return(Result.GenError <Result>(Error.Success));
        }
        public Result ConfirmDeviceOperateSchedule([FromBody] DeviceOperateSchedule schedule)
        {
            var qId = schedule.Id;
            var old = DeviceOperateScheduleHelper.GetOpDetail(qId);

            if (old == null)
            {
                return(Result.GenError <Result>(Error.DeviceOperateScheduleNotExist));
            }

            //if (old.OperatorId != schedule.OperatorId)
            //{
            //    return Result.GenError<Result>(Error.DeviceOperateScheduleOperatorError);
            //}
            if (old.State != DeviceOperateScheduleState.待检验)
            {
                return(Result.GenError <Result>(Error.DeviceOperateScheduleNotComplete));
            }

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

            old.MarkedDateTime = markedDateTime;
            old.Remark         = schedule.Remark ?? old.Remark;
            old.ConfirmId      = account?.Id ?? 0;
            old.ConfirmTime    = markedDateTime;
            old.IsPass         = schedule.IsPass;
            if (old.IsPass)
            {
                old.PassCount++;
            }
            else
            {
                old.FailCount++;
            }

            var log = ClassExtension.CopyTo <DeviceOperateScheduleDetail, DeviceOperateLog>(old);

            log.CreateUserId = userId;
            log.Type         = DeviceOperateLogType.检验;
            log.Id           = old.LastLogId;
            DeviceOperateScheduleHelper.ConfirmSchedule(old, log);
            return(Result.GenError <Result>(Error.Success));
        }