Browse Source

金蝶对接接口完成

v1.1_dev
超级管理员 3 years ago
parent
commit
c570326972
  1. 59
      README.md
  2. 824
      api/version1/personnelapi/kingdee.go
  3. 5
      api/version1/personnelapi/staff.go
  4. 80
      api/version1/personnelapi/type.go
  5. 3
      apirouter/personnel/people.go
  6. BIN
      hr_server.exe
  7. 2
      identification/authentication.go
  8. 13
      log/202206/20220614.log
  9. 15
      log/202206/20220615.log
  10. 3
      log/202206/20220616.log
  11. 23
      models/double_worker.go
  12. 37
      models/duties_class_leve.go
  13. 24
      models/emergency_contact.go
  14. 20
      models/family_members.go
  15. 33
      models/org_cont_type.go
  16. 55
      models/personarchives.go
  17. 47
      models/personnel_change_record.go
  18. 17
      models/personnel_content.go
  19. 21
      models/personnel_education.go
  20. 3
      models/position_level.go
  21. 28
      overall/overallhandle/overall_handle.go
  22. 5
      overall/overallhandle/type.go

59
README.md

@ -140,9 +140,68 @@
| | pageSize | 每页显示多少条 | | | pageSize | 每页显示多少条 |
| | .... | .... | | | .... | .... |
## 视图说明
| 视图名 | 说明 |
|---------|---------|
| duties_class_leve | 职务及类别和等级 |
| org_cont_type | 行政组织及类别 |
## Log ## Log
``` ```
2022.04.19 建立人员信息相关数据模型 2022.04.19 建立人员信息相关数据模型
2022.04.20 处理员工档案的增删改查 2022.04.20 处理员工档案的增删改查
``` ```
```
2022.06.13
创建人员档案主表
```
```mysql
CREATE TABLE `person_archives` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`number` varchar(30) NOT NULL DEFAULT '' COMMENT '工号',
`name` varchar(50) NOT NULL DEFAULT '',
`icon` varchar(255) DEFAULT '' COMMENT '头像',
`hire_class` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '雇佣类型(1:雇佣入职;2:再入职;)',
`emp_type` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职)',
`company` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '入职公司',
`maindeparment` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '主部门',
`deparment` text COMMENT '部门',
`admin_org` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '所属行政组织',
`position` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '职位',
`job_class` bigint(20) unsigned DEFAULT '2' COMMENT '职务分类',
`job_id` bigint(20) unsigned DEFAULT '0' COMMENT '职务',
`job_leve` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '职务等级',
`time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '写入时间',
`eite_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '编辑时间',
`wechat` varchar(255) DEFAULT '' COMMENT '微信UserId',
`work_wechat` varchar(255) DEFAULT '' COMMENT '企业微信UserId',
`state` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态(1:启用;2:禁用;3:删除)',
`key` bigint(50) unsigned NOT NULL DEFAULT '0' COMMENT 'key',
`is_admin` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否为管理员(1:不是;2:分公司;3:集团管理员;4:超级管)',
`password` varchar(255) DEFAULT '' COMMENT '密码',
`role` longtext COMMENT '角色',
PRIMARY KEY (`id`) USING BTREE,
KEY `number` (`number`) USING BTREE,
KEY `position` (`position`,`admin_org`,`company`) USING BTREE,
KEY `key` (`key`) USING BTREE,
FULLTEXT KEY `deparment` (`deparment`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='员工档案(主)';
```
```
2022.06.14
人员主表写入
人员附表写入
双职工表编辑与写入
紧急联系人
员工家属
```

824
api/version1/personnelapi/kingdee.go

@ -0,0 +1,824 @@
package personnelapi
import (
"fmt"
"hr_server/models"
"hr_server/overall"
"hr_server/overall/overallhandle"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
)
//金蝶人员信息对接
func (s *StaffApi) Kingdee(c *gin.Context) {
var requestData addKingdeePersonnel
c.ShouldBindJSON(&requestData)
if requestData.Number == "" {
overallhandle.Result(1, requestData.Number, c, "工号不能为空!")
return
}
var manContent models.PersonArchives
manErr := manContent.GetCont(map[string]interface{}{"`number`": requestData.Number})
if manErr == nil {
//已经存在!进行变动操作
manErr = eidtAddManCont(manContent, requestData)
} else {
//不存在!进行新增操作
manErr = newAddManCont(requestData)
}
if manErr != nil {
overallhandle.Result(104, manErr, c)
return
}
overallhandle.Result(0, manErr, c)
}
//编辑员工
func eidtAddManCont(perArcInfo models.PersonArchives, manCont addKingdeePersonnel) error {
eidtManCont := overallhandle.MapOut()
if manCont.Name != "" && manCont.Name != perArcInfo.Name {
eidtManCont["`name`"] = manCont.Name
}
if manCont.Icon != "" && manCont.Icon != perArcInfo.Icon {
eidtManCont["`icon`"] = manCont.Icon
}
if manCont.HireType != 0 && manCont.HireType != perArcInfo.HireClass {
eidtManCont["`hire_class`"] = manCont.HireType
}
if manCont.EmpType != 0 && manCont.EmpType != perArcInfo.EmpType {
eidtManCont["`emp_type`"] = manCont.EmpType
}
//人员变更记录
var manChangeRecord models.PersonnelChangeRecord
changeRecordTrue := false
//公司
if manCont.Company != "" {
var orgCompany models.AdministrativeOrganization
orgErr := orgCompany.GetCont(map[string]interface{}{"kingdeeid": manCont.Company}, "`id`")
if orgErr == nil {
if orgCompany.Id != perArcInfo.Company {
eidtManCont["`company`"] = orgCompany.Id
changeRecordTrue = true
}
manChangeRecord.Company = orgCompany.Id
}
}
//主部门
if manCont.MainDepartment != "" {
var orgMainDepart models.AdministrativeOrganization
orgErr := orgMainDepart.GetCont(map[string]interface{}{"kingdeeid": manCont.MainDepartment}, "`id`")
if orgErr == nil {
if orgMainDepart.Id != perArcInfo.Company {
eidtManCont["`maindeparment`"] = orgMainDepart.Id
changeRecordTrue = true
}
manChangeRecord.MainDepartment = orgMainDepart.Id
}
}
//部门
if len(manCont.Department) > 0 {
var departId []string
for _, dv := range manCont.Department {
var orgMainDepartAry models.AdministrativeOrganization
orgErr := orgMainDepartAry.GetCont(map[string]interface{}{"kingdeeid": dv}, "`id`")
if orgErr == nil {
orgIdStr := strconv.FormatInt(orgMainDepartAry.Id, 10)
if overallhandle.StringIsInMap(orgIdStr, departId) == false {
departId = append(departId, orgIdStr)
}
}
}
oldDepart := strings.Split(perArcInfo.Deparment, ",")
chaJiDepart := overallhandle.DifferenceSet[string](departId, oldDepart)
if len(chaJiDepart) > 0 {
departIdStr := strings.Join(departId, ",")
eidtManCont["`deparment`"] = departIdStr
manChangeRecord.Department = departIdStr
changeRecordTrue = true
}
}
//行政组织
if manCont.AdminOrg != "" {
var orgMainDepartAdmin models.AdministrativeOrganization
orgErr := orgMainDepartAdmin.GetCont(map[string]interface{}{"kingdeeid": manCont.AdminOrg}, "`id`")
if orgErr == nil {
if orgMainDepartAdmin.Id != perArcInfo.AdminOrg {
eidtManCont["`admin_org`"] = orgMainDepartAdmin.Id
changeRecordTrue = true
}
manChangeRecord.Adminorg = orgMainDepartAdmin.Id
}
}
//职位
if manCont.Position != "" {
var positionCont models.Position
positErr := positionCont.GetCont(map[string]interface{}{`kingdeeid`: manCont.Position}, "`id`")
if positErr == nil {
if positionCont.Id != perArcInfo.Position {
eidtManCont["`position`"] = positionCont.Id
changeRecordTrue = true
}
manChangeRecord.Position = positionCont.Id
}
}
//职务
if manCont.JobName != "" {
var dutiesCont models.DutiesClassLeve
dutiesErr := dutiesCont.GetCont(map[string]interface{}{"`d_king`": manCont.JobName}, "d_id")
if dutiesErr == nil {
if dutiesCont.Id != perArcInfo.Position {
eidtManCont["`job_id`"] = dutiesCont.Id
changeRecordTrue = true
}
if dutiesCont.ClassId != perArcInfo.JobClass {
eidtManCont["`job_class`"] = dutiesCont.ClassId
changeRecordTrue = true
}
manChangeRecord.JobId = dutiesCont.Id
manChangeRecord.JobClass = dutiesCont.ClassId
}
}
if manCont.PositionGrade != 0 {
if manCont.PositionGrade != perArcInfo.JobLeve {
eidtManCont["`job_leve`"] = manCont.PositionGrade
}
manChangeRecord.JobLevel = manCont.PositionGrade
changeRecordTrue = true
}
fmt.Printf("第一学历--->%v--->%v\n", changeRecordTrue, manChangeRecord)
if len(eidtManCont) > 0 {
var manMainCont models.PersonArchives
eidtErrMain := manMainCont.EiteCont(map[string]interface{}{"`id`": perArcInfo.Id}, eidtManCont)
if eidtErrMain != nil {
return eidtErrMain
} else {
if changeRecordTrue == true {
//写入变动记录
manChangeRecord.Type = manCont.HireType
manChangeRecord.Number = perArcInfo.Number
manChangeRecord.Time = time.Now().Unix()
// rybdErr := overall.CONSTANT_DB_HR.Create(&manChangeRecord).Error
// jsonCont, _ := json.Marshal(manChangeRecord)
// fmt.Printf("第二学历--->%v--->%v\n", rybdErr, string(jsonCont))
}
//编辑人员附属信息
synPro.Add(1)
go editManAuxiliaryData(manCont)
//编辑紧急联系人信息
synPro.Add(1)
go emergencyContactPerson(manCont)
//编辑员工家属信息
synPro.Add(1)
go eidtFamilyMembers(manCont.Number, manCont.MemberOfFamily)
//编辑员工教育经历
synPro.Add(1)
go educatExperKingdee(manCont)
synPro.Wait()
}
}
return nil
}
//新增员工
func newAddManCont(manCont addKingdeePersonnel) error {
var manMainCont models.PersonArchives
manMainCont.Number = manCont.Number
manMainCont.Name = manCont.Name
manMainCont.Icon = manCont.Icon
manMainCont.HireClass = manCont.HireType
manMainCont.EmpType = manCont.EmpType
timeTady := time.Now().Unix()
manMainCont.Time = timeTady
manMainCont.EiteTime = timeTady
manMainCont.State = 1
if manCont.Company != "" {
var orgCompany models.AdministrativeOrganization
orgErr := orgCompany.GetCont(map[string]interface{}{"kingdeeid": manCont.Company}, "`id`")
if orgErr == nil {
manMainCont.Company = orgCompany.Id
}
}
if manCont.MainDepartment != "" {
var orgMainDepart models.AdministrativeOrganization
orgErr := orgMainDepart.GetCont(map[string]interface{}{"kingdeeid": manCont.MainDepartment}, "`id`")
if orgErr == nil {
manMainCont.MainDeparment = orgMainDepart.Id
}
}
if len(manCont.Department) > 0 {
var departId []string
for _, dv := range manCont.Department {
var orgMainDepartAry models.AdministrativeOrganization
orgErr := orgMainDepartAry.GetCont(map[string]interface{}{"kingdeeid": dv}, "`id`")
if orgErr == nil {
orgIdStr := strconv.FormatInt(orgMainDepartAry.Id, 10)
if overallhandle.StringIsInMap(orgIdStr, departId) == false {
departId = append(departId, orgIdStr)
}
}
}
departIdStr := strings.Join(departId, ",")
manMainCont.Deparment = departIdStr
}
if manCont.AdminOrg != "" {
var orgMainDepartAdmin models.AdministrativeOrganization
orgErr := orgMainDepartAdmin.GetCont(map[string]interface{}{"kingdeeid": manCont.AdminOrg}, "`id`")
if orgErr == nil {
manMainCont.AdminOrg = orgMainDepartAdmin.Id
}
}
//职位
if manCont.Position != "" {
var positionCont models.Position
positErr := positionCont.GetCont(map[string]interface{}{`kingdeeid`: manCont.Position}, "`id`")
if positErr == nil {
manMainCont.Position = positionCont.Id
}
}
//职务
if manCont.JobName != "" {
var dutiesCont models.DutiesClassLeve
dutiesErr := dutiesCont.GetCont(map[string]interface{}{"`d_king`": manCont.JobName}, "d_id")
if dutiesErr == nil {
manMainCont.JobId = dutiesCont.Id
manMainCont.JobClass = dutiesCont.ClassId
}
}
if manCont.PositionGrade != 0 {
manMainCont.JobLeve = manCont.PositionGrade
}
//获取老人员主表内容
var oldPersonArchives models.Personnel
oldPersErr := overall.CONSTANT_DB_HR_Jin.Where(map[string]interface{}{"`number`": manCont.Number}).First(&oldPersonArchives).Error
if oldPersErr == nil {
if manCont.Icon == "" {
manMainCont.Icon = oldPersonArchives.Icon
}
if oldPersonArchives.Key != 0 {
manMainCont.Key = oldPersonArchives.Key
} else {
manMainCont.Key = overallhandle.TableNumber()
}
if oldPersonArchives.Wechat != "" {
manMainCont.Wechat = oldPersonArchives.Wechat
}
if oldPersonArchives.WorkWechat != "" {
manMainCont.WorkWechat = oldPersonArchives.WorkWechat
}
manMainCont.IsAdmin = oldPersonArchives.IsAdmin
manMainCont.Role = oldPersonArchives.Role
if oldPersonArchives.Password != "" {
manMainCont.Password = oldPersonArchives.Password
} else {
//密码加密
var passwordMd5 overallhandle.Md5Encryption
passwordMd5.Md5EncryptionInit(overall.CONSTANT_CONFIG.Appsetup.DefaultPassword)
manMainCont.Password = passwordMd5.Md5EncryptionAlgorithm()
}
} else {
manMainCont.Key = overallhandle.TableNumber()
//密码加密
var passwordMd5 overallhandle.Md5Encryption
passwordMd5.Md5EncryptionInit(overall.CONSTANT_CONFIG.Appsetup.DefaultPassword)
manMainCont.Password = passwordMd5.Md5EncryptionAlgorithm()
}
addManContErr := overall.CONSTANT_DB_HR.Create(&manMainCont).Error
if addManContErr != nil {
return addManContErr
} else {
//编辑人员附属信息
synPro.Add(1)
go editManAuxiliaryData(manCont)
//编辑紧急联系人信息
synPro.Add(1)
go emergencyContactPerson(manCont)
//编辑员工家属信息
synPro.Add(1)
go eidtFamilyMembers(manCont.Number, manCont.MemberOfFamily)
//编辑员工教育经历
synPro.Add(1)
go educatExperKingdee(manCont)
synPro.Wait()
}
return nil
}
//编辑人员附属信息
func editManAuxiliaryData(manCont addKingdeePersonnel) {
defer synPro.Done()
var manInfo models.PersonnelContent
manErr := manInfo.GetCont(map[string]interface{}{"`number`": manCont.Number})
if manErr == nil {
saveData := overallhandle.MapOut()
if manCont.IDCardNo != "" && manCont.IDCardNo != manInfo.Idcardno {
saveData["idcardno"] = manCont.IDCardNo
}
if manCont.IDCardStartTime != "" {
idCardStarTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardStartTime))
if idCardStarTime != manInfo.Idcardstartdate {
saveData["idcardstartdate"] = idCardStarTime
}
}
if manCont.IDCardEndTime != "" {
idCardEndTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardEndTime))
if idCardEndTime != manInfo.Idcardenddate {
saveData["idcardenddate"] = idCardEndTime
}
}
if manCont.IDCardAddress != "" && manCont.IDCardAddress != manInfo.Idcardaddress {
saveData["idcardaddress"] = manCont.IDCardAddress
}
if manCont.IDCardIsSued != "" && manCont.IDCardIsSued != manInfo.IdcardIssued {
saveData["idcardIssued"] = manCont.IDCardIsSued
}
if manCont.Mobilephone != "" && manCont.Mobilephone != manInfo.Mobilephone {
saveData["mobilephone"] = manCont.Mobilephone
}
if manCont.Email != "" && manCont.Email != manInfo.Email {
saveData["email"] = manCont.Email
}
if manCont.Gender != 0 && manCont.Gender != manInfo.Gender {
saveData["gender"] = manCont.Gender
}
if manCont.Birthday != "" {
brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.Birthday))
if brrthday != manInfo.Birthday {
saveData["birthday"] = brrthday
}
}
if manCont.Nation != "" && manCont.Nation != manInfo.Myfolk {
saveData["myfolk"] = manCont.Nation
}
if manCont.NativePlace != "" && manCont.NativePlace != manInfo.Nativeplace {
saveData["nativeplace"] = manCont.NativePlace
}
if manCont.Health != 0 && manCont.Health != manInfo.Health {
saveData["health"] = manCont.Health
}
if manCont.Maritalstatus != 0 && manCont.Maritalstatus != manInfo.Maritalstatus {
saveData["maritalstatus"] = manCont.Maritalstatus
}
if manCont.CurrentResidence != "" && manCont.CurrentResidence != manInfo.Currentresidence {
saveData["currentresidence"] = manCont.CurrentResidence
}
if manCont.Constellation != 0 && manCont.Constellation != manInfo.Constellation {
saveData["constellationing"] = manCont.Constellation
}
if manCont.Iisdoubleworker != 0 && manCont.Iisdoubleworker != manInfo.Isdoubleworker {
saveData["isdoubleworker"] = manCont.Iisdoubleworker
eidtDoubleWorker(manCont, manCont.Iisdoubleworker)
}
if manCont.Isveterans != 0 && manCont.Isveterans != manInfo.Isveterans {
saveData["isveterans"] = manCont.Isveterans
if manCont.Isveterans == 1 {
if manCont.Veteransnumber != "" && manCont.Veteransnumber != manInfo.Veteransnumber {
saveData["veteransnumber"] = manCont.Veteransnumber
}
} else {
saveData["veteransnumber"] = ""
}
}
if manCont.WorkingDate != "" {
workInData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.WorkingDate))
if workInData != manInfo.Jobstartdate {
saveData["jobstartdate"] = workInData
}
}
if manCont.EntryDate != "" {
entryData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.EntryDate))
if entryData != manInfo.Entrydate {
saveData["entrydate"] = entryData
}
}
if manCont.ProbationPeriod != 0 && manCont.ProbationPeriod != manInfo.Probationperiod {
saveData["probationperiod"] = manCont.ProbationPeriod
entryData := manInfo.Entrydate
if manCont.EntryDate != "" {
entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.EntryDate))
}
planformalData := overallhandle.GetFutureMonthTime(entryData, manCont.ProbationPeriod, 2)
saveData["planformaldate"] = planformalData
}
if manCont.ConfirmationDate != "" {
planformalData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.ConfirmationDate))
saveData["planformaldate"] = planformalData
}
if manCont.PoliticalOutlook != 0 && manCont.PoliticalOutlook != manInfo.PoliticalOutlook {
saveData["political_outlook"] = manCont.PoliticalOutlook
}
if len(saveData) > 0 {
saveData["`time`"] = time.Now().Unix()
manInfo.EiteCont(map[string]interface{}{"`number`": manCont.Number}, saveData)
}
} else {
manInfo.Number = manCont.Number
manInfo.Idcardno = manCont.IDCardNo
idCardStarTime := time.Now().Unix()
if manCont.IDCardStartTime != "" {
idCardStarTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardStartTime))
}
manInfo.Idcardstartdate = idCardStarTime //身份证有效期开始
idCardEndTime := time.Now().Unix()
if manCont.IDCardEndTime != "" {
idCardEndTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardEndTime))
}
manInfo.Idcardenddate = idCardEndTime //身份证有效期结束
manInfo.Idcardaddress = manCont.IDCardAddress //身份证地址
manInfo.IdcardIssued = manCont.IDCardIsSued //身份证签发机关
manInfo.Mobilephone = manCont.Mobilephone
manInfo.Email = manCont.Email
manInfo.Gender = manCont.Gender
brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.Birthday))
manInfo.Birthday = brrthday
manInfo.Myfolk = manCont.Nation
manInfo.Nativeplace = manCont.NativePlace
manInfo.Health = manCont.Health
manInfo.Maritalstatus = manCont.Maritalstatus
manInfo.Currentresidence = manCont.CurrentResidence
manInfo.Time = time.Now().Unix()
manInfo.Constellation = manCont.Constellation
manInfo.Isdoubleworker = manCont.Iisdoubleworker
manInfo.Isveterans = manCont.Isveterans
manInfo.Veteransnumber = manCont.Veteransnumber
workInData := time.Now().Unix()
if manCont.WorkingDate != "" {
workInData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.WorkingDate))
}
manInfo.Jobstartdate = workInData
entryData := time.Now().Unix()
if manCont.EntryDate != "" {
entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.EntryDate))
}
manInfo.Entrydate = entryData
manInfo.Probationperiod = manCont.ProbationPeriod
planformalData := time.Now().Unix()
if manCont.ConfirmationDate != "" {
planformalData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.ConfirmationDate))
} else {
planformalData = overallhandle.GetFutureMonthTime(entryData, manCont.ProbationPeriod, 2)
}
manInfo.Planformaldate = planformalData
manInfo.PoliticalOutlook = manCont.PoliticalOutlook
overall.CONSTANT_DB_HR.Create(&manInfo)
if manCont.Iisdoubleworker == 1 {
//编辑双职工
eidtDoubleWorker(manCont, 1)
}
}
}
//编辑双职工
func eidtDoubleWorker(manCont addKingdeePersonnel, state int) {
var doubleWorkCont models.DoubleWorker
dwErr := doubleWorkCont.GetCont(map[string]interface{}{"`number`": manCont.Number})
if dwErr == nil {
saveData := overallhandle.MapOut()
if manCont.SpouseName != "" && manCont.SpouseName != doubleWorkCont.Name {
saveData["`name`"] = manCont.SpouseName
}
if manCont.SpouseCompany != "" && manCont.SpouseCompany != doubleWorkCont.Company {
saveData["`company`"] = manCont.SpouseCompany
}
if manCont.SpouseDepartment != "" && manCont.SpouseDepartment != doubleWorkCont.Department {
saveData["`department`"] = manCont.SpouseDepartment
}
if manCont.SpousePosition != "" && manCont.SpousePosition != doubleWorkCont.Position {
saveData["`position`"] = manCont.SpousePosition
}
if manCont.SpouseTel != "" && manCont.SpouseTel != doubleWorkCont.Tel {
saveData["`tel`"] = manCont.SpouseTel
}
if state != 0 && state != doubleWorkCont.State {
saveData["`state`"] = state
}
if len(saveData) > 0 {
saveData["`time`"] = time.Now().Unix()
doubleWorkCont.EiteCont(map[string]interface{}{"`number`": manCont.Number}, saveData)
}
} else {
saveData := overallhandle.MapOut()
saveData["state"] = 2
doubleWorkCont.EiteCont(map[string]interface{}{"`number`": manCont.Number}, saveData)
doubleWorkCont.Number = manCont.Number
doubleWorkCont.Name = manCont.SpouseName
doubleWorkCont.Tel = manCont.SpouseTel
doubleWorkCont.Company = manCont.SpouseCompany
doubleWorkCont.Department = manCont.SpouseDepartment
doubleWorkCont.Position = manCont.SpousePosition
doubleWorkCont.State = state
overall.CONSTANT_DB_HR.Create(&doubleWorkCont)
}
}
//编辑紧急联系人信息
func emergencyContactPerson(manCont addKingdeePersonnel) {
defer synPro.Done()
var emeContPerAry []emergencyContact
if manCont.UrgentNameOne != "" || manCont.UrgentRelationshipOne != "" || manCont.UrgentMobilephoneOne != "" {
var emeContPerOne emergencyContact
emeContPerOne.Name = manCont.UrgentNameOne //姓名1
emeContPerOne.Relationship = manCont.UrgentRelationshipOne //与紧急联系人1
emeContPerOne.Mobilephone = manCont.UrgentMobilephoneOne //联系电话1
emeContPerAry = append(emeContPerAry, emeContPerOne)
}
if manCont.UrgentNameTwo != "" || manCont.UrgentRelationshipTwo != "" || manCont.UrgentMobilephoneTwo != "" {
var emeContPerTwo emergencyContact
emeContPerTwo.Name = manCont.UrgentNameTwo //姓名2
emeContPerTwo.Relationship = manCont.UrgentRelationshipTwo //与紧急联系人2
emeContPerTwo.Mobilephone = manCont.UrgentMobilephoneTwo //联系电话2
emeContPerAry = append(emeContPerAry, emeContPerTwo)
}
if len(emeContPerAry) > 0 {
var oldEmePersList []models.EmergencyContact
oldEmeErr := overall.CONSTANT_DB_HR.Where("`number` = ?", manCont.Number).Find(&oldEmePersList).Error
if oldEmeErr == nil {
var writeName []string
var allId []int64
var isEite []int64
for _, ev := range emeContPerAry {
for _, ov := range oldEmePersList {
if overallhandle.JudgeInMap(ov.Id, allId) == false {
allId = append(allId, ov.Id)
}
if ev.Name == ov.Name {
writeName = append(writeName, ev.Name)
if overallhandle.JudgeInMap(ov.Id, isEite) == false {
isEite = append(isEite, ov.Id)
}
eitdCont := overallhandle.MapOut()
if ev.Relationship != "" && ev.Relationship != ov.Relationship {
eitdCont["relationship"] = ev.Relationship
}
if ev.Mobilephone != "" && ev.Mobilephone != ov.Tel {
eitdCont["tel"] = ev.Mobilephone
}
if ov.State != 1 {
eitdCont["state"] = 1
}
if len(eitdCont) > 0 {
eitdCont["time"] = time.Now().Unix()
var oldEmePersCont models.EmergencyContact
oldEmePersCont.EiteCont(map[string]interface{}{"`id`": ov.Id}, eitdCont)
}
}
}
}
//判断两个紧急人员是否都写入
// if len(writeName) != 2 {
for _, sv := range emeContPerAry {
if overallhandle.StringIsInMap(sv.Name, writeName) == false {
var addEmeCont models.EmergencyContact
addEmeCont.Number = manCont.Number
addEmeCont.Name = sv.Name
addEmeCont.Relationship = sv.Relationship
addEmeCont.Tel = sv.Mobilephone
addEmeCont.State = 1
addEmeCont.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&addEmeCont)
}
}
// }
} else {
for _, insetv := range emeContPerAry {
var addEmeCont models.EmergencyContact
addEmeCont.Number = manCont.Number
addEmeCont.Name = insetv.Name
addEmeCont.Relationship = insetv.Relationship
addEmeCont.Tel = insetv.Mobilephone
addEmeCont.State = 1
addEmeCont.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&addEmeCont)
}
}
}
}
//编辑员工家属
func eidtFamilyMembers(num string, family []memberOfFamily) {
defer synPro.Done()
if len(family) > 0 && num != "" {
var familyAry []models.FamilyMembers
famErr := overall.CONSTANT_DB_HR.Where("`number` = ?", num).Find(&familyAry).Error
if famErr == nil {
var writeName []string
var allId []int64
var isEite []int64
for _, fv := range family {
for _, fav := range familyAry {
if overallhandle.JudgeInMap(fav.Id, allId) == false {
allId = append(allId, fav.Id)
}
if fv.Name == fav.Name {
writeName = append(writeName, fv.Name)
if overallhandle.JudgeInMap(fav.Id, isEite) == false {
isEite = append(isEite, fav.Id)
}
eitdCont := overallhandle.MapOut()
if fv.Relationship != "" && fv.Relationship != fav.Relationship {
eitdCont["relation"] = fv.Relationship
}
if fv.Mobilephone != "" && fv.Mobilephone != fav.Tel {
eitdCont["tel"] = fv.Mobilephone
}
if fv.Company != "" && fv.Company != fav.Company {
eitdCont["company"] = fv.Company
}
if fv.Department != "" && fv.Department != fav.Deparment {
eitdCont["deparment"] = fv.Department
}
if fv.Position != "" && fv.Position != fav.Postnme {
eitdCont["postnme"] = fv.Position
}
if fv.PoliticalOutlook != 0 && fv.PoliticalOutlook != fav.PoliticalOutlook {
eitdCont["political_outlook"] = fv.PoliticalOutlook
}
if len(eitdCont) > 0 {
eitdCont["time"] = time.Now().Unix()
var oldFamilyCont models.FamilyMembers
oldFamilyCont.EiteCont(map[string]interface{}{"`id`": fav.Id}, eitdCont)
}
}
}
}
//新增不存在得家庭成员
for _, afv := range family {
if overallhandle.StringIsInMap(afv.Name, writeName) == false {
var addFamliyCont models.FamilyMembers
addFamliyCont.Number = num
addFamliyCont.Relationship = afv.Relationship //亲属关系"`
addFamliyCont.Name = afv.Name //姓名"`
addFamliyCont.Company = afv.Company //所在公司"`
addFamliyCont.Deparment = afv.Department //所在部门"`
addFamliyCont.Postnme = afv.Position //所在岗位"`
addFamliyCont.Tel = afv.Mobilephone //紧急联系人电话"`
addFamliyCont.PoliticalOutlook = afv.PoliticalOutlook //政治面貌
addFamliyCont.Time = time.Now().Unix() // 创建时间"`
overall.CONSTANT_DB_HR.Create(&addFamliyCont)
}
}
} else {
//新增家庭成员
for _, v := range family {
var addFamliyCont models.FamilyMembers
addFamliyCont.Number = num
addFamliyCont.Relationship = v.Relationship //亲属关系"`
addFamliyCont.Name = v.Name //姓名"`
addFamliyCont.Company = v.Company //所在公司"`
addFamliyCont.Deparment = v.Department //所在部门"`
addFamliyCont.Postnme = v.Position //所在岗位"`
addFamliyCont.Tel = v.Mobilephone //紧急联系人电话"`
addFamliyCont.PoliticalOutlook = v.PoliticalOutlook //政治面貌
addFamliyCont.Time = time.Now().Unix() // 创建时间"`
overall.CONSTANT_DB_HR.Create(&addFamliyCont)
}
}
}
}
//教育经历
func educatExperKingdee(manCont addKingdeePersonnel) {
defer synPro.Done()
if manCont.HighestGraduationSchool != "" {
//最高学历
var perEduContHig models.PersonnelEducation
highestGormDb := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("number = ? AND graduation_school = ? AND subject = ?", manCont.Number, manCont.HighestGraduationSchool, manCont.HighestSubject)
higErr := highestGormDb.First(&perEduContHig).Error
if higErr == nil {
eitdCont := overallhandle.MapOut()
if manCont.HighestEducation != 0 && manCont.HighestEducation != perEduContHig.Education {
eitdCont["education"] = manCont.HighestEducation
}
if manCont.HighestAcademicDegree != 0 && manCont.HighestAcademicDegree != perEduContHig.AcademicDegree {
eitdCont["academic_degree"] = manCont.HighestAcademicDegree
}
if manCont.HighestAdmissionTime != "" {
entranceTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestAdmissionTime))
if entranceTime != perEduContHig.AdmissionTime {
eitdCont["admission_time"] = entranceTime
}
}
if manCont.HighestGraduationTime != "" {
graduationTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestGraduationTime))
if graduationTime != perEduContHig.GraduationTime {
eitdCont["graduation_time"] = graduationTime
}
}
if len(eitdCont) > 0 {
eitdCont["Time"] = time.Now().Unix()
eitdCont["level"] = 3
var oldFamilyCont models.PersonnelEducation
oldFamilyCont.EiteCont(map[string]interface{}{"`id`": perEduContHig.Id}, eitdCont)
}
} else {
var perEduContFirstIsTrue models.PersonnelEducation
highestGormDbIsTrue := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("number = ?", manCont.Number).First(&perEduContFirstIsTrue).Error
if highestGormDbIsTrue == nil {
eitdCont := overallhandle.MapOut()
eitdCont["Time"] = time.Now().Unix()
eitdCont["level"] = 1
var oldFamilyCont models.PersonnelEducation
oldFamilyCont.EiteCont(map[string]interface{}{"`number`": manCont.Number, "level": 3}, eitdCont)
}
perEduContHig.Number = manCont.Number // 员工工号
perEduContHig.Education = manCont.HighestEducation // 学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)"`
perEduContHig.GraduationSchool = manCont.HighestGraduationSchool // 毕业学校"`
perEduContHig.Subject = manCont.HighestSubject // 专业"`
entranceTime := time.Now().Unix()
if manCont.HighestAdmissionTime != "" {
entranceTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestAdmissionTime))
}
perEduContHig.AdmissionTime = entranceTime // 入学时间"`
graduationTime := time.Now().Unix()
if manCont.HighestGraduationTime != "" {
graduationTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestGraduationTime))
}
perEduContHig.GraduationTime = graduationTime // 毕业时间"`
perEduContHig.Time = time.Now().Unix() // 写入时间"`
perEduContHig.AcademicDegree = manCont.HighestAcademicDegree
perEduContHig.Level = 3 // 学历类型(1:普通;2:第一学历;3:最高学历)"`
overall.CONSTANT_DB_HR.Create(&perEduContHig)
}
}
//第一学历
if manCont.FirstGraduationSchool != "" {
//第一学历
var perEduContFirst models.PersonnelEducation
firsthestGormDb := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("number = ? AND graduation_school = ? AND subject = ?", manCont.Number, manCont.FirstGraduationSchool, manCont.FirstSubject)
higErr := firsthestGormDb.First(&perEduContFirst).Error
if higErr == nil {
eitdContFirst := overallhandle.MapOut()
if manCont.FirstEducation != 0 && manCont.FirstEducation != perEduContFirst.Education {
eitdContFirst["education"] = manCont.FirstEducation
}
if manCont.FirstAcademicDegree != 0 && manCont.FirstAcademicDegree != perEduContFirst.AcademicDegree {
eitdContFirst["academic_degree"] = manCont.FirstAcademicDegree
}
if manCont.FirstAdmissionTime != "" {
entranceTimeFirst, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.FirstAdmissionTime))
if entranceTimeFirst != perEduContFirst.AdmissionTime {
eitdContFirst["admission_time"] = entranceTimeFirst
}
}
if manCont.FirstGraduationTime != "" {
graduationTimeFirst, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.FirstGraduationTime))
if graduationTimeFirst != perEduContFirst.GraduationTime {
eitdContFirst["graduation_time"] = graduationTimeFirst
}
}
if len(eitdContFirst) > 0 {
eitdContFirst["Time"] = time.Now().Unix()
eitdContFirst["level"] = 3
var oldFamilyContFirst models.PersonnelEducation
oldFamilyContFirst.EiteCont(map[string]interface{}{"`id`": perEduContFirst.Id}, eitdContFirst)
}
} else {
var perEduContFirstIsTrue models.PersonnelEducation
highestGormDbIsTrue := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("number = ?", manCont.Number).First(&perEduContFirstIsTrue).Error
if highestGormDbIsTrue == nil {
eitdContFirst := overallhandle.MapOut()
eitdContFirst["Time"] = time.Now().Unix()
eitdContFirst["level"] = 1
var oldFamilyContFirst models.PersonnelEducation
oldFamilyContFirst.EiteCont(map[string]interface{}{"`number`": manCont.Number, "level": 1}, eitdContFirst)
}
perEduContFirst.Number = manCont.Number // 员工工号
perEduContFirst.Education = manCont.FirstEducation // 学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)"`
perEduContFirst.GraduationSchool = manCont.FirstGraduationSchool // 毕业学校"`
perEduContFirst.Subject = manCont.FirstSubject // 专业"`
entranceTimeFirst := time.Now().Unix()
if manCont.HighestAdmissionTime != "" {
entranceTimeFirst, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestAdmissionTime))
}
perEduContFirst.AdmissionTime = entranceTimeFirst // 入学时间"`
graduationTimef := time.Now().Unix()
if manCont.HighestGraduationTime != "" {
graduationTimef, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestGraduationTime))
}
perEduContFirst.GraduationTime = graduationTimef // 毕业时间"`
perEduContFirst.Time = time.Now().Unix() // 写入时间"`
perEduContFirst.AcademicDegree = manCont.FirstAcademicDegree
perEduContFirst.Level = 2 // 学历类型(1:普通;2:第一学历;3:最高学历)"`
overall.CONSTANT_DB_HR.Create(&perEduContFirst)
}
}
}

5
api/version1/personnelapi/staff.go

@ -360,8 +360,9 @@ func peopleGaiDong(contData models.Personnel) {
} }
pcrInfo.Reason = reason pcrInfo.Reason = reason
pcrInfo.Position = contData.Position pcrInfo.Position = contData.Position
pcrInfo.JobLevel = strconv.FormatInt(contData.PositionLevel, 10) // pcrInfo.JobLevel = strconv.FormatInt(contData.PositionLevel, 10)
pcrInfo.JobGrade = contData.PositionGrade // pcrInfo.JobLevel = contData.PositionLevel
pcrInfo.JobLevel = contData.PositionGrade
pcrInfo.Company = contData.Company pcrInfo.Company = contData.Company
pcrInfo.Department = contData.Deparment pcrInfo.Department = contData.Deparment
pcrInfo.Adminorg = contData.AdminOrg pcrInfo.Adminorg = contData.AdminOrg

80
api/version1/personnelapi/type.go

@ -142,3 +142,83 @@ type allocationOfRightsToRole struct {
Id string `json:"id"` Id string `json:"id"`
RoleId string `json:"roleid"` RoleId string `json:"roleid"`
} }
//添加员工参数
type addKingdeePersonnel struct {
Number string `json:"number"` //工号1
Name string `json:"name"` //姓名1
Icon string `json:"icon"` //头像
HireType int `json:"hiretype"` //1雇佣类型(1:雇佣入职;2:再入职;3:返聘)
EmpType int `json:"emptype"` //用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职)
Company string `json:"company"` //公司
MainDepartment string `json:"maindepartment"` //主部门
Department []string `json:"department"` //分厂(部室)
AdminOrg string `json:"adminorg"` //工段
Position string `json:"position"` //职位(岗位)1
JobName string `json:"jobname"` //职务
PositionGrade int64 `json:"positiongrade"` //入职等级
//员工副表
IDCardNo string `json:"idcardno"` //身份证号码
IDCardStartTime string `json:"idcardnostarttime"` //身份证有效期开始
IDCardEndTime string `json:"idcardnoendtime"` //身份证有效期结束
IDCardAddress string `json:"idcardnoaddress"` //身份证地址
IDCardIsSued string `json:"idcardissued"` //身份证签发机关
Mobilephone string `json:"mobilephone"` //联系电话
Email string `json:"email"` //电子邮件
Gender int `json:"gender"` //性别
Birthday string `json:"birthday"` //生日
Nation string `json:"nation"` //民族
NativePlace string `json:"nativeplace"` //籍贯
Health int `json:"health"` //健康状况(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废
Maritalstatus int `json:"maritalstatus"` //婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异)
CurrentResidence string `json:"currentresidence"` //现居地
WorkingDate string `json:"workingdate"` //参加工作日期
EntryDate string `json:"entrydate"` //入职日期
ProbationPeriod int `json:"probationperiod"` //试用期(月)
ConfirmationDate string `json:"confirmationdate"` //转正日期
Constellation int `json:"constellation"` //星座(1:白羊座;2:金牛座;3:双子座;4:巨蟹座;5:狮子座;6:处女座;7:天枰座;8:天蝎座;9:射手座;10:摩羯座;11:水瓶座;12:双鱼座)
PoliticalOutlook int `json:"politicaloutlook"` //政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)
//退役军人
Isveterans int `json:"isveterans"` //是否为退役军人(1:是;2:否)
Veteransnumber string `json:"veteransnumber"` //退役证编号
//双职工表
//是否为双职工
Iisdoubleworker int `json:"isdoubleworker"` //是否双职工(1:是;2:否)
SpouseName string `json:"spousename"` //配偶姓名
SpouseCompany string `json:"spousecompany"` //配偶所在公司
SpouseDepartment string `json:"spousedepartment"` //配偶所在部门
SpousePosition string `json:"spouseposition"` //配偶所在岗位
SpouseTel string `json:"spousetel"` //配偶联系方式
//教育经历表
//最高学历
HighestGraduationSchool string `json:"highestschool"` //毕业学校
HighestEducation int `json:"highesteducation"` //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)
HighestSubject string `json:"highestsubject"` //专业
HighestAdmissionTime string `json:"highestadmissiontime"` //入学时间
HighestGraduationTime string `json:"highestgraduationtime"` //毕业时间
HighestAcademicDegree int `json:"highestacademicdegree"` //学位(0:无;1:学士;2:硕士;3:博士)
//第一学历
FirstGraduationSchool string `json:"firstschool"` //毕业学校
FirstEducation int `json:"firsteducation"` //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)
FirstSubject string `json:"firstsubject"` //专业
FirstAdmissionTime string `json:"firstadmissiontime"` //入学时间
FirstGraduationTime string `json:"firstgraduationtime"` //毕业时间
FirstAcademicDegree int `json:"firstacademicdegree"` //学位(0:无;1:学士;2:硕士;3:博士)
//紧急联系人表
//紧急联系人一
UrgentNameOne string `json:"urgentnameone"` //姓名
UrgentRelationshipOne string `json:"urgentrelationshipone"` //与紧急联系人
UrgentMobilephoneOne string `json:"urgentmobilephoneone"` //联系电话
//紧急联系人二
UrgentNameTwo string `json:"urgentnametwo"` //姓名
UrgentRelationshipTwo string `json:"urgentrelationshiptwo"` //与紧急联系人
UrgentMobilephoneTwo string `json:"urgentmobilephonetwo"` //联系电话
//员工家属表
MemberOfFamily []memberOfFamily `json:"memberoffamily"` //家庭成员
}

3
apirouter/personnel/people.go

@ -16,5 +16,8 @@ func (p *PersonnelRoute) InitRouterGroup(route *gin.RouterGroup) {
apiRouter.POST("stafflist", apiHandle.StaffList) //人员列表 apiRouter.POST("stafflist", apiHandle.StaffList) //人员列表
apiRouter.POST("addstaff", apiHandle.AddStaff) //添加人员档案 apiRouter.POST("addstaff", apiHandle.AddStaff) //添加人员档案
apiRouter.POST("allocationofrights", apiHandle.AllocationOfRights) //分配权限 apiRouter.POST("allocationofrights", apiHandle.AllocationOfRights) //分配权限
apiRouter.POST("kingdeehr", apiHandle.Kingdee) //对接金蝶HR系统
} }
} }

BIN
hr_server.exe

Binary file not shown.

2
identification/authentication.go

@ -125,7 +125,7 @@ func Validator() gin.HandlerFunc {
submitTokenMd5Str := submitTokenMd5.Md5EncryptionAlgorithm() submitTokenMd5Str := submitTokenMd5.Md5EncryptionAlgorithm()
if submitTokenMd5Str != clearTokenMd5Str { if submitTokenMd5Str != clearTokenMd5Str {
overallhandle.Result(2004, "对不起!非法令牌!不可访问系统", c) overallhandle.Result(2004, numberMd5, c)
c.Abort() c.Abort()
return return
} }

13
log/202206/20220614.log

File diff suppressed because one or more lines are too long

15
log/202206/20220615.log

File diff suppressed because one or more lines are too long

3
log/202206/20220616.log

File diff suppressed because one or more lines are too long

23
models/double_worker.go

@ -1,9 +1,13 @@
package models package models
import "hr_server/overall" import (
"hr_server/overall"
"strings"
)
//紧急联系人 //双职工
type DoubleWorker struct { type DoubleWorker struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"`
Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;not null;comment:员工工号;index"` Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;not null;comment:员工工号;index"`
Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:姓名"` Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:姓名"`
Company string `json:"company" gorm:"column:company;type:varchar(255) unsigned;default:'';not null;comment:所在公司"` Company string `json:"company" gorm:"column:company;type:varchar(255) unsigned;default:'';not null;comment:所在公司"`
@ -11,14 +15,27 @@ type DoubleWorker struct {
Position string `json:"position" gorm:"column:position;type:varchar(255) unsigned;default:'';not null;comment:所在岗位"` Position string `json:"position" gorm:"column:position;type:varchar(255) unsigned;default:'';not null;comment:所在岗位"`
Tel string `json:"tel" gorm:"column:tel;type:varchar(255) unsigned;default:'';not null;comment:联系方式"` Tel string `json:"tel" gorm:"column:tel;type:varchar(255) unsigned;default:'';not null;comment:联系方式"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"`
State int `json:"state" gorm:"column:state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)`
} }
func (DoubleWorker *DoubleWorker) TableName() string { func (DoubleWorker *DoubleWorker) TableName() string {
return "double_worker" return "double_worker"
} }
//编辑职务分类内容 //编辑双职工内容
func (DoubleWorker *DoubleWorker) EiteCont(whereMap interface{}, saveData interface{}) (err error) { func (DoubleWorker *DoubleWorker) EiteCont(whereMap interface{}, saveData interface{}) (err error) {
err = overall.CONSTANT_DB_HR.Model(&DoubleWorker).Where(whereMap).Updates(saveData).Error err = overall.CONSTANT_DB_HR.Model(&DoubleWorker).Where(whereMap).Updates(saveData).Error
return return
} }
//获取双职工内容
func (cont *DoubleWorker) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}

37
models/duties_class_leve.go

@ -0,0 +1,37 @@
package models
import (
"hr_server/overall"
"strings"
)
//职务信息及类别、等级视图
type DutiesClassLeve struct {
Id int64 `json:"id" gorm:"primaryKey;column:d_id;type:bigint(20) unsigned;not null;comment:Id;index"`
Name string `json:"name" gorm:"column:d_name;type:varchar(255) unsigned;default:'';not null;comment:职务名称"`
Weight int64 `json:"weight" gorm:"column:d_weight;type:bigint(20) unsigned;default:1;not null;comment:权重"`
Number string `json:"number" gorm:"column:d_num;type:varchar(50) unsigned;default:'';not null;comment:编码"`
State int `json:"state" gorm:"column:d_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
KingdeeId string `json:"kingdeeid" gorm:"column:d_king;type:varchar(255) unsigned;default:'';comment:金蝶对照ID"`
ClassId int64 `json:"classid" gorm:"primaryKey;column:c_id;type:bigint(20) unsigned;not null;comment:Id;index"` //职务分类Id
ClassName string `json:"classname" gorm:"column:c_name;type:varchar(255) unsigned;default:'';not null;comment:职务分类名称"`
// LeveId int64 `json:"leveid" gorm:"primaryKey;column:l_id;type:bigint(20) unsigned;not null;comment:Id;index"` //职务等级Id
// LeveNumber string `json:"levenumber" gorm:"column:l_num;type:varchar(50) unsigned;default:'';not null;comment:等级编号"`
// LeveName string `json:"levename" gorm:"column:l_name;type:varchar(255) unsigned;default:'';not null;comment:等级名称"`
}
func (DutiesClassLeve *DutiesClassLeve) TableName() string {
return "duties_class_leve"
}
//获取详细内容
func (cont *DutiesClassLeve) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}

24
models/emergency_contact.go

@ -1,9 +1,13 @@
package models package models
import "hr_server/overall" import (
"hr_server/overall"
"strings"
)
//紧急联系人 //紧急联系人
type EmergencyContact struct { type EmergencyContact struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"`
Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;not null;comment:员工工号;index"` Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;not null;comment:员工工号;index"`
Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:紧急联系人姓名"` Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:紧急联系人姓名"`
Relationship string `json:"relationship" gorm:"column:relationship;type:varchar(255) unsigned;default:'';not null;comment:与紧急联系人关系"` Relationship string `json:"relationship" gorm:"column:relationship;type:varchar(255) unsigned;default:'';not null;comment:与紧急联系人关系"`
@ -21,3 +25,21 @@ func (EmergencyContact *EmergencyContact) EiteCont(whereMap interface{}, saveDat
err = overall.CONSTANT_DB_HR.Model(&EmergencyContact).Where(whereMap).Updates(saveData).Error err = overall.CONSTANT_DB_HR.Model(&EmergencyContact).Where(whereMap).Updates(saveData).Error
return return
} }
//获取行政组织内容
func (cont *EmergencyContact) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}
//根据条件获取总数
func (cont *EmergencyContact) CountCont(whereMap interface{}) (countId int64) {
overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Count(&countId)
return
}

20
models/family_members.go

@ -1,9 +1,13 @@
package models package models
import "hr_server/overall" import (
"hr_server/overall"
"strings"
)
//员工家属 //员工家属
type FamilyMembers struct { type FamilyMembers struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"`
Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;not null;comment:员工工号;index"` Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;not null;comment:员工工号;index"`
Relationship string `json:"relationship" gorm:"column:relation;type:varchar(255) unsigned;default:'';not null;comment:亲属关系"` Relationship string `json:"relationship" gorm:"column:relation;type:varchar(255) unsigned;default:'';not null;comment:亲属关系"`
Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:姓名"` Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:姓名"`
@ -19,8 +23,20 @@ func (FamilyMembers *FamilyMembers) TableName() string {
return "family_members" return "family_members"
} }
//编辑职务分类内容 //编辑员工家属内容
func (FamilyMembers *FamilyMembers) EiteCont(whereMap interface{}, saveData interface{}) (err error) { func (FamilyMembers *FamilyMembers) EiteCont(whereMap interface{}, saveData interface{}) (err error) {
err = overall.CONSTANT_DB_HR.Model(&FamilyMembers).Where(whereMap).Updates(saveData).Error err = overall.CONSTANT_DB_HR.Model(&FamilyMembers).Where(whereMap).Updates(saveData).Error
return return
} }
//获取员工家属内容
func (cont *FamilyMembers) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}

33
models/org_cont_type.go

@ -0,0 +1,33 @@
package models
import (
"hr_server/overall"
"strings"
)
//职务信息及类别、等级视图
type OrgContType struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"`
Number string `json:"number" gorm:"column:number;type:varchar(50) unsigned;default:'';not null;comment:行政编码"`
Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:组织名称"`
Superior int64 `json:"superior" gorm:"column:superior;type:bigint(20) unsigned;default:0;not null;comment:上级ID"`
State int `json:"state" gorm:"column:state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
TypeName string `json:"typename" gorm:"column:typename;type:varchar(255) unsigned;default:'';not null;comment:类型名称"`
Level int64 `json:"level" gorm:"column:level;type:int(5) unsigned;default:1;not null;comment:级别"`
}
func (OrgContType *OrgContType) TableName() string {
return "org_cont_type"
}
//获取详细内容
func (cont *OrgContType) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}

55
models/personarchives.go

@ -0,0 +1,55 @@
package models
import (
"hr_server/overall"
"strings"
)
//员工档案(主)
type PersonArchives struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"`
Number string `json:"number" gorm:"column:number;type:varchar(30) unsigned;not null;comment:员工工号"`
Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:姓名"`
Icon string `json:"icon" gorm:"column:icon;type:varchar(255) unsigned;default:'';not null;comment:头像"`
HireClass int `json:"hireclass" gorm:"column:hire_class;type:tinyint(1) unsigned;default:1;not null;comment:雇佣类型(1:雇佣入职;2:再入职;)"`
EmpType int `json:"emptype" gorm:"column:emp_type;type:tinyint(1) unsigned;default:1;not null;comment:用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职)"`
Company int64 `json:"company" gorm:"column:company;type:bigint(20) unsigned;default:0;not null;comment:入职公司"`
MainDeparment int64 `json:"maindeparment" gorm:"column:maindeparment;type:bigint(20) unsigned;default:0;not null;comment:主部门"`
Deparment string `json:"deparment" gorm:"column:deparment;type:text;comment:部门"`
AdminOrg int64 `json:"adminorg" gorm:"column:admin_org;type:bigint(20) unsigned;default:0;not null;comment:所属行政组织"`
Position int64 `json:"position" gorm:"column:position;type:bigint(20) unsigned;default:0;not null;comment:职位"`
JobClass int64 `json:"jobclass" gorm:"column:job_class;type:bigint(20) unsigned;default:2;not null;comment:职务分类"`
JobId int64 `json:"jobid" gorm:"column:job_id;type:bigint(20) unsigned;default:0;not null;comment:职务"`
JobLeve int64 `json:"jobleve" gorm:"column:job_leve;type:bigint(20) unsigned;default:0;not null;comment:职务等级"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:写入时间"`
EiteTime int64 `json:"eitetime" gorm:"column:eite_time;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"`
Wechat string `json:"wechat" gorm:"column:wechat;type:varchar(255) unsigned;default:'';not null;comment:微信UserId"`
WorkWechat string `json:"workwechat" gorm:"column:work_wechat;type:varchar(255) unsigned;default:'';not null;comment:企业微信UserId"`
State int `json:"state" gorm:"column:state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)`
Key int64 `json:"key" gorm:"column:key;type:bigint(50) unsigned;default:0;not null;comment:key"`
IsAdmin int `json:"isadmin" gorm:"column:is_admin;type:tinyint(1) unsigned;default:1;not null;comment:是否为管理员(1:不是;2:分公司;3:集团管理员;4:超级管`
Password string `json:"password" gorm:"column:password;type:varchar(255) unsigned;default:'';not null;comment:密码"`
Role string `json:"role" gorm:"column:role;type:longtext;comment:角色"`
}
func (PersonArchives *PersonArchives) TableName() string {
return "person_archives"
}
//编辑员工档案
func (PersonArchives *PersonArchives) EiteCont(whereMap interface{}, saveData interface{}) (err error) {
err = overall.CONSTANT_DB_HR.Model(&PersonArchives).Where(whereMap).Updates(saveData).Error
return
}
//获取员工档案
func (cont *PersonArchives) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}

47
models/personnel_change_record.go

@ -4,16 +4,19 @@ import "hr_server/overall"
//人员变动记录 //人员变动记录
type PersonnelChangeRecord struct { type PersonnelChangeRecord struct {
Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;not null;comment:员工工号;index"` Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"`
Type int `json:"type" gorm:"column:type;type:tinyint(1) unsigned;default:1;not null;comment:变动类型(1:雇佣入职;2:再入职;3:职位分配;4:转正;5:停薪留职;6:退休;7:辞退;8:离职)"` Number string `json:"number" gorm:"column:number;type:varchar(30) unsigned;not null;comment:员工工号"`
Type int `json:"type" gorm:"column:type;type:tinyint(1) unsigned;default:1;comment:变动类型(1:雇佣入职;2:再入职;3:职位分配;4:转正;5:停薪留职;6:退休;7:辞退;8:离职)"`
Reason string `json:"reason" gorm:"column:reason;type:text;comment:变动原因"` Reason string `json:"reason" gorm:"column:reason;type:text;comment:变动原因"`
Position int64 `json:"position" gorm:"column:position;type:bigint(20) unsigned;default:0;not null;comment:入职职位"` Position int64 `json:"position" gorm:"column:position;type:bigint(20) unsigned;default:0;comment:职位"`
JobLevel string `json:"joblevel" gorm:"column:job_level;type:varchar(200) unsigned;default:'';not null;comment:入职职层"` JobId int64 `json:"jobid" gorm:"column:job_id;type:bigint(20) unsigned;default:0;comment:职务"`
JobGrade int64 `json:"jobgrade" gorm:"column:job_grade;type:bigint(20) unsigned;default:0;not null;comment:入职职等"` JobLevel int64 `json:"joblevel" gorm:"column:job_level;type:bigint(20) unsigned;default:'';comment:职务等级"`
Company int64 `json:"company" gorm:"column:company;type:bigint(20) unsigned;default:0;not null;comment:入职公司"` JobClass int64 `json:"jobclass" gorm:"column:job_class;type:bigint(20) unsigned;default:0;comment:职务分类"`
Department string `json:"department" gorm:"column:department;type:varchar(255) unsigned;default:0;not null;comment:入职分厂"` Company int64 `json:"company" gorm:"column:company;type:bigint(20) unsigned;default:0;comment:入职公司"`
Adminorg int64 `json:"adminorg" gorm:"column:adminorg;type:bigint(20) unsigned;default:0;not null;comment:入职行政组织"` MainDepartment int64 `json:"maindepartment" gorm:"column:main_department;type:bigint(20) unsigned;default:0;comment:主部门"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:写入时间"` Department string `json:"department" gorm:"column:department;type:varchar(255) unsigned;default:0;comment:入职分厂"`
Adminorg int64 `json:"adminorg" gorm:"column:adminorg;type:bigint(20) unsigned;default:0;comment:入职行政组织"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;comment:写入时间"`
} }
func (PersonnelChangeRecord *PersonnelChangeRecord) TableName() string { func (PersonnelChangeRecord *PersonnelChangeRecord) TableName() string {
@ -25,3 +28,29 @@ func (PersonnelChangeRecord *PersonnelChangeRecord) EiteCont(whereMap interface{
err = overall.CONSTANT_DB_HR.Model(&PersonnelChangeRecord).Where(whereMap).Updates(saveData).Error err = overall.CONSTANT_DB_HR.Model(&PersonnelChangeRecord).Where(whereMap).Updates(saveData).Error
return return
} }
type ManTransferLog struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"`
Number string `json:"number" gorm:"column:number;type:varchar(30) unsigned;not null;comment:员工工号"`
Type int `json:"classtype" gorm:"column:classtype;type:tinyint(1) unsigned;default:1;comment:变动类型(1:雇佣入职;2:再入职;3:职位分配;4:转正;5:停薪留职;6:退休;7:辞退;8:离职)"`
Reason string `json:"reason" gorm:"column:reason;type:text;comment:变动原因"`
Position int64 `json:"position" gorm:"column:position;type:bigint(20) unsigned;default:0;comment:职位"`
JobId int64 `json:"jobid" gorm:"column:job_id;type:bigint(20) unsigned;default:0;comment:职务"`
JobLevel int64 `json:"joblevel" gorm:"column:job_level;type:bigint(20) unsigned;default:'';comment:职务等级"`
JobClass int64 `json:"jobclass" gorm:"column:job_class;type:bigint(20) unsigned;default:0;comment:职务分类"`
Company int64 `json:"company" gorm:"column:company;type:bigint(20) unsigned;default:0;comment:入职公司"`
MainDepartment int64 `json:"maindepartment" gorm:"column:main_department;type:bigint(20) unsigned;default:0;comment:主部门"`
Department string `json:"department" gorm:"column:department;type:varchar(255) unsigned;default:0;comment:入职分厂"`
Adminorg int64 `json:"adminorg" gorm:"column:adminorg;type:bigint(20) unsigned;default:0;comment:入职行政组织"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;comment:写入时间"`
}
func (ManTransferLog *ManTransferLog) TableName() string {
return "man_transfer_log"
}
//编辑职务分类内容
func (ManTransferLog *ManTransferLog) EiteCont(whereMap interface{}, saveData interface{}) (err error) {
err = overall.CONSTANT_DB_HR.Model(&ManTransferLog).Where(whereMap).Updates(saveData).Error
return
}

17
models/personnel_content.go

@ -1,6 +1,9 @@
package models package models
import "hr_server/overall" import (
"hr_server/overall"
"strings"
)
//员工附属信息 //员工附属信息
@ -44,3 +47,15 @@ func (PersonnelContent *PersonnelContent) EiteCont(whereMap interface{}, saveDat
err = overall.CONSTANT_DB_HR.Model(&PersonnelContent).Where(whereMap).Updates(saveData).Error err = overall.CONSTANT_DB_HR.Model(&PersonnelContent).Where(whereMap).Updates(saveData).Error
return return
} }
//获取职务分类内容
func (cont *PersonnelContent) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}

21
models/personnel_education.go

@ -1,10 +1,14 @@
package models package models
import "hr_server/overall" import (
"hr_server/overall"
"strings"
)
//教育经历 //教育经历
type PersonnelEducation struct { type PersonnelEducation struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"`
Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;comment:员工工号;index"` Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;comment:员工工号;index"`
Education int `json:"education" gorm:"column:education;type:int(5) unsigned;default:1;comment:学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)"` Education int `json:"education" gorm:"column:education;type:int(5) unsigned;default:1;comment:学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)"`
GraduationSchool string `json:"graduationschool" gorm:"column:graduation_school;type:varchar(255) unsigned;default:'';comment:毕业学校"` GraduationSchool string `json:"graduationschool" gorm:"column:graduation_school;type:varchar(255) unsigned;default:'';comment:毕业学校"`
@ -13,14 +17,27 @@ type PersonnelEducation struct {
GraduationTime int64 `json:"graduationtime" gorm:"column:graduation_time;type:bigint(20) unsigned;default:0;comment:毕业时间"` GraduationTime int64 `json:"graduationtime" gorm:"column:graduation_time;type:bigint(20) unsigned;default:0;comment:毕业时间"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;comment:写入时间"` Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;comment:写入时间"`
Level int `json:"level" gorm:"column:level;type:tinyint(1) unsigned;default:1;comment:学历类型(1:普通;2:第一学历;3:最高学历)"` Level int `json:"level" gorm:"column:level;type:tinyint(1) unsigned;default:1;comment:学历类型(1:普通;2:第一学历;3:最高学历)"`
AcademicDegree int `json:"academicdegree" gorm:"column:academic_degree;type:tinyint(2) unsigned;default:1;comment:学位(0:无;1:学士;2:硕士;3:博士)"`
} }
func (PersonnelEducation *PersonnelEducation) TableName() string { func (PersonnelEducation *PersonnelEducation) TableName() string {
return "personnel_education" return "personnel_education"
} }
//编辑职务分类内容 //编辑教育经历内容
func (PersonnelEducation *PersonnelEducation) EiteCont(whereMap interface{}, saveData interface{}) (err error) { func (PersonnelEducation *PersonnelEducation) EiteCont(whereMap interface{}, saveData interface{}) (err error) {
err = overall.CONSTANT_DB_HR.Model(&PersonnelEducation).Where(whereMap).Updates(saveData).Error err = overall.CONSTANT_DB_HR.Model(&PersonnelEducation).Where(whereMap).Updates(saveData).Error
return return
} }
//获取教育经历内容
func (cont *PersonnelEducation) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}

3
models/position_level.go

@ -8,10 +8,11 @@ type PositionLevel struct {
Number string `json:"number" gorm:"column:number;type:varchar(50) unsigned;default:'';not null;comment:等级编号"` Number string `json:"number" gorm:"column:number;type:varchar(50) unsigned;default:'';not null;comment:等级编号"`
Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:等级名称"` Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:等级名称"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"` Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"`
PositionId int64 `json:"positionid" gorm:"column:positionid;type:bigint(20) unsigned;default:0;not null;comment:归属哪个职务"`
} }
func (PositionLevel *PositionLevel) TableName() string { func (PositionLevel *PositionLevel) TableName() string {
return "personnel_change_record" return "position_level"
} }
//编辑职务分类内容 //编辑职务分类内容

28
overall/overallhandle/overall_handle.go

@ -481,3 +481,31 @@ func JudgeInMap(id int64, ary []int64) bool {
} }
return false return false
} }
//判断元素是否在切片中
func IsInTrue[T GenericityVariable](key T, keyAry []T) (isTrue bool) {
isTrue = false
for _, v := range keyAry {
if v == key {
return true
}
}
return
}
//获取两个切片得差集
func DifferenceSet[T GenericityVariable](one, two []T) []T {
var three []T
temp := map[T]struct{}{}
for _, val := range two {
if _, ok := temp[val]; !ok {
temp[val] = struct{}{}
}
}
for _, val := range one {
if _, ok := temp[val]; !ok {
three = append(three, val)
}
}
return three
}

5
overall/overallhandle/type.go

@ -56,3 +56,8 @@ type MenuPermitThree struct {
models.SystemMenuOperation models.SystemMenuOperation
Child []MenuPermitThree `json:"child"` Child []MenuPermitThree `json:"child"`
} }
//泛型基础变量类型
type GenericityVariable interface {
int | int8 | int16 | int32 | int64 | string
}

Loading…
Cancel
Save