Пример #1
0
        public JsonResult DispatchRequest(RequestInfo requestInfo, DispatchInfo dispatchInfo)
        {
            if (CheckSession(false) == false)
            {
                return(Json(ResultModelBase.CreateTimeoutModel(), JsonRequestBehavior.AllowGet));
            }
            if (CheckSessionID() == false)
            {
                return(Json(ResultModelBase.CreateLogoutModel(), JsonRequestBehavior.AllowGet));
            }

            ResultModelBase result = new ResultModelBase();

            try
            {
                List <DispatchInfo> dispatchInfos = this.dispatchDao.GetOpenDispatchesByRequestID(requestInfo.ID);
                foreach (DispatchInfo dispatch in dispatchInfos)
                {
                    if (dispatch.Engineer.ID == dispatchInfo.Engineer.ID)
                    {
                        result.SetFailed(ResultCodes.ParameterError, "该工程师已被派工且未完成");
                        return(JsonResult(result));
                    }
                }
                this.requestManager.DispatchRequest(requestInfo, dispatchInfo, GetLoginUser());
            }
            catch (Exception ex)
            {
                NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message);
                result.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage);
            }
            return(JsonResult(result));
        }
Пример #2
0
        /// <summary>
        /// 通过请求编号获取最新派工单信息
        /// </summary>
        /// <param name="id">请求编号</param>
        /// <returns>最新派工单信息</returns>
        public JsonResult GetDispatchByRequestID(int id)
        {
            ResultModel <DispatchInfo> result = new ResultModel <DispatchInfo>();

            if (CheckSession(false) == false)
            {
                return(Json(ResultModelBase.CreateTimeoutModel(), JsonRequestBehavior.AllowGet));
            }
            if (CheckSessionID() == false)
            {
                return(Json(ResultModelBase.CreateLogoutModel(), JsonRequestBehavior.AllowGet));
            }
            try
            {
                DispatchInfo dispatchInfo = this.dispatchDao.GetDispatchByRequestID(id);
                if (dispatchInfo != null)
                {
                    UserInfo userInfo = userManager.GetUser(dispatchInfo.Engineer.ID);
                    if (userInfo != null)
                    {
                        dispatchInfo.Engineer.Name = userInfo.Name;
                    }
                    result.Data = dispatchInfo;
                }
            }
            catch (Exception ex)
            {
                NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message);
                result.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage);
            }
            return(JsonResult(result));
        }
Пример #3
0
        public JsonResult SaveDispatchReport(DispatchReportInfo dispatchReport)
        {
            ResultModelBase result = new ResultModelBase();

            if (CheckSession() == false)
            {
                return(Json(ResultModelBase.CreateTimeoutModel(), JsonRequestBehavior.AllowGet));
            }
            if (CheckSessionID() == false)
            {
                return(Json(ResultModelBase.CreateLogoutModel(), JsonRequestBehavior.AllowGet));
            }
            try
            {
                DispatchInfo dispatch = this.dispatchManager.GetDispatchByID(dispatchReport.Dispatch.ID);
                if (dispatch.DispatchReport.Status.ID != DispatchInfo.DocStatus.New)
                {
                    result.SetFailed(ResultCodes.ParameterError, "不可重复提交");
                }
                else
                {
                    this.dispatchManager.SaveDispatchReport(dispatchReport, GetLoginUser());
                }
            }
            catch (Exception ex)
            {
                NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message);
                result.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage);
            }
            return(JsonResult(result));
        }
Пример #4
0
        /// <summary>
        /// 根据请求id获取最新派工单信息信息
        /// </summary>
        /// <param name="id">请求编号</param>
        /// <returns>派工单信息</returns>
        public DispatchInfo GetDispatchByRequestID(int id)
        {
            DispatchInfo dispatchInfo = new DispatchInfo();

            dispatchInfo = this.dispatchDao.GetDispatchByRequestID(id);
            if (dispatchInfo == null)
            {
                dispatchInfo = new DispatchInfo();
            }

            List <HistoryInfo> histories = this.historyDao.GetHistories(ObjectTypes.Dispatch, dispatchInfo.ID);

            if (histories != null && histories.Count > 0)
            {
                foreach (HistoryInfo history in histories)
                {
                    history.Action.Name = DispatchInfo.Actions.GetDesc(history.Action.ID);
                }
                dispatchInfo.Histories = histories;
                dispatchInfo.SetHis4Comments();
            }
            dispatchInfo.Request  = this.requestManager.GetRequest(id);
            dispatchInfo.Engineer = userManager.GetUser(dispatchInfo.Engineer.ID);

            return(dispatchInfo);
        }
Пример #5
0
        /// <summary>
        /// 通过派工单编号获取派工单信息
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="dispatchID">派工单编号</param>
        /// <param name="userID">用户ID</param>
        /// <param name="sessionID">当前请求所在设备储存的SessionID</param>
        /// <returns>派工单信息</returns>
        public JsonResult GetDispatchByID(int userID, string sessionID, int dispatchID)
        {
            ServiceResultModel <DispatchInfo> response = new ServiceResultModel <DispatchInfo>();

            try
            {
                if (!CheckSessionID(userID, sessionID, response))
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }
                UserInfo user = null;
                if (CheckUser(userID, response, out user) == false)
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }

                DispatchInfo info = this.dispatchManager.GetDispatchByID(dispatchID);

                if (info == null)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工单不存在");
                }
                else
                {
                    response.Data = info.Copy4App();
                }
            }
            catch (Exception ex)
            {
                NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message);
                response.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage);
            }

            return(MyJson(response, JsonRequestBehavior.AllowGet));
        }
Пример #6
0
        /// <summary>
        /// 服务凭证填写页面
        /// </summary>
        /// <param name="actionName">上级页面名称</param>
        /// <param name="dispatchID">派工单编号</param>
        /// <param name="dispatchJournalID">服务凭证编号</param>
        /// <param name="dispatchReportID">作业报告编号</param>
        /// <param name="requestType">派工类型</param>
        /// <returns>服务凭证填写页面</returns>
        public ActionResult DispatchJournalDetail(string actionName, int dispatchID, int dispatchJournalID = 0, int dispatchReportID = 0, int requestType = 0)
        {
            if (!CheckSession())
            {
                Response.Redirect(Url.Action(ConstDefinition.HOME_ACTION, ConstDefinition.HOME_CONTROLLER), true);
                return(null);
            }
            ViewBag.ActionName       = actionName;
            ViewBag.DispatchID       = dispatchID;
            ViewBag.DispatchReportID = dispatchReportID;
            ViewBag.ID              = dispatchJournalID;
            ViewBag.RequestTypeID   = requestType;
            ViewBag.RequestTypeName = LookupManager.GetRequestTypeDesc(requestType);

            DispatchInfo info = this.dispatchDao.GetDispatchByID(dispatchID);

            if (GetLoginUser().Role.ID == UserRole.SuperAdmin || GetLoginUser().Role.ID == UserRole.SuperUser)
            {
                return(View("DispatchJournalApproveDetail"));
            }
            if (info.DispatchJournal.Status.ID > DispatchJournalInfo.DispatchJournalStatus.New)
            {
                ViewBag.DispatchReportID = info.DispatchReport.ID;
                ViewBag.ID = info.DispatchJournal.ID;
                return(View("DispatchJournalApproveDetail"));
            }
            else
            {
                return(View());
            }
        }
Пример #7
0
        /// <summary>
        /// 通过请求编号获取最新派工单信息
        /// </summary>
        /// <param name="id">请求编号</param>
        /// <param name="userID">用户ID</param>
        /// <param name="sessionID">当前请求所在设备储存的SessionID</param>
        /// <returns>派工单信息</returns>
        public JsonResult GetDispatchByRequestID(int userID, string sessionID, int id)
        {
            ServiceResultModel <DispatchInfo> response = new ServiceResultModel <DispatchInfo>();

            try
            {
                if (!CheckSessionID(userID, sessionID, response))
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }
                DispatchInfo dispatchInfo = this.dispatchDao.GetDispatchByRequestID(id);
                if (dispatchInfo != null)
                {
                    UserInfo userInfo = userManager.GetUser(dispatchInfo.Engineer.ID);
                    dispatchInfo.Engineer.Name = userInfo.Name;
                    response.Data = dispatchInfo;
                }
            }
            catch (Exception ex)
            {
                NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message);
                response.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage);
            }
            return(MyJson(response, JsonRequestBehavior.AllowGet));
        }
Пример #8
0
        /// <summary>
        /// 根据设备编号获取生命周期信息
        /// </summary>
        /// <param name="equipmentID">设备ID</param>
        /// <returns>生命周期信息</returns>
        public List <DispatchInfo> GetTimeLine(int equipmentID)
        {
            List <DispatchInfo> dispatchInfo = new List <DispatchInfo>();

            sqlStr = "SELECT dr.SolutionWay, dr.Comments, d.* FROM tblRequest AS r " +
                     " LEFT JOIN jctRequestEqpt AS jc ON jc.RequestID = r.ID " +
                     " LEFT JOIN tblDispatch AS d ON d.RequestID = r.ID " +
                     " LEFT JOIN tblDispatchReport AS dr ON dr.DispatchID = d.ID " +
                     " WHERE jc.EquipmentID = @EquipmentID AND d.EndDate IS NOT NULL " +
                     " ORDER BY d.EndDate DESC, d.ID";

            using (SqlCommand command = ConnectionUtil.GetCommand(sqlStr))
            {
                command.Parameters.Add("@EquipmentID", SqlDbType.Int).Value = equipmentID;
                using (DataTable dt = GetDataTable(command))
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        DispatchInfo info = new DispatchInfo();

                        info.ID                         = SQLUtil.ConvertInt(dr["ID"]);
                        info.Request.ID                 = SQLUtil.ConvertInt(dr["RequestID"]);
                        info.RequestType.ID             = SQLUtil.ConvertInt(dr["RequestType"]);
                        info.RequestType.Name           = LookupManager.GetRequestTypeDesc(info.RequestType.ID);
                        info.ScheduleDate               = SQLUtil.ConvertDateTime(dr["ScheduleDate"]);
                        info.EndDate                    = SQLUtil.ConvertDateTime(dr["EndDate"]);
                        info.DispatchReport.SolutionWay = SQLUtil.TrimNull(dr["SolutionWay"]);
                        info.DispatchReport.Comments    = SQLUtil.TrimNull(dr["Comments"]);
                        dispatchInfo.Add(info);
                    }
                }
            }

            return(dispatchInfo);
        }
Пример #9
0
        /// <summary>
        /// 根据设备编号获取生命周期
        /// </summary>
        /// <param name="equipmentID">设备编号</param>
        /// <returns>生命周期信息</returns>
        public EquipmentInfo GetTimeLine(int equipmentID)
        {
            EquipmentInfo info = this.GetEquipment(equipmentID);

            if (info != null)
            {
                List <DispatchInfo> dispatchs = this.equipmentDao.GetTimeLine(equipmentID);

                DispatchInfo dispatch = null;
                if (info.InstalDate != DateTime.MinValue)
                {
                    dispatch             = new DispatchInfo();
                    dispatch.EndDate     = info.InstalDate;
                    dispatch.RequestType = new KeyValueInfo()
                    {
                        Name = "装机 - 用户培训完成"
                    };
                    dispatchs.Add(dispatch);
                }
                if (info.PurchaseDate != DateTime.MinValue)
                {
                    dispatch             = new DispatchInfo();
                    dispatch.EndDate     = info.PurchaseDate;
                    dispatch.RequestType = new KeyValueInfo()
                    {
                        Name = "完成采购"
                    };
                    dispatchs.Add(dispatch);
                }

                info.Dispatches = dispatchs;
            }

            return(info);
        }
Пример #10
0
        private void CommandResponse(NetWorkEventArgs obj)
        {
            CIRViewModel instance = ServiceLocator.Current.GetInstance <CIRViewModel>();
            bool         flag     = obj.BusinessType == BusinessType.Command;

            if (flag)
            {
                DispatchInfo        dispatchInfo        = (DispatchInfo)CIRCommAgent.BytesToStruct(obj.Data.Buff, typeof(DispatchInfo), 0);
                DispatchCommandUnit dispatchCommandUnit = new DispatchCommandUnit(dispatchInfo);
                bool flag2 = 31 >= dispatchInfo.cmdType && dispatchInfo.cmdType >= 24;
                if (flag2)
                {
                    dispatchCommandUnit.CommandType = CommandType.OtherInfo;
                }
                else
                {
                    dispatchCommandUnit.CommandType = (CommandType)dispatchInfo.cmdType;
                }
                dispatchCommandUnit.TrainNumber  = dispatchInfo.TrainNum;
                dispatchCommandUnit.EngineNumber = dispatchInfo.TrainID.ToStrNumber();
                dispatchCommandUnit.ReleaseTime  = dispatchInfo.DispatchDateTime;
                dispatchCommandUnit.ReleasePlace = dispatchInfo.SendDispatchCmdName;
                dispatchCommandUnit.ReleaseName  = dispatchInfo.Dispatcher;
                dispatchCommandUnit.CommandName  = dispatchInfo.DispatchCmdName;
                dispatchCommandUnit.Number       = dispatchInfo.CmdNum;
                dispatchCommandUnit.Current      = (instance.MainContentViewModel.SystemInfosViewModel.IsSupplyOrder ? "本" : "补");
                dispatchCommandUnit.Content      = GetContent(dispatchInfo.DispatchCmdContext, instance.MainContentViewModel.SystemInfosViewModel.KMMark);
                ViewModel.AllUnit.Add(dispatchCommandUnit);
                ViewModel.DisplayUnit       = dispatchCommandUnit;
                BtnResponseBase.OperateTime = DateTime.Now;
                instance.Controller.NavigatorToKey(BtnItemKeys.调度命令详细界面);
                CIRPacket cIRPacket = default(CIRPacket);
                cIRPacket.Init();
                cIRPacket.SetHeadInfo(1, 35, 6, 81);
                DispatchInfoSignConfirm dispatchInfoSignConfirm = default(DispatchInfoSignConfirm);
                dispatchInfoSignConfirm.Init();
                dispatchInfoSignConfirm.InfoName = 129;
                dispatchInfoSignConfirm.cmdForm  = dispatchInfo.cmdForm;
                dispatchInfoSignConfirm.TrainID  = dispatchInfo.TrainID;
                dispatchInfoSignConfirm.TrainNum = dispatchInfo.TrainNum;
                dispatchInfoSignConfirm.CmdNum   = dispatchInfo.CmdNum;
                cIRPacket.SetData(CIRCommAgent.StructToBytes(dispatchInfoSignConfirm));
                AppLog.Info("自动确认收到调度命令pack1.GetPackLen():{0}", new object[]
                {
                    cIRPacket.GetPackLen()
                });
                CIRCommAgent.SendCIRData(CIRCommAgent.StructToBytes(cIRPacket), cIRPacket.GetDataLen(), false, 0);
            }
        }
Пример #11
0
        public void DispatchRequest(RequestInfo requestInfo, DispatchInfo dispatchInfo, UserInfo user)
        {
            RequestInfo info = GetRequest(requestInfo.ID);

            List <DispatchInfo> dispatchInfos = this.dispatchDao.GetOpenDispatchesByRequestID(requestInfo.ID);
            bool isExisted = dispatchInfos.Count > 0 ? true : false;

            if (info.DistributeDate == DateTime.MinValue)
            {
                this.requestDao.UpdateRequestDistributeDate(requestInfo.ID, dispatchInfo.ScheduleDate);
            }
            if (isExisted == false)
            {
                requestInfo.LastStatus.ID = requestInfo.Status.ID;
            }
            requestInfo.Status.ID = RequestInfo.Statuses.Allocated;
            if (info.Status.ID == RequestInfo.Statuses.Close || info.Status.ID == RequestInfo.Statuses.Pending || info.Status.ID == RequestInfo.Statuses.Responded)
            {
                requestInfo.Status.ID = info.Status.ID;
            }
            requestInfo.Priority.ID = dispatchInfo.Urgency.ID;

            this.requestDao.UpdateRequest(requestInfo);

            dispatchInfo.Status.ID = DispatchInfo.Statuses.New;
            dispatchInfo.ID        = this.dispatchDao.AddDispatch(dispatchInfo).ID;
            //添加历史操作——请求 派工
            HistoryInfo historyRequest = new HistoryInfo(requestInfo.ID, ObjectTypes.Request, user.ID, RequestInfo.Actions.Allocate);

            this.historyDao.AddHistory(historyRequest);

            //添加历史操作——派工单 新增
            HistoryInfo historyDisptach = new HistoryInfo(dispatchInfo.ID, ObjectTypes.Dispatch, user.ID, DispatchInfo.Actions.New, dispatchInfo.LeaderComments);

            this.historyDao.AddHistory(historyDisptach);

            UserInfo adminUser = this.userDao.GetUser(dispatchInfo.Engineer.ID);

            if (!string.IsNullOrEmpty(adminUser.RegistrationID))
            {
                Task.Factory.StartNew(() =>
                {
                    JPushManager.PushMessage(string.Format("您有新的派工, 派工单号:{0},请及时响应", dispatchInfo.OID), new List <string> {
                        adminUser.RegistrationID
                    });
                });
            }
        }
Пример #12
0
        // $todo(jeff.lill):
        //
        // I'm not really sure if we need this to be dispached
        // on a worker thread since MsgRouter.OnProcessMsg()
        // (who calls MsgDispatcher.Dispatch()) is already
        // running on a fresh worker thread.  We'd probably see
        // a performance boost by having Dispatch() call the
        // handler directly.  Something to look into when I
        // have more time.

        /// <summary>
        /// Handles the dispatch on a worker thread.
        /// </summary>
        /// <param name="state">The DispatchInfo.</param>
        private void OnDispatch(object state)
        {
            DispatchInfo       info        = (DispatchInfo)state;
            MsgHandler         handler     = info.Handler;
            Msg                msg         = info.Msg;
            SessionHandlerInfo sessionInfo = handler == null ? null : handler.SessionInfo;
            ISessionManager    sessionMgr;

            try
            {
                // If there's a router associated with this instance and the message
                // has a non-empty _SessionID then we'll either initiate a server side
                // session or simply route the message to the session, depending
                // on the MsgFlag.OpenSession bit.
                //
                // If neither of these conditions are true then route the message
                // directly to the handler.

                if (router != null && msg._SessionID != Guid.Empty)
                {
                    sessionMgr = router.SessionManager;
                    if ((msg._Flags & MsgFlag.OpenSession) != 0)
                    {
                        if (handler == null)
                        {
                            NetTrace.Write(MsgRouter.TraceSubsystem, 1, "Dispatch: Message Discarded", "No message handler for: " + msg.GetType().Name, string.Empty);
                            return;
                        }

                        sessionMgr.ServerDispatch(msg, handler.Target, handler.Method, sessionInfo);
                    }
                    else
                    {
                        sessionMgr.OnMsg(msg, sessionInfo);
                    }
                }
                else
                {
                    handler.Method.Invoke(handler.Target, info.Args);
                }
            }
            catch (Exception e)
            {
                NetTrace.Write(MsgRouter.TraceSubsystem, 0, "App Exception", e);
                SysLog.LogException(e);
            }
        }
Пример #13
0
        public ResultInfo SaveDispatchInfo(DispatchInfo dispatchInfo)
        {
            string AuthID = WebOperationContext.Current.IncomingRequest.Headers["AuthID"];
            string UType  = WebOperationContext.Current.IncomingRequest.Headers["UserType"];

            var user = AuthorizeUser(AuthID, Convert.ToChar(UType), dispatchInfo.GroupID);

            if (user.IsValid)
            {
                WebOperationContext.Current.IncomingRequest.Headers.Add("LiveUserID", user.LiveUserID);
                return(new MemberService().SaveDispatchInfo(dispatchInfo).Result);
            }
            else
            {
                return(null);
            }
        }
Пример #14
0
        public JsonResult StartDispatch(int userID, string sessionID, int dispatchID)
        {
            ServiceResultModelBase response = new ServiceResultModelBase();

            try
            {
                if (!CheckSessionID(userID, sessionID, response))
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }
                UserInfo user = null;
                if (CheckUser(userID, response, out user) == false)
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }

                List <DispatchInfo> infos        = new List <DispatchInfo>();
                DispatchInfo        dispatchInfo = new DispatchInfo();

                dispatchInfo = this.dispatchManager.GetDispatchByID(dispatchID);
                if (dispatchInfo == null)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工单信息不存在");
                }
                else if (dispatchInfo.Status.ID != BusinessObjects.Domain.DispatchInfo.Statuses.New)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工单已响应");
                }
                else if (userID != dispatchInfo.Engineer.ID)
                {
                    response.SetFailed(ResultCodes.ParameterError, "不可操作他人派工单");
                }
                else
                {
                    this.dispatchManager.ResponseDispatch(dispatchID, dispatchInfo.Request.ID, user);
                }
            }
            catch (Exception ex)
            {
                NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message);
                response.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage);
            }
            return(MyJson(response, JsonRequestBehavior.AllowGet));
        }
Пример #15
0
        /// <summary>
        /// 根据作业报告id获取作业报告信息
        /// </summary>
        /// <param name="dispatchReportID">作业报告编号</param>
        /// <returns>作业报告信息</returns>
        public DispatchReportInfo GetDispatchReportByID(int dispatchReportID)
        {
            DispatchReportInfo dispatchReport = dispatchReportDao.GetDispatchReportByID(dispatchReportID);
            DispatchInfo       dispatchInfo   = this.dispatchDao.GetDispatchByID(dispatchReport.Dispatch.ID);

            dispatchReport.Dispatch = dispatchInfo.Copy4Base();
            if (dispatchReport != null)
            {
                UploadFileInfo fileInfo = this.fileDao.GetFile(ObjectTypes.DispatchReport, dispatchReport.ID);
                if (fileInfo != null)
                {
                    dispatchReport.FileInfo = fileInfo;
                }
                else
                {
                    dispatchReport.FileInfo = new UploadFileInfo();
                }

                List <HistoryInfo> histories = this.historyDao.GetHistories(ObjectTypes.DispatchReport, dispatchReport.ID);
                if (histories != null && histories.Count > 0)
                {
                    foreach (HistoryInfo history in histories)
                    {
                        history.Action.Name = DispatchReportInfo.Actions.GetDesc(history.Action.ID);
                    }
                    dispatchReport.Histories = histories;
                    dispatchReport.SetHis4Comments();
                }

                dispatchReport.ReportComponent = dispatchReportDao.GetReportComponentByDispatchReportID(dispatchReport.ID);
                if (dispatchReport.ReportComponent.Count > 0)
                {
                    foreach (ReportComponentInfo component in dispatchReport.ReportComponent)
                    {
                        component.FileInfos = this.fileDao.GetFiles(ObjectTypes.ReportAccessory, component.ID);
                    }
                }
                dispatchReport.ReportConsumable = dispatchReportDao.GetReportConsumableByDispatchReportID(dispatchReport.ID);
                dispatchReport.ReportService    = dispatchReportDao.GetReportServiceByDispatchReportID(dispatchReport.ID);
            }
            return(dispatchReport);
        }
Пример #16
0
        public JsonResult EndDispatch(int userID, string sessionID, int dispatchID, int requestID)
        {
            ServiceResultModelBase response = new ServiceResultModelBase();

            try
            {
                if (!CheckSessionID(userID, sessionID, response))
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }
                UserInfo user = null;
                if (CheckUser(userID, response, out user, UserRole.SuperAdmin) == false)
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }

                DispatchInfo dispatch = this.dispatchManager.GetDispatchByID(dispatchID);

                if (dispatch == null)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工单不存在");
                }
                else if (dispatch.Status.ID == BusinessObjects.Domain.DispatchInfo.Statuses.Cancelled || dispatch.Status.ID == BusinessObjects.Domain.DispatchInfo.Statuses.Approved)
                {
                    response.SetFailed(ResultCodes.ParameterError, "当前派工状态下不可终止");
                }
                else if (dispatch.RequestID != requestID)
                {
                    response.SetFailed(ResultCodes.ParameterError, "请求单号与派工单号不匹配");
                }
                else
                {
                    this.dispatchManager.CancelDispatch(dispatchID, requestID, user);
                }
            }
            catch (Exception ex)
            {
                NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message);
                response.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage);
            }
            return(MyJson(response, JsonRequestBehavior.AllowGet));
        }
Пример #17
0
        /// <summary>
        /// 派工单状态已审批时根据作业报告信息修改设备信息
        /// </summary>
        /// <param name="dispatchReportInfo">作业报告信息</param>
        /// <param name="user">操作的用户信息</param>
        private void PassDispatchReportInternal(DispatchReportInfo dispatchReportInfo, UserInfo user)
        {
            DispatchInfo dispatchInfo = this.dispatchDao.GetDispatchByID(dispatchReportInfo.Dispatch.ID);

            if (dispatchReportInfo.Type.ID != DispatchReportInfo.DispatchReportTypes.Common)
            {
                List <EquipmentInfo> equipments = this.requestDao.GetRequestEgpts(dispatchInfo.RequestID);
                foreach (EquipmentInfo equipment in equipments)
                {
                    if (dispatchInfo.RequestType.ID == RequestInfo.RequestTypes.AddEquipment)
                    {
                        equipment.PurchaseAmount = dispatchReportInfo.PurchaseAmount;
                        equipment.ServiceScope   = dispatchReportInfo.ServiceScope;
                    }
                    else if (dispatchInfo.RequestType.ID == RequestInfo.RequestTypes.Repair)
                    {
                        if (dispatchReportInfo.EquipmentStatus.ID != MachineStatuses.Normal)
                        {
                            equipment.EquipmentStatus.ID = EquipmentInfo.EquipmentStatuses.Fault;
                        }
                        else
                        {
                            equipment.EquipmentStatus.ID = dispatchReportInfo.EquipmentStatus.ID;
                        }
                    }
                    else if (dispatchInfo.RequestType.ID == RequestInfo.RequestTypes.Accetance)
                    {
                        if (dispatchReportInfo.AcceptanceDate != DateTime.MinValue)
                        {
                            equipment.AcceptanceDate = dispatchReportInfo.AcceptanceDate;
                            equipment.Accepted       = true;
                        }
                    }

                    this.equipmentManager.SaveEquipment(equipment, null, user);
                }
            }
        }
Пример #18
0
        /// <summary>
        /// 新增派工单
        /// </summary>
        /// <param name="info">派工单信息</param>
        /// <returns>派工单信息</returns>
        public DispatchInfo AddDispatch(DispatchInfo info)
        {
            sqlStr = "INSERT INTO tblDispatch(RequestID,RequestType,UrgencyID,EquipmentStatus,EngineerID," +
                     " ScheduleDate,LeaderComments,StatusID,CreateDate) " +
                     " VALUES(@RequestID,@RequestType,@UrgencyID,@EquipmentStatus,@EngineerID," +
                     " @ScheduleDate,@LeaderComments,@StatusID,GETDATE()); " +
                     " SELECT @@IDENTITY";

            using (SqlCommand command = ConnectionUtil.GetCommand(sqlStr))
            {
                command.Parameters.Add("@RequestID", SqlDbType.Int).Value           = info.Request.ID;
                command.Parameters.Add("@RequestType", SqlDbType.Int).Value         = info.RequestType.ID;
                command.Parameters.Add("@UrgencyID", SqlDbType.Int).Value           = SQLUtil.ZeroToNull(info.Urgency.ID);
                command.Parameters.Add("@EquipmentStatus", SqlDbType.Int).Value     = info.MachineStatus.ID;
                command.Parameters.Add("@EngineerID", SqlDbType.Int).Value          = info.Engineer.ID;
                command.Parameters.Add("@ScheduleDate", SqlDbType.DateTime).Value   = info.ScheduleDate;
                command.Parameters.Add("@LeaderComments", SqlDbType.NVarChar).Value = SQLUtil.TrimNull(info.LeaderComments);
                command.Parameters.Add("@StatusID", SqlDbType.Int).Value            = info.Status.ID;

                info.ID = SQLUtil.ConvertInt(command.ExecuteScalar());
            }
            return(info);
        }
Пример #19
0
        public void CancelDispatch(int dispatchID, int requestID, UserInfo user)
        {
            RequestInfo  info     = this.requestDao.QueryRequestByID(requestID);
            DispatchInfo dispatch = this.dispatchDao.GetDispatchByID(dispatchID);

            List <DispatchInfo> dispatchInfos = this.dispatchDao.GetOpenDispatchesByRequestID(requestID);
            bool isExisted = dispatchInfos.Count > 1 ? true : false;

            if (isExisted == false)
            {
                this.requestDao.UpdateRequestStatus(requestID, info.LastStatus.ID);
            }
            else
            {
                int dispatchStatusID = 0;
                foreach (DispatchInfo temp in dispatchInfos)
                {
                    if (temp.ID != dispatchID && temp.Status.ID > dispatchStatusID)
                    {
                        dispatchStatusID = temp.Status.ID;
                    }
                }
                this.requestDao.UpdateRequestStatus(requestID, DispatchInfo.Statuses.GetRequestStatusByStatuses(dispatchStatusID));
            }

            this.dispatchDao.UpdateDispatchStatus(dispatchID, DispatchInfo.Statuses.Cancelled);

            this.dispatchJournalDao.UpdateDispatchJournalStatus(dispatch.DispatchJournal.ID, DispatchJournalInfo.DispatchJournalStatus.Cancelled, 0);

            this.dispatchReportDao.UpdateDispatchReportStatus(dispatch.DispatchReport.ID, DispatchReportInfo.DispatchReportStatus.Cancelled);

            //添加历史操作——派工单 关闭
            HistoryInfo historyDisptach = new HistoryInfo(dispatchID, ObjectTypes.Dispatch, user.ID, DispatchInfo.Actions.Cancelled);

            this.historyDao.AddHistory(historyDisptach);
        }
Пример #20
0
        public JsonResult CreateDispatch(int userID, string sessionID, DispatchInfo dispatchInfo)
        {
            ServiceResultModel <int> response = new ServiceResultModel <int>();

            UserInfo    userInfo    = new UserInfo();
            RequestInfo requestInfo = new RequestInfo();

            try
            {
                if (!CheckSessionID(userID, sessionID, response))
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }
                UserInfo user = null;
                if (CheckUser(userID, response, out user, UserRole.SuperAdmin) == false)
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }

                requestInfo = this.requestManager.GetRequest(dispatchInfo.Request.ID);
                dispatchInfo.Request.RequestType = requestInfo.RequestType;
                dispatchInfo.Request.Status      = requestInfo.Status;
                dispatchInfo.Request.LastStatus  = requestInfo.LastStatus;

                List <DispatchInfo> dispatchInfos = this.dispatchDao.GetOpenDispatchesByRequestID(requestInfo.ID);
                foreach (DispatchInfo dispatch in dispatchInfos)
                {
                    if (dispatch.Engineer.ID == dispatchInfo.Engineer.ID)
                    {
                        response.SetFailed(ResultCodes.ParameterError, "该工程师已被派工且未完成");
                        return(MyJson(response, JsonRequestBehavior.AllowGet));
                    }
                }

                if (requestInfo == null)
                {
                    response.SetFailed(ResultCodes.ParameterError, "请求信息不存在");
                }
                else if (dispatchInfo.Request.FaultType.ID == 0 && (requestInfo.RequestType.ID == RequestInfo.RequestTypes.Maintain || requestInfo.RequestType.ID == RequestInfo.RequestTypes.Inspection || requestInfo.RequestType.ID == RequestInfo.RequestTypes.AdverseEvent))
                {
                    response.SetFailed(ResultCodes.ParameterError, "请选择FaultType类型");
                }
                else if (dispatchInfo.Request.FaultType.ID > 0 && ((requestInfo.RequestType.ID == RequestInfo.RequestTypes.Maintain && dispatchInfo.Request.FaultType.ID > RequestInfo.MaintainType.FMTSMaintain) || (requestInfo.RequestType.ID == RequestInfo.RequestTypes.Inspection && dispatchInfo.Request.FaultType.ID > RequestInfo.InspectionType.IndependentInspection) || (requestInfo.RequestType.ID == RequestInfo.RequestTypes.AdverseEvent && dispatchInfo.Request.FaultType.ID > RequestInfo.AdverseEventType.RecallAdverseEvent)))
                {
                    response.SetFailed(ResultCodes.ParameterError, "请选择范围内的FaultType类型");
                }
                else if (dispatchInfo.Request.Priority.ID <= 0 || dispatchInfo.Request.Priority.ID > RequestInfo.UrgencyLevel.Urgency)
                {
                    response.SetFailed(ResultCodes.ParameterError, "请选择请求紧急程度");
                }
                else if (dispatchInfo.Request.DealType.ID <= 0 || dispatchInfo.Request.DealType.ID > RequestInfo.DealTypes.ThirdSupport)
                {
                    response.SetFailed(ResultCodes.ParameterError, "请选择范围内的处理方式");
                }
                else if (dispatchInfo.RequestType.ID <= 0)
                {
                    response.SetFailed(ResultCodes.ParameterError, "请选择派工类型");
                }
                else if (dispatchInfo.Urgency.ID <= 0 || dispatchInfo.Urgency.ID > RequestInfo.UrgencyLevel.Urgency)
                {
                    response.SetFailed(ResultCodes.ParameterError, "请选择派工单紧急程度");
                }
                else if (dispatchInfo.MachineStatus.ID <= 0)
                {
                    response.SetFailed(ResultCodes.ParameterError, "请选择机器状态");
                }
                else if (dispatchInfo.Engineer.ID == 0)
                {
                    response.SetFailed(ResultCodes.ParameterError, "请选择工程师");
                }
                else if (CheckUser(dispatchInfo.Engineer.ID, response, out userInfo, UserRole.Admin) == false)
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }
                else if (dispatchInfo.RequestType.ID != RequestInfo.RequestTypes.Others && dispatchInfo.Request.RequestType.ID == RequestInfo.RequestTypes.Others)
                {
                    response.SetFailed(ResultCodes.ParameterError, "当前请求类型不可转换派工类型");
                }
                else
                {
                    this.requestManager.DispatchRequest(dispatchInfo.Request, dispatchInfo, user);
                    response.Data = dispatchInfo.ID;
                }
            }
            catch (Exception ex)
            {
                NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message);
                response.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage);
            }
            return(MyJson(response, JsonRequestBehavior.AllowGet));
        }
Пример #21
0
        private void GenerateRequestRegularPatrol(List <EquipmentInfo> equipmentInfos, ref int nextRequestId, ref int nextDispatchId, DateTime fromDate)
        {
            DateTime monthEnd = fromDate.AddMonths(1).AddDays(-1);

            List <EquipmentInfo> toProcessEquips = (from EquipmentInfo temp in equipmentInfos
                                                    where temp.InstalEndDate <= fromDate && (temp.ScrapDate == DateTime.MinValue || temp.ScrapDate >= monthEnd)
                                                    select temp).ToList();

            List <EntityInfo> requestInfos     = new List <EntityInfo>();
            List <EntityInfo> requestEqupInfos = new List <EntityInfo>();
            List <EntityInfo> dispatchInfos    = new List <EntityInfo>();
            List <EntityInfo> journalInfos     = new List <EntityInfo>();
            List <EntityInfo> reportInfos      = new List <EntityInfo>();

            foreach (EquipmentInfo info in toProcessEquips)
            {
                nextRequestId++;
                RequestInfo requestInfo = new RequestInfo();
                requestInfo.ID             = nextRequestId;
                requestInfo.RequestType.ID = RequestInfo.RequestTypes.OnSiteInspection;
                requestInfo.Source.ID      = 3;
                requestInfo.FaultDesc      = "检查设备";
                requestInfo.Status.ID      = 99;
                requestInfo.DealType.ID    = 1;
                requestInfo.Priority.ID    = 1;
                requestInfo.RequestDate    = GetRandom(fromDate, fromDate, DateTime.MinValue, monthEnd);
                requestInfo.DistributeDate = requestInfo.RequestDate.AddHours(this.rd.Next(8, 12)).AddMinutes(this.rd.Next(0, 60));
                requestInfo.ResponseDate   = requestInfo.DistributeDate.AddMinutes(this.rd.Next(5, 30));
                requestInfo.CloseDate      = requestInfo.DistributeDate.AddHours(this.rd.Next(2, 6)).AddMinutes(this.rd.Next(0, 60));

                requestInfos.Add(requestInfo);

                requestEqupInfos.Add(new RequestEqptInfo()
                {
                    RequestID = requestInfo.ID, EquipmentID = info.ID
                });

                nextDispatchId++;
                DispatchInfo dispatchInfo = new DispatchInfo();
                dispatchInfo.ID               = nextDispatchId;
                dispatchInfo.Request.ID       = requestInfo.ID;
                dispatchInfo.RequestType.ID   = requestInfo.RequestType.ID;
                dispatchInfo.Urgency.ID       = 1;
                dispatchInfo.MachineStatus.ID = 1;
                dispatchInfo.Engineer.ID      = 4;
                dispatchInfo.ScheduleDate     = requestInfo.DistributeDate;
                dispatchInfo.Status.ID        = 4;
                dispatchInfo.CreateDate       = dispatchInfo.ScheduleDate;
                dispatchInfo.StartDate        = requestInfo.ResponseDate;
                dispatchInfo.EndDate          = requestInfo.CloseDate;
                dispatchInfos.Add(dispatchInfo);

                DispatchJournalInfo journalInfo = new DispatchJournalInfo();
                journalInfo.DispatchID      = dispatchInfo.ID;
                journalInfo.FaultCode       = "检查设备";
                journalInfo.JobContent      = "检查设备";
                journalInfo.ResultStatus.ID = 2;
                journalInfo.UserName        = "******";
                journalInfo.UserMobile      = "18866988878";
                journalInfo.Status.ID       = 3;
                journalInfos.Add(journalInfo);

                DispatchReportInfo reportInfo = new DispatchReportInfo();
                reportInfo.DispatchID              = dispatchInfo.ID;
                reportInfo.Type.ID                 = 401;
                reportInfo.SolutionCauseAnalysis   = "检查设备";
                reportInfo.SolutionWay             = "没问题";
                reportInfo.ServiceProvider.ID      = 1;
                reportInfo.SolutionResultStatus.ID = 4;
                reportInfo.Status.ID               = 3;
                reportInfos.Add(reportInfo);
            }

            this.importDao.ImportRequest(requestInfos);
            this.importDao.ImportRequestEqpt(requestEqupInfos);
            this.importDao.ImportDispatch(dispatchInfos);
            this.importDao.ImportDispatchJournal(journalInfos);
            this.importDao.ImportDispatchReport(reportInfos);
        }
Пример #22
0
        private void GenerateRequestRepair(List <EquipmentInfo> equipmentInfos, ref int nextRequestId, ref int nextDispatchId, DateTime fromDate)
        {
            DateTime monthEnd = fromDate.AddMonths(1).AddDays(-1);

            List <EquipmentInfo> toProcessEquips = (from EquipmentInfo temp in equipmentInfos
                                                    where temp.InstalEndDate <= fromDate && (temp.ScrapDate == DateTime.MinValue || temp.ScrapDate >= monthEnd)
                                                    select temp).ToList();

            List <EntityInfo> requestInfos     = new List <EntityInfo>();
            List <EntityInfo> requestEqupInfos = new List <EntityInfo>();
            List <EntityInfo> dispatchInfos    = new List <EntityInfo>();
            List <EntityInfo> journalInfos     = new List <EntityInfo>();
            List <EntityInfo> reportInfos      = new List <EntityInfo>();

            int        totalEquips         = this.rd.Next(70, 80 + 1);
            int        quickResponseEquips = (int)Math.Ceiling(totalEquips * 0.9) + 1;
            List <int> equipIndexs         = new List <int>();
            int        tryCount            = 0;
            int        rdMinutes           = 0;

            while (tryCount < totalEquips * 2)
            {
                int rdIndex = this.rd.Next(0, toProcessEquips.Count);
                if (!equipIndexs.Contains(rdIndex))
                {
                    nextRequestId++;
                    RequestInfo requestInfo = new RequestInfo();
                    requestInfo.ID               = nextRequestId;
                    requestInfo.RequestType.ID   = RequestInfo.RequestTypes.Repair;
                    requestInfo.Source.ID        = 1;
                    requestInfo.RequestUser.ID   = 6;
                    requestInfo.FaultDesc        = "无法开机";
                    requestInfo.Status.ID        = 99;
                    requestInfo.DealType.ID      = 1;
                    requestInfo.Priority.ID      = 1;
                    requestInfo.MachineStatus.ID = 1;
                    requestInfo.RequestDate      = GetRandom(fromDate, toProcessEquips[rdIndex].InstalEndDate, toProcessEquips[rdIndex].ScrapDate, monthEnd);
                    requestInfo.RequestDate      = requestInfo.RequestDate.AddHours(this.rd.Next(8, 14)).AddMinutes(this.rd.Next(0, 60));
                    if (equipIndexs.Count <= quickResponseEquips)
                    {
                        rdMinutes = this.rd.Next(2, 5);
                        requestInfo.DistributeDate = requestInfo.RequestDate.AddMinutes(rdMinutes);
                        requestInfo.ResponseDate   = requestInfo.DistributeDate.AddMinutes(this.rd.Next(5, 15 - rdMinutes));
                    }
                    else
                    {
                        rdMinutes = this.rd.Next(5, 10);
                        requestInfo.DistributeDate = requestInfo.RequestDate.AddMinutes(rdMinutes);
                        requestInfo.ResponseDate   = requestInfo.DistributeDate.AddMinutes(this.rd.Next(10, 30 - rdMinutes));
                    }
                    requestInfo.CloseDate = requestInfo.ResponseDate.AddMinutes(this.rd.Next(30, 60));

                    requestInfos.Add(requestInfo);
                    requestEqupInfos.Add(new RequestEqptInfo()
                    {
                        RequestID = requestInfo.ID, EquipmentID = toProcessEquips[rdIndex].ID
                    });

                    nextDispatchId++;
                    DispatchInfo dispatchInfo = new DispatchInfo();
                    dispatchInfo.ID               = nextDispatchId;
                    dispatchInfo.Request.ID       = requestInfo.ID;
                    dispatchInfo.RequestType.ID   = requestInfo.RequestType.ID;
                    dispatchInfo.Urgency.ID       = 1;
                    dispatchInfo.MachineStatus.ID = 1;
                    dispatchInfo.Engineer.ID      = 4;
                    dispatchInfo.ScheduleDate     = requestInfo.DistributeDate;
                    dispatchInfo.Status.ID        = 4;
                    dispatchInfo.CreateDate       = dispatchInfo.ScheduleDate;
                    dispatchInfo.StartDate        = requestInfo.ResponseDate;
                    dispatchInfo.EndDate          = requestInfo.CloseDate;
                    dispatchInfos.Add(dispatchInfo);

                    DispatchJournalInfo journalInfo = new DispatchJournalInfo();
                    journalInfo.DispatchID      = dispatchInfo.ID;
                    journalInfo.FaultCode       = "错误代码112";
                    journalInfo.JobContent      = "检查电源和操作系统";
                    journalInfo.ResultStatus.ID = 2;
                    journalInfo.Advice          = "恢复出厂设置";
                    journalInfo.UserName        = "******";
                    journalInfo.UserMobile      = "18866881888";
                    journalInfo.Status.ID       = 3;
                    journalInfos.Add(journalInfo);

                    DispatchReportInfo reportInfo = new DispatchReportInfo();
                    reportInfo.DispatchID              = dispatchInfo.ID;
                    reportInfo.Type.ID                 = 1;
                    reportInfo.FaultCode               = "112";
                    reportInfo.FaultDesc               = "无法开机";
                    reportInfo.SolutionCauseAnalysis   = "系统设置错误";
                    reportInfo.SolutionWay             = "恢复出厂设置";
                    reportInfo.SolutionResultStatus.ID = 4;
                    reportInfo.Status.ID               = 3;
                    reportInfos.Add(reportInfo);

                    equipIndexs.Add(rdIndex);
                    if (equipIndexs.Count == totalEquips)
                    {
                        break;
                    }
                }

                tryCount++;
            }

            this.importDao.ImportRequest(requestInfos);
            this.importDao.ImportRequestEqpt(requestEqupInfos);
            this.importDao.ImportDispatch(dispatchInfos);
            this.importDao.ImportDispatchJournal(journalInfos);
            this.importDao.ImportDispatchReport(reportInfos);
        }
Пример #23
0
        private void GenerateRequestRepair4Expense(ref int nextRequestId, ref int nextDispatchId, ref int nextDispatchReportId, DateTime fromDate)
        {
            DateTime yearEnd = GetYearEndDate(fromDate);

            List <ServiceHisInfo> incomeInfos = this.queryDao.GetServiceHis(fromDate.Year);

            List <EntityInfo> requestInfos         = new List <EntityInfo>();
            List <EntityInfo> requestEqupInfos     = new List <EntityInfo>();
            List <EntityInfo> dispatchInfos        = new List <EntityInfo>();
            List <EntityInfo> journalInfos         = new List <EntityInfo>();
            List <EntityInfo> reportInfos          = new List <EntityInfo>();
            List <EntityInfo> reportAccessoryInfos = new List <EntityInfo>();

            foreach (ServiceHisInfo info in incomeInfos)
            {
                nextRequestId++;
                RequestInfo requestInfo = new RequestInfo();
                requestInfo.ID               = nextRequestId;
                requestInfo.RequestType.ID   = RequestInfo.RequestTypes.Repair;
                requestInfo.Source.ID        = 1;
                requestInfo.RequestUser.ID   = 6;
                requestInfo.FaultDesc        = "无法开机";
                requestInfo.Status.ID        = 99;
                requestInfo.DealType.ID      = 1;
                requestInfo.Priority.ID      = 1;
                requestInfo.MachineStatus.ID = 1;
                requestInfo.RequestDate      = GetRandom(fromDate, fromDate, yearEnd, yearEnd);
                requestInfo.RequestDate      = requestInfo.RequestDate.AddHours(this.rd.Next(8, 14)).AddMinutes(this.rd.Next(0, 60));
                requestInfo.DistributeDate   = requestInfo.RequestDate.AddMinutes(this.rd.Next(2, 5));
                requestInfo.ResponseDate     = requestInfo.DistributeDate.AddMinutes(this.rd.Next(5, 10));
                requestInfo.CloseDate        = requestInfo.ResponseDate.AddMinutes(this.rd.Next(30, 60));

                requestInfos.Add(requestInfo);
                requestEqupInfos.Add(new RequestEqptInfo()
                {
                    RequestID = requestInfo.ID, EquipmentID = info.EquipmentID
                });

                nextDispatchId++;
                DispatchInfo dispatchInfo = new DispatchInfo();
                dispatchInfo.ID               = nextDispatchId;
                dispatchInfo.Request.ID       = requestInfo.ID;
                dispatchInfo.RequestType.ID   = requestInfo.RequestType.ID;
                dispatchInfo.Urgency.ID       = 1;
                dispatchInfo.MachineStatus.ID = 1;
                dispatchInfo.Engineer.ID      = 4;
                dispatchInfo.ScheduleDate     = requestInfo.DistributeDate;
                dispatchInfo.Status.ID        = 4;
                dispatchInfo.CreateDate       = dispatchInfo.ScheduleDate;
                dispatchInfo.StartDate        = requestInfo.ResponseDate;
                dispatchInfo.EndDate          = requestInfo.CloseDate;
                dispatchInfos.Add(dispatchInfo);

                DispatchJournalInfo journalInfo = new DispatchJournalInfo();
                journalInfo.DispatchID      = dispatchInfo.ID;
                journalInfo.FaultCode       = "错误代码112";
                journalInfo.JobContent      = "检查电源和操作系统";
                journalInfo.ResultStatus.ID = 2;
                journalInfo.Advice          = "恢复出厂设置";
                journalInfo.UserName        = "******";
                journalInfo.UserMobile      = "18866881888";
                journalInfo.Status.ID       = 3;
                journalInfos.Add(journalInfo);

                nextDispatchReportId++;
                DispatchReportInfo reportInfo = new DispatchReportInfo();
                reportInfo.ID                      = nextDispatchReportId;
                reportInfo.DispatchID              = dispatchInfo.ID;
                reportInfo.Type.ID                 = 1;
                reportInfo.FaultCode               = "112";
                reportInfo.FaultDesc               = "无法开机";
                reportInfo.SolutionCauseAnalysis   = "系统设置错误";
                reportInfo.SolutionWay             = "恢复出厂设置";
                reportInfo.SolutionResultStatus.ID = 4;
                reportInfo.Status.ID               = 3;
                reportInfos.Add(reportInfo);

                ReportAccessoryInfo accessoryInfo = new ReportAccessoryInfo();
                accessoryInfo.DispatchReportID = reportInfo.ID;
                accessoryInfo.Name             = "监控";
                accessoryInfo.Source.ID        = 1;
                accessoryInfo.SupplierID       = 3;
                accessoryInfo.NewSerialCode    = this.rd.Next(100000, 500000).ToString();
                accessoryInfo.OldSerialCode    = this.rd.Next(500000, 1000000).ToString();
                accessoryInfo.Qty = 1;
                if (info.EquipmentID == 528)
                {
                    accessoryInfo.Amount = this.rd.Next((int)(info.Income * 1.29), (int)(info.Income * 1.31));
                }
                else
                {
                    accessoryInfo.Amount = this.rd.Next((int)(info.Income * 0.29), (int)(info.Income * 0.31));
                }
                reportAccessoryInfos.Add(accessoryInfo);
            }

            this.importDao.ImportRequest(requestInfos);
            this.importDao.ImportRequestEqpt(requestEqupInfos);
            this.importDao.ImportDispatch(dispatchInfos);
            this.importDao.ImportDispatchJournal(journalInfos);
            this.importDao.ImportDispatchReport(reportInfos);
            this.importDao.ImportReportAccessory(reportAccessoryInfos);
        }
Пример #24
0
        /// <summary>
        /// 派工单状态已审批时根据作业报告信息修改设备信息
        /// </summary>
        /// <param name="dispatchReportInfo">作业报告信息</param>
        /// <param name="user">操作的用户信息</param>
        private void PassDispatchReportInternal(DispatchReportInfo dispatchReportInfo, UserInfo user)
        {
            DispatchInfo dispatchInfo = this.dispatchDao.GetDispatchByID(dispatchReportInfo.Dispatch.ID);

            List <EquipmentInfo> equipments = this.requestDao.GetRequestEgpts(dispatchInfo.RequestID);

            if (dispatchReportInfo.Type.ID != DispatchReportInfo.DispatchReportTypes.Common)
            {
                foreach (EquipmentInfo equipment in equipments)
                {
                    if (dispatchInfo.RequestType.ID == RequestInfo.RequestTypes.AddEquipment)
                    {
                        equipment.PurchaseAmount = dispatchReportInfo.PurchaseAmount;
                        equipment.ServiceScope   = dispatchReportInfo.ServiceScope;
                    }
                    else if (dispatchInfo.RequestType.ID == RequestInfo.RequestTypes.Repair)
                    {
                        if (dispatchReportInfo.EquipmentStatus.ID != MachineStatuses.Normal)
                        {
                            equipment.EquipmentStatus.ID = EquipmentInfo.EquipmentStatuses.Fault;
                        }
                        else
                        {
                            equipment.EquipmentStatus.ID = dispatchReportInfo.EquipmentStatus.ID;
                        }
                    }
                    else if (dispatchInfo.RequestType.ID == RequestInfo.RequestTypes.Accetance)
                    {
                        if (dispatchReportInfo.AcceptanceDate != DateTime.MinValue)
                        {
                            equipment.AcceptanceDate = dispatchReportInfo.AcceptanceDate;
                            equipment.Accepted       = true;
                        }
                    }

                    this.equipmentManager.SaveEquipment(equipment, null, user);
                }
            }

            DataTable dt = new DataTable();

            dt.Columns.Add("DispatchReportID", typeof(System.Int32));
            dt.Columns.Add("ObjectType", typeof(System.Int32));
            dt.Columns.Add("ObjectID", typeof(System.Int32));
            dt.Columns.Add("EquipmentID", typeof(System.Int32));
            dt.Columns.Add("Qty", typeof(System.Double));
            dt.Columns.Add("UserID", typeof(System.Int32));

            if (dispatchReportInfo.ReportComponent != null && dispatchReportInfo.ReportComponent.Count > 0)
            {
                this.invComponentDao.UpdateComponentStatus(dispatchReportInfo.ReportComponent.Select(info => info.NewComponent.ID).ToList(), InvComponentInfo.ComponentStatus.Used);
                this.invComponentDao.UpdateComponentStatus(dispatchReportInfo.ReportComponent.Select(info => info.OldComponent.ID).ToList(), InvComponentInfo.ComponentStatus.Scrap);

                foreach (ReportComponentInfo info in dispatchReportInfo.ReportComponent)
                {
                    DataRow dr = dt.NewRow();
                    dr["DispatchReportID"] = dispatchReportInfo.ID;
                    dr["ObjectType"]       = ReportMaterialInfo.MaterialTypes.NewComponent;
                    dr["ObjectID"]         = info.NewComponent.ID;
                    dr["EquipmentID"]      = equipments[0].ID;
                    dr["UserID"]           = dispatchInfo.Engineer.ID;
                    dr["Qty"] = 0;
                    dt.Rows.Add(dr);

                    dr = dt.NewRow();
                    dr["DispatchReportID"] = dispatchReportInfo.ID;
                    dr["ObjectType"]       = ReportMaterialInfo.MaterialTypes.OldComponent;
                    dr["ObjectID"]         = info.OldComponent.ID;
                    dr["EquipmentID"]      = equipments[0].ID;
                    dr["UserID"]           = dispatchInfo.Engineer.ID;
                    dr["Qty"] = 0;
                    dt.Rows.Add(dr);
                }
            }
            if (dispatchReportInfo.ReportConsumable != null && dispatchReportInfo.ReportConsumable.Count > 0)
            {
                foreach (ReportConsumableInfo info in dispatchReportInfo.ReportConsumable)
                {
                    this.invConsumableDao.UpdateConsumableQty(info.InvConsumable.ID, info.Qty);

                    DataRow dr = dt.NewRow();
                    dr["DispatchReportID"] = dispatchReportInfo.ID;
                    dr["ObjectType"]       = ReportMaterialInfo.MaterialTypes.Consumable;
                    dr["ObjectID"]         = info.InvConsumable.ID;
                    dr["EquipmentID"]      = equipments[0].ID;
                    dr["UserID"]           = dispatchInfo.Engineer.ID;
                    dr["Qty"] = info.Qty;
                    dt.Rows.Add(dr);
                }
            }
            if (dispatchReportInfo.ReportService != null && dispatchReportInfo.ReportService.Count > 0)
            {
                this.invServiceDao.UpdateServiceTimes(dispatchReportInfo.ReportService.Select(info => info.Service.ID).ToList());
                foreach (ReportServiceInfo info in dispatchReportInfo.ReportService)
                {
                    DataRow dr = dt.NewRow();
                    dr["DispatchReportID"] = dispatchReportInfo.ID;
                    dr["ObjectType"]       = ReportMaterialInfo.MaterialTypes.Service;
                    dr["ObjectID"]         = info.Service.ID;
                    dr["EquipmentID"]      = equipments[0].ID;
                    dr["UserID"]           = dispatchInfo.Engineer.ID;
                    dr["Qty"] = 0;
                    dt.Rows.Add(dr);
                }
            }

            if (dt.Rows.Count > 0)
            {
                this.dispatchReportDao.AddMaterialHistory(dt);
            }
        }
Пример #25
0
        public JsonResult SaveDispatchReport(int userID, string sessionID, DispatchReportInfo dispatchReport)
        {
            ServiceResultModel <int> response = new ServiceResultModel <int>();

            try
            {
                if (!CheckSessionID(userID, sessionID, response))
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }
                UserInfo user = null;
                if (CheckUser(userID, response, out user, UserRole.Admin) == false)
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }

                DispatchInfo dispatchInfo = this.dispatchManager.GetDispatchByID(dispatchReport.Dispatch.ID);

                if (dispatchInfo == null)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工单不存在");
                }
                else if (dispatchInfo.Engineer.ID != userID)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工人不正确");
                }
                else if (dispatchInfo.Status.ID != BusinessObjects.Domain.DispatchInfo.Statuses.Responded && dispatchInfo.Status.ID != BusinessObjects.Domain.DispatchInfo.Statuses.Pending)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工单当前状态不可进行该操作");
                }
                else if (dispatchInfo.DispatchReport.ID != dispatchReport.ID)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工单作业报告编号不匹配");
                }
                else if (dispatchReport.SolutionResultStatus.ID < DispatchReportInfo.SolutionResultStatuses.Allocating || dispatchReport.SolutionResultStatus.ID > DispatchReportInfo.SolutionResultStatuses.Resolved)
                {
                    response.SetFailed(ResultCodes.ParameterError, "作业结果不存在");
                }
                else if (dispatchInfo.DispatchReport.Status.ID != DispatchReportInfo.DispatchReportStatus.New && dispatchInfo.DispatchReport.Status.ID != 0)
                {
                    response.SetFailed(ResultCodes.ParameterError, "当前作业报告状态非新建");
                }
                else if (dispatchReport.Status.ID != DispatchReportInfo.DispatchReportStatus.Pending && dispatchReport.Status.ID != DispatchReportInfo.DispatchReportStatus.New)
                {
                    response.SetFailed(ResultCodes.ParameterError, "更新作业报告状态非待审批或新建");
                }
                else
                {
                    if (dispatchReport.FileInfo != null)
                    {
                        dispatchReport.FileInfo.FileContent = ParseBase64String(dispatchReport.FileInfo.FileContent);
                    }
                    if (dispatchReport.ReportAccessories != null)
                    {
                        foreach (ReportAccessoryInfo info in dispatchReport.ReportAccessories)
                        {
                            if (info.FileInfos != null && info.FileInfos.Count > 0)
                            {
                                foreach (UploadFileInfo fileInfo in info.FileInfos)
                                {
                                    fileInfo.FileContent = ParseBase64String(fileInfo.FileContent);
                                }
                            }
                        }
                    }
                    response.Data = this.dispatchManager.SaveDispatchReport4App(dispatchReport, user);
                }
            }
            catch (Exception ex)
            {
                NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message);
                response.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage);
            }
            return(MyJson(response, JsonRequestBehavior.AllowGet));
        }
Пример #26
0
        public JsonResult SaveDispatchJournal(int userID, string sessionID, DispatchJournalInfo dispatchJournalInfo)
        {
            ServiceResultModel <int> response = new ServiceResultModel <int>();

            try
            {
                if (!CheckSessionID(userID, sessionID, response))
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }
                UserInfo user = null;
                if (CheckUser(userID, response, out user, UserRole.Admin) == false)
                {
                    return(MyJson(response, JsonRequestBehavior.AllowGet));
                }

                DispatchInfo dispatchInfo = this.dispatchManager.GetDispatchByID(dispatchJournalInfo.Dispatch.ID);

                if (dispatchInfo == null)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工单信息不存在");
                }
                else if (userID != dispatchInfo.Engineer.ID)
                {
                    response.SetFailed(ResultCodes.ParameterError, "不可操作他人派工单");
                }
                else if (dispatchInfo.Status.ID != BusinessObjects.Domain.DispatchInfo.Statuses.Responded && dispatchInfo.Status.ID != BusinessObjects.Domain.DispatchInfo.Statuses.Pending)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工单当前状态不可进行该操作");
                }
                else if (dispatchInfo.DispatchJournal.ID != dispatchJournalInfo.ID)
                {
                    response.SetFailed(ResultCodes.ParameterError, "派工单已提交过服务凭证");
                }
                else if (dispatchInfo.DispatchJournal.Status.ID != DispatchJournalInfo.DispatchJournalStatus.New && dispatchInfo.DispatchJournal.Status.ID != 0)
                {
                    response.SetFailed(ResultCodes.ParameterError, "当前服务凭证状态非新建");
                }
                else if (dispatchJournalInfo.ResultStatus.ID == 0 || dispatchJournalInfo.ResultStatus.ID > BusinessObjects.Manager.LookupManager.GetDispatchJournalResultStatus().Count)
                {
                    response.SetFailed(ResultCodes.ParameterError, "请选择范围内的服务结果");
                }
                else if (dispatchJournalInfo.FileContent == null)
                {
                    response.SetFailed(ResultCodes.ParameterError, "签名文件不能为空");
                }
                else
                {
                    dispatchJournalInfo.Status.ID   = BusinessObjects.Domain.DispatchInfo.DocStatus.Pending;
                    dispatchJournalInfo.FileContent = ParseBase64String(dispatchJournalInfo.FileContent);
                    dispatchJournalInfo             = this.dispatchManager.SaveDispatchJournal(dispatchJournalInfo, user);
                    response.Data = dispatchJournalInfo.ID;
                }
            }
            catch (Exception ex)
            {
                NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message);
                response.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage);
            }
            return(MyJson(response, JsonRequestBehavior.AllowGet));
        }
Пример #27
0
        /// <summary>
        /// 根据服务凭证、作业报告状态修改派工单状态和请求状态
        /// </summary>
        /// <param name="dispatchID">派工单编号</param>
        /// <param name="user">操作的用户信息</param>
        private void UpdateDispatchStatusByJournalAndReport(int dispatchID, UserInfo user)
        {
            int                 dispatchStatusID = 0;
            int                 requestStatusID  = 0;
            DispatchInfo        dispatch         = this.dispatchDao.GetDispatchByID(dispatchID);
            List <DispatchInfo> dispatches       = this.dispatchDao.GetOpenDispatchesByRequestID(dispatch.Request.ID);
            RequestInfo         request          = this.requestDao.QueryRequestByID(dispatch.Request.ID);

            if (dispatch.DispatchReport.Status.ID == DispatchReportInfo.DispatchReportStatus.Approved && dispatch.DispatchJournal.Status.ID == DispatchJournalInfo.DispatchJournalStatus.Approved)
            {   //Journal和Report全部审批结束 ——派工单显示已审批、请求更新状态
                dispatchStatusID = DispatchInfo.Statuses.Approved;

                DispatchReportInfo dispatchReport = this.dispatchReportDao.GetDispatchReportByID(dispatch.DispatchReport.ID);
                if (request.Status.ID == RequestInfo.Statuses.Close)
                {
                    requestStatusID = RequestInfo.Statuses.Close;
                }
                else
                {
                    requestStatusID = DispatchReportInfo.SolutionResultStatuses.GetRequestStatusBySolutionResult(dispatchReport.SolutionResultStatus.ID);
                }

                this.requestDao.UpdateLastStatusID(dispatch.Request.ID, requestStatusID);
                if (requestStatusID == RequestInfo.Statuses.Close)
                {
                    this.requestDao.UpdateRequestCloseDate(dispatch.Request.ID);

                    dispatch.Request = this.requestManager.GetRequest(dispatch.Request.ID);
                    if (dispatch.Request.Source.ID == RequestInfo.Sources.SysRequest)
                    {
                        foreach (EquipmentInfo info in dispatch.Request.Equipments)
                        {
                            if (dispatch.RequestType.ID == RequestInfo.RequestTypes.Maintain)
                            {
                                this.equipmentManager.UpdateEquipmentLastMaintenanceCheck(info);
                            }
                            else if (dispatch.RequestType.ID == RequestInfo.RequestTypes.Correcting)
                            {
                                this.equipmentManager.UpdateEquipmentLastCorrectionCheck(info);
                            }
                            else if (dispatch.RequestType.ID == RequestInfo.RequestTypes.OnSiteInspection)
                            {
                                DateTime dt = dispatch.Request.SelectiveDate != DateTime.MinValue ? dispatch.Request.SelectiveDate : dispatch.Request.RequestDate;
                                this.equipmentManager.UpdateEquipmentLastPatrolCheck(info.ID, dt);
                            }
                        }
                    }
                }
                this.dispatchDao.UpdateDispatchEndDate(dispatchID);

                PassDispatchReportInternal(dispatchReport, user);

                HistoryInfo historyRequest = new HistoryInfo(dispatch.Request.ID, ObjectTypes.Request, user.ID, RequestInfo.Actions.Update);
                this.historyDao.AddHistory(historyRequest);//添加历史操作——请求 更新状态

                HistoryInfo historyDisptach = new HistoryInfo(dispatchID, ObjectTypes.Dispatch, user.ID, DispatchInfo.Actions.Finish);
                this.historyDao.AddHistory(historyDisptach);//添加历史操作——派工单 完成
            }
            else if (dispatch.DispatchReport.Status.ID < DispatchReportInfo.DispatchReportStatus.Pending && dispatch.DispatchJournal.Status.ID < DispatchJournalInfo.DispatchJournalStatus.Pending)
            {   //Journal和Report 未创建、两者均被退回、一者被退回 另一者未提交 未新建 ——派工单显示已响应,请求显示已响应
                dispatchStatusID = DispatchInfo.Statuses.Responded;
                if (request.Status.ID == RequestInfo.Statuses.Close)
                {
                    requestStatusID = RequestInfo.Statuses.Close;
                }
                else
                {
                    requestStatusID = RequestInfo.Statuses.Responded;
                    foreach (DispatchInfo info in dispatches)
                    {
                        if (info.ID != dispatchID && info.Status.ID == DispatchInfo.Statuses.Pending)
                        {
                            requestStatusID = RequestInfo.Statuses.Pending;
                            break;
                        }
                    }
                }
            }
            else
            {//其余情况均为 派工单状态——待审批
                dispatchStatusID = DispatchInfo.Statuses.Pending;
                if (request.Status.ID == RequestInfo.Statuses.Close)
                {
                    requestStatusID = RequestInfo.Statuses.Close;
                }
                else
                {
                    requestStatusID = RequestInfo.Statuses.Pending;
                }
            }

            this.requestDao.UpdateRequestStatus(dispatch.Request.ID, requestStatusID);
            this.dispatchDao.UpdateDispatchStatus(dispatchID, dispatchStatusID);
        }