- Thêm đồng bộ thủ công

- Báo trạng thái khi resend
- Báo rõ hơn từng loại cảm biến CDM, Sensor
This commit is contained in:
Nguyen Dinh Thuan
2024-09-17 10:23:38 +07:00
parent a995db3860
commit 5f2084d0a5
5 changed files with 133 additions and 102 deletions
+1 -1
View File
@@ -46,7 +46,7 @@
Margin="10"
Click="DashboardButton_Click"/>
<Button
Content="Quản lý người dùng"
Content="Quản lý gian hàng"
HorizontalAlignment="Stretch"
Height="40"
Margin="10"
+2 -1
View File
@@ -8,7 +8,8 @@
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<StackPanel>
<Button Content="Get Users" Width="200" Margin="10" x:Name="btnGetUsers" Click="btnGetUsers_Click"/>
<Button Content="TẢI D/S GIAN HÀNG" Width="200" Margin="10" x:Name="btnGetUsers" Click="btnGetUsers_Click"/>
<Button Content="ĐỒNG BỘ GIAO DỊCH LÊN SERVER" Width="200" Margin="10" x:Name="btnSyncTransaction" Click="btnSyncTransaction_Click"/>
<Label x:Name="lblStatus"/>
</StackPanel>
</Grid>
+5
View File
@@ -82,6 +82,11 @@ namespace SafeBagDE70.Admin
lblStatus.Content= ex.Message;
}
}
private void btnSyncTransaction_Click(object sender, RoutedEventArgs e)
{
AppData.ResendData();
}
}
}
+55 -2
View File
@@ -1,4 +1,5 @@
using DE70_CMDv2;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SafeBagDE70.API;
using SafeBagDE70.Model;
@@ -37,6 +38,7 @@ namespace SafeBagDE70
public static string BaseURL = "";
public static int TenantId = 0;
public static bool IsInternetOk = false;
static Task? resendTask = null;
public static DeviceStatus? _DeviceStatus = null;
public static DeviceStatus? DeviceStatus
{
@@ -259,6 +261,58 @@ namespace SafeBagDE70
}
return str.Trim(',');
}
public static void ResendData()
{
if (!AppData.IsInTransaction && AppData.IsInternetOk)
{
if (resendTask == null || resendTask.IsCompleted)
{
resendTask = Task.Run(async () =>
{
try
{
using (var context = new CDMDbContext())
{
var startTime = DateTime.Now.Date.AddDays(-2).Date;
var unsentHist = context.Histories
.Where(x => x.DepositTime >= startTime)
.Where(x => ((x.IsSent == null || x.IsSent == false)))
.ToList();
foreach (var item in unsentHist)
{
var data2Send = JsonConvert.DeserializeObject<CountingData2Send>(item.Data);
var bResult = await APIModels.SendCountingData(data2Send);
if (bResult)
{
item.IsSent = true;
context.Update(item);
context.SaveChanges();
Log.Information("Resend: " + item.Data + " successfully");
}
else
{
Log.Error("Resend: " + item.Data + " failed");
}
}
}
}
catch (Exception ex)
{
Log.Fatal(ex, "Resend failed");
}
});
}
else
{
Log.Information("Previous resend are running");
}
}
else
{
Log.Information($"Resend could not start Is In Transaction: {AppData.IsInTransaction} IsInternetOk: {AppData.IsInTransaction}");
}
}
}
public class CustomerAccount
@@ -499,12 +553,11 @@ namespace SafeBagDE70
public enum SensorStatusCode
{
NORMAL = 0,
ERROR = 1
ERROR = 4
}
public enum CDMStatusCode
{
NORMAL = 0,
DISCONNECT_SERIALPORT=1,
}
}
+36 -64
View File
@@ -146,23 +146,24 @@ namespace SafeBagDE70
private bool InitSerialPorts()
{
try
{
InitSerialPortDE70();
InitSerialPortSensor();
var bInitDE70=InitSerialPortDE70();
var bInitSensor = InitSerialPortSensor();
if (bInitDE70 && bInitSensor)
return true;
}
catch(Exception ex)
else
{
AppData.DeviceStatus.CDMStatus = (int)CDMStatusCode.DISCONNECT_SERIALPORT;
APIModels.SendEvent(AppData.DeviceStatus);
Log.Fatal(ex, "LỖI CỔNG KẾT NỐI");
Log.Fatal("LỖI CỔNG KẾT NỐI");
ShowError("LỖI CỔNG KẾT NỐI, VUI LÒNG KIỂM TRA LẠI CỔNG KẾT NỐI");
}
return false;
}
private void InitSerialPortSensor()
}
private bool InitSerialPortSensor()
{
try
{
if (serialPortSensor.IsOpen) serialPortSensor.Close();
@@ -174,15 +175,25 @@ namespace SafeBagDE70
serialPortSensor.ReadTimeout = 1000;
serialPortSensor.WriteTimeout = 1000;
if(bOpenPort)
if (bOpenPort)
{
if (!serialPortSensor.IsOpen)
serialPortSensor.Open();
}
return true;
}catch(Exception ex)
{
AppData.DeviceStatus.SensorStatus = (int)SensorStatusCode.ERROR;
AppData.DeviceStatus.Description = ex.Message;
APIModels.SendEvent(AppData.DeviceStatus);
Log.Information(ex, "LỖI KẾT NỐI SENSOR");
}
return false;
}
private void InitSerialPortDE70()
private bool InitSerialPortDE70()
{
try
{
if (serialPortDE70.IsOpen) serialPortDE70.Close();
@@ -198,12 +209,21 @@ namespace SafeBagDE70
serialPortDE70.StopBits = StopBits.One;
serialPortDE70.ReadTimeout = 10000;
serialPortDE70.WriteTimeout = 10000;
if(bOpenPort)
if (bOpenPort)
{
if (!serialPortDE70.IsOpen)
serialPortDE70.Open();
}
return true;
}
catch(Exception ex)
{
AppData.DeviceStatus.CDMStatus = (int)CDMStatusCode.DISCONNECT_SERIALPORT;
AppData.DeviceStatus.Description = ex.Message;
APIModels.SendEvent(AppData.DeviceStatus);
Log.Information(ex, "LỖI KẾT NỐI CDM");
}
return false;
}
private void InitTimers()
@@ -262,8 +282,6 @@ namespace SafeBagDE70
});
Log.Information("7. Timout completed");
});
}
private void BackToWelcomeScreen()
@@ -402,7 +420,7 @@ namespace SafeBagDE70
}
if (countSensorTimer % 300 == 0)
{
ResenData();
AppData.ResendData();
}
countSensorTimer++;
sensorTimer.IsEnabled = false;
@@ -415,53 +433,6 @@ namespace SafeBagDE70
}
sensorTimer.IsEnabled = true;
}
static Task? resendTask=null;
private static void ResenData()
{
if (!AppData.IsInTransaction && AppData.IsInternetOk)
{
if(resendTask==null || resendTask.IsCompleted)
{
resendTask = Task.Run(async () =>
{
try
{
using (var context = new CDMDbContext())
{
var startTime = DateTime.Now.Date.AddDays(-2).Date;
var unsentHist = context.Histories
.Where(x => x.DepositTime >= startTime)
.Where(x => ((x.IsSent == null || x.IsSent == false)))
.ToList();
foreach (var item in unsentHist)
{
var data2Send = JsonConvert.DeserializeObject<CountingData2Send>(item.Data);
var bResult = await APIModels.SendCountingData(data2Send);
if (bResult)
{
item.IsSent = true;
context.Update(item);
context.SaveChanges();
Log.Information("Resend: " + item.Data + " successfully");
}
else
{
Log.Error("Resend: " + item.Data + " failed");
}
}
}
}
catch (Exception ex)
{
Log.Fatal(ex, "Resend failed");
}
});
}
}
}
Stopwatch watch = new Stopwatch();
private void GetSensorValue()
{
@@ -512,6 +483,7 @@ namespace SafeBagDE70
if (state!=prevSensorStatus)
{
AppData.DeviceStatus.Description=strSensorMessage;
AppData.DeviceStatus.SensorStatus= state;
APIModels.SendEvent(AppData.DeviceStatus);
prevSensorStatus = state;
}