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