123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- using EVCB_OCPP.Domain;
- using EVCB_OCPP.Packet.Messages.RemoteTrigger;
- using EVCB_OCPP.WSServer.Message;
- using EVCB_OCPP.WSServer.Service.WsService;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Logging;
- using Quartz;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace EVCB_OCPP.WSServer.Jobs;
- [DisallowConcurrentExecution]
- public class ServerUpdateJob : IJob
- {
- private readonly ProtalServer protalServer;
- private readonly IDbContextFactory<MainDBContext> maindbContextFactory;
- private readonly ILogger<ServerUpdateJob> logger;
- public ServerUpdateJob(
- ProtalServer protalServer,
- IDbContextFactory<MainDBContext> maindbContextFactory,
- ILogger<ServerUpdateJob> logger)
- {
- this.protalServer = protalServer;
- this.maindbContextFactory = maindbContextFactory;
- this.logger = logger;
- }
- public async Task Execute(IJobExecutionContext context)
- {
-
- BasicMessageHandler msgAnalyser = new BasicMessageHandler();
- Dictionary<string, WsClientData> _copyClientDic = protalServer.GetClientDic();
- var checkUpdateDt = DateTime.UtcNow;
- List<string> needUpdateChargers = new List<string>();
- using (var db = await maindbContextFactory.CreateDbContextAsync())
- {
-
-
-
- needUpdateChargers = await db.Machines.Where(x => x.FwAssignedVersion.HasValue == true &&
- x.FwAssignedVersion != x.FwVersionReport && x.Online == true)
- .Select(x => x.ChargeBoxId).AsNoTracking().ToListAsync();
- }
- foreach (var chargeBoxId in needUpdateChargers)
- {
- try
- {
- WsClientData session;
- if (_copyClientDic.TryGetValue(chargeBoxId, out session))
- {
- string requestId = Guid.NewGuid().ToString();
-
- if (session.IsCheckIn && !session.ISOCPP20)
- {
- var _request = new TriggerMessageRequest()
- {
- requestedMessage = Packet.Messages.SubTypes.MessageTrigger.FirmwareStatusNotification
- };
- var uuid = session.queue.store(_request);
- string rawRequest = BasicMessageHandler.GenerateRequest(uuid, _request.Action, _request);
- protalServer.SendMsg(session, rawRequest, string.Format("{0} {1}", _request.Action, "Request"), "");
- #region OCTT ,測試韌體更新方式
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #endregion
- }
- }
- }
- catch (Exception ex)
- {
- logger.LogError("serverUpdateTrigger ChargeBoxId:{0} Ex:{1}", chargeBoxId, ex.ToString());
- }
- }
- }
- }
|