|
@@ -23,7 +23,7 @@ type TargetOALicenseInfo struct {
|
|
|
OARequestNameHTMLNew sql.NullString `json:"oa_request_name_html_new"` // 新请求名称(HTML格式)
|
|
|
OAGLXMID sql.NullInt64 `json:"oa_glxm_id"` // 关联项目ID
|
|
|
OAGLXMName sql.NullString `json:"oa_glxm_name"` // 关联项目
|
|
|
- OASQSJ sql.NullTime `json:"oa_sqsj"` // 申请时间
|
|
|
+ OASQSJ sql.NullString `json:"oa_sqsj"` // 申请时间
|
|
|
OASalespersonName sql.NullString `json:"oa_salesperson_name"` // 销售人员名称
|
|
|
OAXSJSYX sql.NullString `json:"oa_xsjsyx"` // 销售邮箱
|
|
|
OAOperationsPersonName sql.NullString `json:"oa_operations_person_name"` // 运维人员名称
|
|
@@ -619,22 +619,49 @@ func DelLicenseInfoRow(uniqueID string) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
+type SQLResult struct {
|
|
|
+ OARequestName sql.NullString `json:"oa_request_name"` // 请求名称 (wr.REQUESTNAME)
|
|
|
+ OARequestNameNew sql.NullString `json:"oa_request_name_new"` // 新请求名称 (wr.REQUESTNAMENEW)
|
|
|
+ OARequestNameHTMLNew sql.NullString `json:"oa_request_name_html_new"` // 新请求名称(HTML格式) (wr.REQUESTNAMEHTMLNEW)
|
|
|
+ OAGLXMID sql.NullInt64 `json:"oa_glxm_id"` // 关联项目ID (fm.glxm)
|
|
|
+ OAGLXMName sql.NullString `json:"oa_glxm_name"` // 关联项目 (PP.NAME)
|
|
|
+ OASQSJ sql.NullString `json:"oa_sqsj"` // 申请时间 (fm.SQSJ)
|
|
|
+ OASalespersonName sql.NullString `json:"oa_salesperson_name"` // 销售人员名称 (hrm1.LASTNAME)
|
|
|
+ OAOperationsPersonName sql.NullString `json:"oa_operations_person_name"` // 运维人员名称 (hrm2.LASTNAME)
|
|
|
+ OAXSJSYX sql.NullString `json:"oa_xsjsyx"` // 销售邮箱 (fm.XSJSYX)
|
|
|
+ OAJFJSYX sql.NullString `json:"oa_jfjsyx"` // 运维邮箱 (fm.JFJSYX)
|
|
|
+ OASYDW sql.NullString `json:"oa_sydw"` // 使用单位 (fm.SYDW)
|
|
|
+ OAXMXXMS sql.NullString `json:"oa_xmxxms"` // 项目详细描述 (fm.XMXXMS)
|
|
|
+ OAJDS sql.NullInt64 `json:"oa_jds"` // 节点数 (fm.JDS)
|
|
|
+ OANodeCount sql.NullInt64 `json:"oa_node_count"` // 总节点数 (fmd.JDS)
|
|
|
+ OAProductCode sql.NullString `json:"oa_product_code"` // 产品编号 (ws1.SELECTNAME)
|
|
|
+ OAProductVersion sql.NullString `json:"oa_product_version"` // 产品版本 (ws2.SELECTNAME)
|
|
|
+ CLQ sql.NullString `json:"clq"` // 车辆情况 (fmd.CLQ)
|
|
|
+ CZXT sql.NullString `json:"czxt"` // 操作系统 (fmd.CZXT)
|
|
|
+ IP sql.NullString `json:"ip"` // IP 地址 (fmd.IP)
|
|
|
+ MAC sql.NullString `json:"mac"` // MAC 地址 (fmd.MAC)
|
|
|
+ OACreationDate sql.NullString `json:"oa_creation_date"` // 创建日期 (wr.CREATEDATE)
|
|
|
+ OACreationTime sql.NullString `json:"oa_creation_time"` // 创建时间 (wr.CREATETIME)
|
|
|
+ OALastOperateDate sql.NullString `json:"oa_last_operate_date"` // 最后操作日期 (wr.LASTOPERATEDATE)
|
|
|
+ OALastOperateTime sql.NullString `json:"oa_last_operate_time"` // 最后操作时间 (wr.LASTOPERATETIME)
|
|
|
+}
|
|
|
+
|
|
|
// 检验与oa库数据是否一致
|
|
|
-func CheckLicenseInfoInOADB(licInfo TargetOALicenseInfo) (*OALicenseInfo, error) {
|
|
|
- fmt.Println("该死的id", licInfo.ID)
|
|
|
- if !licInfo.ID.Valid {
|
|
|
- return nil, fmt.Errorf("uniqueID is empty")
|
|
|
+func CheckLicenseInfoInOADB(licInfo *TargetOALicenseInfo) (bool, error) {
|
|
|
+ //fmt.Println("该死的id", licInfo.ID)
|
|
|
+ if !licInfo.OAId.Valid {
|
|
|
+ return false, fmt.Errorf("uniqueID is empty")
|
|
|
|
|
|
}
|
|
|
|
|
|
sql := `
|
|
|
- SELECT
|
|
|
- fmd.id ,fm.REQUESTID, wr.REQUESTNAME,
|
|
|
+ SELECT
|
|
|
+ wr.REQUESTNAME,
|
|
|
wr.REQUESTNAMENEW, wr.REQUESTNAMEHTMLNEW,
|
|
|
fm.glxm,PP.NAME,fm.SQSJ, hrm1.LASTNAME,
|
|
|
hrm2.LASTNAME, fm.XSJSYX, fm.JFJSYX,
|
|
|
fm.SYDW, fm.XMXXMS, fm.JDS,
|
|
|
- fmd.JDS, ws1.SELECTVALUE, ws1.SELECTNAME,
|
|
|
+ fmd.JDS, ws1.SELECTNAME,
|
|
|
ws2.SELECTNAME, fmd.CLQ, fmd.CZXT,
|
|
|
fmd.IP, fmd.MAC,wr.CREATEDATE, wr.CREATETIME,
|
|
|
wr.LASTOPERATEDATE, wr.LASTOPERATETIME
|
|
@@ -647,49 +674,204 @@ func CheckLicenseInfoInOADB(licInfo TargetOALicenseInfo) (*OALicenseInfo, error)
|
|
|
LEFT JOIN XUGU.WORKFLOW_REQUESTBASE WR ON fm.REQUESTID = WR.REQUESTID
|
|
|
LEFT JOIN XUGU.PRJ_PROJECTINFO PP ON fm.glxm = PP.ID
|
|
|
where fmd.id = ?
|
|
|
- PARALLEL 8
|
|
|
+ PARALLEL 8;
|
|
|
`
|
|
|
- var record OALicenseInfo
|
|
|
- var sqsj string
|
|
|
+ var record SQLResult
|
|
|
+ //Wvar sqsj string
|
|
|
err := global.OaDB.QueryRow(sql, licInfo.OAId.Int32).Scan(
|
|
|
- &record.LicInfo.OAId,
|
|
|
- &record.LicInfo.OARequestID,
|
|
|
- &record.LicInfo.OARequestName,
|
|
|
- &record.LicInfo.OARequestNameNew,
|
|
|
- &record.LicInfo.OARequestNameHTMLNew,
|
|
|
- &record.LicInfo.OAGLXMID,
|
|
|
- &record.LicInfo.OAGLXMName,
|
|
|
- &sqsj,
|
|
|
- &record.LicInfo.OASalespersonName,
|
|
|
- &record.LicInfo.OAOperationsPersonName,
|
|
|
- &record.LicInfo.OAXSJSYX,
|
|
|
- &record.LicInfo.OAJFJSYX,
|
|
|
- &record.LicInfo.OASYDW,
|
|
|
- &record.LicInfo.OAXMXXMS,
|
|
|
- &record.LicInfo.OAJDS,
|
|
|
- &record.LicInfo.OANodeCount,
|
|
|
- &record.LicInfo.OAProductCode,
|
|
|
- &record.LicInfo.OAProductName,
|
|
|
- &record.LicInfo.OAProductVersion,
|
|
|
- &record.LicInfo.OACPU,
|
|
|
- &record.LicInfo.OAOperatingSystem,
|
|
|
- &record.LicInfo.OAMainMAC,
|
|
|
- &record.LicInfo.OASecondMAC,
|
|
|
- &record.LicInfo.OACreationDate,
|
|
|
- &record.LicInfo.OACreationTime,
|
|
|
- &record.LicInfo.OALastOperateDate,
|
|
|
- &record.LicInfo.OALastOperateTime,
|
|
|
+ &record.OARequestName,
|
|
|
+ &record.OARequestNameNew,
|
|
|
+ &record.OARequestNameHTMLNew,
|
|
|
+ &record.OAGLXMID,
|
|
|
+ &record.OAGLXMName,
|
|
|
+ &record.OASQSJ,
|
|
|
+ &record.OASalespersonName,
|
|
|
+ &record.OAOperationsPersonName,
|
|
|
+ &record.OAXSJSYX,
|
|
|
+ &record.OAJFJSYX,
|
|
|
+ &record.OASYDW,
|
|
|
+ &record.OAXMXXMS,
|
|
|
+ &record.OAJDS,
|
|
|
+ &record.OANodeCount,
|
|
|
+ &record.OAProductCode,
|
|
|
+ &record.OAProductVersion,
|
|
|
+ &record.CLQ,
|
|
|
+ &record.CZXT,
|
|
|
+ &record.IP,
|
|
|
+ &record.MAC,
|
|
|
+ &record.OACreationDate,
|
|
|
+ &record.OACreationTime,
|
|
|
+ &record.OALastOperateDate,
|
|
|
+ &record.OALastOperateTime,
|
|
|
)
|
|
|
if err != nil {
|
|
|
//global.Logger.Errorln("query data: ", err.Error())
|
|
|
- return nil, fmt.Errorf("CheckLicenseInfoInOADB query error: %v", err)
|
|
|
+ return false, fmt.Errorf("CheckLicenseInfoInOADB query error: %v", err)
|
|
|
}
|
|
|
|
|
|
// 将字符串转换为 time.Time 对象
|
|
|
- record.LicInfo.OASQSJ.Time, err = time.Parse("2006-01-02", sqsj)
|
|
|
+ //record.OASQSJ.Time, err = time.Parse("2006-01-02", sqsj)
|
|
|
+
|
|
|
if err != nil {
|
|
|
//fmt.Println("Error parsing date:", err)
|
|
|
- return nil, fmt.Errorf("CheckLicenseInfoInOADB 将字符串转换为 time.Time Error : %v", err)
|
|
|
+ return false, fmt.Errorf("CheckLicenseInfoInOADB 将字符串转换为 time.Time Error : %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if isEqual := compareAndCopy(record, licInfo); !isEqual {
|
|
|
+ return false, fmt.Errorf("与oa数据不一致")
|
|
|
+ }
|
|
|
+
|
|
|
+ return true, nil
|
|
|
+}
|
|
|
+
|
|
|
+func compareAndCopy(sqlResult SQLResult, target *TargetOALicenseInfo) bool {
|
|
|
+ // 标志位,初始为 true,表示默认所有值相等
|
|
|
+ isEqual := true
|
|
|
+
|
|
|
+ // 比较 OARequestName
|
|
|
+ if sqlResult.OARequestName != target.OARequestName {
|
|
|
+ target.OARequestName = sqlResult.OARequestName
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OARequestNameNew
|
|
|
+ if sqlResult.OARequestNameNew != target.OARequestNameNew {
|
|
|
+ target.OARequestNameNew = sqlResult.OARequestNameNew
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OARequestNameHTMLNew
|
|
|
+ if sqlResult.OARequestNameHTMLNew != target.OARequestNameHTMLNew {
|
|
|
+ target.OARequestNameHTMLNew = sqlResult.OARequestNameHTMLNew
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OAGLXMID
|
|
|
+ if sqlResult.OAGLXMID != target.OAGLXMID {
|
|
|
+ target.OAGLXMID = sqlResult.OAGLXMID
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OAGLXMName
|
|
|
+ if sqlResult.OAGLXMName != target.OAGLXMName {
|
|
|
+ target.OAGLXMName = sqlResult.OAGLXMName
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OASQSJ
|
|
|
+ if sqlResult.OASQSJ != target.OASQSJ {
|
|
|
+ target.OASQSJ = sqlResult.OASQSJ
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OASalespersonName
|
|
|
+ if sqlResult.OASalespersonName != target.OASalespersonName {
|
|
|
+ target.OASalespersonName = sqlResult.OASalespersonName
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OAOperationsPersonName
|
|
|
+ if sqlResult.OAOperationsPersonName != target.OAOperationsPersonName {
|
|
|
+ target.OAOperationsPersonName = sqlResult.OAOperationsPersonName
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OAXSJSYX
|
|
|
+ if sqlResult.OAXSJSYX != target.OAXSJSYX {
|
|
|
+ target.OAXSJSYX = sqlResult.OAXSJSYX
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OAJFJSYX
|
|
|
+ if sqlResult.OAJFJSYX != target.OAJFJSYX {
|
|
|
+ target.OAJFJSYX = sqlResult.OAJFJSYX
|
|
|
+ isEqual = false
|
|
|
}
|
|
|
- return &record, nil
|
|
|
+
|
|
|
+ // 比较 OASYDW
|
|
|
+ if sqlResult.OASYDW != target.OASYDW {
|
|
|
+ target.OASYDW = sqlResult.OASYDW
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OAXMXXMS
|
|
|
+ if sqlResult.OAXMXXMS != target.OAXMXXMS {
|
|
|
+ target.OAXMXXMS = sqlResult.OAXMXXMS
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OAJDS
|
|
|
+ if sqlResult.OAJDS != target.OAJDS {
|
|
|
+ target.OAJDS = sqlResult.OAJDS
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OANodeCount
|
|
|
+ if sqlResult.OANodeCount != target.OANodeCount {
|
|
|
+ target.OANodeCount = sqlResult.OANodeCount
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OAProductCode
|
|
|
+ // if sqlResult.OAProductCode != target.OAProductCode {
|
|
|
+ // target.OAProductCode = sqlResult.OAProductCode
|
|
|
+ // isEqual = false
|
|
|
+ // }
|
|
|
+
|
|
|
+ // 比较 OAProductVersion
|
|
|
+ if sqlResult.OAProductVersion != target.OAProductVersion {
|
|
|
+ target.OAProductVersion = sqlResult.OAProductVersion
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 CLQ
|
|
|
+ if sqlResult.CLQ != target.OACPU {
|
|
|
+ target.OACPU = sqlResult.CLQ
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 CZXT
|
|
|
+ if sqlResult.CZXT != target.OAOperatingSystem {
|
|
|
+ target.OAOperatingSystem = sqlResult.CZXT
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 IP
|
|
|
+ if sqlResult.IP != target.OAMainMAC {
|
|
|
+ target.OAMainMAC = sqlResult.IP
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 MAC
|
|
|
+ if sqlResult.MAC != target.OASecondMAC {
|
|
|
+ target.OASecondMAC = sqlResult.MAC
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OACreationDate
|
|
|
+ if sqlResult.OACreationDate != target.OACreationDate {
|
|
|
+ target.OACreationDate = sqlResult.OACreationDate
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OACreationTime
|
|
|
+ if sqlResult.OACreationTime != target.OACreationTime {
|
|
|
+ target.OACreationTime = sqlResult.OACreationTime
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OALastOperateDate
|
|
|
+ if sqlResult.OALastOperateDate != target.OALastOperateDate {
|
|
|
+ target.OALastOperateDate = sqlResult.OALastOperateDate
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 比较 OALastOperateTime
|
|
|
+ if sqlResult.OALastOperateTime != target.OALastOperateTime {
|
|
|
+ target.OALastOperateTime = sqlResult.OALastOperateTime
|
|
|
+ isEqual = false
|
|
|
+ }
|
|
|
+
|
|
|
+ // 返回标志位
|
|
|
+ return isEqual
|
|
|
}
|