using Autofac; using Entity.Constant; using Entity.DbModel.Station; using HybirdFrameworkCore.Autofac; using log4net; using Repository.Station; using Service.Mgr; namespace Service.Execute.Step; public class CancelState : IState { private readonly SwapOrderRepository _swapOrderRepository = AppInfo.Container.Resolve(); private readonly SwapAmtOrderRepository _swapAmtOrderRepository = AppInfo.Container.Resolve(); private static readonly ILog _log = LogManager.GetLogger(typeof(CancelState)); private static readonly ManualOperationRecordRepository _manualOperationRecordRepository = AppInfo.Container.Resolve(); public StateResult Handle(SwappingStateMachine machine) { _log.Info($"'goto cancel"); machine.CancelFlag = false; if (machine.SwapOrderBatteryInfo.swapAmtOrder != null) { machine.SwapOrderBatteryInfo.swapAmtOrder.Status = (byte)InfoEnum.AmtOrderStatus.SwapFail; _swapAmtOrderRepository.Update(machine.SwapOrderBatteryInfo.swapAmtOrder); } if (machine.SwapOrder != null) { machine.SwapOrder.SwapResult = (byte)InfoEnum.SwapOrderResult.Fail; _swapOrderRepository.Update(machine.SwapOrder); } _manualOperationRecordRepository.Insert(new ManualOperationRecord() { Type = 2, CreatedBy = UserManager.Account, UpdatedBy = UserManager.Account, Operator = machine.OperateModel.Operator, Reason = machine.OperateModel.Reason, }); machine.Reset(); return new StateResult() { SwappingState = SwappingState.StationReady }; } }