HR管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

744 lines
21 KiB

package personnelapi
import (
"encoding/json"
"fmt"
"hr_server/models"
personalitycolor "hr_server/models/personalityColor"
"hr_server/overall"
"hr_server/overall/overallhandle"
"reflect"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
)
/*
*
@ 作者: 秦东
@ 时间: 2024-01-20 16:20:09
@ 功能: 根据工号获取个人档案
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (s *StaffApi) PersonnelFiles(c *gin.Context) {
var requestData overallhandle.NmuberOverall
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(101, requestData, c)
return
}
if requestData.Number == "" {
overallhandle.Result(1, requestData, c, "未知人员!不可查询信息")
return
}
var myInfo models.ManCont
err = myInfo.GetCont(map[string]interface{}{"`number`": requestData.Number})
if err != nil {
overallhandle.Result(105, err, c)
return
}
saveInfo := overallhandle.MapOut()
structValue := reflect.ValueOf(myInfo)
structType := structValue.Type()
for i := 0; i < structValue.NumField(); i++ {
fieldValue := structValue.Field(i)
fieldType := structType.Field(i)
saveInfo[fieldType.Name] = fieldValue.Interface()
}
if myInfo.Birthday != 0 {
saveInfo["birthdayTime"] = overallhandle.UnixTimeToDay(myInfo.Birthday, 14) //生日
}
if myInfo.Entrydate != 0 {
saveInfo["EntrydateTime"] = overallhandle.UnixTimeToDay(myInfo.Entrydate, 14) //入职日期
}
//部门
if myInfo.MainDeparment != 0 {
var demperMainInfos models.AdministrativeOrganization
demperMainInfos.GetCont(map[string]interface{}{"`id`": myInfo.MainDeparment}, "`name`")
saveInfo["MainDeparmentName"] = demperMainInfos.Name
}
//岗位
if myInfo.AdminOrg != 0 {
var adminOrg models.AdministrativeOrganization
adminOrg.GetCont(map[string]interface{}{"`id`": myInfo.AdminOrg}, "`name`")
saveInfo["AdminOrgName"] = adminOrg.Name
}
//职务
if myInfo.Position != 0 {
var postisInfo models.Position
postisInfo.GetCont(map[string]interface{}{"`id`": myInfo.Position}, "`name`", "`person_in_charge`")
saveInfo["PositionName"] = postisInfo.Name
saveInfo["PersonInCharge"] = postisInfo.PersonInCharge
}
if myInfo.Isdoubleworker == 1 {
var doubleWorkerInfo models.DoubleWorker
doubleWorkerInfo.GetCont(map[string]interface{}{"`number`": myInfo.Number, "`state`": 1}, "`name`", "`company`", "`department`", "`position`")
saveInfo["WorkCompany"] = fmt.Sprintf("%v%v%v%v", doubleWorkerInfo.Name, doubleWorkerInfo.Company, doubleWorkerInfo.Department, doubleWorkerInfo.Position)
} else {
saveInfo["WorkCompany"] = ""
}
saveInfo["GenderName"] = overallhandle.GenderStatus(int64(myInfo.Gender))
saveInfo["ConstellationName"] = overallhandle.StarSign(int64(myInfo.Constellation))
saveInfo["PolitOutlook"] = overallhandle.PoliticalIdentity(int64(myInfo.PoliticalOutlook))
saveInfo["Maristatus"] = overallhandle.MaritalStatus(int64(myInfo.Maritalstatus))
//教育经历
synPro.Add(1)
go func() {
saveInfo["EducationalExperience"] = UserEducationalExperience(myInfo.Key)
}()
//工作履历
synPro.Add(1)
go func() {
saveInfo["ExternalWork"] = getWorkHistoryList(myInfo.Key) //工作履历
}()
//集团内工作履历
synPro.Add(1)
go func() {
saveInfo["InternalWork"] = getGroupWorkHistoryList(myInfo.Key) //工作履历
}()
//职称证书
synPro.Add(1)
go func() {
AcademicTitle := GainCertificateHonors(myInfo.Key, 4)
saveInfo["AcademicTitle"] = strings.Join(AcademicTitle, ",") //工作履历
}()
//资格证书
synPro.Add(1)
go func() {
Diploma := GainCertificateHonorsBook(myInfo.Key, 4)
saveInfo["Diploma"] = strings.Join(Diploma, ",") //工作履历
}()
currentTime := time.Now()
years := currentTime.Year() - 2
//绩效成绩 Performance score
synPro.Add(1)
go func() {
saveInfo["Meritslog"] = GainTimeLangMeritslog(myInfo.Key, years, 2) //工作履历
}()
//获奖情况
synPro.Add(1)
go func() {
saveInfo["Rewards"] = GainRewardsPenalties(myInfo.Key, years, 2, 1) //工作履历
}()
//惩罚情况
synPro.Add(1)
go func() {
saveInfo["Penalties"] = GainRewardsPenalties(myInfo.Key, years, 2, 2) //工作履历
}()
//性格社彩
var myColor personalitycolor.Charcolortest
errColor := myColor.GetCont(map[string]interface{}{"`c_states`": 1, "`c_number`": requestData.Number}, "`c_id`")
if errColor != nil {
saveInfo["isColorTrue"] = 2
} else {
saveInfo["isColorTrue"] = 1
}
// synPro.Add(1)
// go func() {
// xgsc := GainCharacterColor(myInfo.Number)
// // fmt.Printf("xgsc:%v\n", xgsc)
// saveInfo["CharacterColour"] = strings.Join(xgsc.TestNumber, "、") //工作履历
// saveInfo["ColourNameList"] = xgsc.TestNumber //工作履历
// saveInfo["RadarColour"] = xgsc.ColorMap
// }()
synPro.Wait()
overallhandle.Result(0, saveInfo, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2024-01-24 08:08:43
@ 功能: 获取性格色彩
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func GainCharacterColor(num string) (tpr TestPageColorResult) {
synPro.Done()
var myColor personalitycolor.Charcolortest
err := myColor.GetCont(map[string]interface{}{"`c_states`": 1, "`c_number`": num})
if err != nil {
return
}
GetColorVal := make(map[string]int)
if myColor.TestJson != "" {
var testPage []TestPageColor
errJson := json.Unmarshal([]byte(myColor.TestJson), &testPage)
if errJson != nil {
var testPageStr []TestPageColorStr
json.Unmarshal([]byte(myColor.TestJson), &testPageStr)
GetColorVal = JiSuanColorStr(testPageStr)
} else {
GetColorVal = JiSuanColor(testPage)
}
}
// fmt.Printf("TestJson-->%v\n", myColor.TestJson)
// fmt.Printf("testPage-->%v\n", testPage)
// GetColorVal = JiSuanColor(testPage)
var ColorStrAry []TestPageColorVal
var redColor TestPageColorVal
redColor.Strval = GetColorVal["RedColor"]
redColor.Name = "红色"
redColor.Setval = 1
ColorStrAry = append(ColorStrAry, redColor)
var blueColor TestPageColorVal
blueColor.Strval = GetColorVal["BlueColor"]
blueColor.Name = "蓝色"
blueColor.Setval = 1
ColorStrAry = append(ColorStrAry, blueColor)
var yellowColor TestPageColorVal
yellowColor.Strval = GetColorVal["YellowColor"]
yellowColor.Name = "黄色"
yellowColor.Setval = 1
ColorStrAry = append(ColorStrAry, yellowColor)
var greenColor TestPageColorVal
greenColor.Strval = GetColorVal["GreenColor"]
greenColor.Name = "绿色"
greenColor.Setval = 1
ColorStrAry = append(ColorStrAry, greenColor)
var colorAry []int
colorAry = append(colorAry, GetColorVal["RedColor"])
colorAry = append(colorAry, GetColorVal["BlueColor"])
colorAry = append(colorAry, GetColorVal["YellowColor"])
colorAry = append(colorAry, GetColorVal["GreenColor"])
colorVal, _ := json.Marshal(ColorStrAry)
fmt.Printf("colorVal-->%v\n", string(colorVal))
tpr.ColorMap = colorAry
MaxColor := overallhandle.GetMaxNum[int](colorAry)
for _, v := range ColorStrAry {
if v.Strval == MaxColor {
if !overallhandle.IsInTrue[int](v.Setval, tpr.CheckedVal) {
tpr.CheckedVal = append(tpr.CheckedVal, v.Setval)
}
if !overallhandle.IsInTrue[string](v.Name, tpr.TestNumber) {
tpr.TestNumber = append(tpr.TestNumber, v.Name)
}
}
}
return
}
// 计算颜色
func JiSuanColor(testPage []TestPageColor) map[string]int {
if len(testPage) < 1 {
sendDataw := make(map[string]int)
sendDataw["RedColor"] = 0
sendDataw["BlueColor"] = 0
sendDataw["YellowColor"] = 0
sendDataw["GreenColor"] = 0
return sendDataw
}
A_front_count := 0
B_front_count := 0
C_front_count := 0
D_front_count := 0
A_after_count := 0
B_after_count := 0
C_after_count := 0
D_after_count := 0
// fmt.Printf("testPage:%v\n", testPage)
for _, v := range testPage {
// testNumInt, _ := strconv.Atoi(v.TestNumber)
// checkedValInt, _ := strconv.Atoi(v.CheckedVal)
testNumInt := v.TestNumber
checkedValInt := v.CheckedVal
if testNumInt <= 15 {
switch checkedValInt {
case 2:
B_front_count++
case 3:
C_front_count++
case 4:
D_front_count++
default:
A_front_count++
}
} else {
switch checkedValInt {
case 2:
B_after_count++
case 3:
C_after_count++
case 4:
D_after_count++
default:
A_after_count++
}
}
}
fmt.Printf("A_front_count: %v, B_front_count: %v, C_front_count: %v, D_front_count: %v\n", A_front_count, B_front_count, C_front_count, D_front_count)
fmt.Printf("A_after_count: %v, B_after_count: %v, C_after_count: %v, D_after_count: %v\n", A_after_count, B_after_count, C_after_count, D_after_count)
RedColor := A_front_count + D_after_count
BlueColor := B_front_count + C_after_count
YellowColor := C_front_count + B_after_count
GreenColor := D_front_count + A_after_count
// fmt.Printf("A_front_count: %v, D_after_count: %v, B_front_count: %v, BlueColor: %v\n", A_front_count, D_after_count, B_front_count, C_after_count)
// fmt.Printf("RedColor: %v, GreenColor: %v, YellowColor: %v, BlueColor: %v\n", RedColor, GreenColor, YellowColor, BlueColor)
sendData := make(map[string]int)
sendData["RedColor"] = RedColor
sendData["BlueColor"] = BlueColor
sendData["YellowColor"] = YellowColor
sendData["GreenColor"] = GreenColor
sendData["A_front_count"] = A_front_count
sendData["B_front_count"] = B_front_count
sendData["C_front_count"] = C_front_count
sendData["D_front_count"] = D_front_count
sendData["A_after_count"] = A_after_count
sendData["B_after_count"] = B_after_count
sendData["C_after_count"] = C_after_count
sendData["D_after_count"] = D_after_count
return sendData
}
// 计算颜色
func JiSuanColorStr(testPage []TestPageColorStr) map[string]int {
if len(testPage) < 1 {
sendDataw := make(map[string]int)
sendDataw["RedColor"] = 0
sendDataw["BlueColor"] = 0
sendDataw["YellowColor"] = 0
sendDataw["GreenColor"] = 0
return sendDataw
}
A_front_count := 0
B_front_count := 0
C_front_count := 0
D_front_count := 0
A_after_count := 0
B_after_count := 0
C_after_count := 0
D_after_count := 0
// fmt.Printf("testPage:%v\n", testPage)
for _, v := range testPage {
testNumInt, _ := strconv.Atoi(v.TestNumber)
checkedValInt, _ := strconv.Atoi(v.CheckedVal)
// testNumInt := v.TestNumber
// checkedValInt := v.CheckedVal
if testNumInt <= 15 {
switch checkedValInt {
case 2:
B_front_count++
case 3:
C_front_count++
case 4:
D_front_count++
default:
A_front_count++
}
} else {
switch checkedValInt {
case 2:
B_after_count++
case 3:
C_after_count++
case 4:
D_after_count++
default:
A_after_count++
}
}
}
fmt.Printf("A_front_count: %v, B_front_count: %v, C_front_count: %v, D_front_count: %v\n", A_front_count, B_front_count, C_front_count, D_front_count)
fmt.Printf("A_after_count: %v, B_after_count: %v, C_after_count: %v, D_after_count: %v\n", A_after_count, B_after_count, C_after_count, D_after_count)
RedColor := A_front_count + D_after_count
BlueColor := B_front_count + C_after_count
YellowColor := C_front_count + B_after_count
GreenColor := D_front_count + A_after_count
// fmt.Printf("A_front_count: %v, D_after_count: %v, B_front_count: %v, BlueColor: %v\n", A_front_count, D_after_count, B_front_count, C_after_count)
// fmt.Printf("RedColor: %v, GreenColor: %v, YellowColor: %v, BlueColor: %v\n", RedColor, GreenColor, YellowColor, BlueColor)
sendData := make(map[string]int)
sendData["RedColor"] = RedColor
sendData["BlueColor"] = BlueColor
sendData["YellowColor"] = YellowColor
sendData["GreenColor"] = GreenColor
sendData["A_front_count"] = A_front_count
sendData["B_front_count"] = B_front_count
sendData["C_front_count"] = C_front_count
sendData["D_front_count"] = D_front_count
sendData["A_after_count"] = A_after_count
sendData["B_after_count"] = B_after_count
sendData["C_after_count"] = C_after_count
sendData["D_after_count"] = D_after_count
return sendData
}
/*
*
@ 作者: 秦东
@ 时间: 2024-01-23 15:42:56
@ 功能: 奖惩记录
@ 参数
#userKey 人员KEY
#years 当前年
#duration 倒查几年
#class 奖励还是惩罚
@ 返回值
#
@ 方法原型
#
*/
func GainRewardsPenalties(userKey int64, years, duration, class int) map[string]interface{} {
synPro.Done()
sendData := overallhandle.MapOut()
if duration > 0 {
// fmt.Printf("奖惩记录111111: %v\n", duration)
for i := duration; i >= 0; i-- {
// fmt.Printf("奖惩记录33333: %v\n", i)
timeVal := years - i
var allScore []map[string]interface{}
overall.CONSTANT_DB_HR.Model(&models.RewardsPenalties{}).Where("`state` = 1 AND `userkey` = ? AND `years` = ? AND `types` = ?", userKey, timeVal, class).Find(&allScore)
// fmt.Printf("奖惩记录11111: %v\n", err)
timeValStr := strconv.Itoa(timeVal)
sendData[timeValStr] = allScore
// fmt.Printf("奖惩记录: %s\n", timeValStr)
}
} else {
var allScore map[string]interface{}
overall.CONSTANT_DB_HR.Model(&models.RewardsPenalties{}).Where("`state` = 1 AND `userkey` = ? AND `years` = ? AND `types` = ?", userKey, years, class).Find(&allScore)
timeValStr := strconv.Itoa(years)
sendData[timeValStr] = allScore
}
return sendData
}
/*
*
@ 作者: 秦东
@ 时间: 2024-01-23 15:20:52
@ 功能: 获取多长时间的绩效
@ 参数
#userKey 人员KEY
#years 当前年
#duration 倒查几年
@ 返回值
#
@ 方法原型
#
*/
func GainTimeLangMeritslog(userKey int64, years, duration int) map[string]interface{} {
synPro.Done()
sendData := overallhandle.MapOut()
if duration > 0 {
for i := duration; i >= 0; i-- {
timeVal := years - i
// var allScore int64
// overall.CONSTANT_DB_HR.Model(&models.Meritslog{}).Select("SUM(`score`) as `scoresum`").Where("`status` = 1 AND `userkey` = ? AND `years` = ?", userKey, timeVal).Find(&allScore)
timeValStr := strconv.Itoa(timeVal)
// if allScore > 0 {
// sendData[timeValStr] = float64(allScore) / 10000
// } else {
// sendData[timeValStr] = 0
// }
var allScore string
overall.CONSTANT_DB_HR.Model(&models.Meritslog{}).Select("`level`").Where("`status` = 1 AND `userkey` = ? AND `years` = ?", userKey, timeVal).Find(&allScore)
sendData[timeValStr] = allScore
}
} else {
// var allScore int64
// overall.CONSTANT_DB_HR.Model(&models.Meritslog{}).Select("SUM(`score`) as `scoresum`").Where("`status` = 1 AND `userkey` = ? AND `years` = ?", userKey, years).Find(&allScore)
timeValStr := strconv.Itoa(years)
// if allScore > 0 {
// sendData[timeValStr] = float64(allScore) / 10000
// } else {
// sendData[timeValStr] = 0
// }
var allScore string
overall.CONSTANT_DB_HR.Model(&models.Meritslog{}).Select("SUM(`score`) as `scoresum`").Where("`status` = 1 AND `userkey` = ? AND `years` = ?", userKey, years).Find(&allScore)
sendData[timeValStr] = allScore
}
return sendData
}
/*
*
@ 作者: 秦东
@ 时间: 2024-01-23 15:08:44
@ 功能: 获取证书
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func GainCertificateHonors(userKey int64, class int) (titleList []string) {
synPro.Done()
// overall.CONSTANT_DB_HR.Model(&models.CertificateHonors{}).Select("`title`").Where("`state` = 1 AND `types` = ? AND `userkey` = ?", class, userKey).Find(&titleList)
overall.CONSTANT_DB_HR.Model(&models.AcademicTitle{}).Select("`types`").Where("`userkey` = ?", userKey).Find(&titleList)
return
}
/*
*
@ 作者: 秦东
@ 时间: 2024-02-04 13:50:10
@ 功能: 证书
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func GainCertificateHonorsBook(userKey int64, class int) (titleList []string) {
synPro.Done()
overall.CONSTANT_DB_HR.Model(&models.CertificateHonors{}).Select("`title`").Where("`state` = 1 AND `types` = ? AND `userkey` = ?", class, userKey).Find(&titleList)
// overall.CONSTANT_DB_HR.Model(&models.AcademicTitle{}).Select("`types`").Where("`userkey` = ?", userKey).Find(&titleList)
return
}
/*
*
@ 作者: 秦东
@ 时间: 2024-01-23 09:46:31
@ 功能: 获取教育径路
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func UserEducationalExperience(num int64) (eduExper []educatExp) {
defer synPro.Done()
var dowWorkMan []models.PersonnelEducation
err := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("`state` = 1 AND `key` = ?", num).Order("`level` desc").Find(&dowWorkMan).Error
if err != nil {
return
}
for _, v := range dowWorkMan {
var dwManCont educatExp //
dwManCont.GraduationSchool = v.GraduationSchool //毕业学校
dwManCont.Subject = v.Subject //专业
dwManCont.Education = v.Education //学历
dwManCont.EducationName = overallhandle.EducationLevel(int64(v.Education))
if v.AdmissionTime != 0 {
dwManCont.AdmissionTime = overallhandle.UnixTimeToDay(v.AdmissionTime, 14) //入学时间
}
if v.GraduationTime != 0 {
dwManCont.GraduationTime = overallhandle.UnixTimeToDay(v.GraduationTime, 14) //毕业时间
}
dwManCont.AcademicDegree = overallhandle.AcademicDegree(int64(v.AcademicDegree)) //学位
dwManCont.AcademicDegreeId = v.AcademicDegree
dwManCont.Level = overallhandle.GetXueWeiClass(int64(v.Level))
dwManCont.LevelId = v.Level //学历类型
dwManCont.Id = strconv.FormatInt(v.Id, 10)
dwManCont.EducationTypeName = overallhandle.EducationType(int64(v.EducationType))
eduExper = append(eduExper, dwManCont)
}
return
}
/*
*
@ 作者: 秦东
@ 时间: 2024-02-04 15:27:53
@ 功能: 数据库对账
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
// func (s *StaffApi) OneToBer(c *gin.Context) {
// var benDi []models.PersonArchives
// overall.CONSTANT_Hr_Server.Model(&models.PersonArchives{}).Select("`id`,`work_wechat`").Find(&benDi)
// // jsonCont, _ := json.Marshal(benDi)
// // fmt.Printf("jsonCont: %#v\n", string(jsonCont))
// if len(benDi) > 0 {
// for _, v := range benDi {
// fmt.Printf("jsonCont: %#v\n", v.WorkWechat)
// if v.WorkWechat != "" {
// var newHr models.PersonArchives
// newHr.EiteCont(map[string]interface{}{"`id`": v.Id}, map[string]interface{}{"`work_wechat`": v.WorkWechat, "`eite_time`": time.Now().Unix()})
// }
// }
// }
// }
/*
*
@ 作者: 秦东
@ 时间: 2024-02-06 09:01:51
@ 功能: 获取性格色彩
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (s *StaffApi) GetPeopleColor(c *gin.Context) {
var requestData overallhandle.NmuberOverall
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(101, requestData, c)
return
}
if requestData.Number == "" {
overallhandle.Result(1, requestData, c, "未知人员!不可查询信息")
return
}
xgsc := GainCharacterColorNoDone(requestData.Number)
fmt.Printf("xgsc:%v\n", xgsc)
saveInfo := overallhandle.MapOut()
saveInfo["CharacterColour"] = strings.Join(xgsc.TestNumber, "、") //工作履历
saveInfo["ColourNameList"] = xgsc.TestNumber //工作履历
saveInfo["RadarColour"] = xgsc.ColorMap
overallhandle.Result(0, saveInfo, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2024-01-24 08:08:43
@ 功能: 获取性格色彩
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func GainCharacterColorNoDone(num string) (tpr TestPageColorResult) {
var myColor personalitycolor.Charcolortest
err := myColor.GetCont(map[string]interface{}{"`c_states`": 1, "`c_number`": num})
if err != nil {
return
}
GetColorVal := make(map[string]int)
if myColor.TestJson != "" {
var testPage []TestPageColor
errJson := json.Unmarshal([]byte(myColor.TestJson), &testPage)
if errJson != nil {
var testPageStr []TestPageColorStr
json.Unmarshal([]byte(myColor.TestJson), &testPageStr)
GetColorVal = JiSuanColorStr(testPageStr)
} else {
GetColorVal = JiSuanColor(testPage)
}
}
// fmt.Printf("TestJson-->%v\n", myColor.TestJson)
// fmt.Printf("testPage-->%v\n", testPage)
// GetColorVal = JiSuanColor(testPage)
var ColorStrAry []TestPageColorVal
var redColor TestPageColorVal
redColor.Strval = GetColorVal["RedColor"]
redColor.Name = "红色"
redColor.Setval = 1
ColorStrAry = append(ColorStrAry, redColor)
var blueColor TestPageColorVal
blueColor.Strval = GetColorVal["BlueColor"]
blueColor.Name = "蓝色"
blueColor.Setval = 1
ColorStrAry = append(ColorStrAry, blueColor)
var yellowColor TestPageColorVal
yellowColor.Strval = GetColorVal["YellowColor"]
yellowColor.Name = "黄色"
yellowColor.Setval = 1
ColorStrAry = append(ColorStrAry, yellowColor)
var greenColor TestPageColorVal
greenColor.Strval = GetColorVal["GreenColor"]
greenColor.Name = "绿色"
greenColor.Setval = 1
ColorStrAry = append(ColorStrAry, greenColor)
var colorAry []int
colorAry = append(colorAry, GetColorVal["RedColor"])
colorAry = append(colorAry, GetColorVal["BlueColor"])
colorAry = append(colorAry, GetColorVal["YellowColor"])
colorAry = append(colorAry, GetColorVal["GreenColor"])
colorVal, _ := json.Marshal(ColorStrAry)
fmt.Printf("colorVal-->%v\n", string(colorVal))
tpr.ColorMap = colorAry
MaxColor := overallhandle.GetMaxNum[int](colorAry)
for _, v := range ColorStrAry {
if v.Strval == MaxColor {
if !overallhandle.IsInTrue[int](v.Setval, tpr.CheckedVal) {
tpr.CheckedVal = append(tpr.CheckedVal, v.Setval)
}
if !overallhandle.IsInTrue[string](v.Name, tpr.TestNumber) {
tpr.TestNumber = append(tpr.TestNumber, v.Name)
}
}
}
return
}