Browse Source

增加IC卡转换为IMEI

develop
H Vs 11 months ago
parent
commit
f1425ab98d
5 changed files with 100 additions and 22 deletions
  1. +1
    -0
      NearCardAttendance.Service/NearCardAttendance.Service.csproj
  2. +90
    -19
      NearCardAttendance.Service/TcpServer/Handler/RegisterHandler.cs
  3. +5
    -1
      NearCardAttendance.TcpServer/Program.cs
  4. +2
    -1
      NearCardAttendance.TcpServer/appsettings.debug.json
  5. +2
    -1
      NearCardAttendance.TcpServer/appsettings.test.json

+ 1
- 0
NearCardAttendance.Service/NearCardAttendance.Service.csproj View File

@@ -15,6 +15,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\NearCardAttendance.Common\NearCardAttendance.Common.csproj" /> <ProjectReference Include="..\NearCardAttendance.Common\NearCardAttendance.Common.csproj" />
<ProjectReference Include="..\NearCardAttendance.Model\NearCardAttendance.Model.csproj" /> <ProjectReference Include="..\NearCardAttendance.Model\NearCardAttendance.Model.csproj" />
<PackageReference Include="TelpoDataService.Util" Version="1.6.9.24-beta1" />
</ItemGroup> </ItemGroup>


</Project> </Project>

+ 90
- 19
NearCardAttendance.Service/TcpServer/Handler/RegisterHandler.cs View File

@@ -13,6 +13,11 @@ using System.Threading.Channels;
using System.Threading.Tasks; using System.Threading.Tasks;
using NearCardAttendance.Model; using NearCardAttendance.Model;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using TelpoDataService.Util.Entities.GpsCard;
using TelpoDataService.Util;
using TelpoDataService.Util.Clients;
using TelpoDataService.Util.Models;
using TelpoDataService.Util.QueryObjects;


namespace NearCardAttendance.Service.TcpServer.Handler namespace NearCardAttendance.Service.TcpServer.Handler
{ {
@@ -22,15 +27,17 @@ namespace NearCardAttendance.Service.TcpServer.Handler
private readonly HttpHelper _httpHelper = default!; private readonly HttpHelper _httpHelper = default!;
private readonly IDisposable _loggerScope = default!; private readonly IDisposable _loggerScope = default!;
private readonly ServiceConfig _configService; private readonly ServiceConfig _configService;
private readonly GpsCardAccessorClient<GpsDeviceConfig> _deviceConfigApiClient;


//private readonly TcpClientsManager _managerTcpClients; //private readonly TcpClientsManager _managerTcpClients;
//private readonly ScheduleResendManager _managerScheduleResend; //private readonly ScheduleResendManager _managerScheduleResend;


public RegisterHandler(ILogger<RegisterHandler> logger,HttpHelper httpHelper, IOptions<ServiceConfig> configService)
public RegisterHandler(ILogger<RegisterHandler> logger, GpsCardAccessorClient<GpsDeviceConfig> deviceConfigApiClient,HttpHelper httpHelper, IOptions<ServiceConfig> configService)
{ {
_logger = logger; _logger = logger;
_httpHelper = httpHelper; _httpHelper = httpHelper;
_configService = configService.Value; _configService = configService.Value;
_deviceConfigApiClient= deviceConfigApiClient;
} }


public override void ChannelActive(IChannelHandlerContext context) public override void ChannelActive(IChannelHandlerContext context)
@@ -232,15 +239,49 @@ namespace NearCardAttendance.Service.TcpServer.Handler
var startTime = parser.Data.Substring(54, 14).TrimEnd(); var startTime = parser.Data.Substring(54, 14).TrimEnd();
// Push card attendance information to third-party platform // Push card attendance information to third-party platform
//var url = "https://midplat.xinhualeyu.com/dev-api/user/electronicCardAttendance/receiveTbAttendanceRecord"; //var url = "https://midplat.xinhualeyu.com/dev-api/user/electronicCardAttendance/receiveTbAttendanceRecord";
var url = _configService.XinHuaLeYuUrl;
var data = new
{
attendanceStatus = 2, //考勤状态: 0.进 1.出 2.未知
attendanceTime = DateTime.TryParse(startTime, out DateTime time) ? time.ToString("yyyy-MM-dd HH:mm:ss") : DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
imei = deviceId
};
var res=await _httpHelper.HttpToPostAsync(url, data);
_logger.LogInformation($"{nameof(HandleSignRecsAsync)} 推送 {JsonConvert.SerializeObject(data)} 结果,{res}");

#region IC卡转换为IMEI
var config= await _deviceConfigApiClient.GetFirstAsync(new GeneralParam
{
Filters = new List<QueryFilterCondition>
{
new QueryFilterCondition
{
Key=nameof(GpsDeviceConfig.IdNumber),
Value=cardId,
ValueType=QueryValueTypeEnum.String,
Operator=QueryOperatorEnum.Equal
}
},
OrderBys=new List<OrderByCondition>
{
new OrderByCondition
{
IsDesc=true,
Key=nameof(GpsDeviceConfig.LastUpdate),
}
}
}, new RequestHeader { RequestId = parser.SeqNo }).ConfigureAwait(false);

#endregion

if (config!=null)
{
var url = _configService.XinHuaLeYuUrl;
var data = new
{
attendanceStatus = 2, //考勤状态: 0.进 1.出 2.未知
attendanceTime = DateTime.TryParse(startTime, out DateTime time) ? time.ToString("yyyy-MM-dd HH:mm:ss") : DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
imei = config.Imei
};
var res = await _httpHelper.HttpToPostAsync(url, data);
_logger.LogInformation($"{nameof(HandleSignRecsAsync)} 推送 {JsonConvert.SerializeObject(data)} 结果,{res}");
}
else
{
_logger.LogInformation("找不到IC卡转换为IMEI的对应关系");
}

} }
/// <summary> /// <summary>
@@ -260,17 +301,47 @@ namespace NearCardAttendance.Service.TcpServer.Handler
var studentId = parser.Data.Substring(36, 18).TrimEnd(); var studentId = parser.Data.Substring(36, 18).TrimEnd();
var startTime = parser.Data.Substring(54, 14).TrimEnd(); var startTime = parser.Data.Substring(54, 14).TrimEnd();
var optType = parser.Data.Substring(68, 1).TrimEnd(); var optType = parser.Data.Substring(68, 1).TrimEnd();
#region IC卡转换为IMEI
var config = await _deviceConfigApiClient.GetFirstAsync(new GeneralParam
{
Filters = new List<QueryFilterCondition>
{
new QueryFilterCondition
{
Key=nameof(GpsDeviceConfig.IdNumber),
Value=cardId,
ValueType=QueryValueTypeEnum.String,
Operator=QueryOperatorEnum.Equal
}
},
OrderBys = new List<OrderByCondition>
{
new OrderByCondition
{
IsDesc=true,
Key=nameof(GpsDeviceConfig.LastUpdate),
}
}
}, new RequestHeader { RequestId = parser.SeqNo }).ConfigureAwait(false);


//var url = "https://midplat.xinhualeyu.com/dev-api/user/electronicCardAttendance/receiveTbAttendanceRecord";
var url = _configService.XinHuaLeYuUrl;
var data = new
#endregion
if (config != null)
{
//var url = "https://midplat.xinhualeyu.com/dev-api/user/electronicCardAttendance/receiveTbAttendanceRecord";
var url = _configService.XinHuaLeYuUrl;
var data = new
{
attendanceStatus = int.TryParse(optType, out int type) ? type : 0,
attendanceTime = DateTime.TryParse(startTime, out DateTime time) ? time.ToString("yyyy-MM-dd HH:mm:ss") : DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
imei = config.Imei
};
var res = await _httpHelper.HttpToPostAsync(url, data);
_logger.LogInformation($"{nameof(HandleStdtSchoolRecsAsync)} 推送 {JsonConvert.SerializeObject(data)} 结果,{res}");
}
else
{ {
attendanceStatus = int.TryParse(optType,out int type) ? type : 0,
attendanceTime = DateTime.TryParse(startTime, out DateTime time) ? time.ToString("yyyy-MM-dd HH:mm:ss") : DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
imei = deviceId
};
var res = await _httpHelper.HttpToPostAsync(url, data);
_logger.LogInformation($"{nameof(HandleStdtSchoolRecsAsync)} 推送 {JsonConvert.SerializeObject(data)} 结果,{res}");
_logger.LogInformation("找不到IC卡转换为IMEI的对应关系");
}
} }
} }
} }

+ 5
- 1
NearCardAttendance.TcpServer/Program.cs View File

@@ -13,6 +13,7 @@ using NearCardAttendance.TcpServer.Config;
using Serilog; using Serilog;
using NearCardAttendance.Model; using NearCardAttendance.Model;
using System.Text; using System.Text;
using TelpoDataService.Util.Clients;


namespace NearCardAttendance.TcpServer namespace NearCardAttendance.TcpServer
{ {
@@ -52,7 +53,10 @@ namespace NearCardAttendance.TcpServer
.UseSerilog() .UseSerilog()
.ConfigureServices((hostContext, services) => { .ConfigureServices((hostContext, services) => {
var configuration = hostContext.Configuration; var configuration = hostContext.Configuration;

services.AddTelpoDataServices(opt =>
{
opt.TelpoDataUrl = configuration["ServiceConfig:TelpoDataUrl"];
});
#region 配置信息 #region 配置信息
services services
.Configure<ServiceConfig>(configuration.GetSection("ServiceConfig")) .Configure<ServiceConfig>(configuration.GetSection("ServiceConfig"))


+ 2
- 1
NearCardAttendance.TcpServer/appsettings.debug.json View File

@@ -1,6 +1,7 @@
{ {
"AllowedHosts": "*", "AllowedHosts": "*",
"ServiceConfig": { "ServiceConfig": {
"XinHuaLeYuUrl": "https://midplat.xinhualeyu.com/dev-api/user/electronicCardAttendance/receiveTbAttendanceRecord"
"XinHuaLeYuUrl": "https://midplat.xinhualeyu.com/dev-api/user/electronicCardAttendance/receiveTbAttendanceRecord",
"TelpoDataUrl": "https://ai.ssjlai.com/data"
} }
} }

+ 2
- 1
NearCardAttendance.TcpServer/appsettings.test.json View File

@@ -1,6 +1,7 @@
{ {
"AllowedHosts": "*", "AllowedHosts": "*",
"ServiceConfig": { "ServiceConfig": {
"XinHuaLeYuUrl": "https://midplat.xinhualeyu.com/dev-api/user/electronicCardAttendance/receiveTbAttendanceRecord"
"XinHuaLeYuUrl": "https://midplat.xinhualeyu.com/dev-api/user/electronicCardAttendance/receiveTbAttendanceRecord",
"TelpoDataUrl": "https://ai.ssjlai.com/data"
} }
} }

Loading…
Cancel
Save