/
ivan
/
ModMas
Обзор
Документация
Войти
/
ivan
/
ModMas
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ModuleMaster/engineers/ewcs_add_new_handler.ashx
273 строки
12 KB
i.krivokon
Initial commit
13 мар 2026, 13:49
13 мар 2026, 13:49
00d9fb6
Код
Авторство
О чём код?
<%@ WebHandler Language="VB" Class="EWCS" %> 'http://localhost:61349/Engineers/EWCS_add_new_handler.ashx 'http://serkweb.serk.lan:8080/Modulemaster/Engineers/EWCS_add_new_handler.ashx Imports sharedClasses.dbFunctions Imports System.Data Public Class EWCS : Implements IHttpHandler Private db As New SqlFunctions Private registration_notification As New List(Of String) From { "andrey.qa", "r.zaharov", "s.gordienko", "a.ivlev", "s.molodtsov", "a.zlobin", "a.mitrofanov", "a.gorokhov", "s.khrestin", "e.yufryakov", "m.gorbachev", "r.zhyravlev", "a.romashin", "a.zadokhin", "p.bychenkov", "i.romanov", "d.vlasov", "m.khotamova", "t.pendikova", "i.vorojeykin", "a.chekanniko", "j.odilov" } Private qa_notification As New List(Of String) From { "andrey.qa", "gusev.alex", "a.ivlev", "s.molodtsov", "a.zlobin" } Private ibi_notification As New List(Of String) From { "a.mitrofanov", "a.gorokhov" } Private iqc_notification As New List(Of String) From { "r.zaharov", "s.gordienko", "s.khrestin" } Private oqc_notification As New List(Of String) From { "e.yufryakov", "m.gorbachev", "r.zhyravlev" } Private pe_notification As New List(Of String) From { "a.romashin", "a.zadokhin", "p.bychenkov", "i.romanov", "d.vlasov" } Private pd_notification As New List(Of String) From { "m.khotamova", "t.pendikova", "i.vorojeykin" } Private qm_notification As New List(Of String) From { "a.chekanniko", "j.odilov" } Private test_registration_notification As New List(Of String) From { "naumenko.mv", "serk.orchestra" } Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest Dim tid As String = context.Request.QueryString("tid") Dim rowid As String = context.Request.QueryString("rowid") Dim mail_body As StringBuilder = New StringBuilder() 'Текст письма для рассылки Dim table_body_sql As StringBuilder = New StringBuilder() 'SQL запрос для получения значений полей только что добавленной записи Dim table_body_dr As DataRow 'Значения полей только что добавленной записи Dim department_involved_sql As StringBuilder = New StringBuilder 'SQL запрос для получения списка задействованных отделов Dim department_involved_dr As DataRow 'Значения полей списка задействованных отделов 'Если ID таблицы и ID записи присутствуют и корректны If IsNumeric(tid) And IsNumeric(rowid) Then 'Формируем заголовок таблицы для текста письма mail_body.AppendLine("<h2>Коллеги!</h2> Зарегистрирован новый случай раннего предупреждения о проблеме. Пожалуйста, обратите внимание!") mail_body.AppendLine("<br>Детали:<br><br>") mail_body.AppendLine("<table border=1><tr>") mail_body.AppendLine("<th>W</th>") mail_body.AppendLine("<th>Registration date</th>") mail_body.AppendLine("<th>Status</th>") mail_body.AppendLine("<th>Registartion dept</th>") mail_body.AppendLine("<th>Registration PIC</th>") mail_body.AppendLine("<th>EW from</th>") mail_body.AppendLine("<th>EW to</th>") mail_body.AppendLine("<th>Stage</th>") mail_body.AppendLine("<th>Material</th>") mail_body.AppendLine("<th>P/N</th>") mail_body.AppendLine("<th>Model</th>") mail_body.AppendLine("<th>Revers models</th>") mail_body.AppendLine("<th>Platform</th>") mail_body.AppendLine("<th>BOM</th>") mail_body.AppendLine("<th>Vendor</th>") mail_body.AppendLine("<th>Risk lot</th>") mail_body.AppendLine("<th>Problem</th>") mail_body.AppendLine("<th>Symptom</th>") mail_body.AppendLine("</tr><tr>") 'Формируем запрос для извлечения полей только что добавленной записи table_body_sql.Append("select ") table_body_sql.AppendLine("W") table_body_sql.AppendLine(",REGISTRATION_DATE") table_body_sql.AppendLine(",[STATUS]") table_body_sql.AppendLine(",REGISTARTION_DEPT") table_body_sql.AppendLine(",REGISTRATION_PIC") table_body_sql.AppendLine(",EW_FROM") table_body_sql.AppendLine(",EW_TO") table_body_sql.AppendLine(",STAGE") table_body_sql.AppendLine(",MATERIAL") table_body_sql.AppendLine(",P_N") table_body_sql.AppendLine(",[MODEL]") table_body_sql.AppendLine(",REVERS_MODELS") table_body_sql.AppendLine(",[PLATFORM]") table_body_sql.AppendLine(",BOM") table_body_sql.AppendLine(",VENDOR") table_body_sql.AppendLine(",RISK_LOT") table_body_sql.AppendLine(",PROBLEM") table_body_sql.AppendLine(",SYMPTOM") table_body_sql.AppendLine("from [usermodules].[user].[EWCS]") table_body_sql.AppendLine("where id = " & rowid) table_body_sql.AppendLine("") 'Вставляем значения полей в текст письма table_body_dr = db.GetRow(table_body_sql.ToString) For Each field_value As String In table_body_dr.ItemArray mail_body.AppendLine("<td>" & field_value & "</td>") Next mail_body.AppendLine("</tr></table><br>") mail_body.AppendLine("Более подробную информацию можно посмотреть здесь: <a href=""http://serkweb.serk.lan:8080/Modulemaster/Engineers/EWCS.aspx?f={ID:'" & rowid & "'}"">link</a>") 'Рассылаем письма For Each notification_recipient As String In registration_notification SendEmail(notification_recipient, "EWCS", mail_body.ToString) Next 'Определяем каким отделам нужно отправлять письма department_involved_sql.Append("select ") department_involved_sql.AppendLine("QA") department_involved_sql.AppendLine(",IBI") department_involved_sql.AppendLine(",IQC") department_involved_sql.AppendLine(",OQC") department_involved_sql.AppendLine(",PE") department_involved_sql.AppendLine(",PD") department_involved_sql.AppendLine(",QM") department_involved_sql.AppendLine("from [usermodules].[user].[EWCS]") department_involved_sql.AppendLine("where id = " & rowid) department_involved_sql.AppendLine("") department_involved_dr = db.GetRow(department_involved_sql.ToString) 'Рассылаем письма задействованным отделам If department_involved_dr.Item("QA") = "O" Then 'Рассылаем письма For Each notification_recipient As String In qa_notification SendEmail(notification_recipient, "EWCS", mail_body.ToString) Next End If If department_involved_dr.Item("IBI") = "O" Then 'Рассылаем письма For Each notification_recipient As String In ibi_notification SendEmail(notification_recipient, "EWCS", mail_body.ToString) Next End If If department_involved_dr.Item("IQC") = "O" Then 'Рассылаем письма For Each notification_recipient As String In iqc_notification SendEmail(notification_recipient, "EWCS", mail_body.ToString) Next End If If department_involved_dr.Item("OQC") = "O" Then 'Рассылаем письма For Each notification_recipient As String In oqc_notification SendEmail(notification_recipient, "EWCS", mail_body.ToString) Next End If If department_involved_dr.Item("PE") = "O" Then 'Рассылаем письма For Each notification_recipient As String In pe_notification SendEmail(notification_recipient, "EWCS", mail_body.ToString) Next End If If department_involved_dr.Item("PD") = "O" Then 'Рассылаем письма For Each notification_recipient As String In pd_notification SendEmail(notification_recipient, "EWCS", mail_body.ToString) Next End If If department_involved_dr.Item("QM") = "O" Then 'Рассылаем письма For Each notification_recipient As String In qm_notification SendEmail(notification_recipient, "EWCS", mail_body.ToString) Next End If End If context.Response.Write("OK") End Sub Public Shared Sub SendEmail(_recepient As String, _subject As String, _body As String, Optional attachment As String = "") Dim com As New System.Data.SqlClient.SqlCommand com.CommandText = "msdb.dbo.sp_send_dbmail" With com.Parameters .AddWithValue("profile_name", "Orchestra") .AddWithValue("recipients", _recepient & "@samsung.com") .AddWithValue("body_format", "HTML") .AddWithValue("subject", _subject) .AddWithValue("body", _body) ' & "<div id=""FactorySumDiv"" align=""center""><embed type=""application/x-shockwave-flash"" src=""http://106.109.79.119:8080/pm/FusionCharts/FCF_StackedColumn3D.swf"" width=""1000"" height=""550"" id=""FactorySum"" name=""FactorySum"" quality=""high"" allowscriptaccess=""always"" flashvars=""chartWidth=1000&chartHeight=550&debugMode=0&DOMId=FactorySum&registerWithJS=0&scaleMode=noScale&lang=EN&dataXML=<graph caption='Tasks weight' subCaption='By User' decimalPrecision='0' showNames='1' numberSuffix=' points' formatNumberScale='0'><categories><category name='P.PLAKHOV' /><category name='A.ALEHIN' /><category name='ST.KALMYKOV' /><category name='K.YUSHIN' /><category name='I.KRIVOKON' /><category name='PAVEL.GERAS' /><category name='A.VASIEV' /><category name='D.BARANOV' /><category name='SY1120.PARK' /><category name='YOONJUNG.CHA' /></categories><DataTable seriesName='InProgress tasks' color='FFFF66'><set value='80' /><set value='95' /><set value='40' /><set value='105' /><set value='180' /><set value='40' /><set value='80' /><set value='80' /><set value='100' /><set value='30' /></DataTable><DataTable seriesName='Completed tasks' color='66FF66'><set value='151' /><set value='161' /><set value='150' /><set value='77' /><set value='66' /><set value='72' /><set value='60' /><set value='35' /><set value='0' /><set value='0' /></DataTable><DataTable seriesName='On-time score' color='66CCFF'><set value='110' /><set value='60' /><set value='40' /><set value='100' /><set value='70' /><set value='60' /><set value='60' /><set value='30' /><set value='0' /><set value='0' /></DataTable></graph>""></div>") If attachment.Trim <> "" Then .AddWithValue("file_attachments", attachment.Trim) End If End With com.CommandType = Data.CommandType.StoredProcedure Call (New SqlFunctions).NonQuery(com) End Sub Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable Get Return False End Get End Property End Class