Browse Source

修改lic信息源库检查

GTong 8 months ago
parent
commit
d24b7bfbb4

+ 31 - 27
internal/controllers/OALicenseInfo_controllers.go

@@ -172,7 +172,7 @@ func GetAllLicenseInfoController(c *gin.Context) {
 				OARequestNameHTMLNew:   utils.ToString(data.LicInfo.OARequestNameHTMLNew),
 				OAGLXMId:               utils.ToInt64(data.LicInfo.OAGLXMID),
 				OAGLXMName:             utils.ToString(data.LicInfo.OAGLXMName),
-				OASQSJ:                 utils.ToTimeString(data.LicInfo.OASQSJ),
+				OASQSJ:                 utils.ToString(data.LicInfo.OASQSJ),
 				OASalespersonName:      utils.ToString(data.LicInfo.OASalespersonName),
 				OAXSJSYX:               utils.ToString(data.LicInfo.OAXSJSYX),
 				OAOperationsPersonName: utils.ToString(data.LicInfo.OAOperationsPersonName),
@@ -226,7 +226,7 @@ func GetAllLicenseInfoController(c *gin.Context) {
 				OARequestNameHTMLNew:   utils.ToString(data.LicInfo.OARequestNameHTMLNew),
 				OAGLXMId:               utils.ToInt64(data.LicInfo.OAGLXMID),
 				OAGLXMName:             utils.ToString(data.LicInfo.OAGLXMName),
-				OASQSJ:                 utils.ToTimeString(data.LicInfo.OASQSJ),
+				OASQSJ:                 utils.ToString(data.LicInfo.OASQSJ),
 				OASalespersonName:      utils.ToString(data.LicInfo.OASalespersonName),
 				OAXSJSYX:               utils.ToString(data.LicInfo.OAXSJSYX),
 				OAOperationsPersonName: utils.ToString(data.LicInfo.OAOperationsPersonName),
@@ -481,42 +481,46 @@ func generateLicenseStrSub(UniqueID string) error {
 			return errors.Errorf("LicenseInfo数据查询失败:: %v", err.Error())
 		}
 	}
-	(*applications)[0].LicInfo.UniqueID.String = ""
-	(*applications)[0].LicInfo.UniqueID.Valid = false
-	(*applications)[0].GenrateInfo.LicenseUniqueID.String = ""
-	(*applications)[0].GenrateInfo.LicenseUniqueID.Valid = false
+	// (*applications)[0].LicInfo.UniqueID.String = ""
+	// (*applications)[0].LicInfo.UniqueID.Valid = false
+	// (*applications)[0].GenrateInfo.LicenseUniqueID.String = ""
+	// (*applications)[0].GenrateInfo.LicenseUniqueID.Valid = false
 	fmt.Printf("applications%#v\n", applications)
 	//检测该数据是否与oa库数据库一致
-	OALicenseInfo, err := models.CheckLicenseInfoInOADB((*applications)[0].LicInfo)
-	fmt.Printf("OALicenseInfo%#v\n", OALicenseInfo)
+	isCheck, err := models.CheckLicenseInfoInOADB(&(*applications)[0].LicInfo)
 	if err != nil {
 		global.Logger.Errorln("LicenseInfo数据对比oa库 查询失败:  ", err.Error())
 		//	c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
 		return errors.Errorf("LicenseInfo数据对比oa库 查询失败 %v", err.Error())
 	}
+	if !isCheck {
+		global.Logger.Errorln("LicenseInfo数据对比oa库 不一致")
+		return errors.Errorf("LicenseInfo数据对比oa库 数据不一致 \n")
+	}
 
-	checkTemp := CompareOALicenseInfo(&(*applications)[0], OALicenseInfo)
+	//checkTemp := CompareOALicenseInfo(&(*applications)[0], OALicenseInfo)
 	//如果不一致,则修改源数据
-	if checkTemp != true {
-		global.Logger.Errorln("LicenseInfo数据对比oa库 不一致")
-		//	c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
-		OALicenseInfo.LicInfo.UniqueID = (*applications)[0].LicInfo.UniqueID
-		if err := models.UpdatelicenseInfoRow(*OALicenseInfo); err != nil {
-			global.Logger.Errorln("LicenseInfo数据对比oa库 不一致,更新数据库失败:  ", err.Error())
-			return errors.Errorf("LicenseInfo数据对比oa库 不一致,更新数据库失败:%v", err.Error())
-		}
-		// //刷新缓存
-		// layout := "2006-01-02 15:04:05"
-		// startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
-		// endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
-		// if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
-		// 	global.Logger.Errorln("LicenseInfo数据刷新缓存失败:  ", err.Error())
+	// if checkTemp != true {
+	// 	global.Logger.Errorln("LicenseInfo数据对比oa库 不一致")
+	// 	//	c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
+	// 	OALicenseInfo.LicInfo.UniqueID = (*applications)[0].LicInfo.UniqueID
+	// 	if err := models.UpdatelicenseInfoRow(*OALicenseInfo); err != nil {
+	// 		global.Logger.Errorln("LicenseInfo数据对比oa库 不一致,更新数据库失败:  ", err.Error())
+	// 		return errors.Errorf("LicenseInfo数据对比oa库 不一致,更新数据库失败:%v", err.Error())
+	// 	}
+
+	// //刷新缓存
+	// layout := "2006-01-02 15:04:05"
+	// startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
+	// endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
+	// if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
+	// 	global.Logger.Errorln("LicenseInfo数据刷新缓存失败:  ", err.Error())
 
-		// 	return errors.Errorf("LicenseInfo数据刷新缓存失败:")
-		// }
+	// 	return errors.Errorf("LicenseInfo数据刷新缓存失败:")
+	// }
 
-		// return errors.Errorf("LicenseInfo数据对比oa库 不一致,清刷新页面")
-	}
+	// return errors.Errorf("LicenseInfo数据对比oa库 不一致,清刷新页面")
+	//}
 	// pj := license.ProjectInfo{
 	// 	ProjectName:  utils.ToString((*applications)[0].LicInfo.OAProductName),
 	// 	UserName:     utils.ToString((*applications)[0].LicInfo.OAProductVersion),

+ 224 - 42
internal/models/license_oa_models.go

@@ -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
 }

+ 1 - 1
支持库建表语句.sql

@@ -50,7 +50,7 @@ CREATE TABLE target_OA_license (
     OA_REQUESTNAMEHTMLNEW VARCHAR(255) COMMENT '新请求名称(HTML格式)',
     OA_GLXMID  INTEGER COMMENT 'oa 关联项目ID (formtable_main_146.glxm)',
     OA_GLXMNAME VARCHAR  COMMENT 'oa 关联项目名字 (PRJ_PROJECTINFO.name)',
-    OA_SQSJ TIMESTAMP COMMENT '申请时间',
+    OA_SQSJ VARCHAR COMMENT '申请时间',
     OA_SALESPERSONNAME VARCHAR(255) COMMENT '销售人员名称',
     OA_XSJSYX VARCHAR(255) COMMENT '销售邮箱',
     OA_OPERATIONSPERSONNAME VARCHAR(255) COMMENT '运维人员名称',

+ 3 - 3
模拟oa查询语句.sql

@@ -16,12 +16,12 @@ SELECT
 
 
 			SELECT
-		fmd.id ,fm.REQUESTID, wr.REQUESTNAME, 
+		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 
@@ -34,7 +34,7 @@ SELECT
 	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  = 13
-	PARALLEL 8
+	PARALLEL 8;
 	-------------