add-添加数据重传

master
liuwf 3 days ago
parent 1eca0624bf
commit adb761d912

@ -8,7 +8,7 @@ namespace SlnMesnac.RfidUpload.Model
{
[SugarTable("UPLOAD_RECORD")]
public class UploadRecord
{
{
// 该特性指定此属性对应数据库表中的 id 列
// IsIdentity = true 表示该列是自增列
// IsPrimaryKey = true 表示该列是主键
@ -43,5 +43,9 @@ namespace SlnMesnac.RfidUpload.Model
// DefaultValue = "0" 表示该列的默认值为 00 代表上传失败1 代表上传成功
[SugarColumn(ColumnName = "isSuccess", DefaultValue = "0")]
public int IsSuccess { get; set; }
//时间
[SugarColumn(ColumnName = "uploadTime")]
public string UploadTime { get; set; }
}
}

@ -1,4 +1,5 @@
using SlnMesnac.RfidUpload.Business;
using slnmesnac.rfidupload.Repository;
using SlnMesnac.RfidUpload.Business;
using SlnMesnac.RfidUpload.Common;
using SlnMesnac.RfidUpload.Model.apiParam;
@ -12,6 +13,8 @@ namespace SlnMesnac.RfidUpload.UI
{
public class Tool
{
private static SqlSugarHelper sqliteHelper = SqlSugarHelper.Instance;
public static void Push(List<string> strList, Dbt dtDbt, Action<int, string> action)
{
string opBatch = dtDbt.opBatch;
@ -36,7 +39,7 @@ namespace SlnMesnac.RfidUpload.UI
Task.Run(() =>
{
// 五、6.10反馈接收结果(利用上一步的opBatch)
Task.Delay(3000);
Task.Delay(2000);
CsbResult res1 = csbHandleBusiness.containerScanSealResultByCsb(dtDbt.ffjhNo, opBatch);
action.Invoke(1,res1.GetMsg());
if (!res1.IsSuccess) return;
@ -68,6 +71,7 @@ namespace SlnMesnac.RfidUpload.UI
action.Invoke(4,res4.GetMsg());
if (res4.IsSuccess)
{
sqliteHelper.updateRecordByFfjhNo(dtDbt.ffjhNo, true);
break;
};

@ -241,6 +241,7 @@
<Button Content="容器封发-按调拨单" Command="{Binding SetWorkModelCommand}" CommandParameter="2" Style="{StaticResource BUTTON_AGREE}" Width="120" Height="30" Background="#8771DC" BorderBrush="#8771DC" Margin="0,0,10,0"/>
<Button Content="库存容器封发配发" Command="{Binding SetWorkModelCommand}" CommandParameter="3" Style="{StaticResource BUTTON_AGREE}" Width="120" Height="30" Background="#52ACBD" BorderBrush="#52ACBD" Margin="0,0,10,0"/>
<Button Content="卸车容器封发配发" Command="{Binding SetWorkModelCommand}" CommandParameter="4" Style="{StaticResource BUTTON_AGREE}" Width="120" Height="30" Background="#007DFA" BorderBrush="#007DFA" Margin="0,0,10,0"/>
<Button Content="数据重传" Command="{Binding ReUploadRecordCommand}" Style="{StaticResource BUTTON_AGREE}" Width="120" Height="30" Background="#007DFA" BorderBrush="#007DFA" Margin="0,0,10,0"/>
<Button Content="关 闭" Command="{Binding SetWorkModelCommand}" CommandParameter="5" Style="{StaticResource BUTTON_AGREE}" Width="100" Height="30" Background="#FF0033" BorderBrush="#FF0033" Margin="0,0,10,0"/>
<Label Content="工作模式 :" FontSize="20" FontWeight="Black" Foreground="#00CC33" Margin="20,0,0,0"/>

@ -0,0 +1,99 @@
<Window x:Class="SlnMesnac.RfidUpload.UI.ReUploadRecordWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SlnMesnac.RfidUpload.UI"
mc:Ignorable="d" WindowState="Maximized"
xmlns:cvt1="clr-namespace:SlnMesnac.RfidUpload.UI.converter"
Title="历史记录及数据重传" Height="768" Width="1024">
<Window.Resources>
<cvt1:StatusConverter x:Key="StatusConverter"/>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.8*"/>
<RowDefinition Height="7*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="Gray" BorderThickness="0,0,0,2" CornerRadius="0" >
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
<TextBlock Text="封发计划:" FontSize="16" FontWeight="Black" Foreground="#006699" Margin="10,0,0,0"/>
<TextBox Text="{Binding FfjhNo}" FontSize="16" Grid.Row="1" Width="180" Height="30" VerticalContentAlignment="Center" HorizontalAlignment="Center" Padding="5">
<TextBox.Template>
<ControlTemplate TargetType="TextBox">
<Border Background="#EBF4FD" BorderBrush="White" BorderThickness="1" CornerRadius="5">
<ScrollViewer x:Name="PART_ContentHost" />
</Border>
</ControlTemplate>
</TextBox.Template>
</TextBox>
<!--<TextBlock Text="调入局:" FontSize="16" FontWeight="Black" Foreground="#006699" Margin="10,0,0,0"/>
<TextBox Text="{Binding DRJ}" FontSize="16" Grid.Row="1" Width="180" Height="30" VerticalContentAlignment="Center" HorizontalAlignment="Center" Padding="5">
<TextBox.Template>
<ControlTemplate TargetType="TextBox">
<Border Background="#EBF4FD" BorderBrush="White" BorderThickness="1" CornerRadius="5">
<ScrollViewer x:Name="PART_ContentHost" />
</Border>
</ControlTemplate>
</TextBox.Template>
</TextBox>-->
<!--<TextBlock Text="时间:" FontSize="16" FontWeight="Black" Foreground="#006699" Margin="20,0,0,0"/>
--><!-- 开始时间选择器 --><!--
<DatePicker x:Name="StartDatePicker" Width="150" Margin="10,0,0,0" VerticalAlignment="Center" SelectedDate="{Binding StartDate, Mode=TwoWay}" />
<TextBlock Text="至" FontSize="16" FontWeight="Black" Foreground="#006699" Margin="10,0,0,0"/>
--><!-- 结束时间选择器 --><!--
<DatePicker x:Name="EndDatePicker" Width="150" Margin="10,0,0,0" VerticalAlignment="Center" SelectedDate="{Binding EndDate, Mode=TwoWay}" />-->
</StackPanel>
</Border>
<Grid Grid.Row="1" >
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
<!-- 查询按钮 -->
<Button Content="查询" Command="{Binding QueryCommand}" Style="{StaticResource BUTTON_AGREE}" Width="80" Height="30" Background="#007DFA" BorderBrush="#007DFA" Margin="10,0,10,0"/>
<Label Content="提示信息 :" FontSize="20" FontWeight="Black" Foreground="#00CC33" Margin="50,0,0,0"/>
<Label Content="{Binding TipMsg}" FontSize="20" FontWeight="Black" Foreground="#00CC33" Margin="5,0,10,0"/>
</StackPanel>
</Grid>
<DataGrid Grid.Row="2" Name="DG" ItemsSource="{Binding UploadRecordItems}" Background="Transparent"
FontSize="15" ColumnHeaderHeight="35"
RowHeight="40" AutoGenerateColumns="False" RowHeaderWidth="0"
GridLinesVisibility="None" ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible" BorderThickness="0" CanUserAddRows="False"
Foreground="#0288d1" >
<!--resourceStyle 399行修改选中字体颜色-->
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding FfjhNo}" Header="封发计划编号" Width="150*" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding StationOrgCode}" Header="机构代码" Width="150*" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding StationOrgName}" Header="机构名称" Width="150*" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding IsSuccess,Converter={StaticResource StatusConverter}}" Header="结果" Width="150*" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding UploadTime,StringFormat=\{0:MM月dd日 HH:mm.ss.ffff\}}" Header="日期" Width="150*" IsReadOnly="True"/>
<DataGridTemplateColumn Header="操作" Width="220">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<!--<Button Content="编辑" Command="{Binding DataContext.CabinetUpdateCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding}" Style="{StaticResource BUTTON_AGREE}" FontSize="14" Width="80" Height="30" Background="#009999" BorderBrush="#FF36B5C1" VerticalAlignment="Center" HorizontalAlignment="Center"/>-->
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="重传" Command="{Binding DataContext.ExecuteCommand,
RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding FfjhNo}" Style="{StaticResource BUTTON_AGREE}" FontSize="14"
Width="120" Height="30" Background="#009999" BorderBrush="#FF36B5C1" VerticalAlignment="Center"
HorizontalAlignment="Center" Margin="0,0,5,0"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>

@ -0,0 +1,30 @@
using SlnMesnac.RfidUpload.UI.viewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace SlnMesnac.RfidUpload.UI
{
/// <summary>
/// ReUploadRecordWindow.xaml 的交互逻辑
/// </summary>
public partial class ReUploadRecordWindow : Window
{
public ReUploadRecordWindow()
{
InitializeComponent();
ReUploadRecordWindowViewModel viewModel = new ReUploadRecordWindowViewModel();
this.DataContext = viewModel;
}
}
}

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace SlnMesnac.RfidUpload.UI.converter
{
public class StatusConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is int param)
{
return param switch
{
1 => "成功",
0 => "失败",
};
}
return "失败";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

@ -21,11 +21,15 @@ using System.Threading;
using static SlnMesnac.RfidUpload.UI.SelectRouterWindow;
using static SlnMesnac.RfidUpload.UI.viewModel.containerStorageQueryByCsbViewModel;
using SlnMesnac.RfidUpload.UI.TempData;
using slnmesnac.rfidupload.Repository;
using TouchSocket.Core;
using System.Windows.Interop;
namespace SlnMesnac.RfidUpload.UI.viewModel
{
public class MainWindowViewModel : ViewModelBase
{
private SqlSugarHelper sqliteHelper = SqlSugarHelper.Instance;
private CsbHandleBusiness csbHandleBusiness = CsbHandleBusiness.Instance;
TransferOrderViewModel transferOrderViewModel = new TransferOrderViewModel();
ContainerTransferOrderViewModel containerTransferOrderViewModel = new ContainerTransferOrderViewModel();
@ -259,6 +263,12 @@ namespace SlnMesnac.RfidUpload.UI.viewModel
public RelayCommand<object> SetWorkModelCommand { get; set; }
/// <summary>
/// 打开数据重传记录界面
/// </summary>
public RelayCommand ReUploadRecordCommand { get; set; }
public MainWindowViewModel()
{
//加载标签信息
@ -276,13 +286,20 @@ namespace SlnMesnac.RfidUpload.UI.viewModel
SetWorkModelCommand = new RelayCommand<object>(SetWorkModel);
systemSetCommand = new RelayCommand(SystemSet);
FinishCommand = new RelayCommand(Finish);
ReUploadRecordCommand = new RelayCommand(ReUploadRecord);
this.Init();
test();
}
private void ReUploadRecord()
{
ReUploadRecordWindow reUploadRecordWindow = new ReUploadRecordWindow();
reUploadRecordWindow.ShowDialog();
}
private void RefreshState(bool flag)
{
if (flag)
@ -299,22 +316,33 @@ namespace SlnMesnac.RfidUpload.UI.viewModel
private void Init()
{
TouchSocketService service = new TouchSocketService();
service.AddTouchSocketAsync(appConfig.RFIDAddress);
WorkModelParam = Convert.ToInt32(appConfig.workModel);
}
//加载解析日志
//_business.RefreshLogMessageEvent += message =>
private void test()
{
//UploadRecord aa = sqliteHelper.GetRecordByFfjhNo("3455");
//List<string> strList = aa.StrList.FromJsonString<List<string>>();
//List<string> strList = new List<string>()
//{
// // logger.Info(message);
// PrintMessageToListBox(message);
// "RFID1111","RFID2222","RFID3333","RFID4444"
//};
//UploadRecord uploadRecord = new UploadRecord();
//uploadRecord.FfjhNo = "3455";
//uploadRecord.OpBatch = "1";
//uploadRecord.Ffjhscrq = "1";
//uploadRecord.StationOrgCode = "1";
//uploadRecord.StationOrgName = "1";
//uploadRecord.IsSuccess = 0;
//uploadRecord.StrList = strList.ToJsonString();
//sqliteHelper.InsertRecord(uploadRecord);
}
@ -448,6 +476,18 @@ namespace SlnMesnac.RfidUpload.UI.viewModel
dt.stationOrgCode = Institution.stationOrgCode;
dt.stationOrgName = Institution.stationOrgName;
#region 存数据库
UploadRecord uploadRecord = new UploadRecord();
uploadRecord.FfjhNo = dt.ffjhNo;
uploadRecord.OpBatch = dt.opBatch;
uploadRecord.Ffjhscrq = dt.ffjhscrq;
uploadRecord.StationOrgCode = dt.stationOrgCode;
uploadRecord.StationOrgName = dt.stationOrgName;
uploadRecord.IsSuccess = 0;
uploadRecord.StrList = strList.ToJsonString();
uploadRecord.UploadTime = DateTime.Now.ToString();
sqliteHelper.InsertRecord(uploadRecord);
#endregion
Action<int, string> ac = (x, msg) =>
{
@ -481,7 +521,14 @@ namespace SlnMesnac.RfidUpload.UI.viewModel
}
};
Tool.Push(strList, dt,ac);
try
{
Tool.Push(strList, dt, ac);
}catch(Exception ex)
{
MainPageTipMessage = $"数据上传失败:{ex.Message}";
PrintMessageToListBox($"数据上传失败:{ex.Message}");
}
@ -519,6 +566,10 @@ namespace SlnMesnac.RfidUpload.UI.viewModel
labelItems.Clear();
LabelCountParam = 0;
MainPageTipMessage = "";
}
private void SystemSet()
{

@ -0,0 +1,154 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using slnmesnac.rfidupload.Repository;
using SlnMesnac.RfidUpload.Model;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TouchSocket.Core;
using static SlnMesnac.RfidUpload.UI.SelectRouterWindow;
namespace SlnMesnac.RfidUpload.UI.viewModel
{
public partial class ReUploadRecordWindowViewModel: ObservableObject
{
private ObservableCollection<UploadRecord> _uploadRecordItems = new ObservableCollection<UploadRecord>();
public ObservableCollection<UploadRecord> UploadRecordItems
{
get => _uploadRecordItems;
set => SetProperty(ref _uploadRecordItems, value);
}
/// <summary>
///
/// </summary>
private string _tipMsg = "";
public string TipMsg
{
get { return _tipMsg; }
set => SetProperty(ref _tipMsg, value);
}
/// <summary>
///
/// </summary>
private string _ffjhNo = "";
public string FfjhNo
{
get { return _ffjhNo; }
set => SetProperty(ref _ffjhNo, value);
}
/// <summary>
///
/// </summary>
public RelayCommand QueryCommand { get; set; }
/// <summary>
/// 重传
/// </summary>
public RelayCommand<string> ExecuteCommand { get; set; }
private SqlSugarHelper sqliteHelper = SqlSugarHelper.Instance;
public ReUploadRecordWindowViewModel()
{
QueryCommand = new RelayCommand(GetRecordList);
ExecuteCommand = new RelayCommand<string>(ReUpload);
GetRecordList();
}
private void GetRecordList()
{
UploadRecordItems.Clear();
List<UploadRecord> list;
if (string.IsNullOrEmpty(FfjhNo))
{
list = sqliteHelper.GetRecordList();
}
else
{
list = sqliteHelper.GetRecordList().Where(p => p.FfjhNo.Contains(FfjhNo)).ToList();
}
foreach (var item in list)
{
UploadRecordItems.Add(item);
}
}
private void ReUpload(string ffjhNo)
{
UploadRecord record = sqliteHelper.GetRecordByFfjhNo(ffjhNo);
if(record != null)
{
List<string> strList = record.StrList.FromJsonString<List<string>>();
var dt = new Dbt();
dt.opBatch = record.OpBatch;
dt.ffjhNo = record.FfjhNo;
dt.No = "";
dt.ffjhscrq = record.Ffjhscrq;
dt.stationOrgCode = record.StationOrgCode;
dt.stationOrgName = record.StationOrgName;
Action<int, string> ac = (x, msg) =>
{
if (x == 0)
{
TipMsg = $"封发-按调拨单接口结果 [{msg}]";
}
if (x == 1)
{
TipMsg = $"封发-按调拨单反馈接口,[{msg}]";
}
if (x == 2)
{
TipMsg = $"校验发运计划结果,[{msg}]";
}
if (x == 3)
{
TipMsg = $"库存容器封发配发 -- 6.13.容器直连配发-开始配发,[{msg}]";
}
if (x == 4)
{
TipMsg = $"反馈接收接口,确认是否和实际相符,[{msg}]";
}
};
try
{
Tool.Push(strList, dt, ac);
}
catch (Exception ex)
{
TipMsg = $"数据上传失败:{ex.Message}";
}
}
}
}
}

@ -4,6 +4,7 @@ using SlnMesnac.RfidUpload.NLog;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
#region << 版 本 注 释 >>
@ -94,10 +95,10 @@ namespace slnmesnac.rfidupload.Repository
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public string GetRecordByFfjhNo(string ffjhNo)
public UploadRecord GetRecordByFfjhNo(string ffjhNo)
{
string strList = db.Ado.GetString($"select * from UPLOAD_RECORD where ffjhNo='{ffjhNo}'");
return strList;
UploadRecord record = db.SqlQueryable<UploadRecord>($"select * from UPLOAD_RECORD where ffjhNo='{ffjhNo}'").ToList().FirstOrDefault();
return record;
}
/// <summary>
@ -117,7 +118,7 @@ namespace slnmesnac.rfidupload.Repository
/// </summary>
/// <param name="printRecord"></param>
/// <returns></returns>
public int DeletePrintCode(string ffjhNo,bool uploadResult)
public int updateRecordByFfjhNo(string ffjhNo,bool uploadResult)
{
int flag = uploadResult ? 1 : 0;
string sql = $"UPDATE UPLOAD_RECORD SET isSuccess = {flag} WHERE ffjhNo = {ffjhNo}";

Loading…
Cancel
Save