/
ivan
/
ModMas
Обзор
Документация
Войти
/
ivan
/
ModMas
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ModuleMaster/mm/key_materials.aspx.vb
313 строк
14 KB
i.krivokon
Initial commit
13 мар 2026, 13:49
13 мар 2026, 13:49
00d9fb6
Код
Авторство
О чём код?
Imports System.Data Imports System.Data.SqlClient Imports System.Net Partial Class Xml_viewTable Inherits System.Web.UI.Page Private sqlf As New sharedClasses.dbFunctions.SqlFunctions Private a As sharedClasses.Auth.auth Private Sub authorize(mode As String) a = New sharedClasses.Auth.auth(mode, IIf(Request.UserHostAddress = "::1", "106.109.72.69", Request.UserHostAddress)) End Sub Private KeyMaterialDefinition As DataTable Private dataUpdateRequest As Boolean = False Private rowIdToUpdate As String = "" Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load Dim userid As String = "" If Not IsNothing(Request.QueryString("OrchUserLogin")) Then userid = Request.QueryString("OrchUserLogin") End If If Not IsNothing(Request.QueryString("u")) Then userid = Request.QueryString("u") End If If userid = "" Then authorize("SSO") userid = a.userId edTableToView.Message = "By SSO: " & a.userId End If Dim viewId As String = "" If Not IsNothing(Request.QueryString("viewid")) Then viewId = Request.QueryString("viewid") End If If Not IsNothing(Request.QueryString("v")) Then viewId = Request.QueryString("v") End If If Not IsNothing(Request.QueryString("d")) Then 'edTableToView.debugMode = (Request.QueryString("d").ToString.ToUpper = "YES") End If If Not IsPostBack Then If Not IsNothing(Request.QueryString("p")) Then If IsNumeric(Request.QueryString("p")) Then edTableToView.PageSize = Request.QueryString("p") End If End If End If edTableToView.IsReadOnly = True edTableToView.UserName = userid.ToUpper If Not IsNothing(Request.QueryString("viewonly")) Then If Request.QueryString("viewonly").ToString.ToUpper = "YES" Then edTableToView.UserName = "" End If End If Try If IsNumeric(viewId) Then edTableToView.ViewID = viewId Else edTableToView.ViewID = -1 End If Catch ex As Exception End Try Dim sql As New StringBuilder 'Checking that all data transfered from pick list to key material report sql.AppendLine("select count(*) as cnt from ( ") sql.AppendLine("select distinct [order] as pl_order ") sql.AppendLine("from UserModules.[user].PICK_LIST_MAIN_LINE ") sql.AppendLine("where work_ctr <> 'W' ") sql.AppendLine(") T1 Left join ") sql.AppendLine("(select distinct [order] as km_order ") sql.AppendLine("from UserModules.[user].KEY_MATERIAL_MASTER ") sql.AppendLine(") t2 on t1.[pl_order] = t2.[km_order] ") sql.AppendLine("where km_order is NULL ") If sqlf.GetScalar(sql.ToString) > 0 Then Dim wb As WebRequest wb = WebRequest.Create("http://serkweb.serk.lan:8080/modulemaster/Handlers/getsqldata.ashx?id=385") Dim res As WebResponse = wb.GetResponse wb = WebRequest.Create("http://serkweb.serk.lan:8080/modulemaster/Handlers/getsqldata.ashx?id=396") res = wb.GetResponse End If sql.Clear() sql.Append("select key_material_type ") sql.Append(", LEFT(part_number_patterns , LEN(part_number_patterns )-1) as part_number_pattern ") sql.Append(", LEFT(description_patterns , LEN(description_patterns )-1) as description_pattern ") sql.Append("from UserModules.[user].key_material_definition as extern ") sql.Append("CROSS APPLY( ") sql.Append(" select part_number_pattern + '|' ") sql.Append(" FROM UserModules.[user].key_material_definition as intern ") sql.Append(" WHERE extern.key_material_type = intern.key_material_type and enabled='Y' ") sql.Append(" FOR XML PATH ('') ") sql.Append(") pre_trimmed(part_number_patterns) ") sql.Append("CROSS APPLY( ") sql.Append(" select description_pattern + '|' ") sql.Append(" FROM UserModules.[user].key_material_definition as intern ") sql.Append(" WHERE extern.key_material_type = intern.key_material_type and enabled='Y' ") sql.Append(" FOR XML PATH ('') ") sql.Append(") pre_trimmed1(description_patterns) ") sql.Append("WHERE enabled='Y' ") sql.Append("GROUP BY key_material_type, part_number_patterns, description_patterns ") KeyMaterialDefinition = sqlf.GetData(sql.ToString) End Sub Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) End Sub Protected Sub filterChanged() Handles edTableToView.GridFilterChanged End Sub Private Sub DataSelected(dt As DataTable) Handles edTableToView.DataSelected End Sub Protected Sub Page_PreRender(sender As Object, e As System.EventArgs) Handles Me.PreRender 'ClientScript.RegisterStartupScript(Me.GetType(), "CreateGridHeader", "<script>CreateGridHeader('DataDiv', 'editableGrid1_GridView1', 'HeaderDiv');</script>") If edTableToView.IsReadOnly Then edTableToView.CollectHeaderColumn(1) End If Title = edTableToView.TableDescription 'If edTableToView.copyFlag Then ' edTableToView.AddFormMode(edTableToView.copyId) 'End If edTableToView.SubReport.Controls.Add(createSubreport(edTableToView.TableId)) Dim script As String = sqlf.GetScalar("SELECT Gridcommand_handler FROM UserModules.dbo.ModuleTables WHERE id=" & edTableToView.TableId) If script <> "" Then gridcommandhandlerscript.Controls.Add(New Literal With {.Text = "<script type=""text/javascript"">" & script & "</script>"}) End If End Sub Private Function createSubreport(tid As String) As GridView Dim gv As New GridView Dim query As String = sqlf.GetScalar("SELECT isnull(SUBREPORT_QUERY,'') from usermodules.dbo.moduletables where id = " & tid) If query <> "" And Not (query.Contains("update") Or query.Contains("delete") Or query.Contains("exec") Or query.Contains("truncate") Or query.Contains("drop")) Then gv.DataSource = sqlf.GetData(query) Try gv.DataBind() Catch ex As Exception Return Nothing End Try End If Return gv End Function Protected Sub UpdateUserInfo(ByRef com As SqlCommand) Handles edTableToView.NewRecordSaving Try com.Parameters("@CHANGED_BY").Value = Request.QueryString("orchuserlogin") Catch ex As Exception End Try End Sub Protected Sub Page_SaveStateComplete(sender As Object, e As EventArgs) Handles Me.SaveStateComplete edTableToView.CreateGroupingText() End Sub Protected Sub edTableToView_PreRender(sender As Object, e As System.EventArgs) Handles edTableToView.PreRender End Sub Protected Sub Page_Unload(sender As Object, e As EventArgs) Handles Me.Unload End Sub Private Sub ActionRequest(ByVal sender As Object, ByVal e As CommandEventArgs) Handles edTableToView.ActionRequest If e.CommandArgument = "BUILDLIST" Then Dim targetDate As String = edTableToView.Filters("[PRODUCTION_DATE]") If Not IsNothing(targetDate) Then targetDate = targetDate.Split("N")(1).Trim("A").Trim().Trim("'") dataUpdateRequest = True BuildKeyMaterials(targetDate, "") edTableToView.RefreshData() End If End If End Sub Private Sub BuildKeyMaterials(prodDate As String, rowToUpdate As String) Dim sCond As String = "" If prodDate <> "" Then sCond = "PRODUCTION_DATE = '" & prodDate & "'" ElseIf rowToUpdate <> "" Then sCond = "id = '" & rowToUpdate & "'" End If If sCond <> "" Then Dim dt As DataTable = sqlf.GetData("Select id, [order] FROM UserModules.[user].KEY_MATERIAL_MASTER WHERE " & sCond) For Each rv As DataRow In dt.Rows Dim conf As edGridNamespace.tableConfig = edTableToView.config Dim sql As New StringBuilder Dim rowId As String = rv("id") Dim valuesToUpdate As New Hashtable If rowId = rowIdToUpdate Or rowIdToUpdate = "" Then sql.AppendLine("SELECT MATERIAL ") sql.AppendLine(", SUBSTRING(MATERIAL_DESCRIPTION, 1, CHARINDEX(';',MATERIAL_DESCRIPTION )-1) as MATERIAL_DESC ") sql.AppendLine(", STOR__LOC_ as STLOC ") sql.AppendLine(" FROM UserModules.[user].PICK_LIST_MAIN_LINE ") For Each dr As DataRow In KeyMaterialDefinition.Rows Dim selectCondition = sql.ToString & " WHERE [order]= '" & rv("order") & "' AND (" Dim pos As String = conf.GetParam(dr("key_material_type"), "POSITION") Dim pnPatterns() As String = dr("part_number_pattern").ToString.Split("|") Dim descPatterns() As String = dr("description_pattern").ToString.Split("|") Dim qty As Integer = Math.Max(pnPatterns.Count, descPatterns.Count) For i As Integer = 1 To qty If i > 1 Then selectCondition &= " OR " End If selectCondition &= "(MATERIAL LIKE '%" & pnPatterns(i - 1).Trim & "%' AND MATERIAL_DESCRIPTION LIKE '%" & descPatterns(i - 1).Trim & "%')" Next selectCondition &= ")" Dim materials As DataTable = sqlf.GetData(selectCondition) Dim m As New StringBuilder If Not IsNothing(materials) Then Dim origin As String = "" For Each drr As DataRow In materials.Rows m.AppendLine(drr("MATERIAL")) ' & "/" & drr("MATERIAL_DESC")) '---------------- Determine origin by storage location Try If origin <> "" Then origin &= " " If drr("STLOC") = "RC01" Then origin &= "IMPORT" ElseIf drr("STLOC") = "RC02" Or drr("STLOC") = "RC03" Then origin &= "LOCAL" ElseIf drr("STLOC") = "HC04" Then origin &= "INJECTION" Else origin &= drr("STLOC") End If Catch ex As Exception End Try '-- ----------------------------- Next If dr("key_material_type") = "STAND" Then valuesToUpdate.Add("STAND_VEND", origin) End If If dr("key_material_type") = "FRONT_C" Then valuesToUpdate.Add("FRONT_C_VEND", origin) End If If dr("key_material_type") = "REAR_C" Then valuesToUpdate.Add("REAR_C_VEND", origin) End If End If valuesToUpdate.Add(dr("key_material_type"), m.ToString) Next sql.Clear() sql.AppendLine("UPDATE UserModules.[user].KEY_MATERIAL_MASTER SET ") Dim addComma As Boolean = False For Each v As DictionaryEntry In valuesToUpdate If addComma Then sql.AppendLine(",") sql.Append(v.Key & " = '" & v.Value & "'") addComma = True Next sql.AppendLine(" WHERE id = " & rowId) sqlf.NonQuery(sql.ToString) edTableToView.Message &= sqlf.lastException End If Next End If End Sub Private Sub RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles edTableToView.RowCommand If e.CommandName = "REFRESH" Then ' edTableToView.Message = e.CommandArgument & " ---- " & e.CommandName & " ====== " & CType(e.CommandSource.Parent.Parent.Parent, System.Web.UI.WebControls.GridViewRow).RowIndex edTableToView.SelectedIndex = CType(e.CommandSource.Parent.Parent.Parent, System.Web.UI.WebControls.GridViewRow).RowIndex dataUpdateRequest = True rowIdToUpdate = e.CommandArgument BuildKeyMaterials("", rowIdToUpdate) edTableToView.RefreshData() End If End Sub Protected Sub RowDataBoundComplete(ByRef row As GridViewRow) Handles edTableToView.RowDataBoundComplete If dataUpdateRequest Then Try If row.RowType = DataControlRowType.DataRow Then End If Catch ex As Exception edTableToView.Message &= ex.Message End Try End If End Sub Private Sub Xml_viewTable_PreRenderComplete(sender As Object, e As EventArgs) Handles Me.PreRenderComplete edTableToView.CollectHeaderColumn(2) edTableToView.CollectHeaderColumn(3) edTableToView.CollectHeaderColumn(4) edTableToView.CollectHeaderColumn(5) End Sub End Class