- 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:
@@ -46,7 +46,7 @@
|
|||||||
Margin="10"
|
Margin="10"
|
||||||
Click="DashboardButton_Click"/>
|
Click="DashboardButton_Click"/>
|
||||||
<Button
|
<Button
|
||||||
Content="Quản lý người dùng"
|
Content="Quản lý gian hàng"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
Height="40"
|
Height="40"
|
||||||
Margin="10"
|
Margin="10"
|
||||||
|
|||||||
@@ -8,7 +8,8 @@
|
|||||||
d:DesignHeight="450" d:DesignWidth="800">
|
d:DesignHeight="450" d:DesignWidth="800">
|
||||||
<Grid>
|
<Grid>
|
||||||
<StackPanel>
|
<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"/>
|
<Label x:Name="lblStatus"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -82,6 +82,11 @@ namespace SafeBagDE70.Admin
|
|||||||
lblStatus.Content= ex.Message;
|
lblStatus.Content= ex.Message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void btnSyncTransaction_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
AppData.ResendData();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+55
-2
@@ -1,4 +1,5 @@
|
|||||||
using DE70_CMDv2;
|
using DE70_CMDv2;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using SafeBagDE70.API;
|
using SafeBagDE70.API;
|
||||||
using SafeBagDE70.Model;
|
using SafeBagDE70.Model;
|
||||||
@@ -37,6 +38,7 @@ namespace SafeBagDE70
|
|||||||
public static string BaseURL = "";
|
public static string BaseURL = "";
|
||||||
public static int TenantId = 0;
|
public static int TenantId = 0;
|
||||||
public static bool IsInternetOk = false;
|
public static bool IsInternetOk = false;
|
||||||
|
static Task? resendTask = null;
|
||||||
public static DeviceStatus? _DeviceStatus = null;
|
public static DeviceStatus? _DeviceStatus = null;
|
||||||
public static DeviceStatus? DeviceStatus
|
public static DeviceStatus? DeviceStatus
|
||||||
{
|
{
|
||||||
@@ -259,6 +261,58 @@ namespace SafeBagDE70
|
|||||||
}
|
}
|
||||||
return str.Trim(',');
|
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
|
public class CustomerAccount
|
||||||
@@ -499,12 +553,11 @@ namespace SafeBagDE70
|
|||||||
public enum SensorStatusCode
|
public enum SensorStatusCode
|
||||||
{
|
{
|
||||||
NORMAL = 0,
|
NORMAL = 0,
|
||||||
ERROR = 1
|
ERROR = 4
|
||||||
}
|
}
|
||||||
public enum CDMStatusCode
|
public enum CDMStatusCode
|
||||||
{
|
{
|
||||||
NORMAL = 0,
|
NORMAL = 0,
|
||||||
DISCONNECT_SERIALPORT=1,
|
DISCONNECT_SERIALPORT=1,
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+36
-64
@@ -146,23 +146,24 @@ namespace SafeBagDE70
|
|||||||
|
|
||||||
private bool InitSerialPorts()
|
private bool InitSerialPorts()
|
||||||
{
|
{
|
||||||
try
|
var bInitDE70=InitSerialPortDE70();
|
||||||
{
|
var bInitSensor = InitSerialPortSensor();
|
||||||
InitSerialPortDE70();
|
if (bInitDE70 && bInitSensor)
|
||||||
InitSerialPortSensor();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
else
|
||||||
catch(Exception ex)
|
|
||||||
{
|
{
|
||||||
AppData.DeviceStatus.CDMStatus = (int)CDMStatusCode.DISCONNECT_SERIALPORT;
|
AppData.DeviceStatus.CDMStatus = (int)CDMStatusCode.DISCONNECT_SERIALPORT;
|
||||||
APIModels.SendEvent(AppData.DeviceStatus);
|
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");
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitSerialPortSensor()
|
}
|
||||||
|
|
||||||
|
private bool InitSerialPortSensor()
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
if (serialPortSensor.IsOpen) serialPortSensor.Close();
|
if (serialPortSensor.IsOpen) serialPortSensor.Close();
|
||||||
|
|
||||||
@@ -174,15 +175,25 @@ namespace SafeBagDE70
|
|||||||
serialPortSensor.ReadTimeout = 1000;
|
serialPortSensor.ReadTimeout = 1000;
|
||||||
serialPortSensor.WriteTimeout = 1000;
|
serialPortSensor.WriteTimeout = 1000;
|
||||||
|
|
||||||
if(bOpenPort)
|
if (bOpenPort)
|
||||||
{
|
{
|
||||||
if (!serialPortSensor.IsOpen)
|
if (!serialPortSensor.IsOpen)
|
||||||
serialPortSensor.Open();
|
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();
|
if (serialPortDE70.IsOpen) serialPortDE70.Close();
|
||||||
|
|
||||||
@@ -198,12 +209,21 @@ namespace SafeBagDE70
|
|||||||
serialPortDE70.StopBits = StopBits.One;
|
serialPortDE70.StopBits = StopBits.One;
|
||||||
serialPortDE70.ReadTimeout = 10000;
|
serialPortDE70.ReadTimeout = 10000;
|
||||||
serialPortDE70.WriteTimeout = 10000;
|
serialPortDE70.WriteTimeout = 10000;
|
||||||
if(bOpenPort)
|
if (bOpenPort)
|
||||||
{
|
{
|
||||||
if (!serialPortDE70.IsOpen)
|
if (!serialPortDE70.IsOpen)
|
||||||
serialPortDE70.Open();
|
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()
|
private void InitTimers()
|
||||||
@@ -262,8 +282,6 @@ namespace SafeBagDE70
|
|||||||
});
|
});
|
||||||
Log.Information("7. Timout completed");
|
Log.Information("7. Timout completed");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BackToWelcomeScreen()
|
private void BackToWelcomeScreen()
|
||||||
@@ -402,7 +420,7 @@ namespace SafeBagDE70
|
|||||||
}
|
}
|
||||||
if (countSensorTimer % 300 == 0)
|
if (countSensorTimer % 300 == 0)
|
||||||
{
|
{
|
||||||
ResenData();
|
AppData.ResendData();
|
||||||
}
|
}
|
||||||
countSensorTimer++;
|
countSensorTimer++;
|
||||||
sensorTimer.IsEnabled = false;
|
sensorTimer.IsEnabled = false;
|
||||||
@@ -415,53 +433,6 @@ namespace SafeBagDE70
|
|||||||
}
|
}
|
||||||
sensorTimer.IsEnabled = true;
|
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();
|
Stopwatch watch = new Stopwatch();
|
||||||
private void GetSensorValue()
|
private void GetSensorValue()
|
||||||
{
|
{
|
||||||
@@ -512,6 +483,7 @@ namespace SafeBagDE70
|
|||||||
if (state!=prevSensorStatus)
|
if (state!=prevSensorStatus)
|
||||||
{
|
{
|
||||||
AppData.DeviceStatus.Description=strSensorMessage;
|
AppData.DeviceStatus.Description=strSensorMessage;
|
||||||
|
AppData.DeviceStatus.SensorStatus= state;
|
||||||
APIModels.SendEvent(AppData.DeviceStatus);
|
APIModels.SendEvent(AppData.DeviceStatus);
|
||||||
prevSensorStatus = state;
|
prevSensorStatus = state;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user