|
@@ -518,109 +518,110 @@ namespace EVCB_OCPP.WSServer.Message
|
|
|
_idTagInfo = new IdTagInfo() { expiryDate = DateTime.UtcNow.AddDays(1), status = AuthorizationStatus.Accepted };
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- using (var db = new MainDBContext())
|
|
|
+ try
|
|
|
{
|
|
|
- var transaction = db.TransactionRecord.Where(x => x.Id == _request.transactionId
|
|
|
- && x.ChargeBoxId == session.ChargeBoxId).FirstOrDefault();
|
|
|
-
|
|
|
- //遠傳太久以前的停止充電 直接拒絕 避免電樁持續重送~~~~~~~
|
|
|
- if (_request.timestamp < new DateTime(2021, 11, 1))
|
|
|
+ using (var db = new MainDBContext())
|
|
|
{
|
|
|
- var confirm = new StopTransactionConfirmation()
|
|
|
+ var transaction = db.TransactionRecord.Where(x => x.Id == _request.transactionId
|
|
|
+ && x.ChargeBoxId == session.ChargeBoxId).FirstOrDefault();
|
|
|
+
|
|
|
+ // throw new Exception("123");
|
|
|
+ //遠傳太久以前的停止充電 直接拒絕 避免電樁持續重送~~~~~~~
|
|
|
+ if (_request.timestamp < new DateTime(2021, 11, 1))
|
|
|
{
|
|
|
- idTagInfo = new IdTagInfo()
|
|
|
+ var confirm = new StopTransactionConfirmation()
|
|
|
{
|
|
|
- status = AuthorizationStatus.Invalid
|
|
|
- }
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
- result.Message = confirm;
|
|
|
- result.Success = true;
|
|
|
- return result;
|
|
|
- }
|
|
|
-
|
|
|
+ idTagInfo = new IdTagInfo()
|
|
|
+ {
|
|
|
+ status = AuthorizationStatus.Invalid
|
|
|
+ }
|
|
|
|
|
|
- if (transaction != null)
|
|
|
- {
|
|
|
- var confirm = new StopTransactionConfirmation()
|
|
|
- {
|
|
|
- idTagInfo = _idTagInfo
|
|
|
+ };
|
|
|
|
|
|
- };
|
|
|
- //Avoid rewrite transaction data
|
|
|
- if (transaction.StopTime != GlobalConfig.DefaultNullTime)
|
|
|
- {
|
|
|
result.Message = confirm;
|
|
|
result.Success = true;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- _ConnectorId = transaction.ConnectorId;
|
|
|
- transaction.MeterStop = _request.meterStop;
|
|
|
- transaction.StopTime = _request.timestamp.ToUniversalTime();
|
|
|
- transaction.StopReasonId = _request.reason.HasValue ? (int)_request.reason.Value : 0;
|
|
|
- transaction.StopIdTag = _request.idTag;
|
|
|
- transaction.Receipt = string.Empty;
|
|
|
- transaction.Cost = session.IsBilling ? -1 : 0;
|
|
|
|
|
|
- await db.SaveChangesAsync();
|
|
|
+ if (transaction != null)
|
|
|
+ {
|
|
|
+ var confirm = new StopTransactionConfirmation()
|
|
|
+ {
|
|
|
+ idTagInfo = _idTagInfo
|
|
|
+
|
|
|
+ };
|
|
|
+ //Avoid rewrite transaction data
|
|
|
+ if (transaction.StopTime != GlobalConfig.DefaultNullTime)
|
|
|
+ {
|
|
|
+ result.Message = confirm;
|
|
|
+ result.Success = true;
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ _ConnectorId = transaction.ConnectorId;
|
|
|
+ transaction.MeterStop = _request.meterStop;
|
|
|
+ transaction.StopTime = _request.timestamp.ToUniversalTime();
|
|
|
+ transaction.StopReasonId = _request.reason.HasValue ? (int)_request.reason.Value : 0;
|
|
|
+ transaction.StopIdTag = _request.idTag;
|
|
|
+ transaction.Receipt = string.Empty;
|
|
|
+ transaction.Cost = session.IsBilling ? -1 : 0;
|
|
|
+
|
|
|
+ await db.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
|
|
- if (session.IsBilling)
|
|
|
- {
|
|
|
- db.ServerMessage.Add(new ServerMessage()
|
|
|
+ if (session.IsBilling)
|
|
|
{
|
|
|
- ChargeBoxId = session.ChargeBoxId,
|
|
|
- CreatedBy = "Server",
|
|
|
- CreatedOn = DateTime.UtcNow,
|
|
|
- OutAction = Actions.DataTransfer.ToString(),
|
|
|
- OutRequest = JsonConvert.SerializeObject(
|
|
|
- new DataTransferRequest()
|
|
|
- {
|
|
|
- messageId = "ID_TxEnergy",
|
|
|
- vendorId = "Phihong Technology",
|
|
|
- data = JsonConvert.SerializeObject(new { txId = _request.transactionId, ConnectorId = transaction.ConnectorId })
|
|
|
- },
|
|
|
- new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.None }),
|
|
|
- SerialNo = Guid.NewGuid().ToString(),
|
|
|
- InMessage = string.Empty
|
|
|
+ db.ServerMessage.Add(new ServerMessage()
|
|
|
+ {
|
|
|
+ ChargeBoxId = session.ChargeBoxId,
|
|
|
+ CreatedBy = "Server",
|
|
|
+ CreatedOn = DateTime.UtcNow,
|
|
|
+ OutAction = Actions.DataTransfer.ToString(),
|
|
|
+ OutRequest = JsonConvert.SerializeObject(
|
|
|
+ new DataTransferRequest()
|
|
|
+ {
|
|
|
+ messageId = "ID_TxEnergy",
|
|
|
+ vendorId = "Phihong Technology",
|
|
|
+ data = JsonConvert.SerializeObject(new { txId = _request.transactionId, ConnectorId = transaction.ConnectorId })
|
|
|
+ },
|
|
|
+ new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.None }),
|
|
|
+ SerialNo = Guid.NewGuid().ToString(),
|
|
|
+ InMessage = string.Empty
|
|
|
|
|
|
- });
|
|
|
+ });
|
|
|
|
|
|
- db.SaveChanges();
|
|
|
- }
|
|
|
+ db.SaveChanges();
|
|
|
+ }
|
|
|
|
|
|
- result.Message = confirm;
|
|
|
- result.Success = true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
+ result.Message = confirm;
|
|
|
+ result.Success = true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
|
|
|
- result.Exception = new Exception("Can't find transactionId " + _request.transactionId);
|
|
|
+ result.Exception = new Exception("Can't find transactionId " + _request.transactionId);
|
|
|
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- if (_request.transactionData != null)
|
|
|
- {
|
|
|
- if (_request.transactionData.Count > 0)
|
|
|
+ if (_request.transactionData != null)
|
|
|
{
|
|
|
- using (var _meterDb = new MeterValueDBContext())
|
|
|
+ if (_request.transactionData.Count > 0)
|
|
|
{
|
|
|
- foreach (var item in _request.transactionData)
|
|
|
+ using (var _meterDb = new MeterValueDBContext())
|
|
|
{
|
|
|
- foreach (var sampleVaule in item.sampledValue)
|
|
|
+ foreach (var item in _request.transactionData)
|
|
|
{
|
|
|
- decimal value = Convert.ToDecimal(sampleVaule.value);
|
|
|
+ foreach (var sampleVaule in item.sampledValue)
|
|
|
+ {
|
|
|
+ decimal value = Convert.ToDecimal(sampleVaule.value);
|
|
|
|
|
|
- string sp = "[dbo].[uspInsertMeterValueRecord] @ChargeBoxId," +
|
|
|
- "@ConnectorId,@Value,@CreatedOn,@ContextId,@FormatId,@MeasurandId,@PhaseId,@LocationId,@UnitId,@TransactionId";
|
|
|
+ string sp = "[dbo].[uspInsertMeterValueRecord] @ChargeBoxId," +
|
|
|
+ "@ConnectorId,@Value,@CreatedOn,@ContextId,@FormatId,@MeasurandId,@PhaseId,@LocationId,@UnitId,@TransactionId";
|
|
|
|
|
|
- List<SqlParameter> parameter = new List<SqlParameter>
|
|
|
+ List<SqlParameter> parameter = new List<SqlParameter>
|
|
|
{
|
|
|
new SqlParameter("ChargeBoxId",session.ChargeBoxId),
|
|
|
new SqlParameter("ConnectorId", (byte)_ConnectorId),
|
|
@@ -636,14 +637,24 @@ namespace EVCB_OCPP.WSServer.Message
|
|
|
};
|
|
|
|
|
|
|
|
|
- _meterDb.Database.ExecuteSqlCommand(sp, parameter.ToArray());
|
|
|
+ _meterDb.Database.ExecuteSqlCommand(sp, parameter.ToArray());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ catch(Exception ex)
|
|
|
+ {
|
|
|
+ result.Exception = new Exception("TransactionId " + _request.transactionId+" "+ ex.Message);
|
|
|
+ result.CallErrorMsg = "Reject Response Message";
|
|
|
+ result.Success = false;
|
|
|
+ // return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
}
|