Пример #1
0
        public BaseResponse <TaskRecordModel> ChangeTask(TaskRecordFilter filter)
        {
            var result = new BaseResponse <TaskRecordModel>();

            try
            {
                bool isAudit = false;
                unitOfWork.BeginTransaction();
                var TaskModel = base.Get <DC_Task, TaskModel>((q) => q.TaskID == filter.TaskID);
                if (TaskModel != null)
                {
                    //pc端管理员改签,直接审核通过
                    //app端如果改签时间超过了一天,则需要审核
                    TimeSpan?ts = filter.AppointmentTime - TaskModel.Data.AppointmentTime;
                    if (filter.IsAudit || (ts.HasValue && System.Math.Abs(ts.Value.TotalSeconds) <= 24 * 60 * 60))
                    {
                        isAudit = true;
                        TaskModel.Data.AppointmentTime = filter.AppointmentTime;
                        TaskModel.Data.IsChange        = true;
                        base.Save <DC_Task, TaskModel>(TaskModel.Data, (q) => q.TaskID == filter.TaskID);

                        var taskDispatchRecord = unitOfWork.GetRepository <DC_DispathTaskRecord>().dbSet.Where(a => a.OrderID == TaskModel.Data.ServiceOrderID).FirstOrDefault();
                        if (taskDispatchRecord == null)
                        {
                            taskDispatchRecord            = new DC_DispathTaskRecord();
                            taskDispatchRecord.EmployeeID = TaskModel.Data.EmployeeId;
                            taskDispatchRecord.WorkTime   = TaskModel.Data.AppointmentTime;
                            taskDispatchRecord.ClientName = TaskModel.Data.PersonName;
                            taskDispatchRecord.OrderID    = TaskModel.Data.ServiceOrderID;
                            unitOfWork.GetRepository <DC_DispathTaskRecord>().Insert(taskDispatchRecord);
                        }
                        else
                        {
                            taskDispatchRecord.EmployeeID = TaskModel.Data.EmployeeId;
                            taskDispatchRecord.WorkTime   = TaskModel.Data.AppointmentTime;
                            taskDispatchRecord.ClientName = TaskModel.Data.PersonName;
                            unitOfWork.GetRepository <DC_DispathTaskRecord>().Update(taskDispatchRecord);
                        }
                    }

                    TaskRecordModel TaskRecordModel = new TaskRecordModel();
                    TaskRecordModel.ServiceTime  = filter.AppointmentTime;
                    TaskRecordModel.ChangeTime   = DateTime.Now;
                    TaskRecordModel.CreatedBy    = 0;
                    TaskRecordModel.CreatedTime  = DateTime.Now;
                    TaskRecordModel.IsAudit      = isAudit;
                    TaskRecordModel.IsDeleted    = false;
                    TaskRecordModel.ModifiedBy   = 0;
                    TaskRecordModel.ModifiedTime = DateTime.Now;
                    TaskRecordModel.TaskID       = filter.TaskID;
                    TaskRecordModel.Reason       = filter.Result;
                    base.Save <DC_TaskChangeRecord, TaskRecordModel>(TaskRecordModel, (q) => false);
                    result.Data = TaskRecordModel;
                }
                unitOfWork.Commit();
                result.IsSuccess = true;
            }
            catch (Exception ex)
            {
                result.IsSuccess     = false;
                result.ResultCode    = 500;
                result.ResultMessage = ex.Message;
            }
            return(result);
        }
Пример #2
0
        public BaseResponse <TaskModel> SaveTask(TaskModel request)
        {
            BaseResponse <TaskModel> response = new BaseResponse <TaskModel>();

            if (request.Status == Enum.GetName(typeof(TaskStatus), TaskStatus.Execution) || request.Status == Enum.GetName(typeof(TaskStatus), TaskStatus.Finish))
            {
                var status = Enum.GetName(typeof(RefundStatus), RefundStatus.Wait);
                //查看是否存在退款中
                var refund = unitOfWork.GetRepository <DC_RefundRecord>().dbSet.FirstOrDefault(a => a.ServiceOrderID == request.ServiceOrderID && a.Status == status);
                if (refund != null)
                {
                    response.IsSuccess     = false;
                    response.ResultMessage = "此订单用户已申请退款。";
                    return(response);
                }
            }

            response = base.Save <DC_Task, TaskModel>(request, (q) => q.TaskID == request.TaskID);
            if (response.IsSuccess)
            {
                if (response.Data.Status == Enum.GetName(typeof(TaskStatus), TaskStatus.Assign) || response.Data.Status == Enum.GetName(typeof(TaskStatus), TaskStatus.Finish))
                {
                    var serviceOrderRepository = unitOfWork.GetRepository <DC_ServiceOrder>();
                    var serviceOrder           = serviceOrderRepository.dbSet.Where(a => a.ServiceOrderID == response.Data.ServiceOrderID).FirstOrDefault();
                    var orderStatus            = Enum.GetName(typeof(OrderStatus), OrderStatus.Delivered);
                    if (response.Data.Status == Enum.GetName(typeof(TaskStatus), TaskStatus.Finish))
                    {
                        orderStatus = Enum.GetName(typeof(OrderStatus), OrderStatus.Finish);
                        serviceOrder.PaymentStatus = Enum.GetName(typeof(PaymentStatus), PaymentStatus.Paid);

                        if (serviceOrder.Payment == Enum.GetName(typeof(Payment), Payment.Cash))
                        {
                            var feeDetail = new DC_FeeDetail();
                            feeDetail.FeeNo          = base.GenerateCode(EnumCodeKey.FeeDetailCode, EnumCodeRule.YearMonthDay, "F", 6, response.Data.OrganizationID);
                            feeDetail.ServiceOrderID = serviceOrder.ServiceOrderID;
                            feeDetail.FeeName        = serviceOrder.OrderTitle;
                            feeDetail.TotalPrice     = -1 * serviceOrder.Price;
                            feeDetail.FeeDate        = DateTime.Now;
                            feeDetail.ResidentID     = serviceOrder.ResidentID;
                            unitOfWork.GetRepository <DC_FeeDetail>().Insert(feeDetail);
                        }
                    }

                    if (response.Data.Status == Enum.GetName(typeof(TaskStatus), TaskStatus.Assign))
                    {
                        serviceOrder.SelEmployeeID = response.Data.EmployeeId;
                    }

                    serviceOrder.OrderStatus  = orderStatus;
                    serviceOrder.ModifiedTime = DateTime.Now;
                    serviceOrderRepository.Update(serviceOrder);

                    if (response.Data.Status == Enum.GetName(typeof(TaskStatus), TaskStatus.Assign))
                    {
                        var taskDispatchRecord = unitOfWork.GetRepository <DC_DispathTaskRecord>().dbSet.Where(a => a.OrderID == serviceOrder.ServiceOrderID).FirstOrDefault();
                        if (taskDispatchRecord == null)
                        {
                            taskDispatchRecord            = new DC_DispathTaskRecord();
                            taskDispatchRecord.EmployeeID = response.Data.EmployeeId;
                            taskDispatchRecord.WorkTime   = response.Data.AppointmentTime;
                            taskDispatchRecord.ClientName = response.Data.PersonName;
                            taskDispatchRecord.OrderID    = serviceOrder.ServiceOrderID;
                            unitOfWork.GetRepository <DC_DispathTaskRecord>().Insert(taskDispatchRecord);
                        }
                        else
                        {
                            taskDispatchRecord.EmployeeID = response.Data.EmployeeId;
                            taskDispatchRecord.WorkTime   = response.Data.AppointmentTime;
                            taskDispatchRecord.ClientName = response.Data.PersonName;
                            unitOfWork.GetRepository <DC_DispathTaskRecord>().Update(taskDispatchRecord);
                        }
                    }

                    unitOfWork.Save();
                }
            }

            return(response);
        }