From 074cfe8b3f471f3ad76ee15aa6b3192a747f9123 Mon Sep 17 00:00:00 2001 From: r0n1n7an Date: Tue, 14 Jan 2025 13:43:32 +0800 Subject: [PATCH] use last record values when comming request contain null param values --- ews/ews.go | 53 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/ews/ews.go b/ews/ews.go index 8397d00..b895328 100644 --- a/ews/ews.go +++ b/ews/ews.go @@ -210,6 +210,32 @@ func (e *EWS) SetUutInfo(cfg cnf.Cfg, logger *log.Logger, host string, addr stri return rst } + //如果部分客户端参数为空, 则保留uutinfo表中已存在记录的值 + mac := params["MAC"] + if mac == "" { + mac = ui.MAC + } + pn := params["PARTNO"] + if pn == "" { + pn = ui.PartNO + } + mo := params["MO"] + if mo == "" { + mo = ui.MfgMO + } + sku := params["SKU"] + if sku == "" { + sku = ui.MfgSKU + } + line := params["LINE"] + if line == "" { + line = ui.MfgLine + } + stage := params["STAGE"] + if stage == "" { + stage = ui.MfgStage + } + //如果此USN的记录存在于uutinfo表中, 且此USN的Relay/MAC/Item/Status/Message已变化, 则: //1. 备份此USN对应记录行到uutinfobkup表 //2. 删除uutinfo表中对应USN的记录行 @@ -262,8 +288,8 @@ 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, @@ -302,11 +328,6 @@ 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());") if err != nil { tx.Rollback() @@ -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, + mo, + sku, + line, + stage, ui.FirstAck, ) if err != nil { @@ -400,15 +421,15 @@ 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, + pn, + mo, + sku, params["LINE"], params["STAGE"], ui.FirstAck,