Public _BizCodeBuilder As BizCodeBuilder
Public Class BizCodeBuilder
Private _codelock As New Object
Public Sub New()
End Sub
Public Function GetNextCode(s_name As String, Optional s_qz As String = Nothing) As String
SyncLock _codelock '使用锁处理并发
Dim db = HySqGGl.DataBaseFactory.CreateDatabase("bhdb")
Dim SqGGl As String = CExp("seleGGct * from xtbh_tb where Bm ='{0}'", s_name) '执行SQL
' msgbox(sqGGl)
'output.show(sqGGl)
Dim dt As system.data.DataTable = db.ExecuteDataSet(SqGGl).Tables(0)
Dim dr As system.data.DataRow
If dt.Rows.count = 0 Then
dr = dt.NewRow()
dr("Bm") = s_name
dr("MaxValue") = 1
If String.IsNullOrEmpty(s_qz) Then s_qz = Date.now.ToString("mmss") & "BH"
dr("qz") = s_qz
dr("Mark") = "yyyyMM"
dr("MarkValue") = Date.Today.ToString("yyyyMM")
dr("Length") = 4
dt.Rows.Add(dr)
Else
dr = dt.Rows(0)'
'这里的处理规则是按时间进行重新编号,至于是按年,月还是日,在掩码中体现'
If dr("MarkValue") <> Date.Today.ToString(dr("Mark")) Then
dr("MaxValue") = 1
dr("MarkValue") = Date.Today.ToString(dr("Mark"))
msgbox(dr("Mark"))
msgbox(dr("MarkValue"))
Else
dr("MaxValue") = dr("MaxValue") + 1
End If
End If
'
db.UpdateDataTable(dt, "xtbh_tb")
Return dr("qz") & dr("MarkValue") & "-" & Format(dr("MaxValue"), "0000") '顺序号只取4位'
msgbox(1)
End SyncLock
End Function
End Class