370 lines
12 KiB
VB.net
370 lines
12 KiB
VB.net
|
|
|
|||
|
|
Imports System.Text
|
|||
|
|
Imports System.Xml
|
|||
|
|
|
|||
|
|
Namespace UTSModule.Station
|
|||
|
|
Public Class StationPackagePlan
|
|||
|
|
Inherits StationPlan
|
|||
|
|
|
|||
|
|
Sub New(packet As StationPacket)
|
|||
|
|
MyBase.New(packet)
|
|||
|
|
|
|||
|
|
CreateStationPlan()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 校验条码未测试后处理方式
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property CheckSnTested As CheckStatus
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 校验条码已参与包装后处理方式
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property CheckSnPackaged As CheckStatus
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 校验条码不属于指定MO后处理方式
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property CheckSnMO As CheckStatus
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 保存图像的数量
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property PictureCount As Integer
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 解锁密码
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property UnlockKey As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 条码类型
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property BarCodeType As BarcodeTypes
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 缺失条码数量后的处理方式
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property MissingQuantity As MissCountStatus
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 缺失条码数量后的解锁密码
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property MissingQuantityKey As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 是否自动打印
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property AutoPrint As Boolean
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 发生错误后报警文件
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property ErrorSound As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 模板文件名
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property TemplateFile As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 箱号编辑密码
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property BoxMumEditKey As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 公司Logo文件
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property CompanyLogo As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 公司名称
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property CompanyName As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 箱号规则
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property BoxNumText As String
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 箱号条码
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property BoxBarCode As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 前置站位
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property ForwardPosition As String
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 后置站位
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property RearPosition As String
|
|||
|
|
''' <summary>
|
|||
|
|
''' 软件版本
|
|||
|
|
''' </summary>
|
|||
|
|
''' <returns></returns>
|
|||
|
|
Public Property Versions As String
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Overrides Sub CreateStationPlan()
|
|||
|
|
CheckSnTested = CheckStatus.Fail
|
|||
|
|
CheckSnPackaged = CheckStatus.Fail
|
|||
|
|
CheckSnMO = CheckStatus.Fail
|
|||
|
|
UnlockKey = ""
|
|||
|
|
BarCodeType = BarcodeTypes.AsTemplate
|
|||
|
|
MissingQuantity = MissCountStatus.Key
|
|||
|
|
MissingQuantityKey = ""
|
|||
|
|
AutoPrint = False
|
|||
|
|
ErrorSound = ""
|
|||
|
|
TemplateFile = ""
|
|||
|
|
BoxMumEditKey = ""
|
|||
|
|
CompanyLogo = ""
|
|||
|
|
CompanyName = ""
|
|||
|
|
BoxNumText = ""
|
|||
|
|
BoxBarCode = ""
|
|||
|
|
ForwardPosition = ""
|
|||
|
|
RearPosition = ""
|
|||
|
|
Versions = ""
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Overrides Sub SaveFile(path As String)
|
|||
|
|
Dim xws As New XmlWriterSettings
|
|||
|
|
With xws
|
|||
|
|
.Indent = True
|
|||
|
|
.NewLineOnAttributes = False
|
|||
|
|
.Encoding = New UTF8Encoding(False)
|
|||
|
|
End With
|
|||
|
|
|
|||
|
|
Using xw As XmlWriter = XmlWriter.Create(path, xws)
|
|||
|
|
xw.WriteStartDocument()
|
|||
|
|
xw.WriteStartElement($"UtsStationPlan") '创建跟节点
|
|||
|
|
|
|||
|
|
xw.WriteStartElement($"Properties") '创建表属性节点
|
|||
|
|
|
|||
|
|
'测试流程的属性
|
|||
|
|
xw.WriteElementString("CheckSnTested", CheckSnTested.ToString)
|
|||
|
|
xw.WriteElementString("CheckSnPackaged", CheckSnPackaged.ToString)
|
|||
|
|
xw.WriteElementString("CheckSnMO", CheckSnMO.ToString)
|
|||
|
|
xw.WriteElementString("PictureCount", PictureCount.ToString)
|
|||
|
|
xw.WriteElementString("UnlockKey", UnlockKey)
|
|||
|
|
xw.WriteElementString("BarCodeType", BarCodeType.ToString)
|
|||
|
|
xw.WriteElementString("MissingQuantity", MissingQuantity.ToString)
|
|||
|
|
xw.WriteElementString("MissingQuantityKey", MissingQuantityKey)
|
|||
|
|
xw.WriteElementString("AutoPrint", AutoPrint.ToString)
|
|||
|
|
xw.WriteElementString("ErrorSound", ErrorSound)
|
|||
|
|
xw.WriteElementString("TemplateFile", TemplateFile)
|
|||
|
|
xw.WriteElementString("BoxMumEditKey", BoxMumEditKey)
|
|||
|
|
xw.WriteElementString("CompanyLogo", CompanyLogo)
|
|||
|
|
xw.WriteElementString("CompanyName", CompanyName)
|
|||
|
|
xw.WriteElementString("BoxNumText", BoxNumText)
|
|||
|
|
xw.WriteElementString("ForwardPosition", ForwardPosition)
|
|||
|
|
xw.WriteElementString("RearPosition", RearPosition)
|
|||
|
|
xw.WriteElementString("Versions", Versions)
|
|||
|
|
xw.WriteEndElement()
|
|||
|
|
|
|||
|
|
xw.WriteEndElement()
|
|||
|
|
xw.WriteEndDocument()
|
|||
|
|
End Using
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 读取测试站属性
|
|||
|
|
''' </summary>
|
|||
|
|
''' <param name="nodeList"></param>
|
|||
|
|
Private Sub LoadProperties(nodeList As XmlNodeList)
|
|||
|
|
Dim xe As XmlElement
|
|||
|
|
For Each node As XmlNode In nodeList
|
|||
|
|
xe = CType(node, XmlElement)
|
|||
|
|
Select Case xe.LocalName
|
|||
|
|
Case "CheckSnTested"
|
|||
|
|
If [Enum].TryParse(xe.InnerText, CheckSnTested) = False Then
|
|||
|
|
CheckSnTested = CheckStatus.Fail
|
|||
|
|
End If
|
|||
|
|
Case "CheckSnPackaged"
|
|||
|
|
If [Enum].TryParse(xe.InnerText, CheckSnPackaged) = False Then
|
|||
|
|
CheckSnPackaged = CheckStatus.Fail
|
|||
|
|
End If
|
|||
|
|
Case "CheckSnMO"
|
|||
|
|
If [Enum].TryParse(xe.InnerText, CheckSnMO) = False Then
|
|||
|
|
CheckSnMO = CheckStatus.Fail
|
|||
|
|
End If
|
|||
|
|
Case "PictureCount"
|
|||
|
|
If Integer.TryParse(xe.InnerText, PictureCount) = False Then
|
|||
|
|
PictureCount = 1
|
|||
|
|
End If
|
|||
|
|
Case "UnlockKey"
|
|||
|
|
UnlockKey = xe.InnerText
|
|||
|
|
Case "BarCodeType"
|
|||
|
|
If [Enum].TryParse(xe.InnerText, BarCodeType) = False Then
|
|||
|
|
BarCodeType = BarcodeTypes.AsTemplate
|
|||
|
|
End If
|
|||
|
|
Case "MissingQuantity"
|
|||
|
|
If [Enum].TryParse(xe.InnerText, MissingQuantity) = False Then
|
|||
|
|
MissingQuantity = MissCountStatus.Key
|
|||
|
|
End If
|
|||
|
|
Case "MissingQuantityKey"
|
|||
|
|
MissingQuantityKey = xe.InnerText
|
|||
|
|
Case "AutoPrint"
|
|||
|
|
If Boolean.TryParse(xe.InnerText, AutoPrint) = False Then
|
|||
|
|
AutoPrint = False
|
|||
|
|
End If
|
|||
|
|
Case "ErrorSound"
|
|||
|
|
ErrorSound = xe.InnerText
|
|||
|
|
Case "TemplateFile"
|
|||
|
|
TemplateFile = xe.InnerText
|
|||
|
|
Case "BoxMumEditKey"
|
|||
|
|
BoxMumEditKey = xe.InnerText
|
|||
|
|
Case "CompanyLogo"
|
|||
|
|
CompanyLogo = xe.InnerText
|
|||
|
|
Case "CompanyName"
|
|||
|
|
CompanyName = xe.InnerText
|
|||
|
|
Case "BoxNumText"
|
|||
|
|
BoxNumText = xe.InnerText
|
|||
|
|
Case "BoxBarCode"
|
|||
|
|
BoxBarCode = xe.InnerText
|
|||
|
|
Case "RearPosition"
|
|||
|
|
RearPosition = xe.InnerText
|
|||
|
|
Case "ForwardPosition"
|
|||
|
|
ForwardPosition = xe.InnerText
|
|||
|
|
Case "Versions"
|
|||
|
|
Versions = xe.InnerText
|
|||
|
|
Case Else
|
|||
|
|
'Throw New Exception($"StationPackagePlan LoadProperties Unknown LocalName:{xe.LocalName}")
|
|||
|
|
End Select
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Overrides Sub LoadFile(path As String)
|
|||
|
|
Dim xd As New XmlDocument()
|
|||
|
|
xd.Load(path)
|
|||
|
|
|
|||
|
|
Dim xe As XmlElement
|
|||
|
|
Dim nodeList As XmlNodeList = xd.SelectSingleNode($"UtsStationPlan").ChildNodes
|
|||
|
|
For Each node As XmlNode In nodeList
|
|||
|
|
xe = CType(node, XmlElement)
|
|||
|
|
Select Case xe.LocalName
|
|||
|
|
Case "Properties"
|
|||
|
|
LoadProperties(xe.ChildNodes)
|
|||
|
|
Case Else
|
|||
|
|
Throw New Exception($"StationPackagePlan LoadXml Unknown LocalName:{xe.LocalName}")
|
|||
|
|
End Select
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 校验条码失败后处理方式
|
|||
|
|
''' </summary>
|
|||
|
|
Enum CheckStatus
|
|||
|
|
''' <summary>
|
|||
|
|
''' 不处理
|
|||
|
|
''' </summary>
|
|||
|
|
None
|
|||
|
|
''' <summary>
|
|||
|
|
''' 校验失败
|
|||
|
|
''' </summary>
|
|||
|
|
Fail
|
|||
|
|
''' <summary>
|
|||
|
|
''' 程序锁定,需要管理员密码解锁,并写入注册表
|
|||
|
|
''' </summary>
|
|||
|
|
Lock
|
|||
|
|
''' <summary>
|
|||
|
|
''' 忽略错误继续录入
|
|||
|
|
''' </summary>
|
|||
|
|
Ignore
|
|||
|
|
End Enum
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 条码总数缺少的处理方式
|
|||
|
|
''' </summary>
|
|||
|
|
Enum MissCountStatus
|
|||
|
|
''' <summary>
|
|||
|
|
''' 允许录入
|
|||
|
|
''' </summary>
|
|||
|
|
Yes
|
|||
|
|
''' <summary>
|
|||
|
|
''' 不允许录入
|
|||
|
|
''' </summary>
|
|||
|
|
No
|
|||
|
|
''' <summary>
|
|||
|
|
''' 需要输入密码解锁
|
|||
|
|
''' </summary>
|
|||
|
|
Key
|
|||
|
|
End Enum
|
|||
|
|
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' 条码单元格的类型
|
|||
|
|
''' </summary>
|
|||
|
|
Enum BarcodeTypes
|
|||
|
|
''' <summary>
|
|||
|
|
''' 以模板内容为准
|
|||
|
|
''' </summary>
|
|||
|
|
AsTemplate
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' CODE39支持的字符:空格, 数字, 大写字母, $, %, *, +, -, ., /
|
|||
|
|
''' </summary>
|
|||
|
|
CODE39
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' CODE128A支持的字符:空格, 数字, 大写字母, 标点符号, @, #, $, %, ^, +, -, *, /
|
|||
|
|
''' </summary>
|
|||
|
|
CODE128A
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' CODE128B支持的字符:空格, 数字, 小写字母, 大写字母, 标点符号, @, #, $, %, ^, +, -, *, /, ~
|
|||
|
|
''' </summary>
|
|||
|
|
CODE128B
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' CODE128C只能包含数字
|
|||
|
|
''' </summary>
|
|||
|
|
CODE128C
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' EAN128只能包含数字
|
|||
|
|
''' </summary>
|
|||
|
|
EAN128
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' EAN13是商品编码,必须是13位数字,第13位是根据前面12位运算后得到的
|
|||
|
|
''' </summary>
|
|||
|
|
EAN13
|
|||
|
|
|
|||
|
|
''' <summary>
|
|||
|
|
''' Interleaved2of5只能包含数字,数字的长度必须为偶数
|
|||
|
|
''' </summary>
|
|||
|
|
Interleaved2of5
|
|||
|
|
End Enum
|
|||
|
|
|
|||
|
|
End Class
|
|||
|
|
End Namespace
|