private void FinishTask() { try { if (CurrentTask != null) { using (TransactionScopeManager TM = new TransactionScopeManager(true, IsolationLevel.Serializable)) { TaskDal taskDal = new TaskDal(); PositionDal positionDal = new PositionDal(); taskDal.TransactionScopeManager = TM; positionDal.TransactionScopeManager = TM; positionDal.UpdateHasGoodsToFalse(CurrentTask.CurrentPositionID); positionDal.UpdateHasGoodsToTrue(CurrentTask.NextPositionID); taskDal.UpdateTaskPosition(CurrentTask.ID, CurrentTask.NextPositionID); taskDal.UpdateTaskPositionStateToArrived(CurrentTask.ID); taskDal.UpdateTaskStateToWaiting(CurrentTask.ID); if (CurrentTask.NextPositionID == CurrentTask.EndPositionID && (CurrentTask.TaskType == "03" || CurrentTask.EndPositionType != "03") && (CurrentTask.TaskType == "03" || CurrentTask.EndPositionType != "04"))//小品种,异型烟,由手持PDA完成; { if (CurrentTask.TaskType == "02") { string orderType = taskDal.GetOrderType(CurrentTask.ID); string orderID = taskDal.GetOrderID(CurrentTask.ID); int allotID = taskDal.GetAllotID(CurrentTask.ID); string originCellCode = taskDal.GetOriginCellCode(CurrentTask.ID); string targetCellCode = taskDal.GetTargetCellCode(CurrentTask.ID); string originStorageCode = taskDal.GetOriginStorageCode(CurrentTask.ID); string targetStorageCode = taskDal.GetTargetStorageCode(CurrentTask.ID); RestClient rest = new RestClient(); if (!rest.FinishTask(CurrentTask.ID, orderType, orderID, allotID,originCellCode,targetCellCode, originStorageCode, targetStorageCode)) { Logger.Error(string.Format("{0} 完成[{1}]任务失败!", Name, CurrentTask.ID)); return; } else { taskDal.UpdateTaskStateToExecuted(CurrentTask.ID); } } else { if (!Ops.Write(memoryServiceName, memoryItemName, CurrentTask.ID)) { Logger.Error(string.Format("{0} 完成[{1}]任务失败!", Name, CurrentTask.ID)); return; } } } TM.Commit(); CurrentTask = null; CurrentTaskFactory = null; } } } catch (Exception ex) { Logger.Error("SRM.FinishTask 出错,原因:" + ex.Message + "/n" + ex.StackTrace); } }
public void CancelTask() { if (ConnectState == true) { lock (this) { if (CurrentTask != null && !CurrentTask.GetFinish) { if (Write("b_O_Get_Permit", false) && Write("b_O_Put_Permit", false) && Write("b_I_Get_Finish", false) && Write("b_I_Put_Finish", false) && Write("b_O_Cancel_Task", true) && WriteCancelTaskState()) { TaskDal taskDal = new TaskDal(); taskDal.UpdateTaskStateToWaiting(CurrentTask.ID); CurrentTask = null; CurrentTaskFactory = null; XtraMessageBox.Show("当前任务已取消!"); } else { XtraMessageBox.Show("当前任务取消失败,可能无法连接到堆垛机或密集库PLC!"); } } else if (CurrentTask != null && CurrentTask.GetFinish) { XtraMessageBox.Show("当前任务已取货完成,请处理完故障后选择重发任务!"); } else { XtraMessageBox.Show("当前任务不存在,或不可取消!"); } } } }