| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Wayne.Lib;
- using Wayne.Lib.StateEngine;
- using Wayne.Lib.StateEngine.Generic;
- using WayneChina_IcCardReader_SinoChem.MessageEntity.Incoming;
- using WayneChina_IcCardReader_SinoChem.MessageEntity.Outgoing;
- namespace SinochemInternetPlusApp.States.Shared
- {
- class Fueling : State<FuelingPoint>
- {
- private byte sqNo;
- protected override void Enter(StateEntry stateEntry, ref Transition transition)
- {
- base.Enter(stateEntry, ref transition);
- MultiFusionsSupport.UpdateJyInfoToTargetFusionWhenFuelingStarted(Main.CurrentNozzleId, Main.DebugLogger); // should be busy
- }
- protected override void HandleEvent(StateEngineEvent stateEngineEvent, ref Transition transition)
- {
- base.HandleEvent(stateEngineEvent, ref transition);
- if (stateEngineEvent.Type is EventType)
- {
- switch ((EventType)stateEngineEvent.Type)
- {
- case EventType.NozzleReplaced:
- MultiFusionsSupport.CopyJyInfoToTargetFusion(Main.CurrentNozzleId, Main.DebugLogger); // should be free
-
- if (Main.CurrentEpsTrx != null )
- {
- var epsTrxModel = EpsTransactionQuery.RefreshEpsTrx(Main.CurrentEpsTrx.Model.id);
-
- Main.DebugLogger.Add($"NozzleReplaced, CurrentEpsTrx.jihao = {Main.CurrentEpsTrx.Model.jihao}, " +
- $"epsTrxModel.jihao = {epsTrxModel.jihao}, CurrentNozzleId: {Main.CurrentNozzleId}");
- var associateNozzles = Main.Eps.GetFp(Main.CurrentNozzleId)?.AssociatedNozzles.ToList();
- if (epsTrxModel.jihao != Main.CurrentNozzleId && !associateNozzles.Contains(epsTrxModel.jihao))
- {
- Main.DebugLogger.Add("nozzle Id not match, indoor pay");
- Main.CurrentEpsTrx.Model.car_number = null;
- Main.CurrentEpsTrx = null;
- }
- }
- transition = new Transition(this, TransitionType.NozzleReplaced);
- stateEngineEvent.Handled = true;
- break;
- case EventType.DisplayResponseReceived:
- stateEngineEvent.Handled = true;
- break;
- case EventType.ReaderStateChanged:
- Main.DebugLogger.Add("Unexpected reader state change in Fueling");
- var e = stateEngineEvent as GenericEvent<CardReaderStateEventArgs>;
- if (e != null && e.EventArgs != null)
- {
- if (e.EventArgs.CardReaderState.State == CardReaderState.CardInserted)
- {
- Main.DebugLogger.Add("Unexpected card inserted event in Fueling");
- e.Handled = true;
- transition = new Transition(this, TransitionType.CardInserted);
- }
- else if (e.EventArgs.CardReaderState.State == CardReaderState.Idle)
- {
- Main.DebugLogger.Add("Unexpected card removed event in Fueling");
- e.Handled = true;
- Main.RemovePendingBalanceResult();
- return;
- }
- }
- break;
- case EventType.OnlineVerification:
- Main.DebugLogger.Add("Unexpected online verification in Fueling");
- stateEngineEvent.Handled = true;
- var result = new CardOnlineVerificationResultRequest(VerificationResult.Failure, 0, "处理错误");
- Main.SendCommand(result, out sqNo);
- break;
- case EventType.CardReaderAck:
- GenericEvent<CardReaderAckEventArgs> ackEvent = stateEngineEvent as GenericEvent<CardReaderAckEventArgs>;
- if (ackEvent != null && ackEvent.EventArgs != null)
- {
- if (ackEvent.EventArgs.Ack.MessageSeqNumber == sqNo)
- {
- Main.DebugLogger.Add("Card reader ack received in Fueling");
- ackEvent.Handled = true;
- transition = new Transition(this, TransitionType.Done);
- }
- }
- break;
- }
- }
- }
- }
- }
|