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.
811 lines
22 KiB
811 lines
22 KiB
package personnelapi
|
|
|
|
import (
|
|
"fmt"
|
|
"hr_server/grocerystore"
|
|
"hr_server/models"
|
|
"hr_server/overall"
|
|
"hr_server/overall/overallhandle"
|
|
"path"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
|
|
"encoding/json"
|
|
|
|
"github.com/360EntSecGroup-Skylar/excelize"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2024-02-03 15:38:58
|
|
@ 功能: 解析上传列表
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (s *StaffApi) UploadUserFilesRedis(c *gin.Context) {
|
|
orgId := c.Request.FormValue("orgId")
|
|
fileInfo, fileHeader, fileErr := c.Request.FormFile("file")
|
|
if fileErr != nil {
|
|
overallhandle.Result(1, fileErr, c)
|
|
return
|
|
}
|
|
tageExt := path.Ext(fileHeader.Filename)
|
|
// fmt.Printf("tageExt:%v\n", tageExt)
|
|
fileType := overallhandle.JudgeUpFileType(tageExt)
|
|
if fileType != 5 {
|
|
overallhandle.Result(1, fileType, c, "您上传的不是电子表格!请上传正确的文件!")
|
|
return
|
|
}
|
|
|
|
xlsx, err := excelize.OpenReader(fileInfo)
|
|
if err != nil {
|
|
overallhandle.Result(2, err, c)
|
|
return
|
|
}
|
|
redisListKey := fmt.Sprintf("ExcelImport:PeopleList:%v_%v", overall.CONSTANT_CONFIG.RedisPrefixStr.Alias, overallhandle.OnlyOneNumber(1))
|
|
var userInfoData GroupParsingData
|
|
totalNum, meritsYearIng, rewPunYearsIng := userInfoData.AnalysAssessYears(xlsx, redisListKey, orgId)
|
|
sendData := overallhandle.MapOut()
|
|
sendData["redisListKey"] = redisListKey
|
|
sendData["totalNum"] = totalNum
|
|
sendData["meritsYearIng"] = meritsYearIng
|
|
sendData["rewPunYearsIng"] = rewPunYearsIng
|
|
sendData["orgId"] = orgId
|
|
// sendData["orgHeader"] = orgHeader
|
|
// sendData["orgErr"] = orgErr
|
|
|
|
overallhandle.Result(0, sendData, c)
|
|
}
|
|
|
|
// ReadExcel .读取excel 转成切片 orgId : 当前行政组织
|
|
func (g *GroupParsingData) ReadExcelRedis(xlsx *excelize.File, redisKey, orgId string) (totalNum int64, meritsYearIng, rewPunYearsIng map[int]int) {
|
|
rows := xlsx.GetRows(xlsx.GetSheetName(xlsx.GetActiveSheetIndex()))
|
|
isDateYear := time.Now().Year()
|
|
|
|
//获取绩效年度
|
|
meritsYear := make(map[int]int)
|
|
if rows[1][288] != "" {
|
|
yearAry := strings.Split(rows[1][288], "年")
|
|
if len(yearAry) > 0 {
|
|
|
|
yearVal, _ := strconv.Atoi(yearAry[0])
|
|
meritsYear[0] = yearVal
|
|
}
|
|
} else {
|
|
meritsYear[0] = isDateYear - 3
|
|
}
|
|
|
|
if rows[1][289] != "" {
|
|
yearAry := strings.Split(rows[1][289], "年")
|
|
if len(yearAry) > 0 {
|
|
yearVal, _ := strconv.Atoi(yearAry[0])
|
|
meritsYear[1] = yearVal
|
|
}
|
|
} else {
|
|
meritsYear[1] = isDateYear - 2
|
|
}
|
|
if rows[1][290] != "" {
|
|
yearAry := strings.Split(rows[1][290], "年")
|
|
if len(yearAry) > 0 {
|
|
yearVal, _ := strconv.Atoi(yearAry[0])
|
|
meritsYear[2] = yearVal
|
|
}
|
|
} else {
|
|
meritsYear[2] = isDateYear - 1
|
|
}
|
|
meritsYearIng = meritsYear
|
|
//获取奖惩年度
|
|
rewPunYears := make(map[int]int)
|
|
if rows[2][298] != "" {
|
|
jcYearAry := strings.Split(rows[2][298], "奖惩")
|
|
if len(jcYearAry) > 0 {
|
|
|
|
jcYearVal, _ := strconv.Atoi(jcYearAry[0])
|
|
rewPunYears[0] = jcYearVal
|
|
}
|
|
} else {
|
|
rewPunYears[0] = isDateYear - 3
|
|
}
|
|
|
|
if rows[2][303] != "" {
|
|
jcYearAry := strings.Split(rows[2][303], "奖惩")
|
|
if len(jcYearAry) > 0 {
|
|
|
|
jcYearVal, _ := strconv.Atoi(jcYearAry[0])
|
|
rewPunYears[1] = jcYearVal
|
|
}
|
|
} else {
|
|
rewPunYears[1] = isDateYear - 2
|
|
}
|
|
if rows[2][308] != "" {
|
|
jcYearAry := strings.Split(rows[2][308], "奖惩")
|
|
if len(jcYearAry) > 0 {
|
|
|
|
jcYearVal, _ := strconv.Atoi(jcYearAry[0])
|
|
rewPunYears[2] = jcYearVal
|
|
}
|
|
} else {
|
|
rewPunYears[2] = isDateYear - 1
|
|
}
|
|
rewPunYearsIng = rewPunYears
|
|
redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS4)
|
|
redisClient.SetRedisTime(86400)
|
|
totalNum = 0
|
|
for i, row := range rows {
|
|
if i < 4 {
|
|
continue
|
|
}
|
|
if row[1] != "" {
|
|
jsonStr, _ := json.Marshal(row)
|
|
// fmt.Printf("%v出生日期:%v\n", row[1], string(jsonStr))
|
|
redisClient.Lpush(redisKey, jsonStr)
|
|
totalNum++
|
|
}
|
|
}
|
|
// redisVal, err := redisClient.Lindex(redisKey, 9)
|
|
// fmt.Printf("row:%v,%v\n", redisVal, err)
|
|
return
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2024-02-03 16:22:38
|
|
@ 功能: 解析Redis列表中的数据
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (s *StaffApi) AnalysisRedisExelect(c *gin.Context) {
|
|
var requestData AnaRedisKB
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS4)
|
|
redisListLenght, err := redisClient.Llen(requestData.RedisListKey)
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据! ")
|
|
return
|
|
}
|
|
|
|
redisVal, err := redisClient.Lindex(requestData.RedisListKey, int64(requestData.Number))
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据!")
|
|
return
|
|
}
|
|
var jieguo []string
|
|
err = json.Unmarshal([]byte(redisVal), &jieguo)
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据格式不正取!")
|
|
}
|
|
manCont := make(map[int]string)
|
|
for i, v := range jieguo {
|
|
manCont[i] = v
|
|
}
|
|
meritsYear := make(map[int]int)
|
|
for i, v := range requestData.MeritsYearIng {
|
|
iInt, _ := strconv.Atoi(i)
|
|
meritsYear[iInt] = v
|
|
}
|
|
rewPunYears := make(map[int]int)
|
|
for i, v := range requestData.RewPunYearsIng {
|
|
iInt, _ := strconv.Atoi(i)
|
|
rewPunYears[iInt] = v
|
|
}
|
|
var groupManCont GroupParsingData
|
|
groupManCont.GroupParsingDataInfoRedis(manCont, meritsYear, rewPunYears)
|
|
// groupManCont.ParsingUserInfoOfExcel(manCont, meritsYear, rewPunYears,requestData.)
|
|
// // fmt.Printf("执行完222毕删除列表键%v-%v-%v\n", redisListLenght, requestData.Number, redisListLenght-1 == int64(requestData.Number))
|
|
if redisListLenght-1 == int64(requestData.Number) {
|
|
// 执行完毕删除列表键
|
|
redisClient.Ltrim(requestData.RedisListKey, 1, 0)
|
|
redisClient.DelKey(requestData.RedisListKey)
|
|
// fmt.Printf("执行完毕删除列表键RedisListKey:%v------>lAry:%v------>lerr:%v------>dErr:%v\n", requestData.RedisListKey, lAry, lerr, dErr)
|
|
|
|
// fmt.Printf("redisListLenght:%v------>Number:%v\n", redisListLenght-1, requestData.Number)
|
|
}
|
|
|
|
sendData := make(map[string]interface{})
|
|
sendData["redisListLenght"] = redisListLenght
|
|
sendData["Number"] = requestData.Number
|
|
sendData["RedisListKey"] = requestData.RedisListKey
|
|
sendData["meritsYear"] = meritsYear
|
|
sendData["rewPunYears"] = rewPunYears
|
|
overallhandle.Result(0, sendData, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2024-01-30 08:10:16
|
|
@ 功能: 分组数据解析
|
|
@ 参数
|
|
|
|
#info //人员信息
|
|
#meritsYear 绩效年度
|
|
#rewPunYearsmap 奖惩年度
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (g *GroupParsingData) GroupParsingDataInfoRedis(list map[int]string, meritsYear, rewPunYearsmap map[int]int) {
|
|
g.IsOk = false
|
|
g.UserNum = list[1]
|
|
// listJson, err := json.Marshal(list)
|
|
// fmt.Printf("list: %v\n%v\n", err, string(listJson))
|
|
if list[1] != "" {
|
|
var myCont models.PersonArchives
|
|
err := myCont.RedisCont(list[2], 1)
|
|
if err != nil {
|
|
g.IsOk = true
|
|
} else {
|
|
g.UserKey = myCont.Key
|
|
}
|
|
g.ProcessMainTable(list, meritsYear, rewPunYearsmap, "309")
|
|
} else {
|
|
g.Msg = append(g.Msg, fmt.Sprintf("序号:%v--->%v:没有工号--->%v", list[0], list[2], time.Now().Unix()))
|
|
}
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2024-08-26 13:52:56
|
|
@ 功能: 按行政组织解析人员信息
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (s *StaffApi) AnalysisRedisOrgExelect(c *gin.Context) {
|
|
var requestData AnaRedisKBOrg
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS4)
|
|
redisListLenght, err := redisClient.Llen(requestData.RedisListKey)
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据! ")
|
|
return
|
|
}
|
|
|
|
redisVal, err := redisClient.Lindex(requestData.RedisListKey, int64(requestData.Number))
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据!")
|
|
return
|
|
}
|
|
var jieguo []string
|
|
err = json.Unmarshal([]byte(redisVal), &jieguo)
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据格式不正取!")
|
|
}
|
|
manCont := make(map[int]string)
|
|
for i, v := range jieguo {
|
|
manCont[i] = v
|
|
}
|
|
meritsYear := make(map[int]int)
|
|
for i, v := range requestData.MeritsYearIng {
|
|
iInt, _ := strconv.Atoi(i)
|
|
meritsYear[iInt] = v
|
|
}
|
|
rewPunYears := make(map[int]int)
|
|
for i, v := range requestData.RewPunYearsIng {
|
|
iInt, _ := strconv.Atoi(i)
|
|
rewPunYears[iInt] = v
|
|
}
|
|
var groupManCont GroupParsingData
|
|
// groupManCont.GroupParsingDataInfoRedis(manCont, meritsYear, rewPunYears)
|
|
groupManCont.ParsingUserInfoOfExcel(manCont, meritsYear, rewPunYears, requestData.OrgId)
|
|
// // fmt.Printf("执行完222毕删除列表键%v-%v-%v\n", redisListLenght, requestData.Number, redisListLenght-1 == int64(requestData.Number))
|
|
if redisListLenght-1 == int64(requestData.Number) {
|
|
// 执行完毕删除列表键
|
|
redisClient.Ltrim(requestData.RedisListKey, 1, 0)
|
|
redisClient.DelKey(requestData.RedisListKey)
|
|
// fmt.Printf("执行完毕删除列表键RedisListKey:%v------>lAry:%v------>lerr:%v------>dErr:%v\n", requestData.RedisListKey, lAry, lerr, dErr)
|
|
|
|
// fmt.Printf("redisListLenght:%v------>Number:%v\n", redisListLenght-1, requestData.Number)
|
|
}
|
|
|
|
sendData := make(map[string]interface{})
|
|
sendData["redisListLenght"] = redisListLenght
|
|
sendData["Number"] = requestData.Number
|
|
sendData["RedisListKey"] = requestData.RedisListKey
|
|
sendData["meritsYear"] = meritsYear
|
|
sendData["rewPunYears"] = rewPunYears
|
|
sendData["msg"] = groupManCont.Msg
|
|
sendData["msgStr"] = groupManCont.MsgStr
|
|
overallhandle.Result(0, sendData, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2025-01-08 08:18:47
|
|
@ 功能: 解析考评人员成绩统计表
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (a *StaffApi) UpLoadPeopelMerits(c *gin.Context) {
|
|
orgId := c.Request.FormValue("orgId")
|
|
fileInfo, fileHeader, fileErr := c.Request.FormFile("file")
|
|
if fileErr != nil {
|
|
overallhandle.Result(1, fileErr, c)
|
|
return
|
|
}
|
|
tageExt := path.Ext(fileHeader.Filename)
|
|
// fmt.Printf("tageExt:%v\n", tageExt)
|
|
fileType := overallhandle.JudgeUpFileType(tageExt)
|
|
if fileType != 5 {
|
|
overallhandle.Result(1, fileType, c, "您上传的不是电子表格!请上传正确的文件!")
|
|
return
|
|
}
|
|
|
|
xlsx, err := excelize.OpenReader(fileInfo)
|
|
if err != nil {
|
|
overallhandle.Result(2, err, c)
|
|
return
|
|
}
|
|
redisListKey := fmt.Sprintf("ExcelImport:StaffEvaluation:%v_%v", overall.CONSTANT_CONFIG.RedisPrefixStr.Alias, overallhandle.OnlyOneNumber(2))
|
|
|
|
rows := xlsx.GetRows(xlsx.GetSheetName(xlsx.GetActiveSheetIndex()))
|
|
var listCont StaffAppraisal
|
|
switch orgId {
|
|
case "309": //高科
|
|
listCont.AnalysisExcel(rows, redisListKey)
|
|
default:
|
|
}
|
|
sendData := overallhandle.MapOut()
|
|
sendData["orgId"] = orgId
|
|
sendData["redisListKey"] = redisListKey
|
|
sendData["total"] = listCont.Total
|
|
sendData["years"] = listCont.Years
|
|
sendData["levels"] = listCont.Levels
|
|
sendData["errMsg"] = listCont.errMsg
|
|
overallhandle.Result(0, sendData, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2025-01-08 13:03:16
|
|
@ 功能: 考评人员成绩统计表 数据写入Redis
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (s *StaffAppraisal) AnalysisExcel(list [][]string, redisKey string) {
|
|
// fmt.Printf("list[0][2]---->%v\n\nlist[1][2]---->%v\n", list[2][0], list[2][1])
|
|
s.Years, _ = strconv.ParseInt(list[2][0], 10, 64)
|
|
s.Levels = overallhandle.OutPutAnalysisExcelType(list[2][1])
|
|
|
|
redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS4)
|
|
redisClient.SetRedisTime(86400)
|
|
// fmt.Printf("list=====>%v\n", len(list))
|
|
var listAllNumber int64
|
|
for i, v := range list {
|
|
if i > 3 {
|
|
jsonStr, _ := json.Marshal(v)
|
|
fmt.Printf("jsonStr=====>%vr=====>%v\n", v[0], string(jsonStr))
|
|
if v[0] != "" {
|
|
redisClient.Lpush(redisKey, string(jsonStr))
|
|
listAllNumber++
|
|
} else {
|
|
errMsg := fmt.Sprintf("%v没有工号!无法识别!不可录入数据为:", v[1], string(jsonStr))
|
|
s.errMsg = append(s.errMsg, errMsg)
|
|
}
|
|
|
|
}
|
|
}
|
|
s.Total = listAllNumber
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2025-01-08 15:55:27
|
|
@ 功能: 解析人员绩效成绩
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (s *StaffApi) AnalysisRedisOrgStaffExelect(c *gin.Context) {
|
|
var requestData StaffAppLevel
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.RedisListKey == "" {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据! ")
|
|
return
|
|
}
|
|
redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS4)
|
|
redisListLenght, err := redisClient.Llen(requestData.RedisListKey)
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据! ")
|
|
return
|
|
}
|
|
|
|
redisVal, err := redisClient.Lindex(requestData.RedisListKey, int64(requestData.Number))
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据!")
|
|
return
|
|
}
|
|
var jieguo []string
|
|
err = json.Unmarshal([]byte(redisVal), &jieguo)
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据格式不正取!")
|
|
}
|
|
var errMsg []string
|
|
var msgStr string
|
|
// manCont := make(map[int]string)
|
|
var fenzhi []string
|
|
var pingyu string
|
|
var myCode string
|
|
var myName string
|
|
for i, v := range jieguo {
|
|
// manCont[i] = v
|
|
fmt.Printf("jieguo====>%v---------------->%T-------->%v\n", i, v, v)
|
|
if i >= 2 && i <= 11 {
|
|
fenzhi = append(fenzhi, v)
|
|
}
|
|
if i == 0 {
|
|
myCode = v
|
|
}
|
|
if i == 1 {
|
|
myName = v
|
|
}
|
|
if i == 12 {
|
|
// pingyu = strings.Split(v, "#A#")
|
|
pingyu = v
|
|
}
|
|
}
|
|
if redisListLenght-1 == int64(requestData.Number) {
|
|
// 执行完毕删除列表键
|
|
redisClient.Ltrim(requestData.RedisListKey, 1, 0)
|
|
redisClient.DelKey(requestData.RedisListKey)
|
|
}
|
|
|
|
if myCode != "" {
|
|
var myInfo models.PersonArchives
|
|
err = myInfo.GetCont(map[string]interface{}{"`number`": myCode})
|
|
fmt.Printf("%v\n%v\n", myInfo.Name, myInfo.Key)
|
|
if err != nil {
|
|
msgStr = fmt.Sprintf("序号:%v--->%v:没有此人信息--->%v", requestData.Number, myName, time.Now().Unix())
|
|
errMsg = append(errMsg, msgStr)
|
|
} else {
|
|
var staffKaoPing models.PerstatiSticsevaluators
|
|
err = staffKaoPing.GetCont(map[string]interface{}{"`userKey`": myInfo.Key, "`timeYear`": requestData.Years})
|
|
|
|
fenzhiAry := strings.Join(fenzhi, ",")
|
|
if err != nil {
|
|
staffKaoPing.Userkey = myInfo.Key
|
|
staffKaoPing.TimeYear = requestData.Years
|
|
staffKaoPing.Levels = int64(requestData.Levels)
|
|
switch requestData.Levels {
|
|
case 2:
|
|
staffKaoPing.EvaluationItemss = fenzhiAry
|
|
default:
|
|
staffKaoPing.EvaluationItems = fenzhiAry
|
|
}
|
|
// staffKaoPing.EvaluationItems = fenzhiAry
|
|
staffKaoPing.Comment = pingyu
|
|
staffKaoPing.Time = time.Now().Unix()
|
|
err = overall.CONSTANT_DB_HR.Create(&staffKaoPing).Error
|
|
if err != nil {
|
|
msgStr = fmt.Sprintf("%v[%v]数据处理失败!--->%v", myName, myCode, time.Now().Unix())
|
|
} else {
|
|
msgStr = fmt.Sprintf("%v[%v]数据处理完成!--->%v", myName, myCode, time.Now().Unix())
|
|
}
|
|
errMsg = append(errMsg, msgStr)
|
|
} else {
|
|
editCont := overallhandle.MapOut()
|
|
if int64(requestData.Levels) != staffKaoPing.Levels {
|
|
editCont["`levels`"] = requestData.Levels
|
|
}
|
|
// if fenzhiAry != staffKaoPing.EvaluationItems {
|
|
// editCont["`evaluationItems`"] = fenzhiAry
|
|
// }
|
|
|
|
switch requestData.Levels {
|
|
case 2:
|
|
editCont["`evaluationItemss`"] = fenzhiAry
|
|
default:
|
|
editCont["`evaluationItems`"] = fenzhiAry
|
|
}
|
|
|
|
if pingyu != staffKaoPing.Comment {
|
|
editCont["`comment`"] = pingyu
|
|
}
|
|
if len(editCont) > 0 {
|
|
editCont["`time`"] = time.Now().Unix()
|
|
err = staffKaoPing.EiteCont(map[string]interface{}{"`id`": staffKaoPing.Id}, editCont)
|
|
if err != nil {
|
|
msgStr = fmt.Sprintf("%v[%v]数据处理失败!--->%v", myName, myCode, time.Now().Unix())
|
|
} else {
|
|
msgStr = fmt.Sprintf("%v[%v]数据处理完成!--->%v", myName, myCode, time.Now().Unix())
|
|
}
|
|
errMsg = append(errMsg, msgStr)
|
|
} else {
|
|
msgStr = fmt.Sprintf("%v[%v]数据处理完成!--->%v", myName, myCode, time.Now().Unix())
|
|
errMsg = append(errMsg, msgStr)
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
msgStr = fmt.Sprintf("序号:%v--->%v:没有工号--->%v", requestData.Number, myName, time.Now().Unix())
|
|
errMsg = append(errMsg, msgStr)
|
|
|
|
}
|
|
|
|
sendData := make(map[string]interface{})
|
|
sendData["redisListLenght"] = redisListLenght
|
|
sendData["Number"] = requestData.Number
|
|
sendData["RedisListKey"] = requestData.RedisListKey
|
|
|
|
sendData["fenzhi"] = fenzhi
|
|
sendData["pingyu"] = pingyu
|
|
|
|
sendData["msg"] = errMsg
|
|
sendData["msgStr"] = msgStr
|
|
overallhandle.Result(0, sendData, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2025-01-09 08:48:09
|
|
@ 功能: 获取个人年份评估成绩详情
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (s *StaffApi) GainMyChengjiYears(c *gin.Context) {
|
|
var requestData JiXiaoChengji
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.UserKey == "" {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据! ")
|
|
return
|
|
}
|
|
if requestData.Years == "" {
|
|
requestData.Years = overallhandle.UnixTimeToDay(time.Now().Unix(), 16)
|
|
}
|
|
var staffKaoPing models.PerstatiSticsevaluators
|
|
err = staffKaoPing.GetCont(map[string]interface{}{"`userKey`": requestData.UserKey, "`timeYear`": requestData.Years})
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据! ")
|
|
return
|
|
}
|
|
var sendData SendStaffInfo
|
|
if staffKaoPing.Comment != "" {
|
|
sendData.Comment = strings.Split(staffKaoPing.Comment, "#A#")
|
|
}
|
|
scoreAry := strings.Split(staffKaoPing.EvaluationItems, ",")
|
|
switch staffKaoPing.Levels {
|
|
case 2:
|
|
scoreAry = strings.Split(staffKaoPing.EvaluationItemss, ",")
|
|
default:
|
|
}
|
|
|
|
var sunScore float64 = 0
|
|
scoreMap := make(map[int]float64)
|
|
for i, v := range scoreAry {
|
|
vInt, _ := strconv.ParseFloat(v, 64)
|
|
scoreMap[i], _ = strconv.ParseFloat(strconv.FormatFloat(vInt, 'f', 1, 64), 64)
|
|
sunScore = sunScore + vInt
|
|
// vFloat, _ := strconv.ParseFloat(strconv.FormatFloat(vInt, 'f', 1, 64), 64)
|
|
// scoreMap[i] = vFloat
|
|
// sunScore = sunScore + vFloat
|
|
}
|
|
sendData.EvaluationItems = scoreMap
|
|
sumNum := len(scoreAry)
|
|
if sumNum == 0 {
|
|
sumNum = 1
|
|
}
|
|
sendData.Levels = overallhandle.OutPutAnalysisExcelTypeStr(staffKaoPing.Levels)
|
|
// sendData.Average = float64(sunScore) / float64(sumNum)
|
|
sendData.Average, _ = strconv.ParseFloat(strconv.FormatFloat(float64(sunScore), 'f', 1, 64), 64)
|
|
|
|
// sendData.Average, _ = strconv.ParseFloat(strconv.FormatFloat(float64(sunScore)/float64(sumNum), 'f', 1, 64), 64)
|
|
overallhandle.Result(0, sendData, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2025-01-14 09:02:57
|
|
@ 功能: 上传班组设定人员
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (s *StaffApi) UploadTiemsManFiles(c *gin.Context) {
|
|
timeId := c.Request.FormValue("timeId")
|
|
fileInfo, fileHeader, fileErr := c.Request.FormFile("file")
|
|
if fileErr != nil {
|
|
overallhandle.Result(1, fileErr, c)
|
|
return
|
|
}
|
|
tageExt := path.Ext(fileHeader.Filename)
|
|
fileType := overallhandle.JudgeUpFileType(tageExt)
|
|
if fileType != 5 {
|
|
overallhandle.Result(1, fileType, c, "您上传的不是电子表格!请上传正确的文件!")
|
|
return
|
|
}
|
|
xlsx, err := excelize.OpenReader(fileInfo)
|
|
if err != nil {
|
|
overallhandle.Result(2, err, c)
|
|
return
|
|
}
|
|
redisListKey := fmt.Sprintf("ExcelImport:TimesList:%v_%v", overall.CONSTANT_CONFIG.RedisPrefixStr.Alias, overallhandle.OnlyOneNumber(1))
|
|
rows := xlsx.GetRows(xlsx.GetSheetName(xlsx.GetActiveSheetIndex()))
|
|
redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS4)
|
|
redisClient.SetRedisTime(86400)
|
|
totalNum := 0
|
|
for i, row := range rows {
|
|
if i > 0 {
|
|
jsonStr, _ := json.Marshal(row)
|
|
redisClient.Lpush(redisListKey, jsonStr)
|
|
totalNum++
|
|
}
|
|
}
|
|
sendData := overallhandle.MapOut()
|
|
sendData["redisListKey"] = redisListKey
|
|
sendData["totalNum"] = totalNum
|
|
sendData["timeId"] = timeId
|
|
overallhandle.Result(0, sendData, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2025-01-14 09:39:24
|
|
@ 功能: 解析人员信息!并写入数据库
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (s *StaffApi) AnalysisRedisTimesExelect(c *gin.Context) {
|
|
var requestData TimeSetupPeople
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.RedisListKey == "" {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据! ")
|
|
return
|
|
}
|
|
redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS4)
|
|
redisListLenght, err := redisClient.Llen(requestData.RedisListKey)
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据! ")
|
|
return
|
|
}
|
|
redisVal, err := redisClient.Lindex(requestData.RedisListKey, requestData.Number)
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据获取识别!没有找到数据!")
|
|
return
|
|
}
|
|
var jieguo []string
|
|
err = json.Unmarshal([]byte(redisVal), &jieguo)
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "数据格式不正取!")
|
|
}
|
|
curryTime := time.Now().Unix()
|
|
msgStr := ""
|
|
if jieguo[0] != "" {
|
|
var myInfo models.PersonArchives
|
|
err = myInfo.GetCont(map[string]interface{}{"`number`": jieguo[0]}, "`key`")
|
|
if err != nil {
|
|
msgStr = fmt.Sprintf("%v[%v]处理失败!--- %v 原因:%v", jieguo[0], jieguo[1], overallhandle.UnixTimeToDay(curryTime, 11), err)
|
|
} else {
|
|
err = myInfo.EiteCont(map[string]interface{}{"`key`": myInfo.Key}, map[string]interface{}{"`teamid`": requestData.TimeId, "`eite_time`": curryTime})
|
|
if err != nil {
|
|
msgStr = fmt.Sprintf("%v[%v]处理失败!--- %v 原因:%v", jieguo[0], jieguo[1], overallhandle.UnixTimeToDay(curryTime, 11), err)
|
|
} else {
|
|
msgStr = fmt.Sprintf("%v[%v]处理完成!--- %v", jieguo[0], jieguo[1], overallhandle.UnixTimeToDay(curryTime, 11))
|
|
}
|
|
}
|
|
} else {
|
|
msgStr = fmt.Sprintf("序号:%v--->%v:没有工号,无法确定启组织关系!不可写入数据--->%v", requestData.Number, jieguo[2], time.Now().Unix())
|
|
}
|
|
|
|
if redisListLenght-1 == int64(requestData.Number) {
|
|
// 执行完毕删除列表键
|
|
redisClient.Ltrim(requestData.RedisListKey, 1, 0)
|
|
redisClient.DelKey(requestData.RedisListKey)
|
|
}
|
|
sendData := make(map[string]interface{})
|
|
sendData["msgStr"] = msgStr
|
|
overallhandle.Result(0, sendData, c)
|
|
}
|
|
|