Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
Kivii.Client.SamplePackages.V4.0
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陶然
Kivii.Client.SamplePackages.V4.0
Commits
c62d85f5
Commit
c62d85f5
authored
Jul 07, 2023
by
陶然
Browse files
Options
Browse Files
Download
Plain Diff
合并
parents
b3cb78a0
e7c171ad
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
224 additions
and
119 deletions
+224
-119
Configs.cs
Src/Configs.cs
+1
-0
FrmMain.Designer.cs
Src/FrmMain.Designer.cs
+42
-33
FrmMain.cs
Src/FrmMain.cs
+91
-74
FrmMain.resx
Src/FrmMain.resx
+2
-2
Kivii.Client.SamplePackages.V4.0.csproj
Src/Kivii.Client.SamplePackages.V4.0.csproj
+4
-0
AssemblyInfo.cs
Src/Properties/AssemblyInfo.cs
+2
-2
RestfulRequests.cs
Src/Requests/RestfulRequests.cs
+7
-8
app.manifest
Src/app.manifest
+75
-0
No files found.
Src/Configs.cs
View file @
c62d85f5
...
@@ -13,6 +13,7 @@ namespace Kivii.Client.SamplePackages
...
@@ -13,6 +13,7 @@ namespace Kivii.Client.SamplePackages
public
const
string
RouteLocationQuery
=
"/Restful/Kivii.Samples.Entities.Location/Query"
;
public
const
string
RouteLocationQuery
=
"/Restful/Kivii.Samples.Entities.Location/Query"
;
public
const
string
RouteSampleQuery
=
"/Restful/Kivii.Samples.Entities.Sample/Query"
;
public
const
string
RouteSampleQuery
=
"/Restful/Kivii.Samples.Entities.Sample/Query"
;
public
const
string
RouteSamplePackageInit
=
"/Restful/Kivii.Samples.Entities.Sample/PackageInit"
;
public
const
string
RouteSamplePrePackaging
=
"/Restful/Kivii.Samples.Entities.Sample/PrePackaging"
;
public
const
string
RouteSamplePrePackaging
=
"/Restful/Kivii.Samples.Entities.Sample/PrePackaging"
;
public
const
string
RouteSamplePackaging
=
"/Restful/Kivii.Samples.Entities.Sample/Packaging"
;
public
const
string
RouteSamplePackaging
=
"/Restful/Kivii.Samples.Entities.Sample/Packaging"
;
public
const
string
RouteSampleUnPackaging
=
"/Restful/Kivii.Samples.Entities.Sample/UnPackaging"
;
public
const
string
RouteSampleUnPackaging
=
"/Restful/Kivii.Samples.Entities.Sample/UnPackaging"
;
...
...
Src/FrmMain.Designer.cs
View file @
c62d85f5
...
@@ -28,10 +28,12 @@
...
@@ -28,10 +28,12 @@
/// </summary>
/// </summary>
private
void
InitializeComponent
()
private
void
InitializeComponent
()
{
{
System
.
Windows
.
Forms
.
DataGridViewCellStyle
dataGridViewCellStyle2
=
new
System
.
Windows
.
Forms
.
DataGridViewCellStyle
();
System
.
Windows
.
Forms
.
DataGridViewCellStyle
dataGridViewCellStyle1
=
new
System
.
Windows
.
Forms
.
DataGridViewCellStyle
();
System
.
Windows
.
Forms
.
DataGridViewCellStyle
dataGridViewCellStyle1
=
new
System
.
Windows
.
Forms
.
DataGridViewCellStyle
();
System
.
ComponentModel
.
ComponentResourceManager
resources
=
new
System
.
ComponentModel
.
ComponentResourceManager
(
typeof
(
FrmMain
));
System
.
ComponentModel
.
ComponentResourceManager
resources
=
new
System
.
ComponentModel
.
ComponentResourceManager
(
typeof
(
FrmMain
));
this
.
plLeft
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
plLeft
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
gbInfo
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
gbInfo
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
btnInstallDriver
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
lbCurrentPackageNode
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lbCurrentPackageNode
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lbCurrentPackage
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lbCurrentPackage
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lbCurrentLocation
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
lbCurrentLocation
=
new
System
.
Windows
.
Forms
.
Label
();
...
@@ -71,9 +73,8 @@
...
@@ -71,9 +73,8 @@
this
.
SampleName
=
new
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
();
this
.
SampleName
=
new
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
();
this
.
SampleDealTime
=
new
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
();
this
.
SampleDealTime
=
new
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
();
this
.
SampleDeadTime
=
new
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
();
this
.
SampleDeadTime
=
new
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
();
this
.
SampleQuantityUnit
=
new
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
();
this
.
SamplePackageName
=
new
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
();
this
.
SamplePackageName
=
new
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
();
this
.
btnInstallDriver
=
new
System
.
Windows
.
Forms
.
Butto
n
();
this
.
SampleQuantityUnit
=
new
System
.
Windows
.
Forms
.
DataGridViewTextBoxColum
n
();
this
.
plLeft
.
SuspendLayout
();
this
.
plLeft
.
SuspendLayout
();
this
.
gbInfo
.
SuspendLayout
();
this
.
gbInfo
.
SuspendLayout
();
this
.
gbLogin
.
SuspendLayout
();
this
.
gbLogin
.
SuspendLayout
();
...
@@ -113,13 +114,27 @@
...
@@ -113,13 +114,27 @@
this
.
gbInfo
.
TabStop
=
false
;
this
.
gbInfo
.
TabStop
=
false
;
this
.
gbInfo
.
Text
=
"信息"
;
this
.
gbInfo
.
Text
=
"信息"
;
//
//
// btnInstallDriver
//
this
.
btnInstallDriver
.
BackColor
=
System
.
Drawing
.
SystemColors
.
Control
;
this
.
btnInstallDriver
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Bottom
;
this
.
btnInstallDriver
.
ForeColor
=
System
.
Drawing
.
SystemColors
.
ControlText
;
this
.
btnInstallDriver
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
272
);
this
.
btnInstallDriver
.
Name
=
"btnInstallDriver"
;
this
.
btnInstallDriver
.
Size
=
new
System
.
Drawing
.
Size
(
259
,
38
);
this
.
btnInstallDriver
.
TabIndex
=
83
;
this
.
btnInstallDriver
.
Text
=
"驱动安装"
;
this
.
btnInstallDriver
.
UseVisualStyleBackColor
=
false
;
this
.
btnInstallDriver
.
Visible
=
false
;
this
.
btnInstallDriver
.
Click
+=
new
System
.
EventHandler
(
this
.
btnInstallDriver_Click
);
//
// lbCurrentPackageNode
// lbCurrentPackageNode
//
//
this
.
lbCurrentPackageNode
.
AutoSize
=
true
;
this
.
lbCurrentPackageNode
.
AutoSize
=
true
;
this
.
lbCurrentPackageNode
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
12F
);
this
.
lbCurrentPackageNode
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
12F
);
this
.
lbCurrentPackageNode
.
Location
=
new
System
.
Drawing
.
Point
(
16
,
180
);
this
.
lbCurrentPackageNode
.
Location
=
new
System
.
Drawing
.
Point
(
16
,
180
);
this
.
lbCurrentPackageNode
.
Name
=
"lbCurrentPackageNode"
;
this
.
lbCurrentPackageNode
.
Name
=
"lbCurrentPackageNode"
;
this
.
lbCurrentPackageNode
.
Size
=
new
System
.
Drawing
.
Size
(
79
,
16
);
this
.
lbCurrentPackageNode
.
Size
=
new
System
.
Drawing
.
Size
(
80
,
16
);
this
.
lbCurrentPackageNode
.
TabIndex
=
7
;
this
.
lbCurrentPackageNode
.
TabIndex
=
7
;
this
.
lbCurrentPackageNode
.
Text
=
"当前袋子:"
;
this
.
lbCurrentPackageNode
.
Text
=
"当前袋子:"
;
//
//
...
@@ -129,7 +144,7 @@
...
@@ -129,7 +144,7 @@
this
.
lbCurrentPackage
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
12F
);
this
.
lbCurrentPackage
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
12F
);
this
.
lbCurrentPackage
.
Location
=
new
System
.
Drawing
.
Point
(
16
,
127
);
this
.
lbCurrentPackage
.
Location
=
new
System
.
Drawing
.
Point
(
16
,
127
);
this
.
lbCurrentPackage
.
Name
=
"lbCurrentPackage"
;
this
.
lbCurrentPackage
.
Name
=
"lbCurrentPackage"
;
this
.
lbCurrentPackage
.
Size
=
new
System
.
Drawing
.
Size
(
79
,
16
);
this
.
lbCurrentPackage
.
Size
=
new
System
.
Drawing
.
Size
(
80
,
16
);
this
.
lbCurrentPackage
.
TabIndex
=
6
;
this
.
lbCurrentPackage
.
TabIndex
=
6
;
this
.
lbCurrentPackage
.
Text
=
"当前箱号:"
;
this
.
lbCurrentPackage
.
Text
=
"当前箱号:"
;
//
//
...
@@ -139,7 +154,7 @@
...
@@ -139,7 +154,7 @@
this
.
lbCurrentLocation
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
12F
);
this
.
lbCurrentLocation
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
12F
);
this
.
lbCurrentLocation
.
Location
=
new
System
.
Drawing
.
Point
(
16
,
74
);
this
.
lbCurrentLocation
.
Location
=
new
System
.
Drawing
.
Point
(
16
,
74
);
this
.
lbCurrentLocation
.
Name
=
"lbCurrentLocation"
;
this
.
lbCurrentLocation
.
Name
=
"lbCurrentLocation"
;
this
.
lbCurrentLocation
.
Size
=
new
System
.
Drawing
.
Size
(
79
,
16
);
this
.
lbCurrentLocation
.
Size
=
new
System
.
Drawing
.
Size
(
80
,
16
);
this
.
lbCurrentLocation
.
TabIndex
=
5
;
this
.
lbCurrentLocation
.
TabIndex
=
5
;
this
.
lbCurrentLocation
.
Text
=
"当前位置:"
;
this
.
lbCurrentLocation
.
Text
=
"当前位置:"
;
//
//
...
@@ -149,7 +164,7 @@
...
@@ -149,7 +164,7 @@
this
.
lbCurrentDepartment
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
12F
);
this
.
lbCurrentDepartment
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
12F
);
this
.
lbCurrentDepartment
.
Location
=
new
System
.
Drawing
.
Point
(
16
,
21
);
this
.
lbCurrentDepartment
.
Location
=
new
System
.
Drawing
.
Point
(
16
,
21
);
this
.
lbCurrentDepartment
.
Name
=
"lbCurrentDepartment"
;
this
.
lbCurrentDepartment
.
Name
=
"lbCurrentDepartment"
;
this
.
lbCurrentDepartment
.
Size
=
new
System
.
Drawing
.
Size
(
79
,
16
);
this
.
lbCurrentDepartment
.
Size
=
new
System
.
Drawing
.
Size
(
80
,
16
);
this
.
lbCurrentDepartment
.
TabIndex
=
4
;
this
.
lbCurrentDepartment
.
TabIndex
=
4
;
this
.
lbCurrentDepartment
.
Text
=
"当前部门:"
;
this
.
lbCurrentDepartment
.
Text
=
"当前部门:"
;
//
//
...
@@ -481,8 +496,16 @@
...
@@ -481,8 +496,16 @@
this
.
SampleName
,
this
.
SampleName
,
this
.
SampleDealTime
,
this
.
SampleDealTime
,
this
.
SampleDeadTime
,
this
.
SampleDeadTime
,
this
.
SampleQuantityUnit
,
this
.
SamplePackageName
,
this
.
SamplePackageName
});
this
.
SampleQuantityUnit
});
dataGridViewCellStyle2
.
Alignment
=
System
.
Windows
.
Forms
.
DataGridViewContentAlignment
.
MiddleLeft
;
dataGridViewCellStyle2
.
BackColor
=
System
.
Drawing
.
SystemColors
.
Window
;
dataGridViewCellStyle2
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
12F
);
dataGridViewCellStyle2
.
ForeColor
=
System
.
Drawing
.
SystemColors
.
ControlText
;
dataGridViewCellStyle2
.
SelectionBackColor
=
System
.
Drawing
.
SystemColors
.
Highlight
;
dataGridViewCellStyle2
.
SelectionForeColor
=
System
.
Drawing
.
SystemColors
.
HighlightText
;
dataGridViewCellStyle2
.
WrapMode
=
System
.
Windows
.
Forms
.
DataGridViewTriState
.
False
;
this
.
dgvSamples
.
DefaultCellStyle
=
dataGridViewCellStyle2
;
this
.
dgvSamples
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
dgvSamples
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
dgvSamples
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
17
);
this
.
dgvSamples
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
17
);
this
.
dgvSamples
.
Name
=
"dgvSamples"
;
this
.
dgvSamples
.
Name
=
"dgvSamples"
;
...
@@ -552,36 +575,22 @@
...
@@ -552,36 +575,22 @@
this
.
SampleDeadTime
.
Name
=
"SampleDeadTime"
;
this
.
SampleDeadTime
.
Name
=
"SampleDeadTime"
;
this
.
SampleDeadTime
.
ReadOnly
=
true
;
this
.
SampleDeadTime
.
ReadOnly
=
true
;
//
//
// SampleQuantityUnit
//
this
.
SampleQuantityUnit
.
DataPropertyName
=
"QuantityUnit"
;
this
.
SampleQuantityUnit
.
HeaderText
=
"数量/单位"
;
this
.
SampleQuantityUnit
.
MinimumWidth
=
100
;
this
.
SampleQuantityUnit
.
Name
=
"SampleQuantityUnit"
;
this
.
SampleQuantityUnit
.
ReadOnly
=
true
;
//
// SamplePackageName
// SamplePackageName
//
//
this
.
SamplePackageName
.
DataPropertyName
=
"PackageName"
;
this
.
SamplePackageName
.
DataPropertyName
=
"PackageName"
;
this
.
SamplePackageName
.
HeaderText
=
"箱号"
;
this
.
SamplePackageName
.
HeaderText
=
"箱号"
;
this
.
SamplePackageName
.
MinimumWidth
=
1
2
0
;
this
.
SamplePackageName
.
MinimumWidth
=
1
3
0
;
this
.
SamplePackageName
.
Name
=
"SamplePackageName"
;
this
.
SamplePackageName
.
Name
=
"SamplePackageName"
;
this
.
SamplePackageName
.
ReadOnly
=
true
;
this
.
SamplePackageName
.
ReadOnly
=
true
;
this
.
SamplePackageName
.
Width
=
1
2
0
;
this
.
SamplePackageName
.
Width
=
1
3
0
;
//
//
//
btnInstallDriver
//
SampleQuantityUnit
//
//
this
.
btnInstallDriver
.
BackColor
=
System
.
Drawing
.
SystemColors
.
Control
;
this
.
SampleQuantityUnit
.
DataPropertyName
=
"QuantityUnit"
;
this
.
btnInstallDriver
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Bottom
;
this
.
SampleQuantityUnit
.
HeaderText
=
"数量/单位"
;
this
.
btnInstallDriver
.
ForeColor
=
System
.
Drawing
.
SystemColors
.
ControlText
;
this
.
SampleQuantityUnit
.
MinimumWidth
=
100
;
this
.
btnInstallDriver
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
272
);
this
.
SampleQuantityUnit
.
Name
=
"SampleQuantityUnit"
;
this
.
btnInstallDriver
.
Name
=
"btnInstallDriver"
;
this
.
SampleQuantityUnit
.
ReadOnly
=
true
;
this
.
btnInstallDriver
.
Size
=
new
System
.
Drawing
.
Size
(
259
,
38
);
this
.
btnInstallDriver
.
TabIndex
=
83
;
this
.
btnInstallDriver
.
Text
=
"驱动安装"
;
this
.
btnInstallDriver
.
UseVisualStyleBackColor
=
false
;
this
.
btnInstallDriver
.
Visible
=
false
;
this
.
btnInstallDriver
.
Click
+=
new
System
.
EventHandler
(
this
.
btnInstallDriver_Click
);
//
//
// FrmMain
// FrmMain
//
//
...
@@ -593,7 +602,7 @@
...
@@ -593,7 +602,7 @@
this
.
Controls
.
Add
(
this
.
plLeft
);
this
.
Controls
.
Add
(
this
.
plLeft
);
this
.
Icon
=
((
System
.
Drawing
.
Icon
)(
resources
.
GetObject
(
"$this.Icon"
)));
this
.
Icon
=
((
System
.
Drawing
.
Icon
)(
resources
.
GetObject
(
"$this.Icon"
)));
this
.
Name
=
"FrmMain"
;
this
.
Name
=
"FrmMain"
;
this
.
Text
=
"样品入箱客户端 1.
0(23.6.14
CP2101)"
;
this
.
Text
=
"样品入箱客户端 1.
4(23.7.80
CP2101)"
;
this
.
Load
+=
new
System
.
EventHandler
(
this
.
FrmMain_Load
);
this
.
Load
+=
new
System
.
EventHandler
(
this
.
FrmMain_Load
);
this
.
plLeft
.
ResumeLayout
(
false
);
this
.
plLeft
.
ResumeLayout
(
false
);
this
.
gbInfo
.
ResumeLayout
(
false
);
this
.
gbInfo
.
ResumeLayout
(
false
);
...
@@ -647,15 +656,15 @@
...
@@ -647,15 +656,15 @@
private
System
.
Windows
.
Forms
.
Label
lbTips
;
private
System
.
Windows
.
Forms
.
Label
lbTips
;
private
System
.
Windows
.
Forms
.
CheckBox
ckbAutoCreatePackage
;
private
System
.
Windows
.
Forms
.
CheckBox
ckbAutoCreatePackage
;
private
System
.
Windows
.
Forms
.
Label
lbLogStatus
;
private
System
.
Windows
.
Forms
.
Label
lbLogStatus
;
private
System
.
Windows
.
Forms
.
Button
btnInstallDriver
;
private
System
.
Windows
.
Forms
.
DataGridViewButtonColumn
SampleAction
;
private
System
.
Windows
.
Forms
.
DataGridViewButtonColumn
SampleAction
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleBizId
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleBizId
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleOwnerName
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleOwnerName
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleName
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleName
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleDealTime
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleDealTime
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleDeadTime
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleDeadTime
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleQuantityUnit
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SamplePackageName
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SamplePackageName
;
private
System
.
Windows
.
Forms
.
Button
btnInstallDriver
;
private
System
.
Windows
.
Forms
.
DataGridViewTextBoxColumn
SampleQuantityUnit
;
}
}
}
}
Src/FrmMain.cs
View file @
c62d85f5
...
@@ -10,6 +10,7 @@ using System.Drawing;
...
@@ -10,6 +10,7 @@ using System.Drawing;
using
System.Linq
;
using
System.Linq
;
using
System.Security.Cryptography
;
using
System.Security.Cryptography
;
using
System.Text
;
using
System.Text
;
using
System.Text.RegularExpressions
;
using
System.Threading
;
using
System.Threading
;
using
System.Timers
;
using
System.Timers
;
using
System.Windows.Forms
;
using
System.Windows.Forms
;
...
@@ -34,7 +35,7 @@ namespace Kivii.Client.SamplePackages
...
@@ -34,7 +35,7 @@ namespace Kivii.Client.SamplePackages
private
void
FrmMain_Load
(
object
sender
,
EventArgs
e
)
private
void
FrmMain_Load
(
object
sender
,
EventArgs
e
)
{
{
this
.
WindowState
=
FormWindowState
.
Maximized
;
initControls
();
initControls
();
loadDefault
(
tbxServiceUrl
,
tbxUserName
,
tbxPassword
);
loadDefault
(
tbxServiceUrl
,
tbxUserName
,
tbxPassword
);
//initReader();
//initReader();
...
@@ -94,9 +95,9 @@ namespace Kivii.Client.SamplePackages
...
@@ -94,9 +95,9 @@ namespace Kivii.Client.SamplePackages
}
}
}
}
}
}
catch
catch
(
Exception
ex
)
{
{
throw
ex
;
}
}
}
}
...
@@ -125,9 +126,9 @@ namespace Kivii.Client.SamplePackages
...
@@ -125,9 +126,9 @@ namespace Kivii.Client.SamplePackages
}
}
}
}
}
}
catch
catch
(
Exception
ex
)
{
{
throw
ex
;
}
}
}
}
#
endregion
#
endregion
...
@@ -205,7 +206,7 @@ namespace Kivii.Client.SamplePackages
...
@@ -205,7 +206,7 @@ namespace Kivii.Client.SamplePackages
{
{
dgvSamples
.
DataSource
=
null
;
dgvSamples
.
DataSource
=
null
;
}));
}));
var
request
=
new
SampleQuery
2
();
var
request
=
new
SampleQuery
();
request
.
PackageKvid
=
_currentPackage
.
Kvid
;
request
.
PackageKvid
=
_currentPackage
.
Kvid
;
try
try
{
{
...
@@ -272,12 +273,30 @@ namespace Kivii.Client.SamplePackages
...
@@ -272,12 +273,30 @@ namespace Kivii.Client.SamplePackages
return
;
return
;
}
}
var
record
=
resp
.
Results
[
0
];
var
record
=
resp
.
Results
[
0
];
if
(
record
.
DealTime
==
null
||
record
.
DealTime
.
Value
<
DateTime
.
Parse
(
"2023-06-25"
))
bool
packageNameIsA
=
false
;
bool
sampleBizIdWithSuffix
=
false
;
if
(
_currentPackage
.
Name
.
ToLower
().
StartsWithIgnoreCase
(
"a"
))
packageNameIsA
=
true
;
sampleBizIdWithSuffix
=
Regex
.
IsMatch
(
record
.
BizId
.
ToLower
(),
"[a-zA-Z]$"
,
RegexOptions
.
IgnoreCase
);
if
(
packageNameIsA
)
{
if
(
sampleBizIdWithSuffix
)
samplePackaging
(
record
);
else
{
MessageBox
.
Show
(
"此报告号无后缀,不可入A箱!"
,
"样品入箱"
);
return
;
}
}
else
{
if
(!
sampleBizIdWithSuffix
)
samplePackaging
(
record
);
else
{
{
MessageBox
.
Show
(
"此样品受理时间不在2023-06-25之后,请使用老样品系统退样"
,
"Rfid读取样品
"
);
MessageBox
.
Show
(
"此报告号有后缀,不可入B箱!"
,
"样品入箱
"
);
return
;
return
;
}
}
samplePackaging
(
record
);
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
...
@@ -288,6 +307,11 @@ namespace Kivii.Client.SamplePackages
...
@@ -288,6 +307,11 @@ namespace Kivii.Client.SamplePackages
private
void
samplePackaging
(
Sample
sample
)
private
void
samplePackaging
(
Sample
sample
)
{
{
if
(
sample
==
null
)
return
;
if
(
sample
==
null
)
return
;
if
(
_currentPackage
==
null
)
return
;
if
(
_currentPackage
.
PackageName
.
IsNullOrEmpty
())
{
_currentPackage
.
PackageName
=
cbSetCurrentPackageNode
.
Text
;
}
var
request
=
new
SamplePackaging
();
var
request
=
new
SamplePackaging
();
request
.
Package
=
_currentPackage
;
request
.
Package
=
_currentPackage
;
request
.
Kvid
=
sample
.
Kvid
;
request
.
Kvid
=
sample
.
Kvid
;
...
@@ -304,7 +328,7 @@ namespace Kivii.Client.SamplePackages
...
@@ -304,7 +328,7 @@ namespace Kivii.Client.SamplePackages
if
(
_currentSamples
==
null
)
_currentSamples
=
new
List
<
Sample
>();
if
(
_currentSamples
==
null
)
_currentSamples
=
new
List
<
Sample
>();
if
(!
_currentSamples
.
Exists
(
o
=>
o
.
Kvid
==
record
.
Kvid
))
if
(!
_currentSamples
.
Exists
(
o
=>
o
.
Kvid
==
record
.
Kvid
))
{
{
_currentSamples
.
Add
(
record
);
_currentSamples
.
Insert
(
0
,
record
);
}
}
this
.
Invoke
(
new
Action
(
delegate
this
.
Invoke
(
new
Action
(
delegate
{
{
...
@@ -361,12 +385,24 @@ namespace Kivii.Client.SamplePackages
...
@@ -361,12 +385,24 @@ namespace Kivii.Client.SamplePackages
}
}
private
void
setCurrentPackage
(
Sample
package
)
private
void
setCurrentPackage
(
Sample
package
)
{
{
if
(
package
.
CurrentLocation
!=
null
)
{
if
(
package
.
CurrentLocation
.
InternalCode
==
"Location.Warehouse101"
)
{
MessageBox
.
Show
(
"当前箱子已经交接至仓库,无法设置"
,
"箱号设置失败"
);
return
;
}
}
_currentPackage
=
new
Sample
();
_currentPackage
=
new
Sample
();
_currentPackage
.
PopulateWith
(
package
);
_currentPackage
.
PopulateWith
(
package
);
tbSetCurrentPackage
.
Enabled
=
_currentPackage
==
null
;
tbSetCurrentPackage
.
Enabled
=
_currentPackage
==
null
;
tbCurrentPackage
.
Text
=
_currentPackage
.
Name
+
(
_currentPackage
.
PackageName
.
IsNullOrEmpty
()
?
""
:
$"(
{
_currentPackage
.
PackageName
}
)"
);
btnClearCurrentPackage
.
Enabled
=
_currentPackage
!=
null
;
btnClearCurrentPackage
.
Enabled
=
_currentPackage
!=
null
;
cbSetCurrentPackageNode
.
Enabled
=
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Empty
||
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Full
;
cbSetCurrentPackageNode
.
Enabled
=
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Empty
||
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Full
;
cbSetCurrentPackageNode
.
SelectedIndex
=
0
;
_currentPackage
.
PackageName
=
cbSetCurrentPackageNode
.
Text
;
tbCurrentPackage
.
Text
=
_currentPackage
.
Name
+
(
_currentPackage
.
PackageName
.
IsNullOrEmpty
()
?
""
:
$"(
{
_currentPackage
.
PackageName
}
)"
);
btnScanRfid
.
Enabled
=
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Empty
||
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Full
;
btnScanRfid
.
Enabled
=
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Empty
||
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Full
;
tbScanSample
.
Enabled
=
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Empty
||
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Full
;
tbScanSample
.
Enabled
=
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Empty
||
_currentPackage
.
Status
==
(
int
)
PackageStatus
.
Full
;
tbScanSample
.
Text
=
""
;
tbScanSample
.
Text
=
""
;
...
@@ -379,7 +415,6 @@ namespace Kivii.Client.SamplePackages
...
@@ -379,7 +415,6 @@ namespace Kivii.Client.SamplePackages
MessageBox
.
Show
(
"当前箱子已入库,无法继续操作!"
,
"箱号设置"
);
MessageBox
.
Show
(
"当前箱子已入库,无法继续操作!"
,
"箱号设置"
);
return
;
return
;
}
}
cbSetCurrentPackageNode
.
SelectedIndex
=
0
;
Thread
.
Sleep
(
200
);
Thread
.
Sleep
(
200
);
btnScanRfid_Click
(
null
,
null
);
btnScanRfid_Click
(
null
,
null
);
}
}
...
@@ -396,69 +431,20 @@ namespace Kivii.Client.SamplePackages
...
@@ -396,69 +431,20 @@ namespace Kivii.Client.SamplePackages
MessageBox
.
Show
(
"请输入箱号!"
);
MessageBox
.
Show
(
"请输入箱号!"
);
return
;
return
;
}
}
var
request
=
new
Sample
Query
();
var
request
=
new
Sample
PackageInit
();
request
.
Name
=
tbSetCurrentPackage
.
Text
;
request
.
Package
Name
=
tbSetCurrentPackage
.
Text
;
request
.
Type
=
SampleType
.
Package
;
request
.
AutoCreate
=
ckbAutoCreatePackage
.
Checked
;
try
try
{
{
var
resp
=
_client
.
Post
(
request
);
var
resp
=
_client
.
Post
(
request
);
if
(
resp
.
Results
.
Count
<=
0
)
if
(
resp
.
Result
==
null
)
{
if
(!
ckbAutoCreatePackage
.
Checked
)
{
{
_currentPackage
=
null
;
_currentPackage
=
null
;
MessageBox
.
Show
(
"未找到箱号!"
,
"箱号设置"
);
MessageBox
.
Show
(
"未找到箱号!"
,
"箱号设置"
);
return
;
return
;
}
}
else
var
package
=
resp
.
Result
;
{
package
.
RemoveAllOnlyProperties
();
var
requestCreate
=
new
PackageCreate
();
requestCreate
.
Item
=
new
Sample
();
requestCreate
.
Item
.
Name
=
tbSetCurrentPackage
.
Text
;
requestCreate
.
Item
.
Type
=
SampleType
.
Package
;
requestCreate
.
Item
.
OperateTime
=
DateTime
.
Now
;
try
{
var
res
=
_client
.
Post
(
requestCreate
);
if
(
res
.
Results
.
Count
<=
0
)
{
_currentPackage
=
null
;
MessageBox
.
Show
(
"创建箱号失败!"
,
"箱号设置"
);
return
;
}
var
createPackage
=
res
.
Results
.
FirstOrDefault
();
setCurrentPackage
(
createPackage
);
return
;
}
catch
(
Exception
ex
)
{
_currentPackage
=
null
;
MessageBox
.
Show
(
ex
.
GetResponseStatus
().
Message
,
"创建箱号失败"
);
return
;
}
//var createTask = _client.PostAsync(requestCreate);
//createTask.Success(res =>
//{
// if (res.Results.Count <= 0)
// {
// _currentPackage = null;
// MessageBox.Show("创建箱号失败!", "箱号设置");
// return;
// }
// var createPackage = res.Results.FirstOrDefault();
// setCurrentPackage(createPackage);
// return;
//});
//createTask.Error(ex =>
//{
// _currentPackage = null;
// MessageBox.Show("创建箱号失败!", "箱号设置");
// return;
//});
//return;
}
}
var
package
=
resp
.
Results
.
FirstOrDefault
();
setCurrentPackage
(
package
);
setCurrentPackage
(
package
);
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
...
@@ -534,8 +520,10 @@ namespace Kivii.Client.SamplePackages
...
@@ -534,8 +520,10 @@ namespace Kivii.Client.SamplePackages
btnLogin
.
Enabled
=
false
;
btnLogin
.
Enabled
=
false
;
_client
=
new
JsonServiceClient
(
tbxServiceUrl
.
Text
);
_client
=
new
JsonServiceClient
(
tbxServiceUrl
.
Text
);
var
auth
=
new
Authenticate
{
UserName
=
tbxUserName
.
Text
,
Password
=
tbxPassword
.
Text
,
provider
=
"Kivii"
};
var
auth
=
new
Authenticate
{
UserName
=
tbxUserName
.
Text
,
Password
=
tbxPassword
.
Text
,
provider
=
"Kivii"
};
var
task
=
_client
.
PostAsync
(
auth
);
var
resp
=
_client
.
Post
(
auth
);
task
.
Success
(
resp
=>
try
{
if
(
resp
!=
null
)
{
{
initUserInfo
(
resp
);
initUserInfo
(
resp
);
btnLogin
.
Enabled
=
false
;
btnLogin
.
Enabled
=
false
;
...
@@ -547,15 +535,37 @@ namespace Kivii.Client.SamplePackages
...
@@ -547,15 +535,37 @@ namespace Kivii.Client.SamplePackages
lbLogStatus
.
ForeColor
=
Color
.
Green
;
lbLogStatus
.
ForeColor
=
Color
.
Green
;
//tbSetCurrentPackage.Enabled = !btnLogin.Enabled;
//tbSetCurrentPackage.Enabled = !btnLogin.Enabled;
setDefault
(
tbxServiceUrl
,
tbxUserName
,
tbxPassword
);
setDefault
(
tbxServiceUrl
,
tbxUserName
,
tbxPassword
);
},
true
);
}
task
.
Error
(
err
=>
}
catch
(
Exception
ex
)
{
{
btnLogin
.
Enabled
=
true
;
btnLogin
.
Enabled
=
true
;
initUserInfo
();
initUserInfo
();
_client
.
Dispose
();
_client
.
Dispose
();
_client
=
null
;
_client
=
null
;
MessageBox
.
Show
(
err
.
Message
,
"Login Error"
);
MessageBox
.
Show
(
ex
.
Message
,
"Login Error"
);
},
true
);
}
//task.Success(resp =>
//{
// initUserInfo(resp);
// btnLogin.Enabled = false;
// btnLogout.Enabled = !btnLogin.Enabled;
// tbxServiceUrl.Enabled = btnLogin.Enabled;
// tbxUserName.Enabled = btnLogin.Enabled;
// tbxPassword.Enabled = btnLogin.Enabled;
// lbLogStatus.Text = "登录成功";
// lbLogStatus.ForeColor = Color.Green;
// //tbSetCurrentPackage.Enabled = !btnLogin.Enabled;
// setDefault(tbxServiceUrl, tbxUserName, tbxPassword);
//}, true);
//task.Error(err =>
//{
// btnLogin.Enabled = true;
// initUserInfo();
// _client.Dispose();
// _client = null;
// MessageBox.Show(err.Message, "Login Error");
//}, true);
}
}
private
void
btnLogout_Click
(
object
sender
,
EventArgs
e
)
private
void
btnLogout_Click
(
object
sender
,
EventArgs
e
)
...
@@ -640,7 +650,14 @@ namespace Kivii.Client.SamplePackages
...
@@ -640,7 +650,14 @@ namespace Kivii.Client.SamplePackages
private
void
cbSetCurrentPackageNode_TextChanged
(
object
sender
,
EventArgs
e
)
private
void
cbSetCurrentPackageNode_TextChanged
(
object
sender
,
EventArgs
e
)
{
{
tbCurrentPackageNode
.
Text
=
cbSetCurrentPackageNode
.
Text
;
tbCurrentPackageNode
.
Text
=
cbSetCurrentPackageNode
.
Text
;
if
(
_currentPackage
!=
null
)
_currentPackage
.
PackageName
=
cbSetCurrentPackageNode
.
Text
;
if
(
_currentPackage
!=
null
)
{
_currentPackage
.
PackageName
=
cbSetCurrentPackageNode
.
Text
;
tbCurrentPackage
.
Text
=
_currentPackage
.
Name
+
(
_currentPackage
.
PackageName
.
IsNullOrEmpty
()
?
""
:
$"(
{
_currentPackage
.
PackageName
}
)"
);
}
}
}
private
void
dgvSamples_RowPostPaint
(
object
sender
,
DataGridViewRowPostPaintEventArgs
e
)
private
void
dgvSamples_RowPostPaint
(
object
sender
,
DataGridViewRowPostPaintEventArgs
e
)
...
...
Src/FrmMain.resx
View file @
c62d85f5
...
@@ -135,10 +135,10 @@
...
@@ -135,10 +135,10 @@
<metadata
name=
"SampleDeadTime.UserAddedColumn"
type=
"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
>
<metadata
name=
"SampleDeadTime.UserAddedColumn"
type=
"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
>
<value>
True
</value>
<value>
True
</value>
</metadata>
</metadata>
<metadata
name=
"Sample
QuantityUnit
.UserAddedColumn"
type=
"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
>
<metadata
name=
"Sample
PackageName
.UserAddedColumn"
type=
"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
>
<value>
True
</value>
<value>
True
</value>
</metadata>
</metadata>
<metadata
name=
"Sample
PackageName
.UserAddedColumn"
type=
"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
>
<metadata
name=
"Sample
QuantityUnit
.UserAddedColumn"
type=
"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
>
<value>
True
</value>
<value>
True
</value>
</metadata>
</metadata>
<assembly
alias=
"System.Drawing"
name=
"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
/>
<assembly
alias=
"System.Drawing"
name=
"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
/>
...
...
Src/Kivii.Client.SamplePackages.V4.0.csproj
View file @
c62d85f5
...
@@ -34,6 +34,9 @@
...
@@ -34,6 +34,9 @@
<PropertyGroup>
<PropertyGroup>
<ApplicationIcon>
F.ico
</ApplicationIcon>
<ApplicationIcon>
F.ico
</ApplicationIcon>
</PropertyGroup>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>
app.manifest
</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<Reference
Include=
"Kivii.Common.V4.0, Version=5.6.2023.4000, Culture=neutral, processorArchitecture=MSIL"
>
<Reference
Include=
"Kivii.Common.V4.0, Version=5.6.2023.4000, Culture=neutral, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Kivii.Common.5.6.2023.4000\lib\net40\Kivii.Common.V4.0.dll
</HintPath>
<HintPath>
..\packages\Kivii.Common.5.6.2023.4000\lib\net40\Kivii.Common.V4.0.dll
</HintPath>
...
@@ -88,6 +91,7 @@
...
@@ -88,6 +91,7 @@
<DependentUpon>
Resources.resx
</DependentUpon>
<DependentUpon>
Resources.resx
</DependentUpon>
</Compile>
</Compile>
<None
Include=
"App.config"
/>
<None
Include=
"App.config"
/>
<None
Include=
"app.manifest"
/>
<None
Include=
"packages.config"
/>
<None
Include=
"packages.config"
/>
<None
Include=
"Properties\Settings.settings"
>
<None
Include=
"Properties\Settings.settings"
>
<Generator>
SettingsSingleFileGenerator
</Generator>
<Generator>
SettingsSingleFileGenerator
</Generator>
...
...
Src/Properties/AssemblyInfo.cs
View file @
c62d85f5
...
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
...
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("5.4.2023.
619
0")]
[assembly: AssemblyVersion("5.4.2023.
708
0")]
[assembly: AssemblyFileVersion("5.4.2023.
619
0")]
[assembly: AssemblyFileVersion("5.4.2023.
708
0")]
Src/Requests/RestfulRequests.cs
View file @
c62d85f5
...
@@ -12,18 +12,17 @@ namespace Kivii.Samples.Transforms
...
@@ -12,18 +12,17 @@ namespace Kivii.Samples.Transforms
{
{
public
Guid
OwnerKvid
{
get
;
set
;
}
public
Guid
OwnerKvid
{
get
;
set
;
}
}
}
[
Route
(
Configs
.
RouteSamplePackageInit
)]
[
Route
(
Configs
.
RouteSampleQuery
)]
public
class
SamplePackageInit
:
IReturn
<
RestfulReadResponse
<
Sample
>>
public
class
SampleQuery
:
IReturn
<
RestfulQueryResponse
<
Sample
>>
{
{
public
string
Name
{
get
;
set
;
}
public
string
PackageName
{
get
;
set
;
}
public
SampleType
Type
{
get
;
set
;
}
public
bool
AutoCreate
{
get
;
set
;
}
public
bool
IncludeLocation
{
get
;
set
;
}
=
true
;
//public Guid PackageKvid { get; set; }
}
}
[
Route
(
Configs
.
RouteSampleQuery
)]
[
Route
(
Configs
.
RouteSampleQuery
)]
public
class
SampleQuery
2
:
IReturn
<
RestfulQueryResponse
<
Sample
>>
public
class
SampleQuery
:
IReturn
<
RestfulQueryResponse
<
Sample
>>
{
{
public
Guid
PackageKvid
{
get
;
set
;
}
public
Guid
PackageKvid
{
get
;
set
;
}
}
}
...
...
Src/app.manifest
0 → 100644
View file @
c62d85f5
<?xml version="1.0" encoding="utf-8"?>
<assembly
manifestVersion=
"1.0"
xmlns=
"urn:schemas-microsoft-com:asm.v1"
>
<assemblyIdentity
version=
"1.0.0.0"
name=
"MyApplication.app"
/>
<trustInfo
xmlns=
"urn:schemas-microsoft-com:asm.v2"
>
<security>
<requestedPrivileges
xmlns=
"urn:schemas-microsoft-com:asm.v3"
>
<!-- UAC 清单选项
如果想要更改 Windows 用户帐户控制级别,请使用
以下节点之一替换 requestedExecutionLevel 节点。n
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
元素。
-->
<requestedExecutionLevel
level=
"requireAdministrator"
uiAccess=
"false"
/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility
xmlns=
"urn:schemas-microsoft-com:compatibility.v1"
>
<application>
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
Windows 版本的列表。取消评论适当的元素,
Windows 将自动选择最兼容的环境。 -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
</application>
</compatibility>
<!-- 指示该应用程序可以感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
选择加入。选择加入此设置的 Windows 窗体应用程序(目标设定为 .NET Framework 4.6 )还应
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。-->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
-->
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment