|
@@ -3,6 +3,7 @@ using DotNetCore.CAP.Internal;
|
|
|
using IdentityModel;
|
|
|
using IMES_Middleware_Platform.Api.Core.Consts;
|
|
|
using IMES_Middleware_Platform.Api.Core.Handlers;
|
|
|
+using IMES_Middleware_Platform.Api.Core.Utility;
|
|
|
using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
|
|
|
using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
|
|
|
using IMES_Middleware_Platform.Api.Domain.Push;
|
|
@@ -13,15 +14,19 @@ using Microsoft.AspNetCore.Mvc;
|
|
|
using Microsoft.Extensions.Configuration;
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
using SixLabors.ImageSharp.Drawing;
|
|
|
+using SixLabors.ImageSharp.Metadata.Profiles.Exif;
|
|
|
using System;
|
|
|
+using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
using System.ComponentModel;
|
|
|
+using System.Diagnostics.Metrics;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Net;
|
|
|
using System.Net.Http;
|
|
|
using System.Reactive;
|
|
|
using System.Reactive.Joins;
|
|
|
+using System.Security.Cryptography;
|
|
|
using System.Text;
|
|
|
using System.Text.Json;
|
|
|
using System.Text.RegularExpressions;
|
|
@@ -29,12 +34,14 @@ using System.Threading.Tasks;
|
|
|
using System.Xml.Linq;
|
|
|
using ZhonTai.Admin.Core.Configs;
|
|
|
using ZhonTai.Admin.Core.Db;
|
|
|
+using ZhonTai.Admin.Core.Entities;
|
|
|
using ZhonTai.Admin.Core.Logs;
|
|
|
using ZhonTai.Admin.Services;
|
|
|
using ZhonTai.Common.Helpers;
|
|
|
using ZhonTai.DynamicApi;
|
|
|
using ZhonTai.DynamicApi.Attributes;
|
|
|
using static COSXML.Model.Tag.ListBucketVersions;
|
|
|
+using static System.Collections.Specialized.BitVector32;
|
|
|
|
|
|
namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
{
|
|
@@ -59,6 +66,19 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
|
|
|
public readonly IUserRepository _userRepository;
|
|
|
public readonly IUserPoleRepository _userPoleRepository;
|
|
|
+
|
|
|
+ public readonly IBlackBoxRepository _blackBoxRepository;
|
|
|
+ public readonly ICalculatorMainboardRepository _calculatorMainboardRepository;
|
|
|
+ public readonly ICompanyRepository _companyRepository;
|
|
|
+ public readonly IDisplayControlRepository _displayControlRepository;
|
|
|
+ public readonly IEncoderControlsRepository _encoderControlsRepository;
|
|
|
+ public readonly IMaintenanceRepository _maintenanceRepository;
|
|
|
+ public readonly IMeterRepository _meterRepository;
|
|
|
+ public readonly ISupplierRepository _supplierRepository;
|
|
|
+ public readonly ITaxControlRepository _taxControlRepository;
|
|
|
+ public readonly IValveControlRepository _valveControlRepository;
|
|
|
+ public readonly IVaporRecoveryControlRepository _vaporRecoveryControlRepository;
|
|
|
+
|
|
|
static string token = string.Empty;
|
|
|
public AssociationService(IConfiguration configuration
|
|
|
, IFuelDispenserRepository fuelDispenserRepository
|
|
@@ -74,7 +94,19 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
IPushTemplateMappingRepository pushTemplateMappingRepository,
|
|
|
IRoleMappingRepository roleMappingRepository,
|
|
|
IUserRepository userRepository,
|
|
|
- IUserPoleRepository userPoleRepository)
|
|
|
+ IUserPoleRepository userPoleRepository,
|
|
|
+ IBlackBoxRepository blackBoxRepository,
|
|
|
+ ICalculatorMainboardRepository calculatorMainboardRepository,
|
|
|
+ ICompanyRepository companyRepository,
|
|
|
+ IDisplayControlRepository displayControlRepository,
|
|
|
+ IEncoderControlsRepository encoderControlsRepository,
|
|
|
+ IMaintenanceRepository maintenanceRepository,
|
|
|
+ IMeterRepository meterRepository,
|
|
|
+ ISupplierRepository supplierRepository,
|
|
|
+ ITaxControlRepository taxControlRepository,
|
|
|
+ IValveControlRepository valveControlRepository,
|
|
|
+ IVaporRecoveryControlRepository vaporRecoveryControlRepository
|
|
|
+ )
|
|
|
{
|
|
|
_configuration = configuration;
|
|
|
_fuelDispenserRepository = fuelDispenserRepository;
|
|
@@ -91,6 +123,17 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
_pushTemplateMappingRepository = pushTemplateMappingRepository;
|
|
|
_userRepository = userRepository;
|
|
|
_userPoleRepository = userPoleRepository;
|
|
|
+ _blackBoxRepository = blackBoxRepository;
|
|
|
+ _calculatorMainboardRepository = calculatorMainboardRepository;
|
|
|
+ _companyRepository = companyRepository;
|
|
|
+ _displayControlRepository = displayControlRepository;
|
|
|
+ _encoderControlsRepository = encoderControlsRepository;
|
|
|
+ _maintenanceRepository = maintenanceRepository;
|
|
|
+ _meterRepository = meterRepository;
|
|
|
+ _supplierRepository = supplierRepository;
|
|
|
+ _taxControlRepository = taxControlRepository;
|
|
|
+ _valveControlRepository = valveControlRepository;
|
|
|
+ _vaporRecoveryControlRepository = vaporRecoveryControlRepository;
|
|
|
}
|
|
|
|
|
|
public Task<LocalApiDto> GetAllStation(string areaType, string search)
|
|
@@ -653,7 +696,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
- public async Task GetAssociationUserAsync(string token,string url)
|
|
|
+ public async Task GetAssociationUserAsync(string token, string url)
|
|
|
{
|
|
|
|
|
|
|
|
@@ -737,9 +780,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
List<StationEntity> historyDtos = new List<StationEntity>();
|
|
|
for (var i = 0; i < myObject.data.content.Count(); i++)
|
|
|
{
|
|
|
- DateTime? AlarmTime = myObject.data.content[i].alarmTime.HasValue
|
|
|
- ? DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].alarmTime.Value).UtcDateTime
|
|
|
- : (DateTime?)null;
|
|
|
+ DateTime? AlarmTime = DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].alarmTime).UtcDateTime;
|
|
|
|
|
|
StationEntity nozzle = new StationEntity
|
|
|
{
|
|
@@ -748,7 +789,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
City = myObject.data.content[i].city,
|
|
|
CityCode = myObject.data.content[i].cityCode,
|
|
|
Type = myObject.data.content[i].type,
|
|
|
- RegisterNo = myObject.data.content[i].registerNo,
|
|
|
+ RegisterNo = "",
|
|
|
Province = myObject.data.content[i].province,
|
|
|
Contact = myObject.data.content[i].contact,
|
|
|
Lat = myObject.data.content[i].lat,
|
|
@@ -788,7 +829,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -847,7 +888,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
}
|
|
|
}
|
|
|
if (pushlist.Count > 0)
|
|
|
- {
|
|
|
+ {
|
|
|
_pushRepository.Insert(pushlist);
|
|
|
}
|
|
|
List<PushRuleEntity> pushRules = new List<PushRuleEntity>();
|
|
@@ -871,7 +912,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
Conditions = true;
|
|
|
}
|
|
|
if (!Conditions)
|
|
|
- {
|
|
|
+ {
|
|
|
return false;
|
|
|
}
|
|
|
Conditions = CompareStringToInt(trigger.Symbol, trigger.Right, alarmHistoryEntity.AlarmLevel);
|
|
@@ -937,7 +978,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
{
|
|
|
Conditions = true;
|
|
|
}
|
|
|
- Conditions = CompareStringToInt(trigger.Symbol, trigger.Right,alarmHistoryEntity.AlarmLevel);
|
|
|
+ Conditions = CompareStringToInt(trigger.Symbol, trigger.Right, alarmHistoryEntity.AlarmLevel);
|
|
|
if (Conditions)
|
|
|
{
|
|
|
return true;
|
|
@@ -975,7 +1016,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
|
|
|
|
|
|
|
|
|
- public bool CompareStringToInt(string Symbol, string Right,int? AlarmLevel)
|
|
|
+ public bool CompareStringToInt(string Symbol, string Right, int? AlarmLevel)
|
|
|
{
|
|
|
int? level = 0;
|
|
|
if (int.TryParse(Right, out int result))
|
|
@@ -1005,5 +1046,638 @@ namespace IMES_Middleware_Platform.Api.Services.Association
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ [HttpGet]
|
|
|
+ public async Task GetStationList()
|
|
|
+ {
|
|
|
+ HttpHelper helper = new HttpHelper();
|
|
|
+ int currentPage = 0;
|
|
|
+ int pageSize = 20;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ string url = "https://cma-fds.org.cn/api/open/v1/station/list?page=" + currentPage + "&size=" + pageSize + "&expand=supervision&expand=company";
|
|
|
+ string secureRandomString = GenerateSecureRandomString(10);
|
|
|
+ string unixTimestampMs = ((DateTimeOffset)DateTime.UtcNow).ToUnixTimeMilliseconds().ToString();
|
|
|
+ var query = "query={\"page\":\"" + currentPage + "\",\"size\":\"" + pageSize + "\",\"expand\":[\"supervision\",\"company\"]}";
|
|
|
+ string stringToSign = $"sign_method=HMAC-SM3&secret_id=AwTHQMpzVvsCe7qx&nonce={secureRandomString}×tamp={unixTimestampMs}";
|
|
|
+ stringToSign = stringToSign + "&" + query;
|
|
|
+ var encodedString = Uri.EscapeDataString(stringToSign);
|
|
|
+ byte[] hmac = HMAC_SM3.ComputeHash("BK6gfhrUxxtIqD7ZeTU0LTd1w9SOseih", encodedString, System.Text.Encoding.UTF8);
|
|
|
+ var signature = Convert.ToBase64String(hmac);
|
|
|
+ string result = await helper.GetAsync(string.Format(url), secureRandomString, unixTimestampMs, signature);
|
|
|
+ StationRootobject myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<StationRootobject>(result);
|
|
|
+ if (myObject == null || myObject.data == null || myObject.data.content.Count() == 0)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ List<StationEntity> list = new List<StationEntity>();
|
|
|
+ List<int> intList = new List<int>();
|
|
|
+ for (var i = 0; i < myObject.data.content.Count(); i++)
|
|
|
+ {
|
|
|
+ DateTime? AlarmTime = DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].alarmTime).UtcDateTime;
|
|
|
+
|
|
|
+ StationEntity nozzle = new StationEntity
|
|
|
+ {
|
|
|
+ Alarming = myObject.data.content[i].alarming,
|
|
|
+ DistrictCode = myObject.data.content[i].districtCode,
|
|
|
+ City = myObject.data.content[i].city,
|
|
|
+ CityCode = myObject.data.content[i].cityCode,
|
|
|
+ Type = myObject.data.content[i].type,
|
|
|
+ RegisterNo = "",
|
|
|
+ Province = myObject.data.content[i].province,
|
|
|
+ Contact = myObject.data.content[i].contact,
|
|
|
+ Lat = myObject.data.content[i].lat,
|
|
|
+ Address = myObject.data.content[i].address,
|
|
|
+ Lng = myObject.data.content[i].lng,
|
|
|
+ Test = myObject.data.content[i].test,
|
|
|
+ Business = myObject.data.content[i].alarming,
|
|
|
+ ProvinceCode = myObject.data.content[i].provinceCode,
|
|
|
+ AlarmTime = AlarmTime,
|
|
|
+ DispensersTotal = myObject.data.content[i].dispensersTotal,
|
|
|
+ Phone = myObject.data.content[i].phone,
|
|
|
+ District = myObject.data.content[i].district,
|
|
|
+ Name = myObject.data.content[i].name,
|
|
|
+ NoticesTotal = myObject.data.content[i].noticesTotal,
|
|
|
+ NozzleControlsTotal = myObject.data.content[i].nozzleControlsTotal,
|
|
|
+ CompanyID = myObject.data.content[i].company.id,
|
|
|
+ StationID = myObject.data.content[i].id,
|
|
|
+ supervision = myObject.data.content[i].supervision.id
|
|
|
+ };
|
|
|
+ list.Add(nozzle);
|
|
|
+ intList.Add(nozzle.CompanyID);
|
|
|
+ }
|
|
|
+ currentPage++;
|
|
|
+ var _station = _stationRepository.Where(x => intList.Contains(x.CompanyID)).ToList();
|
|
|
+ _station.ForEach(a =>
|
|
|
+ {
|
|
|
+ list.RemoveAll(e => e.Id == a.Id);
|
|
|
+ });
|
|
|
+ if (list != null)
|
|
|
+ {
|
|
|
+
|
|
|
+ await _stationRepository.InsertAsync(list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<string> GetAsync(string url, string query)
|
|
|
+ {
|
|
|
+ HttpHelper helper = new HttpHelper();
|
|
|
+ string secureRandomString = GenerateSecureRandomString(10);
|
|
|
+ string unixTimestampMs = ((DateTimeOffset)DateTime.UtcNow).ToUnixTimeMilliseconds().ToString();
|
|
|
+ string stringToSign = $"sign_method=HMAC-SM3&secret_id=AwTHQMpzVvsCe7qx&nonce={secureRandomString}×tamp={unixTimestampMs}";
|
|
|
+ stringToSign = stringToSign + "&" + query;
|
|
|
+ var encodedString = Uri.EscapeDataString(stringToSign);
|
|
|
+ byte[] hmac = HMAC_SM3.ComputeHash("BK6gfhrUxxtIqD7ZeTU0LTd1w9SOseih", encodedString, System.Text.Encoding.UTF8);
|
|
|
+ var signature = Convert.ToBase64String(hmac);
|
|
|
+ string result = await helper.GetAsync(string.Format(url), secureRandomString, unixTimestampMs, signature);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ [HttpGet]
|
|
|
+ public async Task GetDispenserList()
|
|
|
+ {
|
|
|
+ HttpHelper helper = new HttpHelper();
|
|
|
+ int currentPage = 7;
|
|
|
+ int pageSize = 20;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ while (true)
|
|
|
+ {
|
|
|
+ string url = "https://cma-fds.org.cn/api/open/v1/dispenser/list?page=" + currentPage + "&size=" + pageSize + "&expand=supplier&expand=station&expand=nozzleControls&expand=nozzleControls.fuel&expand=vaporRecoveryControl&expand=calculatorMainboard";
|
|
|
+ var query = "query={\"page\":\"" + currentPage + "\",\"size\":\"" + pageSize + "\",\"expand\":[\"supplier\",\"station\",\"nozzleControls\",\"nozzleControls.fuel\",\"vaporRecoveryControl\",\"calculatorMainboard\"]}";
|
|
|
+ string result = await GetAsync(url, query);
|
|
|
+ DispenserDto myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<DispenserDto>(result);
|
|
|
+ if (myObject == null || myObject.data == null || myObject.data.content.Count() == 0)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ List<StationEntity> list = new List<StationEntity>();
|
|
|
+ List<int> intList = new List<int>();
|
|
|
+ for (var i = 0; i < myObject.data.content.Count(); i++)
|
|
|
+ {
|
|
|
+
|
|
|
+ DateTime? ProductTime = DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].productTime).UtcDateTime;
|
|
|
+ DateTime? StartTime = DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].startTime).UtcDateTime;
|
|
|
+ DateTime? InstallationDate = DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].fixTime).UtcDateTime;
|
|
|
+ FuelDispenserDto fuelDispenserDto = new FuelDispenserDto
|
|
|
+ {
|
|
|
+ Name = myObject.data.content[i].name,
|
|
|
+ OilCompany = myObject?.data.content[i]?.station?.Company?.Name,
|
|
|
+ GasStation = myObject.data.content[i].station?.Name,
|
|
|
+ SerialNumber = myObject.data.content[i].serialNum,
|
|
|
+ Model = myObject.data.content[i].type,
|
|
|
+ GunCount = myObject.data.content[i].nozzleControlsTotal,
|
|
|
+ Manufacturer = myObject.data.content[i].supplier?.Name,
|
|
|
+ Description = myObject.data.content[i].supplier?.Description,
|
|
|
+ ManufactureDate = ProductTime,
|
|
|
+ StartupDate = StartTime,
|
|
|
+ InstallationDate = InstallationDate,
|
|
|
+ DeviceStatus = myObject.data.content[i].deviceStatus,
|
|
|
+ OnlineStatus = myObject.data.content[i].onlineStatus,
|
|
|
+ AccuracyLevel = myObject.data.content[i].accuracyLevel,
|
|
|
+ MeasureRang = myObject.data.content[i].measureRang,
|
|
|
+ ModelSpec = myObject.data.content[i].modelSpec,
|
|
|
+ FuelId = myObject.data.content[i].id,
|
|
|
+ AlarmLevel = myObject.data.content[i].alarmLevel,
|
|
|
+ Province = myObject.data.content[i].station?.Province,
|
|
|
+ Phone = "",
|
|
|
+ Contact = "",
|
|
|
+ SealNo = myObject.data.content[i].serialNum,
|
|
|
+ photoIds = "",
|
|
|
+ VerificationCode = ""
|
|
|
+ };
|
|
|
+ await AddNozzle(myObject.data.content[i].nozzleControls, myObject.data.content[i].id, myObject.data.content[i].station);
|
|
|
+ var fuelDispenser = _fuelDispenserRepository.Where(x => x.FuelId == fuelDispenserDto.FuelId).First();
|
|
|
+ if (fuelDispenser == null)
|
|
|
+ {
|
|
|
+ await _fuelDispenserRepository.InsertAsync(fuelDispenserDto.ToFuelDispenser(fuelDispenserDto));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ fuelDispenser.DeviceStatus = fuelDispenserDto.DeviceStatus;
|
|
|
+ fuelDispenser.OnlineStatus = fuelDispenserDto.OnlineStatus;
|
|
|
+ fuelDispenser.FuelId = fuelDispenserDto.FuelId;
|
|
|
+ fuelDispenser.Province = myObject.data.content[i].station?.Province;
|
|
|
+ await _fuelDispenserRepository.UpdateAsync(fuelDispenser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ currentPage++;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public async Task AddNozzle(DispenserNozzlecontrol[] nozzlecontrols, int FuelId, Station station)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ List<NozzlecontrolEntity> nozzle = new List<NozzlecontrolEntity>();
|
|
|
+ foreach (var nozzlecontrol in nozzlecontrols)
|
|
|
+ {
|
|
|
+ DateTime? ProductTime = DateTimeOffset.FromUnixTimeMilliseconds(nozzlecontrol.productTime).UtcDateTime;
|
|
|
+ DateTime? StartTime = DateTimeOffset.FromUnixTimeMilliseconds(nozzlecontrol.startTime).UtcDateTime;
|
|
|
+ DateTime? FixTime = DateTimeOffset.FromUnixTimeMilliseconds(nozzlecontrol.fixTime).UtcDateTime;
|
|
|
+ DateTime? SoldTime = DateTimeOffset.FromUnixTimeMilliseconds(nozzlecontrol.soldTime).UtcDateTime;
|
|
|
+ DateTime? CreatedDate = DateTimeOffset.FromUnixTimeMilliseconds(nozzlecontrol.createdDate).UtcDateTime;
|
|
|
+ var nozzleinfo = await GetNozzleInfo(nozzlecontrol.id, FuelId, station?.Id, nozzlecontrol.fuel?.fuelName);
|
|
|
+ nozzle.Add(new NozzlecontrolEntity()
|
|
|
+ {
|
|
|
+ NozzleID = nozzlecontrol.id,
|
|
|
+ FuelId = FuelId,
|
|
|
+ FuelName = nozzlecontrol.fuel?.fuelName,
|
|
|
+ Name = nozzlecontrol.name,
|
|
|
+ MainBoard = nozzlecontrol.mainBoard,
|
|
|
+ NozzleNo = nozzlecontrol.nozzleNo,
|
|
|
+ OnlineStatus = nozzlecontrol.onlineStatus,
|
|
|
+ Hidden = nozzlecontrol.hidden,
|
|
|
+ DeviceAlarmLevel = nozzlecontrol.deviceAlarmLevel,
|
|
|
+ IotType = nozzlecontrol.iotType,
|
|
|
+ ProductTime = ProductTime,
|
|
|
+ DeviceStatus = nozzlecontrol.deviceStatus,
|
|
|
+ StartTime = StartTime,
|
|
|
+ AlarmLevel = nozzlecontrol.alarmLevel,
|
|
|
+ Value = nozzlecontrol.value,
|
|
|
+ Dirty = nozzlecontrol.dirty,
|
|
|
+ Recover = nozzlecontrol.recover,
|
|
|
+ FixTime = FixTime,
|
|
|
+ CreatedDate = CreatedDate,
|
|
|
+ CreatedBy = nozzlecontrol.createdBy,
|
|
|
+ CheatStatus = nozzlecontrol.cheatStatus,
|
|
|
+ GasStation = station?.Name,
|
|
|
+ SupplierName = "",
|
|
|
+ CompanyName = "",
|
|
|
+ StationID = station?.Id,
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ await _nozzlecontrolRepository.InsertAsync(nozzle);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public async Task<NozzleDetails> GetNozzleInfo(int id, int FuelId, int? stationid,string fuelName)
|
|
|
+ {
|
|
|
+ HttpHelper helper = new HttpHelper();
|
|
|
+ string url = "https://cma-fds.org.cn/api/open/v1/nozz/getNozzById?id=" + id + "&expand=supplier&expand=blackBox&expand=encoderControls&expand=meters&expand=vaporRecoveryControl&expand=taxControl&expand=displayControls&expand=valveControls&expand=station";
|
|
|
+ var query = "query={\"id\":\"" + id + "\",\"expand\":[\"supplier\",\"blackBox\",\"encoderControls\",\"meters\",\"vaporRecoveryControl\",\"taxControl\",\"displayControls\",\"valveControls\",\"station\"]}";
|
|
|
+ string result = await GetAsync(url, query);
|
|
|
+ NozzleDetails myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<NozzleDetails>(result);
|
|
|
+
|
|
|
+
|
|
|
+ if (myObject.data.blackBox != null)
|
|
|
+ {
|
|
|
+ AddBlackBox(myObject.data.blackBox, FuelId, stationid);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (myObject.data.encoderControls != null && myObject.data.encoderControls.Count() > 0)
|
|
|
+ {
|
|
|
+ AddEncoderControls(myObject.data.encoderControls, FuelId, stationid, myObject.data.blackBox?.id);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (myObject.data.meters != null && myObject.data.meters.Count() > 0)
|
|
|
+ {
|
|
|
+ AddMeters(myObject.data.meters, FuelId, stationid);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (myObject.data.vaporRecoveryControl != null)
|
|
|
+ {
|
|
|
+ AddVaporRecoveryControl(myObject.data.vaporRecoveryControl, FuelId, stationid, myObject.data.blackBox?.id);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (myObject.data.taxControl != null)
|
|
|
+ {
|
|
|
+ AddTaxControl(myObject.data.taxControl, FuelId, stationid, myObject.data.blackBox?.id, myObject.data.name, fuelName);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (myObject.data.displayControls != null && myObject.data.displayControls.Count() > 0)
|
|
|
+ {
|
|
|
+ AddDisplayControls(myObject.data.displayControls, FuelId, stationid, myObject.data.blackBox?.id, myObject.data.name, fuelName);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (myObject.data.valveControls != null && myObject.data.valveControls.Count() > 0)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return myObject;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public async Task AddDisplayControls(NozzleDisplaycontrol[] displaycontrols, int fuelId, int? stationId, int? blackBoxID, string NozzleName, string fuelName)
|
|
|
+ {
|
|
|
+ List<DisplayControlEntity> list = new List<DisplayControlEntity>();
|
|
|
+ foreach (var control in displaycontrols)
|
|
|
+ {
|
|
|
+ DateTime? modifiedDate = DateTimeOffset.FromUnixTimeMilliseconds(control.modifiedDate).UtcDateTime;
|
|
|
+ DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(control.fixTime).UtcDateTime;
|
|
|
+ DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(control.createdDate).UtcDateTime;
|
|
|
+ DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(control.startTime).UtcDateTime;
|
|
|
+ DisplayControlEntity entity = new DisplayControlEntity
|
|
|
+ {
|
|
|
+ Uuid = control.uuid,
|
|
|
+ Sn = control.sn,
|
|
|
+ DispenserSupplierId = control.dispenserSupplierId,
|
|
|
+ Dirty = control.dirty,
|
|
|
+ BlackBoxID = blackBoxID,
|
|
|
+ StationID = stationId,
|
|
|
+ SupplierID = null,
|
|
|
+ OnlineStatus = control.onlineStatus,
|
|
|
+ DeviceStatus = control.deviceStatus,
|
|
|
+ DeviceAlarmLevel = control.deviceAlarmLevel,
|
|
|
+ ProductTime = null,
|
|
|
+ SoldTime = null,
|
|
|
+ StartTime = startTime,
|
|
|
+ FixTime = fixTime,
|
|
|
+ PhotoId = control.photoId,
|
|
|
+ Alarms = JsonSerializer.Serialize(control.alarms),
|
|
|
+ LawSwv =null,
|
|
|
+ LawSwi = null
|
|
|
+ };
|
|
|
+
|
|
|
+ list.Add(entity);
|
|
|
+ }
|
|
|
+ await _displayControlRepository.InsertAsync(list);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public async Task AddTaxControl(NozzleDetailsTaxcontrol taxControl, int fuelId, int? stationId, int? blackBoxID,string NozzleName, string fuelName)
|
|
|
+ {
|
|
|
+ DateTime? modifiedDate = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.modifiedDate).UtcDateTime;
|
|
|
+ DateTime? productTime = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.productTime).UtcDateTime;
|
|
|
+ DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.fixTime).UtcDateTime;
|
|
|
+ DateTime? soldTime = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.soldTime).UtcDateTime;
|
|
|
+ DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.createdDate).UtcDateTime;
|
|
|
+ DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.startTime).UtcDateTime;
|
|
|
+ TaxControlEntity entity = new TaxControlEntity
|
|
|
+ {
|
|
|
+
|
|
|
+ MainBoard = taxControl.mainBoard,
|
|
|
+ ResetTimes = taxControl.resetTimes,
|
|
|
+ DeviceAlarmLevel = taxControl.deviceAlarmLevel,
|
|
|
+ OnlineStatus = taxControl.onlineStatus,
|
|
|
+ Uuid = taxControl.uuid,
|
|
|
+ SignVerify = taxControl.signVerify,
|
|
|
+ DeviceStatus = taxControl.deviceStatus,
|
|
|
+ ModifiedBy = taxControl.modifiedBy,
|
|
|
+ AlarmLevel = taxControl.alarmLevel,
|
|
|
+ Id = taxControl.id,
|
|
|
+ DispenserSupplierId = taxControl.dispenserSupplierId,
|
|
|
+ Dirty = taxControl.dirty,
|
|
|
+ Alarms = JsonSerializer.Serialize(taxControl.alarms),
|
|
|
+ NozzleControlName = taxControl.nozzleControlName,
|
|
|
+ FixTime = fixTime,
|
|
|
+ CreatedDate = taxControl.createdDate,
|
|
|
+ CreatedBy = taxControl.createdBy,
|
|
|
+ ModifiedDate = taxControl.modifiedDate,
|
|
|
+ FuelID = fuelId,
|
|
|
+ Name = NozzleName,
|
|
|
+ NozzleNo = null,
|
|
|
+ CheatStatus = null,
|
|
|
+ Recover = null,
|
|
|
+ Value = null,
|
|
|
+ Hidden = null,
|
|
|
+ TaxAlarms = null,
|
|
|
+ IotType = null,
|
|
|
+ BlackBoxID = blackBoxID,
|
|
|
+ StationID = stationId,
|
|
|
+ FuelName = fuelName,
|
|
|
+ Code = null,
|
|
|
+ ProductTime = productTime,
|
|
|
+ SoldTime = soldTime,
|
|
|
+ StartTime = startTime
|
|
|
+ };
|
|
|
+ await _taxControlRepository.InsertAsync(entity);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public async Task AddVaporRecoveryControl(Vaporrecoverycontrol control, int fuelId, int? stationId,int? blackBoxID)
|
|
|
+ {
|
|
|
+ DateTime? modifiedDate = DateTimeOffset.FromUnixTimeMilliseconds(control.modifiedDate).UtcDateTime;
|
|
|
+ DateTime? productTime = DateTimeOffset.FromUnixTimeMilliseconds(control.productTime).UtcDateTime;
|
|
|
+ DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(control.fixTime).UtcDateTime;
|
|
|
+ DateTime? soldTime = DateTimeOffset.FromUnixTimeMilliseconds(control.soldTime).UtcDateTime;
|
|
|
+ DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(control.createdDate).UtcDateTime;
|
|
|
+ DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(control.startTime).UtcDateTime;
|
|
|
+ VaporRecoveryControlEntity entity = new VaporRecoveryControlEntity
|
|
|
+ {
|
|
|
+
|
|
|
+ Uuid = control.uuid,
|
|
|
+ Swv = null,
|
|
|
+ Hdv = null,
|
|
|
+ SecCpuUuid = null,
|
|
|
+ DispenserSupplierId = control.dispenserSupplierId,
|
|
|
+ Dirty = control.dirty,
|
|
|
+ Signature = control.signature,
|
|
|
+ SignVerify = control.signVerify,
|
|
|
+ VaporRecoverySoftware = null,
|
|
|
+ BlackBoxID = blackBoxID,
|
|
|
+ StationID = stationId,
|
|
|
+ SupplierID = null,
|
|
|
+ OnlineStatus = control.onlineStatus,
|
|
|
+ DeviceStatus = control.deviceStatus,
|
|
|
+ DeviceAlarmLevel = control.deviceAlarmLevel,
|
|
|
+ ProductTime = productTime,
|
|
|
+ SoldTime = soldTime,
|
|
|
+ StartTime = startTime,
|
|
|
+ FixTime = fixTime,
|
|
|
+ PhotoId = control.photoId,
|
|
|
+ Alarms = JsonSerializer.Serialize(control.alarms),
|
|
|
+ LawSwv = null,
|
|
|
+ LawSwi = null
|
|
|
+ };
|
|
|
+ await _vaporRecoveryControlRepository.InsertAsync(entity);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public async Task AddMeters(NozzleMeter[] nozzleMeters, int fuelId, int? stationId)
|
|
|
+ {
|
|
|
+ List<MeterEntity> list = new List<MeterEntity>();
|
|
|
+ foreach (var meter in nozzleMeters)
|
|
|
+ {
|
|
|
+ DateTime? modifiedDate = DateTimeOffset.FromUnixTimeMilliseconds(meter.modifiedDate).UtcDateTime;
|
|
|
+ DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(meter.fixTime).UtcDateTime;
|
|
|
+ DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(meter.createdDate).UtcDateTime;
|
|
|
+ DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(meter.startTime).UtcDateTime;
|
|
|
+ MeterEntity entity = new MeterEntity
|
|
|
+ {
|
|
|
+
|
|
|
+ Uuid = meter.uuid,
|
|
|
+ StationID = stationId,
|
|
|
+ SupplierID = null,
|
|
|
+ OnlineStatus = meter.onlineStatus,
|
|
|
+ DeviceStatus = meter.deviceStatus,
|
|
|
+ DeviceAlarmLevel = meter.deviceAlarmLevel,
|
|
|
+ ProductTime = null,
|
|
|
+ SoldTime = null,
|
|
|
+ StartTime = startTime,
|
|
|
+ PhotoId = meter.photoId,
|
|
|
+ FixTime = fixTime,
|
|
|
+ Alarms = JsonSerializer.Serialize(meter.alarms),
|
|
|
+ id = meter.id,
|
|
|
+ FuelId = fuelId,
|
|
|
+ };
|
|
|
+ list.Add(entity);
|
|
|
+ }
|
|
|
+ await _meterRepository.InsertAsync(list);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public async Task AddEncoderControls(NozzleEncodercontrol[] nozzleEncodercontrols, int fuelId, int? stationId,int? blackBoxid)
|
|
|
+ {
|
|
|
+ List<EncoderControlsEntity> list = new List<EncoderControlsEntity>();
|
|
|
+ foreach (var encoderControls in nozzleEncodercontrols)
|
|
|
+ {
|
|
|
+ DateTime? onlineStatusDate = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.onlineStatusDate).UtcDateTime;
|
|
|
+ DateTime? modifiedDate = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.modifiedDate).UtcDateTime;
|
|
|
+ DateTime? productTime = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.productTime).UtcDateTime;
|
|
|
+ DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.fixTime).UtcDateTime;
|
|
|
+ DateTime? soldTime = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.soldTime).UtcDateTime;
|
|
|
+ DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.createdDate).UtcDateTime;
|
|
|
+ DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.startTime).UtcDateTime;
|
|
|
+ EncoderControlsEntity entity = new EncoderControlsEntity
|
|
|
+ {
|
|
|
+
|
|
|
+ DeviceAlarmLevel = encoderControls.deviceAlarmLevel,
|
|
|
+ OnlineStatus = encoderControls.onlineStatus,
|
|
|
+ SignVerify = encoderControls.signVerify,
|
|
|
+ Uuid = encoderControls.uuid,
|
|
|
+ DeviceStatus = encoderControls.deviceStatus,
|
|
|
+ SupplierID = null,
|
|
|
+ ModifiedBy = encoderControls.modifiedBy,
|
|
|
+ StartTime = startTime,
|
|
|
+ AlarmLevel = encoderControls.alarmLevel,
|
|
|
+ Id = encoderControls.id,
|
|
|
+ DispenserSupplierId = encoderControls.dispenserSupplierId,
|
|
|
+ Dirty = encoderControls.dirty,
|
|
|
+ FixTime = fixTime,
|
|
|
+ AlarmDetail = JsonSerializer.Serialize(encoderControls.alarmDetail),
|
|
|
+ CreatedDate = createdDate,
|
|
|
+ CreatedBy = encoderControls.createdBy,
|
|
|
+ ModifiedDate = modifiedDate,
|
|
|
+ CpuUuid = null,
|
|
|
+ SN = encoderControls.sn,
|
|
|
+ Hdv = encoderControls.hdv,
|
|
|
+ Signature = encoderControls.signature,
|
|
|
+ EncoderSoftware = null,
|
|
|
+ BlackBoxID = blackBoxid,
|
|
|
+ StationID = stationId,
|
|
|
+ MeterID = null,
|
|
|
+ ProductTime = productTime,
|
|
|
+ SoldTime = soldTime,
|
|
|
+ photoId = encoderControls.photoId,
|
|
|
+ Alarms = JsonSerializer.Serialize(encoderControls.alarms),
|
|
|
+ lawSwv = encoderControls.lawSwv,
|
|
|
+ lawSwi = encoderControls.lawSwi ,
|
|
|
+ FuelId = fuelId
|
|
|
+ };
|
|
|
+ list.Add(entity);
|
|
|
+ }
|
|
|
+ await _encoderControlsRepository.InsertAsync(list);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public async Task AddBlackBox(NozzleBlackbox blackbox, int fuelId, int? stationId)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ DateTime? onlineStatusDate = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.onlineStatusDate).UtcDateTime;
|
|
|
+ DateTime? alarmTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.alarmTime).UtcDateTime;
|
|
|
+ DateTime? productTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.productTime).UtcDateTime;
|
|
|
+ DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.fixTime).UtcDateTime;
|
|
|
+ DateTime? soldTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.soldTime).UtcDateTime;
|
|
|
+ DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.createdDate).UtcDateTime;
|
|
|
+ DateTime? registerUpdateTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.registerUpdateTime).UtcDateTime;
|
|
|
+ DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.startTime).UtcDateTime;
|
|
|
+
|
|
|
+ BlackBoxEntity entity = new BlackBoxEntity
|
|
|
+ {
|
|
|
+
|
|
|
+ Alarming = blackbox.alarming,
|
|
|
+ ResetTimes = blackbox.resetTimes,
|
|
|
+ OnlineStatusDate = onlineStatusDate,
|
|
|
+ DeviceAlarmLevel = blackbox.deviceAlarmLevel,
|
|
|
+ OnlineStatus = blackbox.onlineStatus,
|
|
|
+ ProductTime = productTime,
|
|
|
+ Uuid = blackbox.uuid,
|
|
|
+ SignVerify = blackbox.signVerify,
|
|
|
+ DeviceStatus = blackbox.deviceStatus,
|
|
|
+ FuelID = fuelId,
|
|
|
+ QrCode = blackbox.qrCode,
|
|
|
+ ModifiedBy = blackbox.modifiedBy,
|
|
|
+ AlarmLevel = blackbox.alarmLevel,
|
|
|
+ Id = blackbox.id,
|
|
|
+ Filtering = blackbox.filtering,
|
|
|
+ DispenserSupplierId = blackbox.dispenserSupplierId,
|
|
|
+ TaxType = blackbox.taxType,
|
|
|
+ NozzleControlName = blackbox.nozzleControlName,
|
|
|
+ FixTime = fixTime,
|
|
|
+ SoldTime = soldTime,
|
|
|
+ AlarmDetail = JsonSerializer.Serialize(blackbox.alarmDetail),
|
|
|
+ CreatedDate = createdDate,
|
|
|
+ CreatedBy = blackbox.createdBy,
|
|
|
+ ModifiedDate = blackbox.modifiedDate,
|
|
|
+ OfflineAlarmLevel = blackbox.offlineAlarmLevel,
|
|
|
+ Swv = blackbox.swv,
|
|
|
+ hdv = blackbox.hdv,
|
|
|
+ AlarmTime = alarmTime,
|
|
|
+ Imsi = blackbox.imsi,
|
|
|
+ Iccid = blackbox.iccid,
|
|
|
+ CpuUuid = blackbox.cpuUuid,
|
|
|
+ RegisterUpdateTime = registerUpdateTime,
|
|
|
+ SnapshotJson = JsonSerializer.Serialize(blackbox.snapshot2),
|
|
|
+ Xattrs = JsonSerializer.Serialize(blackbox.xattrs),
|
|
|
+ IotType = blackbox.iotType,
|
|
|
+ StationID = stationId,
|
|
|
+ supplierID = null,
|
|
|
+ FactorySupplierID = null,
|
|
|
+ StartTime = startTime,
|
|
|
+ PhotoId = blackbox.photoId,
|
|
|
+ Alarms = JsonSerializer.Serialize(blackbox.alarms),
|
|
|
+ LawSwv = null,
|
|
|
+ LawSwi = null,
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ await _blackBoxRepository.InsertAsync(entity);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ static string GenerateSecureRandomString(int length)
|
|
|
+ {
|
|
|
+ const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ byte[] randomBytes = new byte[length];
|
|
|
+
|
|
|
+ using (var rng = RandomNumberGenerator.Create())
|
|
|
+ {
|
|
|
+ rng.GetBytes(randomBytes);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < length; i++)
|
|
|
+ {
|
|
|
+ int index = randomBytes[i] % chars.Length;
|
|
|
+ sb.Append(chars[index]);
|
|
|
+ }
|
|
|
+
|
|
|
+ return sb.ToString();
|
|
|
+ }
|
|
|
}
|
|
|
}
|