show sfcs info in getuutinfo api

This commit is contained in:
r0n1n7an 2025-01-16 00:15:04 +08:00
parent 1b1d3e1665
commit 19c6967883

View File

@ -22,8 +22,8 @@ type UutInfo struct {
Message string Message string
PartNO string PartNO string
Model string Model string
MfgMO string
MfgSKU string MfgSKU string
MfgMO string
MfgLine string MfgLine string
MfgStage string MfgStage string
FirstAck string FirstAck string
@ -34,8 +34,8 @@ type UutInfo struct {
type ReportInfo struct { type ReportInfo struct {
USN string USN string
PartNO string PartNO string
MfgSKU string
MfgMO string MfgMO string
SKU string
Line string Line string
Location string Location string
Item string Item string
@ -70,7 +70,7 @@ func (e *EWS) RecordIssue(cfg cnf.Cfg, logger *log.Logger, host string, addr str
stmt, err := dbo.Prepare( stmt, err := dbo.Prepare(
fmt.Sprintf(`INSERT INTO %s fmt.Sprintf(`INSERT INTO %s
(usn,mac,ipaddr,relay,partno,mo,sku,line,stage,item,status,message,first_ack,last_change,locline,loccol,locrow,locnum,loctime) (usn,mac,ipaddr,relay,partno,sku,mo,line,stage,item,status,message,first_ack,last_change,locline,loccol,locrow,locnum,loctime)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);`, VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);`,
cfg.MySQL.IssuesTable), cfg.MySQL.IssuesTable),
) )
@ -88,8 +88,8 @@ func (e *EWS) RecordIssue(cfg cnf.Cfg, logger *log.Logger, host string, addr str
addr, addr,
host, host,
params["PARTNO"], params["PARTNO"],
params["MO"],
params["SKU"], params["SKU"],
params["MO"],
params["LINE"], params["LINE"],
params["STAGE"], params["STAGE"],
params["ITEM"], params["ITEM"],
@ -173,7 +173,7 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
//如果在uutinfo表中未查找到此USN的记录, 则新增一条此USN的记录 //如果在uutinfo表中未查找到此USN的记录, 则新增一条此USN的记录
if err == sql.ErrNoRows { if err == sql.ErrNoRows {
dmlInsert := fmt.Sprintf(`INSERT INTO uutinfo dmlInsert := fmt.Sprintf(`INSERT INTO uutinfo
(usn,mac,ipaddr,relay,item,status,message,partno,mo,sku,line,stage,first_ack,last_ack,last_change) (usn,mac,ipaddr,relay,item,status,message,partno,sku,mo,line,stage,first_ack,last_ack,last_change)
VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',%s,%s,%s);`, VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',%s,%s,%s);`,
params["USN"], params["USN"],
params["MAC"], params["MAC"],
@ -183,8 +183,8 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
params["STATUS"], params["STATUS"],
params["MESSAGE"], params["MESSAGE"],
params["PARTNO"], params["PARTNO"],
params["MO"],
params["SKU"], params["SKU"],
params["MO"],
params["LINE"], params["LINE"],
params["STAGE"], params["STAGE"],
"NOW()", "NOW()",
@ -213,30 +213,28 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
//如果测试项不为空(第一个心跳包), 当部分客户端参数为空, 则保留uutinfo表中已存在记录的值 //如果测试项不为空(第一个心跳包), 当部分客户端参数为空, 则保留uutinfo表中已存在记录的值
mac := params["MAC"] mac := params["MAC"]
pn := params["PARTNO"] pn := params["PARTNO"]
mo := params["MO"]
sku := params["SKU"] sku := params["SKU"]
mo := params["MO"]
line := params["LINE"] line := params["LINE"]
stage := params["STAGE"] stage := params["STAGE"]
if params["ITEM"] != "" {
if mac == "" { if mac == "" {
mac = ui.MAC mac = ui.MAC
} }
if pn == "" { if pn == "" {
pn = ui.PartNO pn = ui.PartNO
} }
if mo == "" {
mo = ui.MfgMO
}
if sku == "" { if sku == "" {
sku = ui.MfgSKU sku = ui.MfgSKU
} }
if mo == "" {
mo = ui.MfgMO
}
if line == "" { if line == "" {
line = ui.MfgLine line = ui.MfgLine
} }
if stage == "" { if stage == "" {
stage = ui.MfgStage stage = ui.MfgStage
} }
}
//如果此USN的记录存在于uutinfo表中, 且此USN的Relay/MAC/Item/Status/Message已变化, 则: //如果此USN的记录存在于uutinfo表中, 且此USN的Relay/MAC/Item/Status/Message已变化, 则:
//1. 备份此USN对应记录行到uutinfobkup表 //1. 备份此USN对应记录行到uutinfobkup表
@ -278,7 +276,7 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
return rst return rst
} }
stmt, err := tx.Prepare("INSERT INTO uutinfobkup (usn,mac,ipaddr,relay,item,status,message,partno,mo,sku,line,stage,first_ack,last_ack,last_change) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);") stmt, err := tx.Prepare("INSERT INTO uutinfobkup (usn,mac,ipaddr,relay,item,status,message,partno,sku,mo,line,stage,first_ack,last_ack,last_change) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);")
if err != nil { if err != nil {
tx.Rollback() tx.Rollback()
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error())
@ -296,8 +294,8 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
ui.Status, ui.Status,
ui.Message, ui.Message,
ui.PartNO, ui.PartNO,
ui.MfgMO,
ui.MfgSKU, ui.MfgSKU,
ui.MfgMO,
ui.MfgLine, ui.MfgLine,
ui.MfgStage, ui.MfgStage,
ui.FirstAck, ui.FirstAck,
@ -330,7 +328,7 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
return rst return rst
} }
stmt, err = tx.Prepare("INSERT INTO uutinfo (usn,mac,ipaddr,relay,item,status,message,partno,mo,sku,line,stage,first_ack,last_ack,last_change) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NOW(),NOW());") stmt, err = tx.Prepare("INSERT INTO uutinfo (usn,mac,ipaddr,relay,item,status,message,partno,sku,mo,line,stage,first_ack,last_ack,last_change) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NOW(),NOW());")
if err != nil { if err != nil {
tx.Rollback() tx.Rollback()
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error())
@ -347,8 +345,8 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
params["STATUS"], params["STATUS"],
params["MESSAGE"], params["MESSAGE"],
pn, pn,
mo,
sku, sku,
mo,
line, line,
stage, stage,
ui.FirstAck, ui.FirstAck,
@ -413,7 +411,7 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
return rst return rst
} }
stmt, err = txu.Prepare("INSERT INTO uutinfo (usn,mac,ipaddr,relay,item,status,message,partno,mo,sku,line,stage,first_ack,last_ack,last_change) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NOW(),?);") stmt, err = txu.Prepare("INSERT INTO uutinfo (usn,mac,ipaddr,relay,item,status,message,partno,sku,mo,line,stage,first_ack,last_ack,last_change) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NOW(),?);")
if err != nil { if err != nil {
txu.Rollback() txu.Rollback()
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error())
@ -430,8 +428,8 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
ui.Status, ui.Status,
ui.Message, ui.Message,
pn, pn,
mo,
sku, sku,
mo,
line, line,
stage, stage,
ui.FirstAck, ui.FirstAck,
@ -512,8 +510,8 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
t1.message, t1.message,
t1.partno, t1.partno,
IFNULL(t2.model, '') AS model, IFNULL(t2.model, '') AS model,
t1.mo,
t1.sku, t1.sku,
t1.mo,
t1.line, t1.line,
t1.stage, t1.stage,
t1.first_ack, t1.first_ack,
@ -542,8 +540,8 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
&ul.Message, &ul.Message,
&ul.PartNO, &ul.PartNO,
&ul.Model, &ul.Model,
&ul.MfgMO,
&ul.MfgSKU, &ul.MfgSKU,
&ul.MfgMO,
&ul.MfgLine, &ul.MfgLine,
&ul.MfgStage, &ul.MfgStage,
&ul.FirstAck, &ul.FirstAck,
@ -564,7 +562,11 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
<td style="color: red; font-weight: bold;">%s</td> <td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td> <td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td> <td style="color: red; font-weight: bold;">%s</td>
</tr>%s`, ul.USN, ul.MAC, ul.IPAddr, ul.Relay, ul.Item, ul.Status, ul.Message, ul.LastChg, "\r\n") <td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td>
</tr>%s`, ul.USN, ul.MAC, ul.IPAddr, ul.Relay, ul.Item, ul.Status, ul.Message, ul.MfgSKU, ul.MfgMO, ul.MfgLine, ul.MfgStage, ul.LastChg, "\r\n")
} else { } else {
last = last + fmt.Sprintf(`<tr> last = last + fmt.Sprintf(`<tr>
<td style="color: blue;">%s</td> <td style="color: blue;">%s</td>
@ -575,7 +577,11 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
<td style="color: blue;">%s</td> <td style="color: blue;">%s</td>
<td style="color: blue;">%s</td> <td style="color: blue;">%s</td>
<td style="color: blue;">%s</td> <td style="color: blue;">%s</td>
</tr>%s`, ul.USN, ul.MAC, ul.IPAddr, ul.Relay, ul.Item, ul.Status, ul.Message, ul.LastChg, "\r\n") <td style="color: blue;">%s</td>
<td style="color: blue;">%s</td>
<td style="color: blue;">%s</td>
<td style="color: blue;">%s</td>
</tr>%s`, ul.USN, ul.MAC, ul.IPAddr, ul.Relay, ul.Item, ul.Status, ul.Message, ul.MfgSKU, ul.MfgMO, ul.MfgLine, ul.MfgStage, ul.LastChg, "\r\n")
} }
if ul.Model != "" { if ul.Model != "" {
@ -584,12 +590,12 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
if ul.PartNO != "" { if ul.PartNO != "" {
partNO = ul.PartNO partNO = ul.PartNO
} }
if ul.MfgMO != "" {
mfgMO = ul.MfgMO
}
if ul.MfgSKU != "" { if ul.MfgSKU != "" {
mfgSKU = ul.MfgSKU mfgSKU = ul.MfgSKU
} }
if ul.MfgMO != "" {
mfgMO = ul.MfgMO
}
if ul.FirstAck != "" { if ul.FirstAck != "" {
fstAck = ul.FirstAck fstAck = ul.FirstAck
} }
@ -612,8 +618,8 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
t1.message, t1.message,
t1.partno, t1.partno,
IFNULL(t2.model, '') AS model, IFNULL(t2.model, '') AS model,
t1.mo,
t1.sku, t1.sku,
t1.mo,
t1.line, t1.line,
t1.stage, t1.stage,
t1.first_ack, t1.first_ack,
@ -642,8 +648,8 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
&uh.Message, &uh.Message,
&uh.PartNO, &uh.PartNO,
&uh.Model, &uh.Model,
&uh.MfgMO,
&uh.MfgSKU, &uh.MfgSKU,
&uh.MfgMO,
&uh.MfgLine, &uh.MfgLine,
&uh.MfgStage, &uh.MfgStage,
&uh.FirstAck, &uh.FirstAck,
@ -663,11 +669,15 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
<td style="color: red; font-weight: bold;">%s</td> <td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td> <td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td> <td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td>
<td style="color: red; font-weight: bold;">%s</td>
</tr>%s`, </tr>%s`,
uh.USN, uh.MAC, uh.IPAddr, uh.Relay, uh.Item, uh.Status, uh.Message, uh.LastChg, "\r\n") uh.USN, uh.MAC, uh.IPAddr, uh.Relay, uh.Item, uh.Status, uh.Message, uh.MfgSKU, uh.MfgMO, uh.MfgLine, uh.MfgStage, uh.LastChg, "\r\n")
} else { } else {
bkup = bkup + fmt.Sprintf(`<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>%s`, bkup = bkup + fmt.Sprintf(`<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>%s`,
uh.USN, uh.MAC, uh.IPAddr, uh.Relay, uh.Item, uh.Status, uh.Message, uh.LastChg, "\r\n") uh.USN, uh.MAC, uh.IPAddr, uh.Relay, uh.Item, uh.Status, uh.Message, uh.MfgSKU, uh.MfgMO, uh.MfgLine, uh.MfgStage, uh.LastChg, "\r\n")
} }
} }
@ -702,12 +712,12 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
if partNO == "" { if partNO == "" {
partNO = uh.PartNO partNO = uh.PartNO
} }
if mfgMO == "" {
mfgMO = uh.MfgMO
}
if mfgSKU == "" { if mfgSKU == "" {
mfgSKU = uh.MfgSKU mfgSKU = uh.MfgSKU
} }
if mfgMO == "" {
mfgMO = uh.MfgMO
}
if fstAck == "" { if fstAck == "" {
fstAck = uh.FirstAck fstAck = uh.FirstAck
} }
@ -754,7 +764,7 @@ func (e *EWS) GetIssueReport(cfg cnf.Cfg, logger *log.Logger, host string, addr
ri := new(ReportInfo) ri := new(ReportInfo)
defect := "" defect := ""
rows, err := dbo.Query(fmt.Sprintf( rows, err := dbo.Query(fmt.Sprintf(
`SELECT usn,partno,mo,sku,line,location,item,status,message,first_ack,last_ack,last_change,diffmins `SELECT usn,partno,sku,mo,line,location,item,status,message,first_ack,last_ack,last_change,diffmins
FROM %s FROM %s
ORDER BY diffmins ASC;`, cfg.MySQL.IssuesView)) ORDER BY diffmins ASC;`, cfg.MySQL.IssuesView))
if err != nil { if err != nil {
@ -770,8 +780,8 @@ func (e *EWS) GetIssueReport(cfg cnf.Cfg, logger *log.Logger, host string, addr
err := rows.Scan( err := rows.Scan(
&ri.USN, &ri.USN,
&ri.PartNO, &ri.PartNO,
&ri.MfgSKU,
&ri.MfgMO, &ri.MfgMO,
&ri.SKU,
&ri.Line, &ri.Line,
&ri.Location, &ri.Location,
&ri.Item, &ri.Item,
@ -786,7 +796,7 @@ func (e *EWS) GetIssueReport(cfg cnf.Cfg, logger *log.Logger, host string, addr
break break
} }
temp := fmt.Sprintf(`<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>%s`, temp := fmt.Sprintf(`<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>%s`,
num, ri.USN, ri.PartNO, ri.MfgMO, ri.SKU, ri.Line, ri.Location, ri.Item, ri.Status, ri.Message, ri.FirstAck, ri.LastAck, ri.LastChg, ri.DiffMins, "\r\n") num, ri.USN, ri.PartNO, ri.MfgSKU, ri.MfgMO, ri.Line, ri.Location, ri.Item, ri.Status, ri.Message, ri.FirstAck, ri.LastAck, ri.LastChg, ri.DiffMins, "\r\n")
defect = defect + temp defect = defect + temp
num += 1 num += 1
} }
@ -825,7 +835,7 @@ func (e *EWS) GetOfflineReport(cfg cnf.Cfg, logger *log.Logger, host string, add
ri := new(ReportInfo) ri := new(ReportInfo)
offline := "" offline := ""
rows, err := dbo.Query(fmt.Sprintf( rows, err := dbo.Query(fmt.Sprintf(
`SELECT usn,partno,mo,sku,line,location,item,status,message,first_ack,last_ack,last_change,diffmins `SELECT usn,partno,sku,mo,line,location,item,status,message,first_ack,last_ack,last_change,diffmins
FROM %s FROM %s
ORDER BY diffmins DESC;`, cfg.MySQL.OfflineView)) ORDER BY diffmins DESC;`, cfg.MySQL.OfflineView))
if err != nil { if err != nil {
@ -841,8 +851,8 @@ func (e *EWS) GetOfflineReport(cfg cnf.Cfg, logger *log.Logger, host string, add
err := rows.Scan( err := rows.Scan(
&ri.USN, &ri.USN,
&ri.PartNO, &ri.PartNO,
&ri.MfgSKU,
&ri.MfgMO, &ri.MfgMO,
&ri.SKU,
&ri.Line, &ri.Line,
&ri.Location, &ri.Location,
&ri.Item, &ri.Item,
@ -857,7 +867,7 @@ func (e *EWS) GetOfflineReport(cfg cnf.Cfg, logger *log.Logger, host string, add
break break
} }
temp := fmt.Sprintf(`<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>%s`, temp := fmt.Sprintf(`<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>%s`,
num, ri.USN, ri.PartNO, ri.MfgMO, ri.SKU, ri.Line, ri.Location, ri.Item, ri.Status, ri.Message, ri.FirstAck, ri.LastAck, ri.LastChg, ri.DiffMins, "\r\n") num, ri.USN, ri.PartNO, ri.MfgSKU, ri.MfgMO, ri.Line, ri.Location, ri.Item, ri.Status, ri.Message, ri.FirstAck, ri.LastAck, ri.LastChg, ri.DiffMins, "\r\n")
offline = offline + temp offline = offline + temp
num += 1 num += 1
} }
@ -961,6 +971,10 @@ func (e *EWS) TemplateUutInfo(loc, locTime, misc, last, bkup string) string {
<th>Test Item</th> <th>Test Item</th>
<th>Status</th> <th>Status</th>
<th>Message</th> <th>Message</th>
<th>SKU</th>
<th>MO</th>
<th>Line</th>
<th>Stage</th>
<th>Last Change</th> <th>Last Change</th>
</tr> </tr>
%s %s
@ -1017,8 +1031,8 @@ func (e *EWS) TemplateDefectInfo(src string) string {
<th>NO.</th> <th>NO.</th>
<th>USN</th> <th>USN</th>
<th>PartNO.</th> <th>PartNO.</th>
<th>MO</th>
<th>SKU</th> <th>SKU</th>
<th>MO</th>
<th>Line</th> <th>Line</th>
<th>Location</th> <th>Location</th>
<th>Item</th> <th>Item</th>