|
@@ -24,12 +24,29 @@ using System.Threading.Tasks;
|
|
|
|
|
|
namespace EVCB_OCPP.WSServer.Message
|
|
|
{
|
|
|
+ public class ID_CreditDeductResult
|
|
|
+ {
|
|
|
+ public int txId { set; get; }
|
|
|
+
|
|
|
+ public string creditNo { set; get; }
|
|
|
+
|
|
|
+
|
|
|
+ public bool deductResult { set; get; }
|
|
|
+
|
|
|
+ public bool isDonateInvoice { set; get; }
|
|
|
+
|
|
|
+
|
|
|
+ public decimal amount { set; get; }
|
|
|
+
|
|
|
+ public string approvalNo { set; get; }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
internal partial class ProfileHandler
|
|
|
{
|
|
|
static private ILogger logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
string webConnectionString = ConfigurationManager.ConnectionStrings["WebDBContext"].ConnectionString;
|
|
|
-
|
|
|
+ private OuterHttpClient httpClient = new OuterHttpClient();
|
|
|
async internal Task<MessageResult> ExecuteCoreRequest(Actions action, ClientData session, IRequest request)
|
|
|
{
|
|
|
Stopwatch watch = new Stopwatch();
|
|
@@ -45,9 +62,38 @@ namespace EVCB_OCPP.WSServer.Message
|
|
|
{
|
|
|
case Actions.DataTransfer:
|
|
|
{
|
|
|
+ DataTransferRequest _request = request as DataTransferRequest;
|
|
|
+ var creditDeductResult = JsonConvert.DeserializeObject<ID_CreditDeductResult>(_request.data);
|
|
|
+ var confirm = new DataTransferConfirmation() { status = DataTransferStatus.Accepted };
|
|
|
+ if (_request.messageId == "ID_CreditDeductResult")
|
|
|
+ {
|
|
|
+ if (session.CustomerId == new Guid("009E603C-79CD-4620-A2B8-D9349C0E8AD8"))
|
|
|
+ {
|
|
|
+ var report = new
|
|
|
+ {
|
|
|
+ ChargeBoxId = session.ChargeBoxId,
|
|
|
+ IsDonateInvoice = creditDeductResult.isDonateInvoice,
|
|
|
+ CreditNo = creditDeductResult.creditNo,
|
|
|
+ DeductResult = creditDeductResult.deductResult,
|
|
|
+ SessionId = creditDeductResult.txId,
|
|
|
+ approvalNo= creditDeductResult.approvalNo,
|
|
|
+ amount = creditDeductResult.amount,
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ var response = await httpClient.Post(GlobalConfig.TCC_API_URL + "prepare_issue_invoice", new Dictionary<string, string>()
|
|
|
+ {
|
|
|
+ { "PartnerId",session.CustomerId.ToString()}
|
|
|
+
|
|
|
+ }, JsonConvert.SerializeObject(report, GlobalConfig.JSONSERIALIZER_FORMAT), GlobalConfig.TCC_SALTKEY);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ confirm.data = JsonConvert.SerializeObject(new { txId = creditDeductResult.txId, creditNo = creditDeductResult.creditNo, msgId = _request.messageId });
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- var confirm = new DataTransferConfirmation() { status = DataTransferStatus.Accepted };
|
|
|
|
|
|
result.Message = confirm;
|
|
|
result.Success = true;
|
|
@@ -717,7 +763,7 @@ namespace EVCB_OCPP.WSServer.Message
|
|
|
|
|
|
if (feedto.StopTime != GlobalConfig.DefaultNullTime)
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
// 計算停車費
|
|
|
var fee = decimal.Parse(feedto.Fee.Split('&')[1]);
|
|
|
decimal accountBalance = 0;
|
|
@@ -746,30 +792,30 @@ namespace EVCB_OCPP.WSServer.Message
|
|
|
if (bill.Count == 1)
|
|
|
{
|
|
|
confirmbill = bill;
|
|
|
- receipt += string.Format("| {0} - {1}:| {2} kWh @ ${3}/kWh=${4}", tx.StartTime.ToString("hh:mm tt", new CultureInfo("en-us")),confirmbill[0].PeriodEnergy.ToString("0.0000"), tx.StopTime.ToString("hh:mm tt", new CultureInfo("en-us")), bill[0].Fee, bill[0].Total);
|
|
|
+ receipt += string.Format("| {0} - {1}:| {2} kWh @ ${3}/kWh=${4}", tx.StartTime.ToString("hh:mm tt", new CultureInfo("en-us")), confirmbill[0].PeriodEnergy.ToString("0.0000"), tx.StopTime.ToString("hh:mm tt", new CultureInfo("en-us")), bill[0].Fee, bill[0].Total);
|
|
|
break;
|
|
|
}
|
|
|
if (bill.Count > 1)
|
|
|
{
|
|
|
var time = startTime.ToString("hh:mm tt", new CultureInfo("en-us"));
|
|
|
- var tt = bill.Where(x => x.StartTime ==time).FirstOrDefault();
|
|
|
+ var tt = bill.Where(x => x.StartTime == time).FirstOrDefault();
|
|
|
confirmbill.Add(tt);
|
|
|
if (confirmbill.Count == 1)
|
|
|
{
|
|
|
confirmbill[0].StartTime = tx.StartTime.ToString("hh:mm tt", new CultureInfo("en-us"));
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
|
|
|
var stopTimeText = tx.StopTime.ToString("hh:mm tt", new CultureInfo("en-us"));
|
|
|
if (confirmbill[confirmbill.Count - 1].StartTime.Contains(stopTimeText.Split(' ')[1]))
|
|
|
{
|
|
|
var subHourText = (int.Parse(stopTimeText.Split(':')[0])).ToString();
|
|
|
subHourText = subHourText.Length == 1 ? "0" + subHourText : subHourText;
|
|
|
- if(confirmbill[confirmbill.Count - 1].StartTime.Contains(subHourText))
|
|
|
+ if (confirmbill[confirmbill.Count - 1].StartTime.Contains(subHourText))
|
|
|
{
|
|
|
confirmbill[confirmbill.Count - 1].EndTime = stopTimeText;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
receipt += string.Format("| {0} - {1}:| {2} kWh @ ${3}/kWh=${4}", confirmbill[confirmbill.Count - 1].StartTime, confirmbill[confirmbill.Count - 1].EndTime,
|
|
|
confirmbill[confirmbill.Count - 1].PeriodEnergy.ToString("0.0000"), confirmbill[confirmbill.Count - 1].Fee, confirmbill[confirmbill.Count - 1].Total);
|