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)); }
/// <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)); }
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)); }
/// <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); }
/// <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)); }
/// <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()); } }
/// <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)); }
/// <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); }
/// <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); }
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); } }
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 }); }); } }
// $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); } }
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); } }
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)); }
/// <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); }
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)); }
/// <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); } } }
/// <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); }
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); }
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)); }
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); }
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); }
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); }
/// <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); } }
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)); }
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)); }
/// <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); }