18 changed files with 1125 additions and 303 deletions
@ -0,0 +1,256 @@ |
|||||
|
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) { |
||||
|
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.ReadExcelRedis(xlsx, redisListKey) |
||||
|
sendData := overallhandle.MapOut() |
||||
|
sendData["redisListKey"] = redisListKey |
||||
|
sendData["totalNum"] = totalNum |
||||
|
sendData["meritsYearIng"] = meritsYearIng |
||||
|
sendData["rewPunYearsIng"] = rewPunYearsIng |
||||
|
overallhandle.Result(0, sendData, c) |
||||
|
} |
||||
|
|
||||
|
// ReadExcel .读取excel 转成切片
|
||||
|
func (g *GroupParsingData) ReadExcelRedis(xlsx *excelize.File, redisKey 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][289] != "" { |
||||
|
yearAry := strings.Split(rows[1][289], "年") |
||||
|
if len(yearAry) > 0 { |
||||
|
|
||||
|
yearVal, _ := strconv.Atoi(yearAry[0]) |
||||
|
meritsYear[0] = yearVal |
||||
|
} |
||||
|
} else { |
||||
|
meritsYear[0] = isDateYear - 3 |
||||
|
} |
||||
|
if rows[1][290] != "" { |
||||
|
yearAry := strings.Split(rows[1][290], "年") |
||||
|
if len(yearAry) > 0 { |
||||
|
yearVal, _ := strconv.Atoi(yearAry[0]) |
||||
|
meritsYear[1] = yearVal |
||||
|
} |
||||
|
} else { |
||||
|
meritsYear[1] = isDateYear - 2 |
||||
|
} |
||||
|
if rows[1][291] != "" { |
||||
|
yearAry := strings.Split(rows[1][291], "年") |
||||
|
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][299] != "" { |
||||
|
jcYearAry := strings.Split(rows[2][299], "奖惩") |
||||
|
if len(jcYearAry) > 0 { |
||||
|
|
||||
|
jcYearVal, _ := strconv.Atoi(jcYearAry[0]) |
||||
|
rewPunYears[0] = jcYearVal |
||||
|
} |
||||
|
} else { |
||||
|
rewPunYears[0] = isDateYear - 3 |
||||
|
} |
||||
|
if rows[2][304] != "" { |
||||
|
jcYearAry := strings.Split(rows[2][304], "奖惩") |
||||
|
if len(jcYearAry) > 0 { |
||||
|
|
||||
|
jcYearVal, _ := strconv.Atoi(jcYearAry[0]) |
||||
|
rewPunYears[1] = jcYearVal |
||||
|
} |
||||
|
} else { |
||||
|
rewPunYears[1] = isDateYear - 2 |
||||
|
} |
||||
|
if rows[2][309] != "" { |
||||
|
jcYearAry := strings.Split(rows[2][309], "奖惩") |
||||
|
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) |
||||
|
// fmt.Printf("执行完222毕删除列表键%v-%v-%v\n", redisListLenght, requestData.Number, redisListLenght-1 == int64(requestData.Number))
|
||||
|
if redisListLenght-1 == int64(requestData.Number) { |
||||
|
//执行完毕删除列表键
|
||||
|
redisClient.Lrange(requestData.RedisListKey, 0, -1) |
||||
|
redisClient.DelKey(requestData.RedisListKey) |
||||
|
// fmt.Printf("执行完毕删除列表键%v\n", requestData.RedisListKey)
|
||||
|
} |
||||
|
overallhandle.Result(0, groupManCont, 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] |
||||
|
if list[1] != "" { |
||||
|
var myCont models.PersonArchives |
||||
|
err := myCont.GetCont(map[string]interface{}{"`number`": list[1]}, "`key`") |
||||
|
if err != nil { |
||||
|
g.IsOk = true |
||||
|
} else { |
||||
|
g.UserKey = myCont.Key |
||||
|
} |
||||
|
g.ProcessMainTable(list, meritsYear, rewPunYearsmap) |
||||
|
} else { |
||||
|
g.Msg = append(g.Msg, fmt.Sprintf("序号:%v--->%v:没有工号--->%v", list[0], list[2], time.Now().Unix())) |
||||
|
} |
||||
|
} |
||||
Binary file not shown.
Loading…
Reference in new issue