update auto-increment key when received heartbeat
This commit is contained in:
parent
6d16d3b606
commit
66cd5fcad8
BIN
APIServer.exe
BIN
APIServer.exe
Binary file not shown.
94
ews/ews.go
94
ews/ews.go
@ -229,30 +229,6 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
|
|||||||
return rst
|
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=?;")
|
|
||||||
// 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=?;")
|
stmt, err = tx.Prepare("DELETE FROM uutinfo WHERE usn=?;")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
@ -320,16 +296,78 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri
|
|||||||
return rst
|
return rst
|
||||||
}
|
}
|
||||||
|
|
||||||
//如果此USN的记录存在与uutinfo表中, 且MAC/Item/Status/Message未变化, 则更新此USN记录的ipaddr,relay,stage, 并更新last_ack栏位为当前时间
|
//如果此USN的记录存在与uutinfo表中, 且MAC/Item/Status/Message未变化, 则更新此USN记录的ipaddr,relay,line,stage, 并更新last_ack栏位为当前时间
|
||||||
dmlUpdate := fmt.Sprintf("UPDATE uutinfo SET ipaddr='%s', relay='%s', stage='%s', last_ack=NOW() WHERE usn='%s'",
|
//dmlUpdate := fmt.Sprintf("UPDATE uutinfo SET ipaddr='%s', relay='%s', line='%s', stage='%s', last_ack=NOW() WHERE usn='%s';",
|
||||||
addr, host, params["STAGE"], params["USN"])
|
// addr, host, params["LINE"], params["STAGE"], params["USN"])
|
||||||
_, err = dbo.Exec(dmlUpdate)
|
//2024-01-26: 使用事务模式先删除再插入此USN的记录, 避免直接使用UPDATE导致自增键seqid不更新
|
||||||
|
|
||||||
|
txu, err := dbo.Begin()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
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())
|
||||||
rst["RESULT"] = "NG"
|
rst["RESULT"] = "NG"
|
||||||
rst["ErrMsg"] = err.Error()
|
rst["ErrMsg"] = err.Error()
|
||||||
return rst
|
return rst
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stmt, err := txu.Prepare("DELETE FROM uutinfo WHERE usn=?;")
|
||||||
|
if err != nil {
|
||||||
|
txu.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(ui.USN)
|
||||||
|
if err != nil {
|
||||||
|
txu.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 = 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(),?);")
|
||||||
|
if err != nil {
|
||||||
|
txu.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(
|
||||||
|
ui.USN,
|
||||||
|
ui.MAC,
|
||||||
|
addr,
|
||||||
|
host,
|
||||||
|
ui.Item,
|
||||||
|
ui.Status,
|
||||||
|
ui.Message,
|
||||||
|
ui.PartNO,
|
||||||
|
ui.MfgMO,
|
||||||
|
ui.MfgSKU,
|
||||||
|
params["LINE"],
|
||||||
|
params["STAGE"],
|
||||||
|
ui.FirstAck,
|
||||||
|
ui.LastChg,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
txu.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 = txu.Commit()
|
||||||
|
if err != nil {
|
||||||
|
txu.Rollback()
|
||||||
|
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error())
|
||||||
|
rst["RESULT"] = "NG"
|
||||||
|
rst["ErrMsg"] = err.Error()
|
||||||
|
return rst
|
||||||
|
}
|
||||||
|
|
||||||
rst["RESULT"] = "OK"
|
rst["RESULT"] = "OK"
|
||||||
rst["ErrMsg"] = "Updated 1 record."
|
rst["ErrMsg"] = "Updated 1 record."
|
||||||
return rst
|
return rst
|
||||||
|
Loading…
x
Reference in New Issue
Block a user