diff --git a/ews/ews.go b/ews/ews.go index 8397d00..ca2dfb5 100644 --- a/ews/ews.go +++ b/ews/ews.go @@ -22,8 +22,8 @@ type UutInfo struct { Message string PartNO string Model string - MfgMO string MfgSKU string + MfgMO string MfgLine string MfgStage string FirstAck string @@ -34,8 +34,8 @@ type UutInfo struct { type ReportInfo struct { USN string PartNO string + MfgSKU string MfgMO string - SKU string Line string Location 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( 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);`, cfg.MySQL.IssuesTable), ) @@ -88,8 +88,8 @@ func (e *EWS) RecordIssue(cfg cnf.Cfg, logger *log.Logger, host string, addr str addr, host, params["PARTNO"], - params["MO"], params["SKU"], + params["MO"], params["LINE"], params["STAGE"], params["ITEM"], @@ -173,7 +173,7 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri //如果在uutinfo表中未查找到此USN的记录, 则新增一条此USN的记录 if err == sql.ErrNoRows { 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);`, params["USN"], params["MAC"], @@ -183,8 +183,8 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri params["STATUS"], params["MESSAGE"], params["PARTNO"], - params["MO"], params["SKU"], + params["MO"], params["LINE"], params["STAGE"], "NOW()", @@ -210,6 +210,32 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri return rst } + //如果测试项不为空(第一个心跳包), 当部分客户端参数为空, 则保留uutinfo表中已存在记录的值 + mac := params["MAC"] + pn := params["PARTNO"] + sku := params["SKU"] + mo := params["MO"] + line := params["LINE"] + stage := params["STAGE"] + if mac == "" { + mac = ui.MAC + } + if pn == "" { + pn = ui.PartNO + } + if sku == "" { + sku = ui.MfgSKU + } + if mo == "" { + mo = ui.MfgMO + } + if line == "" { + line = ui.MfgLine + } + if stage == "" { + stage = ui.MfgStage + } + //如果此USN的记录存在于uutinfo表中, 且此USN的Relay/MAC/Item/Status/Message已变化, 则: //1. 备份此USN对应记录行到uutinfobkup表 //2. 删除uutinfo表中对应USN的记录行 @@ -250,7 +276,7 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri 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 { tx.Rollback() logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) @@ -262,14 +288,14 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri _, err = stmt.Exec( ui.USN, ui.MAC, - addr, - host, + ui.IPAddr, + ui.Relay, ui.Item, ui.Status, ui.Message, ui.PartNO, - ui.MfgMO, ui.MfgSKU, + ui.MfgMO, ui.MfgLine, ui.MfgStage, ui.FirstAck, @@ -302,12 +328,7 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri return rst } - mac := params["MAC"] - if mac == "" { - mac = ui.MAC - } - - 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 { tx.Rollback() logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) @@ -323,11 +344,11 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri params["ITEM"], params["STATUS"], params["MESSAGE"], - params["PARTNO"], - params["MO"], - params["SKU"], - params["LINE"], - params["STAGE"], + pn, + sku, + mo, + line, + stage, ui.FirstAck, ) if err != nil { @@ -390,7 +411,7 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri 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 { txu.Rollback() logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) @@ -400,17 +421,17 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri } _, err = stmt.Exec( ui.USN, - ui.MAC, + mac, addr, host, ui.Item, ui.Status, ui.Message, - ui.PartNO, - ui.MfgMO, - ui.MfgSKU, - params["LINE"], - params["STAGE"], + pn, + sku, + mo, + line, + stage, ui.FirstAck, ui.LastChg, ) @@ -489,8 +510,8 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri t1.message, t1.partno, IFNULL(t2.model, '') AS model, - t1.mo, t1.sku, + t1.mo, t1.line, t1.stage, t1.first_ack, @@ -519,8 +540,8 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri &ul.Message, &ul.PartNO, &ul.Model, - &ul.MfgMO, &ul.MfgSKU, + &ul.MfgMO, &ul.MfgLine, &ul.MfgStage, &ul.FirstAck, @@ -541,7 +562,11 @@ func (e *EWS) GetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
USN | +SKU | +MO | +Line | +Stage | MAC | IP Address | Server | @@ -994,8 +1031,8 @@ func (e *EWS) TemplateDefectInfo(src string) string {NO. | USN | PartNO. | -MO | SKU | +MO | Line | Location | Item |
---|