diff --git a/APIServer.exe b/APIServer.exe index 6ffa556..cb919b5 100644 Binary files a/APIServer.exe and b/APIServer.exe differ diff --git a/APIServer.yml b/APIServer.yml index 683d42d..2ac129d 100644 --- a/APIServer.yml +++ b/APIServer.yml @@ -12,8 +12,9 @@ MySQL: Database: ewsv3_f716 User: apisvc Password: wcqte - OfflineTable: v_offline - IssueTable: v_issue + IssuesTable: issues + IssuesView: v_issues + OfflineView: v_offline Remark: Columns_UutInfo: [usn,mac,ipaddr,status,message,first_ack,last_ack,last_change] Columns_LocInfo: [mac,line,col,row,num,last_found] diff --git a/cnf/cnf.go b/cnf/cnf.go index fa909c9..eb4a269 100644 --- a/cnf/cnf.go +++ b/cnf/cnf.go @@ -15,11 +15,12 @@ type Settings struct { } type MySQL struct { - Server string `yaml:"Server"` - Port string `yaml:"Port"` - Database string `yaml:"Database"` - User string `yaml:"User"` - Password string `yaml:"Password"` - IssueTable string `yaml:"IssueTable"` - OfflineTable string `yaml:"OfflineTable"` + Server string `yaml:"Server"` + Port string `yaml:"Port"` + Database string `yaml:"Database"` + User string `yaml:"User"` + Password string `yaml:"Password"` + IssuesTable string `yaml:"IssuesTable"` + IssuesView string `yaml:"IssuesView"` + OfflineView string `yaml:"OfflineView"` } diff --git a/ews/ews.go b/ews/ews.go index 258b8cf..63c33d0 100644 --- a/ews/ews.go +++ b/ews/ews.go @@ -48,10 +48,11 @@ type ReportInfo struct { func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr string, uri string, params map[string]string) map[string]string { rst := map[string]string{"RESULT": ""} - if params["USN"] == "" || params["MAC"] == "" { - logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, "Missing Parameter USN/MAC.") + //if params["USN"] == "" || params["MAC"] == "" { + if params["USN"] == "" { + logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, "Missing Parameter USN.") rst["RESULT"] = "NG" - rst["ErrMsg"] = "Missing Parameter USN/MAC." + rst["ErrMsg"] = "Missing Parameter USN." return rst } @@ -78,6 +79,28 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri return rst } + if params["STATUS"] == "NG" { + dmlIssue := fmt.Sprintf(`INSERT INTO %s + (usn,mac,ipaddr,relay,partno,mo,sku,item,status,message,last_change) + VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',NOW());`, + cfg.MySQL.IssuesTable, + params["USN"], + params["MAC"], + addr, + host, + params["PARTNO"], + params["MO"], + params["SKU"], + params["ITEM"], + params["STATUS"], + params["MESSAGE"], + ) + _, err = dbo.Exec(dmlIssue) + if err != nil { + logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) + } + } + rec := dbo.QueryRow( fmt.Sprintf(`SELECT usn,mac,ipaddr,relay,item,status,message,partno,mo,sku,line,stage,first_ack,last_ack,last_change FROM uutinfo @@ -104,7 +127,9 @@ 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) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',%s,%s,%s);", + dmlInsert := fmt.Sprintf(`INSERT INTO uutinfo + (usn,mac,ipaddr,relay,item,status,message,partno,mo,sku,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"], addr, @@ -537,7 +562,7 @@ func (e *EWS) GetIssueReport(cfg cnf.Cfg, logger *log.Logger, host string, addr rows, err := dbo.Query(fmt.Sprintf( `SELECT usn,partno,mo,sku,line,location,item,status,message,first_ack,last_ack,last_change,diffmins FROM %s - ORDER BY diffmins ASC;`, cfg.MySQL.IssueTable)) + ORDER BY diffmins ASC;`, cfg.MySQL.IssuesView)) if err != nil { logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) rst["RESULT"] = "NG" @@ -608,7 +633,7 @@ func (e *EWS) GetOfflineReport(cfg cnf.Cfg, logger *log.Logger, host string, add rows, err := dbo.Query(fmt.Sprintf( `SELECT usn,partno,mo,sku,line,location,item,status,message,first_ack,last_ack,last_change,diffmins FROM %s - ORDER BY diffmins DESC;`, cfg.MySQL.OfflineTable)) + ORDER BY diffmins DESC;`, cfg.MySQL.OfflineView)) if err != nil { logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) rst["RESULT"] = "NG"