diff --git a/APIServer.exe b/APIServer.exe index 08704c3..c6f0f71 100644 Binary files a/APIServer.exe and b/APIServer.exe differ diff --git a/ews/ews.go b/ews/ews.go index 0a6f26b..260d0db 100644 --- a/ews/ews.go +++ b/ews/ews.go @@ -130,8 +130,8 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri //如果此USN的记录存在与uutinfo表中, 且此USN的MAC/Item/Status/Message已变化, 则: //1. 备份此USN对应记录行到uutinfobkup表 - //2. 更新uutinfo表中对应USN记录的MAC/Item/Status/Message/PartNO/MO/SKU/Line/Stage - //3. 更新uutinfo表中此USN记录行的last_ack和last_change栏位为当前时间 + //2. 删除uutinfo表中对应USN记录的MAC/Item/Status/Message/PartNO/MO/SKU/Line/Stage + //3. 新增此USN的最新记录到uutinfo表 extFlag := false chgFlag := false @@ -198,7 +198,31 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri return rst } - stmt, err = tx.Prepare("UPDATE uutinfo SET mac=?, ipaddr=?, relay=?, item=?, status=?, message=?, partno=?, mo=?, sku=?, line=?, stage=?, last_ack=NOW(), last_change=NOW() WHERE usn=?;") + // stmt, err = tx.Prepare("UPDATE uutinfo SET mac=?, ipaddr=?, relay=?, item=?, status=?, message=?, partno=?, mo=?, sku=?, line=?, stage=?, last_ack=NOW(), last_change=NOW() WHERE usn=?;") + // if err != nil { + // tx.Rollback() + // logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) + // rst["RESULT"] = "NG" + // rst["ErrMsg"] = err.Error() + // return rst + // } + // defer stmt.Close() + // _, err = stmt.Exec( + // params["MAC"], + // addr, + // host, + // params["ITEM"], + // params["STATUS"], + // params["MESSAGE"], + // params["PARTNO"], + // params["MO"], + // params["SKU"], + // params["LINE"], + // params["STAGE"], + // params["USN"], + // ) + + stmt, err = tx.Prepare("DELETE FROM uutinfo WHERE usn=?;") if err != nil { tx.Rollback() logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) @@ -207,7 +231,25 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri return rst } defer stmt.Close() + _, err = stmt.Exec(params["USN"]) + if err != nil { + tx.Rollback() + logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) + rst["RESULT"] = "NG" + rst["ErrMsg"] = err.Error() + 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);") + if err != nil { + tx.Rollback() + logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) + rst["RESULT"] = "NG" + rst["ErrMsg"] = err.Error() + return rst + } _, err = stmt.Exec( + params["USN"], params["MAC"], addr, host, @@ -219,7 +261,9 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri params["SKU"], params["LINE"], params["STAGE"], - params["USN"], + ui.FirstAck, + "NOW()", + "NOW()", ) if err != nil { tx.Rollback()