Commit 3dea9fd9 by 陶然

init

parent 1ca01acf
......@@ -9,5 +9,6 @@ namespace Kivii.Client.Invoices.Etax
{
public const string TableUiSetting = "ui_settings";
public const string RouteInvoiceQuery = "/Restful/Kivii.Finances.Entities.Invoice/Query";
public const string RouteStorage = "/Storages";
}
}
......@@ -28,7 +28,10 @@
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain));
this.plConfigs = new System.Windows.Forms.Panel();
this.btnStopTimer = new System.Windows.Forms.Button();
this.btnStartTimer = new System.Windows.Forms.Button();
this.btnLogout = new System.Windows.Forms.Button();
this.btnLogin = new System.Windows.Forms.Button();
this.btnSelectFileFolder = new System.Windows.Forms.Button();
......@@ -41,8 +44,6 @@
this.tbxServiceUrl = new System.Windows.Forms.TextBox();
this.tbxUserName = new System.Windows.Forms.TextBox();
this.rtbMessage = new System.Windows.Forms.RichTextBox();
this.btnStartTimer = new System.Windows.Forms.Button();
this.btnStopTimer = new System.Windows.Forms.Button();
this.plConfigs.SuspendLayout();
this.SuspendLayout();
//
......@@ -67,6 +68,26 @@
this.plConfigs.Size = new System.Drawing.Size(588, 167);
this.plConfigs.TabIndex = 0;
//
// btnStopTimer
//
this.btnStopTimer.Location = new System.Drawing.Point(296, 129);
this.btnStopTimer.Name = "btnStopTimer";
this.btnStopTimer.Size = new System.Drawing.Size(282, 32);
this.btnStopTimer.TabIndex = 29;
this.btnStopTimer.Text = "暂停读取";
this.btnStopTimer.UseVisualStyleBackColor = true;
this.btnStopTimer.Click += new System.EventHandler(this.btnStopTimer_Click);
//
// btnStartTimer
//
this.btnStartTimer.Location = new System.Drawing.Point(8, 129);
this.btnStartTimer.Name = "btnStartTimer";
this.btnStartTimer.Size = new System.Drawing.Size(282, 32);
this.btnStartTimer.TabIndex = 28;
this.btnStartTimer.Text = "开始读取";
this.btnStartTimer.UseVisualStyleBackColor = true;
this.btnStartTimer.Click += new System.EventHandler(this.btnStartTimer_Click);
//
// btnLogout
//
this.btnLogout.Enabled = false;
......@@ -185,26 +206,6 @@
this.rtbMessage.TabIndex = 1;
this.rtbMessage.Text = "";
//
// btnStartTimer
//
this.btnStartTimer.Location = new System.Drawing.Point(8, 129);
this.btnStartTimer.Name = "btnStartTimer";
this.btnStartTimer.Size = new System.Drawing.Size(282, 32);
this.btnStartTimer.TabIndex = 28;
this.btnStartTimer.Text = "开始读取";
this.btnStartTimer.UseVisualStyleBackColor = true;
this.btnStartTimer.Click += new System.EventHandler(this.btnStartTimer_Click);
//
// btnStopTimer
//
this.btnStopTimer.Location = new System.Drawing.Point(296, 129);
this.btnStopTimer.Name = "btnStopTimer";
this.btnStopTimer.Size = new System.Drawing.Size(282, 32);
this.btnStopTimer.TabIndex = 29;
this.btnStopTimer.Text = "暂停读取";
this.btnStopTimer.UseVisualStyleBackColor = true;
this.btnStopTimer.Click += new System.EventHandler(this.btnStopTimer_Click);
//
// FrmMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
......@@ -212,6 +213,7 @@
this.ClientSize = new System.Drawing.Size(588, 844);
this.Controls.Add(this.rtbMessage);
this.Controls.Add(this.plConfigs);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MinimumSize = new System.Drawing.Size(610, 900);
this.Name = "FrmMain";
this.Text = "数电票PDF、OFD文件上传客户端V4.0";
......
......@@ -282,20 +282,59 @@ namespace Kivii.Client.Invoices.Etax
request.OffsetKvid = Guid.Empty;
request.ParentKvid = Guid.Empty;
request.SerialNumber = serialNumber;
var resp = _client.Post(request);
if (resp != null)
try
{
if (resp.Results.IsNullOrEmpty())
{
var mvPath = $"{errorPath}\\{file.Name}";
fileMove(file.FullName, mvPath);
outputMessage($"文件名:{file.Name}格式不正确,无法从中获取发票号,此文件已移动到目录:{errorPath}");
}
else
var resp = _client.Get(request);
if (resp != null)
{
if (resp.Results.IsNullOrEmpty())
{
var mvPath = $"{errorPath}\\{file.Name}";
fileMove(file.FullName, mvPath);
outputMessage($"文件名:{file.Name},未在系统中找到此发票号,此文件已移动到目录:{errorPath}");
}
else
{
// 打开文件
FileStream fileStream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.Read);
// 读取文件的 byte[]
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, bytes.Length);
fileStream.Close();
// 把 byte[] 转换成 Stream
Stream stream = new MemoryStream(bytes);
List<UploadFile> files = new List<UploadFile>();
var uploadFile = new UploadFile($"{serialNumber}{file.Extension}",stream);
files.Add(uploadFile);
var requestUp = new RequestStorage();
requestUp.OwnerKvid = resp.Results[0].Kvid;
try
{
var upResp = _client.PostFilesWithRequest<RestfulQueryResponse<EntityDbFile<Invoice>>>(requestUp, files);
var mvPath = $"{uploadedPath}\\{file.Name}";
fileMove(file.FullName, mvPath);
outputMessage($"上传成功,文件名:{file.Name},此文件已移动到目录:{uploadedPath}");
}
catch (Exception ex)
{
var mvPath = $"{errorPath}\\{file.Name}";
fileMove(file.FullName, mvPath);
outputMessage($"上传失败,文件名:{file.Name},原因:{ex.Message},此文件已移动到目录:{errorPath}");
}
}
}
}
catch (Exception ex)
{
outputMessage($"文件名:{file.Name},发票号查询失败,原因:{ex.Message}");
}
}
}
......
......@@ -117,4 +117,81 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9S4dv/W
uc3/1bnR/9W50f/VudH/1bnR/9W50f/VudH/1bnR/9W50e/VqdXc0pPdytOC48LQeefW043f59Oh2frX
tdH/1bmj/9W/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/U
uC7/1bn//9W5///Vuf//1bn//9W5///Vuf//1bn//9W5//fVsf+30W3/h846/4fOOv+Hzjr/h846/4fO
Ov+Hzjr/lM9I/8jSfv//1LmHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/n2Ag/59fn/+f
X7//n1+//6Nm0f+sdf//rHX//6x1//+sdf//rHX//6x1//+sdf/VuGD/h846/4fOOv+Hzjr/h846/4fO
Ov+Hzjr/h846/4fOOv+Hzjr/h846/5bQSu8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6BfWv+f
X///n1///59f//+fX///n1///59f//+fX///n1///59f//+fX///n1//4KtV/4fOOv+Hzjr/h846/4fO
Ov+Hzjr/j9FG/53WXv+Hzjr/h846/4fOOv+Hzjr/h846/4fNOrUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/n16t/59f//+fX///n1///59f//+fX///n1///59f//+fX///n1///59f//+fX/+Yxz//h846/4fO
Ov+Hzjr/h846/4fOOv/d78r/+fn5/6PYaf+Hzjr/h846/4fOOv+Hzjr/h846/4fPOVQAAAAAAAAAAAAA
AAAAAAAAAAAAAP+fX///n1///59f//+fX///n1///59f//+fX///n1///59f//+fX///n1//wrZM/4fO
Ov+Hzjr/h846/4fOOv+Hzjr/h846/93vyv/5+fn/o9hp/4fOOv+Hzjr/h846/4fOOv+Hzjr/h8863YDI
Nw4AAAAAAAAAAAAAAAAAAAAA/59f//+fX///n1///59f//+fX///n1///59f//+fX///n1///59f//+f
X/+zvUj/h846/4fOOv+Hzjr/h846/4fOOv+Hzjr/3e/K//n5+f+j2Gn/h846/4fOOv+Hzjr/h846/4fO
Ov+Hzjr/h848RAAAAAAAAAAAAAAAAAAAAAD/n1///59f//+fX///n1///59f//+fX///n1///59f//+f
X///n1///59f/6DEQv+Hzjr/h846/4fOOv+Mz0P/o9hp/4fOOv/d78r/+fn5/6PYaf+R0kr/mNRW/4fO
Ov+Hzjr/h846/4fOOv+HzTp6AAAAAAAAAAAAAAAAAAAAAP+fX///n1///59f//+fX///n1///59f//+f
X///n1///59f//+fX///n1//jMw8/4fOOv+Hzjr/h846/7Hdgf/5+fn/z+qy/93vyv/5+fn/o9hp/+by
2f/h8NH/h846/4fOOv+Hzjr/h846/4fNObMAAAAAAAAAAAAAAAAAAAAA/59f//+fX///n1///59f//+f
X///n1///59f//+fX///n1///59f//+fX/+WyD//h846/4fOOv+Hzjr/qtx0//f49v/5+fn/3e/K//n5
+f/m8tn/+fn5/9Pruf+Hzjr/h846/4fOOv+Hzjr/iM46lwAAAAAAAAAAAAAAAAAAAAD/n1///59f//+f
X///sn///7OB//+zgf//s4H//7OB//+zgf//s4H//7OB/6rGTv+Hzjr/h846/4fOOv+Hzjr/qNtx//H2
6//5+fn/+fn5//n5+f/T67n/h846/4fOOv+Hzjr/h846/4fOOv+HzTpgAAAAAAAAAAAAAAAAAAAAAP+f
X///n1///6ds///Vuf//1bn//9W5///Vuf//1bn//9W5///Vuf//1bn/u9Jy/4fOOv+Hzjr/h846/4fO
Ov+Hzjr/oddm/+nz3v/5+fn/0+u5/4fOOv+Hzjr/h846/4fOOv+Hzjr/h846/4nNOCgAAAAAAAAAAAAA
AAAAAAAA/59f//+fX///n1///7B7//+vfP//r3z//698//+vfP//r3z//698//+vfP/duGr/h846/4fO
Ov+Hzjr/h846/4fOOv+Hzjr/m9Vb/7TfhP+Hzjr/h846/4fOOv+Hzjr/h846/4fOOv+HzzqZAAAAAAAA
AAAAAAAAAAAAAAAAAAD/n1///59f//+fX///n1///59f//+fX///n1///59f//+fX///n1///59f//+f
X/+yvUf/h846/4fOOv+Hzjr/h846/4fOOv+Hzjr/h846/4fOOv+Hzjr/h846/4fOOv+Hzjr/h846/4fS
PBAAAAAAAAAAAAAAAAAAAAAAAAAAAP+fX///n1///59f///Vuf//1bn//9W5///Vuf//1bn//9W5///V
uf//1bn//9W5///Vuf+Hzjr/h846/4fOOv+Hzjr/h846/4fOOv+Hzjr/h846/4fOOv+Hzjr/h846/4fO
Ov+IzzlaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/59f//+fX///n1///8GZ///Io///yKP//8ij///I
o///yKP//8ij///Io///yKP//8ij///Alv/Ls0//h846/4fOOv+Hzjr/h846/4fOOv+Hzjr/h846/4fO
Ov+Yz0z/1dOMuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/n1///59f//+fX///n1///59f//+f
X///n1///59f//+fX///n1///59f//+fX///n1///59f//+fX//jqlf/urpJ/6jCRP+UyD7/jMw8/6DE
Qv+zwVD/wtF5///Vuf//1rqjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+fX///n1///59f//+f
X///n1///59f//+fX///n1///59f//+fX///n1///59f//+fX///n1///59f//+fX///n1///59f//+f
X///n1///59f//+sdf//1bn//9W5///WuqMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/59f//+f
X///n1///6Rm//+2hf//yKP//7B7//+iZf//n1///59f//+fX///n1///59f//+fX///n1///59f//+f
X///n1///59f//+fX///n1///6x1///Vuf//1bn//9a6owAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/n1///59f//+fX///tob//9W5///Vuf//1bn//7yP//+fX///n1///59f//+fX///n1///59f//+f
X///n1///59f//+fX///n1///59f//+fX///rHX//9W5///Vuf//1rqjAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP+fX///n1///59f///Nq///1bn//9W5///Vuf//0LH//59f//+fX///n1///59f//+f
X///n1///59f//+fX///pmv//6px//+td///r3r//7J+//+6i///1bn//9W5///WuqMAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA/59f//+fX///n1///76S///Vuf//1bn//9W5///GoP//n1///59f//+f
X///n1///59f//+fX///oGH//7J///+6jP//uoz//7qM//+6jP//uYr//9W4///Vuf//1bn//9W5gQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/n1///59f//+fX///sHv//8mm///Vuf//xJ3//7F+//+f
X///n1///59f//+fX///n1///59f//+lav//uoz//7qM//+6jP//uoz//7iH9//RsMP/1rm5/9a5uf/U
uY8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+fX///n1///59f//+fX///n1///6x1//+f
X///n1///59f//+fX///n1///59f//+fX///n1///6x1//+6jP//uoz//7qM//+4ivn/vIs4AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/59f//+fX///n1///59f//+f
X///n1///59f//+fX///n1///59f//+fX///n1///59f//+fX///pGj//7qM//+6jP//uoz//7WCZAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/n1/V/59f//+f
X///n1///59f//+fX///n1///59f//+fX///n1///59f//+fX///n1///59f//+fX///t4f//7qM//+x
faMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+d
XoH/n1///59f//+fX///n1///59f//+fX///n1///59f//+fX///n1///59f//+fX///n1///59f//+w
ev//tILhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA/5lVDv+fXUr/n1+f/59fv/+fX7//n1+//59fv/+fX7//n1+//59fv/+fX7//n1+//59fv/+f
X7//n1+//6px1f+qahgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD/tIcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA////////////wAAf/4AAD/gAAA/wAAAH4AAAB+AAAAPgAAAD4AAAA+AA
AAHgAAAB4AAAA+AAAAPgAAAD4AAAB+AAAA/gAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAP4AAAH+AA
A//gAAf/4AAH/+AAD//4AB////////////8=
</value>
</data>
</root>
\ No newline at end of file
......@@ -7,7 +7,7 @@
<ProjectGuid>{26FE1EFF-51CC-4CE2-B997-73D10DA5836F}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Kivii.Client.Invoices.Etax</RootNamespace>
<AssemblyName>Kivii.Client.Invoices.Etax.V4.0</AssemblyName>
<AssemblyName>数电票文件上传程序</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
......@@ -31,6 +31,9 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>favicon.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="Kivii.Common.V4.0, Version=5.6.2024.1160, Culture=neutral, processorArchitecture=MSIL">
<HintPath>packages\Kivii.Common.5.6.2024.1160\lib\net40\Kivii.Common.V4.0.dll</HintPath>
......@@ -92,5 +95,8 @@
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="favicon.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
......@@ -19,4 +19,12 @@ namespace Kivii.Client.Invoices.Etax
public Guid ParentKvid { get; set; }
public string SerialNumber { get; set; }
}
[Route(Configs.RouteStorage)]
public class RequestStorage : IReturn<RestfulQueryResponse<EntityDbFile<Invoice>>>
{
public Guid OwnerKvid { get; set; }
public string FolderPath { get; set; } = "/Finances/Invoices/Files";
}
}
File added
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment