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) StaffList(c *gin.Context) { var requestData peopleList c.ShouldBindJSON(&requestData) if requestData.Page < 0 { requestData.Page = 1 } if requestData.PageSize < 0 { requestData.PageSize = 10 } // gormDb := overall.CONSTANT_DB_HR.Model(&models.JobClass{}).Select("").Joins("left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type") // var personnelModels models.Personnel // gormDb := overall.CONSTANT_DB_HR.Table(fmt.Sprintf("%s p", personnelModels.TableName())).Select("p.*,pc.mobilephone,pc.gender,pc.isdoubleworker,pc.isveterans,pc.entrydate,pc.probationperiod,pc.planformaldate").Joins("left join personnel_content as pc on pc.number = p.number") //SELECT * FROM `man_cont` WHERE `position` = 727 AND `emp_type` IN (1,2,3,4,5,6,7,8,9,10) AND `state` = 1 ORDER BY `company` ASC,`maindeparment` ASC,`admin_org` ASC,`position` ASC LIMIT 20 // sqlStrList := "SELECT * FROM `man_cont`" // sqlStrCount := "SELECT count(*) FROM `man_cont`" sqlStr := "WHERE `state` = 1" var personnelModels []models.ManCont gormDb := overall.CONSTANT_DB_HR.Model(&models.ManCont{}) if requestData.Number != "" { gormDb = gormDb.Where("`number` LIKE ?", "%"+requestData.Number+"%") sqlStr = fmt.Sprintf("%v AND `number` LIKE %v", sqlStr, requestData.Number) } if requestData.Name != "" { gormDb = gormDb.Where("`name` LIKE ?", "%"+requestData.Name+"%") sqlStr = fmt.Sprintf("%v AND `name` LIKE %v", sqlStr, requestData.Name) } if requestData.HireClass != 0 { gormDb = gormDb.Where("`hire_class` = ?", requestData.HireClass) sqlStr = fmt.Sprintf("%v AND `hire_class` = %v", sqlStr, requestData.HireClass) } if requestData.Company != 0 { gormDb = gormDb.Where("`company` = ?", requestData.Company) sqlStr = fmt.Sprintf("%v AND `company` = %v", sqlStr, requestData.Company) } if requestData.Deparment != "" { gormDb = gormDb.Where("FIND_IN_SET(?,p.`deparment`)", requestData.Deparment) sqlStr = fmt.Sprintf("%v AND `maindeparment` = %v", sqlStr, requestData.Deparment) } if requestData.AdminOrg != 0 { gormDb = gormDb.Where("`admin_org` = ?", requestData.AdminOrg) sqlStr = fmt.Sprintf("%v AND `admin_org` = %v", sqlStr, requestData.AdminOrg) } if requestData.Position != 0 { gormDb = gormDb.Where("`position` = ?", requestData.Position) sqlStr = fmt.Sprintf("%v AND `position` = %v", sqlStr, requestData.Position) } if requestData.EmpType != 0 { gormDb = gormDb.Where("`emp_type` = ?", requestData.EmpType) sqlStr = fmt.Sprintf("%v AND `emp_type` = %v", sqlStr, requestData.EmpType) } else { // gormDb = gormDb.Where("`emp_type` IN ?", overall.EmployeeStatusIng) gormDb = gormDb.Where("`emp_type` BETWEEN ? AND ?", 1, 10) if len(overall.EmployeeStatusIng) > 0 { var empId []string for i := 0; i < len(overall.EmployeeStatusIng); i++ { overEmpId := strconv.Itoa(overall.EmployeeStatusIng[i]) if overallhandle.IsInTrue[string](overEmpId, empId) == false { empId = append(empId, overEmpId) } } sqlStr = fmt.Sprintf("%v AND `emp_type` IN (%v)", sqlStr, strings.Join(empId, ",")) } } if requestData.Role != "" { gormDb = gormDb.Where("FIND_IN_SET(?,`role`)", requestData.Role) sqlStr = fmt.Sprintf("%v AND FIND_IN_SET(%v,`role`)", sqlStr, requestData.Role) } gormDb = gormDb.Where("`state` = 1") var total int64 totalErr := gormDb.Count(&total).Error if totalErr != nil { total = 0 } var positionAry []peopleOutList errGorm := gormDb.Order("`company` ASC,`maindeparment` ASC,`admin_org` ASC,`position` ASC").Limit(requestData.PageSize).Offset(overallhandle.LimitPage(requestData.Page, requestData.PageSize)).Find(&personnelModels).Error //原生查询 // selectSqlStr := fmt.Sprintf("%v %v", sqlStrList, sqlStr) // selectSqlStrCount := fmt.Sprintf("%v %v", sqlStrCount, sqlStr) // errGorm := overall.CONSTANT_DB_HR.Raw(selectSqlStr).Scan(&personnelModels).Error // totalErr := overall.CONSTANT_DB_HR.Raw(selectSqlStrCount).Scan(&total).Error // if totalErr != nil { // total = 0 // } // fmt.Printf("personnelModels-------------------->%v---------------->%v---------------->%v\n", total, totalErr, personnelModels) for _, v := range personnelModels { var manInCont peopleOutList manInCont.Id = v.Id manInCont.Number = v.Number //员工工号"` manInCont.Name = v.Name //姓名"` manInCont.Icon = v.Icon //头像"` manInCont.HireClass = v.HireClass //雇佣类型(1:雇佣入职;2:再入职;)"` manInCont.EmpType = v.EmpType // 用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职)"` manInCont.Company = v.Company //入职公司"` manInCont.MainDeparment = v.MainDeparment //主部门"` manInCont.SunMainDeparment = v.SunMainDeparment //二级主部门"` manInCont.Deparment = v.Deparment //部门"` manInCont.AdminOrg = v.AdminOrg //所属行政组织"` manInCont.TeamId = v.TeamId //班组"` manInCont.Position = v.Position //职位"` manInCont.JobClass = v.JobClass //职务分类"` manInCont.JobId = v.JobId //职务"` manInCont.JobLeve = v.JobLeve //职务等级"` manInCont.Time = v.Time //写入时间"` manInCont.EiteTime = v.EiteTime //编辑时间"` manInCont.Wechat = v.Wechat //微信UserId"` manInCont.WorkWechat = v.WorkWechat //企业微信UserId"` manInCont.State = v.State //状态(1:启用;2:禁用;3:删除)` manInCont.Key = v.Key //key"` manInCont.IsAdmin = v.IsAdmin //是否为管理员(1:不是;2:分公司;3:集团管理员;4:超级管` manInCont.Password = v.Password //密码"` manInCont.Role = v.Role //角色"` manInCont.Idcardno = v.Idcardno //身份证号"` manInCont.Passportno = v.Passportno //护照号码"` manInCont.Globalroaming = v.Globalroaming //国际区号"` manInCont.Mobilephone = v.Mobilephone //手机号码"` manInCont.Email = v.Email //电子邮件"` manInCont.Gender = v.Gender //性别(1:男性;2:女性;3:中性)"` manInCont.Birthday = v.Birthday //debirthday"` manInCont.Myfolk = v.Myfolk //民族"` manInCont.Nativeplace = v.Nativeplace //籍贯"` manInCont.Idcardstartdate = v.Idcardstartdate //身份证有效期开始"` manInCont.Idcardenddate = v.Idcardenddate //身份证有效期结束"` manInCont.Idcardaddress = v.Idcardaddress //身份证地址"` manInCont.IdcardIssued = v.IdcardIssued //身份证签发机关"` manInCont.Health = v.Health //健康状况(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废)"` manInCont.Maritalstatus = v.Maritalstatus //婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异)"` manInCont.Internaltelephone = v.Internaltelephone //内线电话"` manInCont.Currentresidence = v.Currentresidence //现居住地址"` manInCont.Constellation = v.Constellation //星座(1:白羊座;2:金牛座;3:双子座;4:巨蟹座;5:狮子座;6:处女座;7:天枰座;8:天蝎座;9:射手座;10:摩羯座;11:水瓶座;12:双鱼座)"` manInCont.Isdoubleworker = v.Isdoubleworker //是否双职工(1:是;2:否)"` manInCont.Isveterans = v.Isveterans //是否为退役军人(1:是;2:否)"` manInCont.Veteransnumber = v.Veteransnumber //退役证编号"` manInCont.Jobstartdate = v.Jobstartdate //参加工作日期"` manInCont.Entrydate = v.Entrydate //入职日期"` manInCont.Probationperiod = v.Probationperiod //试用期"` manInCont.Planformaldate = v.Planformaldate //预计转正日期"` manInCont.PoliticalOutlook = v.PoliticalOutlook //政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)"` // positionAry[i].KeyStr = strconv.FormatInt(positionAry[i].Key, 10) // var getSpur models.Position // getWhe := overallhandle.MapOut() // getWhe["id"] = v.Position // getSpur.GetCont(getWhe, "name") // positionAry[i].PositionName = getSpur.Name // var getSpurDepart models.AdministrativeOrganization // getWheDepart := overallhandle.MapOut() // getWheDepart["id"] = v.Company // getSpurDepart.GetCont(getWheDepart, "name") // positionAry[i].CompanyName = getSpurDepart.Name // //获取部门 // departmentAry := strings.Split(v.Deparment, ",") // if len(departmentAry) > 0 { // var departCont []getDepartmentInfo // departErr := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("id,number,name").Where("`id` IN ?", departmentAry).Order("`organization_type` ASC").Find(&departCont).Error // if departErr == nil { // var departNameAry []string // for _, d_v := range departCont { // departNameAry = append(departNameAry, d_v.Name) // } // if len(departNameAry) > 0 { // positionAry[i].DeparmentName = strings.Join(departNameAry, " ") // } // } // } positionAry = append(positionAry, manInCont) } if errGorm != nil { overallhandle.Result(105, errGorm, c) } else { overallhandle.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(positionAry)), positionAry, c) } } // 添加员工 func (s *StaffApi) AddStaff(c *gin.Context) { var requestData addPersonnel c.ShouldBindJSON(&requestData) if requestData.Number == "" { overallhandle.Result(1, requestData.Number, c, "工号不能为空!") return } if requestData.Name == "" { overallhandle.Result(1, requestData.Name, c, "姓名不能为空!") return } if requestData.Gender == 0 { requestData.Gender = 1 } if requestData.HireType == 0 { requestData.HireType = 1 } if requestData.PoliticalOutlook == 0 { requestData.PoliticalOutlook = 1 } if requestData.AdminOrg == 0 { overallhandle.Result(1, requestData.Position, c, "请选择员工归属行政组织!") return } // if len(requestData.Department) < 1 { // overallhandle.Result(1, requestData.Department, c, "请您选择该员工归属哪个分厂(部室)!") // return // } if requestData.Position == 0 { overallhandle.Result(1, requestData.Position, c, "请分配员工职位(岗位)!") return } if requestData.EmpType == 0 { requestData.EmpType = 2 } if requestData.PositionGrade == 0 { overallhandle.Result(1, requestData.PositionGrade, c, "请分配员入职等级!") return } if requestData.ProbationPeriod == 0 { requestData.ProbationPeriod = 3 } if requestData.Constellation == 0 { requestData.Constellation = 1 } if requestData.Health == 0 { requestData.Health = 2 } if requestData.Maritalstatus == 0 { requestData.Maritalstatus = 1 } if requestData.Iisdoubleworker == 0 { requestData.Iisdoubleworker = 2 } else { if requestData.Iisdoubleworker == 1 { if len(requestData.DoubleWorkerList) < 0 { overallhandle.Result(1, requestData.DoubleWorkerList, c, "请输入配偶信息!") return } } } if requestData.Isveterans == 0 { requestData.Isveterans = 2 } else { if requestData.Isveterans == 1 && requestData.Veteransnumber == "" { overallhandle.Result(1, requestData.Veteransnumber, c, "请输入退役证编号!") return } } if requestData.Password == "" && requestData.EmpType != 9 { requestData.Password = overall.CONSTANT_CONFIG.Appsetup.DefaultPassword } //员工档案主 var staffInfo models.PersonArchives //判断工号是存在 whereAry := overallhandle.MapOut() whereAry["number"] = requestData.Number if judgeNoErr := staffInfo.GetCont(whereAry, "number"); judgeNoErr == nil { overallhandle.Result(1, requestData, c, "该工号已经被使用!请不要重复使用!") return } staffInfo.Number = requestData.Number staffInfo.Name = requestData.Name staffInfo.Icon = requestData.Icon staffInfo.HireClass = requestData.HireType staffInfo.EmpType = requestData.EmpType // mainDepartmentId, _ := strconv.ParseInt(requestData.MainDepartment, 10, 64) _, companyId, departmentId, sunDepartId, _ := overallhandle.GetOrgStructure(requestData.AdminOrg) staffInfo.Company = companyId staffInfo.MainDeparment = departmentId staffInfo.SunMainDeparment = sunDepartId // staffInfo.Deparment = strings.Join(requestData.Department, ",") staffInfo.AdminOrg = requestData.AdminOrg teamIdInt, _ := strconv.ParseInt(requestData.Team, 10, 64) staffInfo.TeamId = teamIdInt staffInfo.Position = requestData.Position //获取职务信息 var postDuitesCont models.PostDutiesJob jobErr := postDuitesCont.GetCont(map[string]interface{}{"id": requestData.Position}, "duties") // jobCont, jobErr := getJobInfo(requestData.Position) if jobErr == nil { staffInfo.JobClass = postDuitesCont.JobType staffInfo.JobId = postDuitesCont.Duties } staffInfo.JobLeve = requestData.PositionGrade staffInfo.Time = time.Now().Unix() staffInfo.EiteTime = time.Now().Unix() staffInfo.State = 1 // staffInfo.Password = requestData.Password if requestData.Password != "" { var md5JiaMi overallhandle.Md5Encryption md5JiaMi.Md5EncryptionInit(requestData.Password) md5Token := md5JiaMi.Md5EncryptionAlgorithm() staffInfo.Password = md5Token } manKeyNum := overallhandle.TableNumber() staffInfo.Key = manKeyNum staffInfo.IsAdmin = 1 staffInfo.Role = "" peopleMasterErr := overall.CONSTANT_DB_HR.Create(&staffInfo).Error if peopleMasterErr != nil { overallhandle.Result(104, staffInfo, c) return } //员工档案附表 synPro.Add(1) go staffInfoCont(manKeyNum, requestData) //双职工 if requestData.Iisdoubleworker == 1 { synPro.Add(1) go doubleWorkerStaff(manKeyNum, requestData.Number, requestData.DoubleWorkerList) } //人员变动记录 // synPro.Add(1) // go peopleGaiDong(staffInfo) //教育经历 if len(requestData.EducationalExperience) > 0 { synPro.Add(1) go eduExperience(manKeyNum, requestData.Number, requestData.EducationalExperience) } //紧急联系人 if len(requestData.EmergencyContact) > 0 { synPro.Add(1) go emeContact(manKeyNum, requestData.Number, requestData.EmergencyContact) } //家庭成员 if len(requestData.MemberOfFamily) > 0 { synPro.Add(1) go familyPeople(manKeyNum, requestData.Number, requestData.MemberOfFamily) } //工作履历 if len(requestData.WorkHistoryList) > 0 { synPro.Add(1) go workHistoryLog(manKeyNum, requestData.Number, requestData.WorkHistoryList) } //公司内部工作履历 if len(requestData.InsideWorkHistory) > 0 { synPro.Add(1) go workInsideHistoryLog(manKeyNum, requestData.Number, requestData.InsideWorkHistory) } synPro.Wait() overallhandle.Result(0, staffInfo, c) } // 获取职务相关属性 func getJobInfo(jobId int64) (cont jobAttber, err error) { var positionInfo models.Position err = overall.CONSTANT_DB_HR.Model(&positionInfo).Select("position.id,position.number,position.name,position.person_in_charge,d.id as dutid,d.name as dutname,d.number as dutnumber,j.id as jobid,j.name as jobname").Joins("left join duties as d on d.id = position.duties").Joins("left join job_class as j on j.id = d.job_type").Where("`position`.`id` = ?", jobId).First(&cont).Error return } // 员工档案详情 func staffInfoCont(manKeyNum int64, contData addPersonnel) { defer synPro.Done() var staffAttribute models.PersonnelContent contErr := staffAttribute.GetCont(map[string]interface{}{"`key`": manKeyNum}) if contErr == nil { saveData := overallhandle.MapOut() if contData.Passportno != "" && contData.Passportno != staffAttribute.Passportno { saveData["passportno"] = contData.Passportno } if contData.Globalroaming != "" && contData.Globalroaming != staffAttribute.Globalroaming { saveData["globalroaming"] = contData.Globalroaming } if contData.IDCardNo != "" && contData.IDCardNo != staffAttribute.Idcardno { saveData["idcardno"] = contData.IDCardNo } if contData.IDCardStartTime != "" { idCardStarTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.IDCardStartTime)) if idCardStarTime != staffAttribute.Idcardstartdate { saveData["idcardstartdate"] = idCardStarTime } } if contData.IDCardEndTime != "" { idCardEndTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.IDCardEndTime)) if idCardEndTime != staffAttribute.Idcardenddate { saveData["idcardenddate"] = idCardEndTime } } if contData.IDCardAddress != "" && contData.IDCardAddress != staffAttribute.Idcardaddress { saveData["idcardaddress"] = contData.IDCardAddress } if contData.IDCardIsSued != "" && contData.IDCardIsSued != staffAttribute.IdcardIssued { saveData["idcardIssued"] = contData.IDCardIsSued } if contData.Mobilephone != "" && contData.Mobilephone != staffAttribute.Mobilephone { saveData["mobilephone"] = contData.Mobilephone } if contData.Email != "" && contData.Email != staffAttribute.Email { saveData["email"] = contData.Email } if contData.Gender != 0 && contData.Gender != staffAttribute.Gender { saveData["gender"] = contData.Gender } if contData.Birthday != "" { brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.Birthday)) if brrthday != staffAttribute.Birthday { saveData["birthday"] = brrthday } } if contData.Nation != "" && contData.Nation != staffAttribute.Myfolk { saveData["myfolk"] = contData.Nation } if contData.NativePlace != "" && contData.NativePlace != staffAttribute.Nativeplace { saveData["nativeplace"] = contData.NativePlace } if contData.Health != 0 && contData.Health != staffAttribute.Health { saveData["health"] = contData.Health } if contData.Maritalstatus != 0 && contData.Maritalstatus != staffAttribute.Maritalstatus { saveData["maritalstatus"] = contData.Maritalstatus } if contData.CurrentResidence != "" && contData.CurrentResidence != staffAttribute.Currentresidence { saveData["currentresidence"] = contData.CurrentResidence } if contData.Constellation != 0 && contData.Constellation != staffAttribute.Constellation { saveData["constellationing"] = contData.Constellation } if contData.Iisdoubleworker != 0 && contData.Iisdoubleworker != staffAttribute.Isdoubleworker { saveData["isdoubleworker"] = contData.Iisdoubleworker // eidtDoubleWorker(contData, contData.Iisdoubleworker) doubleWorkerStaff(manKeyNum, staffAttribute.Number, contData.DoubleWorkerList) } if contData.Isveterans != 0 && contData.Isveterans != staffAttribute.Isveterans { saveData["isveterans"] = contData.Isveterans if contData.Isveterans == 1 { if contData.Veteransnumber != "" && contData.Veteransnumber != staffAttribute.Veteransnumber { saveData["veteransnumber"] = contData.Veteransnumber } } else { saveData["veteransnumber"] = "" } } if contData.WorkingDate != "" { workInData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.WorkingDate)) if workInData != staffAttribute.Jobstartdate { saveData["jobstartdate"] = workInData } } if contData.EntryDate != "" { entryData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.EntryDate)) if entryData != staffAttribute.Entrydate { saveData["entrydate"] = entryData } } if contData.ProbationPeriod != 0 && contData.ProbationPeriod != staffAttribute.Probationperiod { saveData["probationperiod"] = contData.ProbationPeriod entryData := staffAttribute.Entrydate if contData.EntryDate != "" { entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.EntryDate)) } planformalData := overallhandle.GetFutureMonthTime(entryData, contData.ProbationPeriod, 2) saveData["planformaldate"] = planformalData } if contData.ConfirmationDate != "" { planformalData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.ConfirmationDate)) saveData["planformaldate"] = planformalData } if contData.PoliticalOutlook != 0 && contData.PoliticalOutlook != staffAttribute.PoliticalOutlook { saveData["political_outlook"] = contData.PoliticalOutlook } if len(saveData) > 0 { saveData["`time`"] = time.Now().Unix() staffAttribute.EiteCont(map[string]interface{}{"`key`": staffAttribute.Key}, saveData) } } else { staffAttribute.Key = manKeyNum staffAttribute.Number = contData.Number staffAttribute.Passportno = contData.Passportno staffAttribute.Globalroaming = contData.Globalroaming staffAttribute.Idcardno = contData.IDCardNo staffAttribute.Mobilephone = contData.Mobilephone staffAttribute.Email = contData.Email staffAttribute.Gender = contData.Gender brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.Birthday)) staffAttribute.Birthday = brrthday staffAttribute.Myfolk = contData.Nation staffAttribute.Nativeplace = contData.NativePlace idCardStarTime := time.Now().Unix() if contData.IDCardStartTime != "" { idCardStarTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.IDCardStartTime)) } staffAttribute.Idcardstartdate = idCardStarTime //身份证有效期开始 idCardEndTime := time.Now().Unix() if contData.IDCardEndTime != "" { idCardEndTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.IDCardEndTime)) } staffAttribute.Idcardenddate = idCardEndTime //身份证有效期结束 staffAttribute.Idcardaddress = contData.IDCardAddress //身份证地址 staffAttribute.IdcardIssued = contData.IDCardIsSued //身份证签发机关 staffAttribute.Health = contData.Health staffAttribute.Maritalstatus = contData.Maritalstatus staffAttribute.Internaltelephone = "" staffAttribute.Currentresidence = contData.CurrentResidence staffAttribute.Time = time.Now().Unix() staffAttribute.Constellation = contData.Constellation staffAttribute.Isdoubleworker = contData.Iisdoubleworker staffAttribute.Isveterans = contData.Isveterans staffAttribute.Veteransnumber = contData.Veteransnumber workInData := time.Now().Unix() if contData.WorkingDate != "" { workInData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.WorkingDate)) } staffAttribute.Jobstartdate = workInData entryData := time.Now().Unix() if contData.EntryDate != "" { entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.EntryDate)) } staffAttribute.Entrydate = entryData staffAttribute.Probationperiod = contData.ProbationPeriod planformalData := time.Now().Unix() if contData.ConfirmationDate != "" { planformalData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.ConfirmationDate)) } else { planformalData = overallhandle.GetFutureMonthTime(entryData, contData.ProbationPeriod, 2) } staffAttribute.Planformaldate = planformalData staffAttribute.PoliticalOutlook = contData.PoliticalOutlook overall.CONSTANT_DB_HR.Create(&staffAttribute) } } // 双职工 func doubleWorkerStaff(manKeyNum int64, numStr string, dobleMan []DoubleWorkerInFo) { defer synPro.Done() var dwManAry []models.DoubleWorker dwManAryErr := overall.CONSTANT_DB_HR.Where("`key` = ?", manKeyNum).Find(&dwManAry).Error if dwManAryErr == nil { var eidtIint []int for i, v := range dobleMan { var dwManInfo models.DoubleWorker dwInFoErr := dwManInfo.GetCont(map[string]interface{}{"`key`": manKeyNum, "`name`": v.Name}) if dwInFoErr == nil { eidtIint = append(eidtIint, i) saveData := overallhandle.MapOut() if v.Number != "" && v.Number != dwManInfo.Number { saveData["number"] = v.Number } if v.Company != "" && v.Company != dwManInfo.Company { saveData["company"] = v.Company } if v.Department != "" && v.Department != dwManInfo.Department { saveData["department"] = v.Department } if v.Position != "" && v.Position != dwManInfo.Position { saveData["position"] = v.Position } if v.Mobilephone != "" && v.Mobilephone != dwManInfo.Tel { saveData["tel"] = v.Mobilephone } if dwManInfo.State != 1 { saveData["state"] = 1 } if len(saveData) > 0 { saveData["`time`"] = time.Now().Unix() dwManInfo.EiteCont(map[string]interface{}{"`id`": dwManInfo.Id}, saveData) } } } } else { var doublePeopleInset []models.DoubleWorker if len(dobleMan) > 0 { for _, v := range dobleMan { var doublePeople models.DoubleWorker doublePeople.Key = manKeyNum doublePeople.Number = v.Number doublePeople.Name = v.Name doublePeople.Company = v.Company doublePeople.Department = v.Department doublePeople.Position = v.Position doublePeople.Tel = v.Mobilephone doublePeople.Time = time.Now().Unix() doublePeopleInset = append(doublePeopleInset, doublePeople) } } if len(doublePeopleInset) > 0 { overall.CONSTANT_DB_HR.Create(&doublePeopleInset) } } } // 人员变动记录 func peopleGaiDong(contData models.Personnel) { defer synPro.Done() var pcrInfo models.PersonnelChangeRecord pcrInfo.Number = contData.Number pcrInfo.Type = contData.HireClass reason := "" switch contData.HireClass { case 1: reason = "雇佣入职" case 2: reason = "再入职" case 3: reason = "职位分配" case 4: reason = "转正" case 5: reason = "停薪留职" case 6: reason = "退休" case 7: reason = "辞退" case 8: reason = "离职" default: reason = "" } pcrInfo.Reason = reason pcrInfo.Position = contData.Position // pcrInfo.JobLevel = strconv.FormatInt(contData.PositionLevel, 10) // pcrInfo.JobLevel = contData.PositionLevel pcrInfo.JobLevel = contData.PositionGrade pcrInfo.Company = contData.Company pcrInfo.Department = contData.Deparment pcrInfo.Adminorg = contData.AdminOrg pcrInfo.Time = time.Now().Unix() overall.CONSTANT_DB_HR.Create(&pcrInfo) } // 教育经历 func eduExperience(manKeyNum int64, number string, eduExpAry []educationalExperience) { defer synPro.Done() var oldEduExp []models.PersonnelEducation oldEduExpErr := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Select("`id`,`graduation_school`,`subject`,`education`").Where("`key` = ?", manKeyNum).Find(&oldEduExp).Error if oldEduExpErr == nil { var eduExpAryI []int for i, v := range eduExpAry { for _, ov := range oldEduExp { if v.GraduationSchool == ov.GraduationSchool && v.Subject == ov.Subject && v.Education == ov.Education { eduExpAryI = append(eduExpAryI, i) eidtCont := overallhandle.MapOut() if v.AdmissionTime != "" { insetTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.AdmissionTime)) if ov.AdmissionTime != insetTime { eidtCont["admission_time"] = insetTime } } if v.GraduationTime != "" { insetEndTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.GraduationTime)) if ov.GraduationTime != insetEndTime { eidtCont["graduation_time"] = insetEndTime } } if v.AcademicDegree != strconv.Itoa(ov.AcademicDegree) { acdInt, _ := strconv.Atoi(v.AcademicDegree) eidtCont["graduation_time"] = acdInt } if v.Level != strconv.Itoa(ov.Level) { acdLeveInt, _ := strconv.Atoi(v.Level) eidtCont["level"] = acdLeveInt } if ov.State != 1 { eidtCont["state"] = 1 } if len(eidtCont) > 0 { eidtCont["time"] = time.Now().Unix() var eidtPerEduCont models.PersonnelEducation eidtPerEduCont.EiteCont(map[string]interface{}{"`id`": ov.Id}, eidtCont) } } } } if len(eduExpAryI) < len(eduExpAry) { var leaAddExp []models.PersonnelEducation for ei, ev := range eduExpAry { if overallhandle.IsInTrue[int](ei, eduExpAryI) == false { var leaExpInfo models.PersonnelEducation leaExpInfo.Key = manKeyNum leaExpInfo.Number = number leaExpInfo.Education = ev.Education leaExpInfo.GraduationSchool = ev.GraduationSchool leaExpInfo.Subject = ev.Subject admissionTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", ev.AdmissionTime)) leaExpInfo.AdmissionTime = admissionTime graduationTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", ev.GraduationTime)) leaExpInfo.GraduationTime = graduationTime leaExpInfo.Time = time.Now().Unix() if ev.AcademicDegree != "" { acdInt, _ := strconv.Atoi(ev.AcademicDegree) leaExpInfo.Level = acdInt } leaExpInfo.State = 1 leaAddExp = append(leaAddExp, leaExpInfo) } } if len(leaAddExp) > 0 { overall.CONSTANT_DB_HR.Create(&leaAddExp) } } } else { //不存在教育经历,进行新增 var leaExp []models.PersonnelEducation maxLevel := 1 for eei, eev := range eduExpAry { if maxLevel < eev.Education { maxLevel = eev.Education } var leaExpInfo models.PersonnelEducation leaExpInfo.Key = manKeyNum leaExpInfo.Number = number leaExpInfo.Education = eev.Education leaExpInfo.GraduationSchool = eev.GraduationSchool leaExpInfo.Subject = eev.Subject admissionTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", eev.AdmissionTime)) leaExpInfo.AdmissionTime = admissionTime graduationTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", eev.GraduationTime)) leaExpInfo.GraduationTime = graduationTime leaExpInfo.Time = time.Now().Unix() if eei == 0 { leaExpInfo.Level = 2 } leaExp = append(leaExp, leaExpInfo) } //设定最高学历 if len(leaExp) > 1 { for mei, maxEdv := range leaExp { if maxEdv.Education != 2 && maxEdv.Education == maxLevel { leaExp[mei].Level = 3 } } } if len(leaExp) > 0 { overall.CONSTANT_DB_HR.Create(&leaExp) } } } // 紧急联系人 func emeContact(manKeyNum int64, number string, contAry []emergencyContact) { defer synPro.Done() var emerContList []models.EmergencyContact emerContErr := overall.CONSTANT_DB_HR.Where("`key` = ?", manKeyNum).Find(&emerContList).Error if emerContErr == nil { var eidtIint []int for i, v := range contAry { for _, emv := range emerContList { if v.Name == emv.Name { eidtIint = append(eidtIint, i) saveData := overallhandle.MapOut() if v.Relationship != "" && v.Relationship != emv.Relationship { saveData["relationship"] = v.Relationship } if v.Mobilephone != "" && v.Mobilephone != emv.Tel { saveData["tel"] = v.Mobilephone } if emv.State != 1 { saveData["state"] = 1 } if len(saveData) > 0 { saveData["time"] = time.Now().Unix() var eidtEmerData models.EmergencyContact eidtEmerData.EiteCont(map[string]interface{}{"`id`": emv.Id}, saveData) } } } } if len(eidtIint) < len(contAry) { var emerContAry []models.EmergencyContact for ci, cv := range contAry { if overallhandle.IsInTrue[int](ci, eidtIint) == false { var emerInfo models.EmergencyContact emerInfo.Key = manKeyNum emerInfo.Number = number emerInfo.Name = cv.Name emerInfo.Relationship = cv.Relationship emerInfo.Tel = cv.Mobilephone emerInfo.Time = time.Now().Unix() emerInfo.State = 1 emerContAry = append(emerContAry, emerInfo) } } if len(emerContAry) > 0 { overall.CONSTANT_DB_HR.Create(&emerContAry) } } } else { var emerContAry []models.EmergencyContact for _, emev := range contAry { var emerInfo models.EmergencyContact emerInfo.Key = manKeyNum emerInfo.Number = number emerInfo.Name = emev.Name emerInfo.Relationship = emev.Relationship emerInfo.Tel = emev.Mobilephone emerInfo.Time = time.Now().Unix() emerInfo.State = 1 emerContAry = append(emerContAry, emerInfo) } if len(emerContAry) > 0 { overall.CONSTANT_DB_HR.Create(&emerContAry) } } } // 家庭成员 func familyPeople(manKeyNum int64, number string, contAry []memberOfFamily) { defer synPro.Done() var familyList []models.FamilyMembers fllErr := overall.CONSTANT_DB_HR.Where("key = ?", manKeyNum).Find(&familyList).Error if fllErr == nil { var eidtIint []int for i, v := range contAry { for _, fv := range familyList { if v.Name == fv.Name { eidtIint = append(eidtIint, i) saveData := overallhandle.MapOut() if v.Relationship != "" && v.Relationship != fv.Relationship { saveData["relation"] = v.Relationship } if v.Mobilephone != "" && v.Mobilephone != fv.Tel { saveData["tel"] = v.Mobilephone } if v.Company != "" && v.Company != fv.Company { saveData["company"] = v.Company } if v.Department != "" && v.Department != fv.Deparment { saveData["deparment"] = v.Department } if v.Position != "" && v.Position != fv.Postnme { saveData["postnme"] = v.Position } if v.PoliticalOutlook != 0 && v.PoliticalOutlook != fv.PoliticalOutlook { saveData["political_outlook"] = v.PoliticalOutlook } if fv.State != 1 { saveData["state"] = 1 } if len(saveData) > 0 { var eidtContInfo models.FamilyMembers eidtContInfo.EiteCont(map[string]interface{}{"`id`": fv.Id}, saveData) } } } } if len(eidtIint) < len(contAry) { var familyAry []models.FamilyMembers for ci, cv := range contAry { if overallhandle.IsInTrue[int](ci, eidtIint) == false { var familyInfo models.FamilyMembers familyInfo.Key = manKeyNum familyInfo.Number = number familyInfo.Relationship = cv.Relationship familyInfo.Name = cv.Name familyInfo.Company = cv.Company familyInfo.Deparment = cv.Department familyInfo.Postnme = cv.Position familyInfo.Tel = cv.Mobilephone familyInfo.PoliticalOutlook = cv.PoliticalOutlook familyInfo.Time = time.Now().Unix() familyAry = append(familyAry, familyInfo) } } if len(familyAry) > 0 { overall.CONSTANT_DB_HR.Create(&familyAry) } } } else { var familyAry []models.FamilyMembers for _, fv := range contAry { var familyInfo models.FamilyMembers familyInfo.Key = manKeyNum familyInfo.Number = number familyInfo.Relationship = fv.Relationship familyInfo.Name = fv.Name familyInfo.Company = fv.Company familyInfo.Deparment = fv.Department familyInfo.Postnme = fv.Position familyInfo.Tel = fv.Mobilephone familyInfo.PoliticalOutlook = fv.PoliticalOutlook familyInfo.Time = time.Now().Unix() familyAry = append(familyAry, familyInfo) } if len(familyAry) > 0 { overall.CONSTANT_DB_HR.Create(&familyAry) } } } // 分配权限 func (s *StaffApi) AllocationOfRights(c *gin.Context) { var requestData allocationOfRightsToRole err := c.ShouldBindJSON(&requestData) if err != nil { overallhandle.Result(1, requestData.Id, c, "数据格式错误!") return } if requestData.Id == "" { overallhandle.Result(1, requestData.Id, c, "ID不能为空!") return } if requestData.RoleId == "" { overallhandle.Result(1, requestData.RoleId, c, "请选择角色!") return } var setUserRole models.Personnel judgeIsTrueWhere := overallhandle.MapOut() judgeIsTrueWhere["id"] = requestData.Id getUserErr := setUserRole.GetCont(judgeIsTrueWhere, "role") if getUserErr != nil { overallhandle.Result(105, getUserErr, c) return } if setUserRole.Role != "" { roleAry := strings.Split(setUserRole.Role, ",") if overallhandle.StringIsInMap(requestData.RoleId, roleAry) == false { roleAry = append(roleAry, requestData.RoleId) saveData := overallhandle.MapOut() saveData["eite_time"] = time.Now().Unix() saveData["role"] = strings.Join(roleAry, ",") saveErr := setUserRole.EiteCont(judgeIsTrueWhere, saveData) if saveErr != nil { overallhandle.Result(106, saveErr, c) return } overallhandle.Result(0, setUserRole, c) } else { overallhandle.Result(0, setUserRole, c) } } else { saveData := overallhandle.MapOut() saveData["eite_time"] = time.Now().Unix() saveData["role"] = requestData.RoleId saveErr := setUserRole.EiteCont(judgeIsTrueWhere, saveData) if saveErr != nil { overallhandle.Result(106, saveErr, c) return } overallhandle.Result(0, setUserRole, c) } } // 工作履历 func workHistoryLog(manKeyNum int64, num string, workHistoryList []workHistoryAry) { defer synPro.Done() if len(workHistoryList) > 0 && manKeyNum != 0 { var oldWork []models.WorkHistory oldWorkErr := overall.CONSTANT_DB_HR.Where("`key` = ?", manKeyNum).Find(&oldWork).Error if oldWorkErr == nil { for _, wvs := range workHistoryList { var whCont models.WorkHistory isEidtErr := whCont.GetCont(map[string]interface{}{"`key`": manKeyNum, "`company`": wvs.Company, "`deparment`": wvs.Department, "`job`": wvs.Position}, "id", "entry_time", "leavedate", "witness", "witness_tel", "remarks") if isEidtErr == nil { saveDate := overallhandle.MapOut() if wvs.EntryTime != "" { //入职时间"` entryData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.EntryTime)) if entryData != whCont.EntryTime { saveDate["entry_time"] = entryData } } if wvs.LeaveDate != "" { //离职日期"` leaveTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.LeaveDate)) if leaveTime != whCont.Leavedate { saveDate["leavedate"] = leaveTime } } if wvs.Witness != "" && wvs.Witness != whCont.Witness { saveDate["witness"] = wvs.Witness } if wvs.WitnessTel != "" && wvs.WitnessTel != whCont.WitnessTel { saveDate["witness_tel"] = wvs.WitnessTel } if wvs.Remarks != "" && wvs.Remarks != whCont.Remarks { saveDate["remarks"] = wvs.Remarks } if len(saveDate) > 0 { saveDate["time"] = time.Now().Unix() saveDate["state"] = 1 var eidtWorkHisCont models.WorkHistory eidtWorkHisCont.EiteCont(map[string]interface{}{"`id`": whCont.Id}, saveDate) } } else { var addWorkCont models.WorkHistory addWorkCont.Number = num //工号"` addWorkCont.Key = manKeyNum //身份识别"` addWorkCont.Company = wvs.Company //公司"` addWorkCont.Deparment = wvs.Department //部门"` addWorkCont.Job = wvs.Position //职务"` entryData := time.Now().Unix() if wvs.EntryTime != "" { entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.EntryTime)) } addWorkCont.EntryTime = entryData //入职时间"` leaveTime := time.Now().Unix() if wvs.LeaveDate != "" { leaveTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.LeaveDate)) } addWorkCont.Leavedate = leaveTime //离职日期"` addWorkCont.Witness = wvs.Witness //证明人"` addWorkCont.WitnessTel = wvs.WitnessTel //证明人电话"` addWorkCont.Remarks = wvs.Remarks //备注"` addWorkCont.Time = time.Now().Unix() //创建时间"` addWorkCont.State = 1 //状态(1:启用;2:禁用;3:删除)"` overall.CONSTANT_DB_HR.Create(&addWorkCont) } } } else { var addAllWork []models.WorkHistory for _, v := range workHistoryList { var addWorkCont models.WorkHistory addWorkCont.Number = num //工号"` addWorkCont.Key = manKeyNum //身份识别"` addWorkCont.Company = v.Company //公司"` addWorkCont.Deparment = v.Department //部门"` addWorkCont.Job = v.Position //职务"` entryData := time.Now().Unix() if v.EntryTime != "" { entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", v.EntryTime)) } addWorkCont.EntryTime = entryData //入职时间"` leaveTime := time.Now().Unix() if v.LeaveDate != "" { leaveTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", v.LeaveDate)) } addWorkCont.Leavedate = leaveTime //离职日期"` addWorkCont.Witness = v.Witness //证明人"` addWorkCont.WitnessTel = v.WitnessTel //证明人电话"` addWorkCont.Remarks = v.Remarks //备注"` addWorkCont.Time = time.Now().Unix() //创建时间"` addWorkCont.State = 1 //状态(1:启用;2:禁用;3:删除)"` addAllWork = append(addAllWork, addWorkCont) } if len(addAllWork) > 0 { overall.CONSTANT_DB_HR.Create(&addAllWork) } } } } // 编辑员工主体信息 func (s *StaffApi) EidtStaffCont(c *gin.Context) { var requestData eitePersonnel c.ShouldBindJSON(&requestData) if requestData.Id == "" { overallhandle.Result(101, requestData.Id, c) return } var staffCont models.PersonArchives err := staffCont.GetCont(map[string]interface{}{"`id`": requestData.Id}, "`key`", "`number`") if err != nil { overallhandle.Result(105, err, c) return } saveData := overallhandle.MapOut() if requestData.Name != "" { saveData["name"] = requestData.Name } if requestData.Icon != "" { saveData["icon"] = requestData.Icon } if requestData.HireType != 0 { saveData["hire_class"] = requestData.HireType } if requestData.EmpType != 0 { saveData["emp_type"] = requestData.EmpType } if requestData.Company != 0 { saveData["company"] = requestData.Company } if requestData.MainDepartment != 0 { saveData["maindeparment"] = requestData.MainDepartment } if len(requestData.Department) > 0 { mainDepart := strconv.FormatInt(requestData.MainDepartment, 10) if overallhandle.IsInTrue[string](mainDepart, requestData.Department) == false { requestData.Department = append(requestData.Department, mainDepart) } saveData["deparment"] = strings.Join(requestData.Department, ",") } if requestData.AdminOrg != 0 { saveData["admin_org"] = requestData.AdminOrg } if requestData.Position != 0 { saveData["position"] = requestData.Position } // if requestData.Iisdoubleworker != 0 { // saveData["job_id"] = requestData.Iisdoubleworker // } //获取职务信息 var postDuitesCont models.PostDutiesJob jobErr := postDuitesCont.GetCont(map[string]interface{}{"id": requestData.Position}, "duties") // jobCont, jobErr := getJobInfo(requestData.Position) if jobErr == nil { saveData["job_id"] = postDuitesCont.Duties saveData["job_class"] = postDuitesCont.JobType } if requestData.PositionGrade != 0 { saveData["job_leve"] = requestData.PositionGrade } if len(saveData) > 0 { saveData["eite_time"] = time.Now().Unix() saveErr := staffCont.EiteCont(map[string]interface{}{"`id`": staffCont.Id}, saveData) if saveErr == nil { //员工档案附表 staffInfoContEidt(staffCont.Key, staffCont.Number, requestData) overallhandle.Result(0, saveErr, c) } else { overallhandle.Result(106, saveErr, c) } } else { overallhandle.Result(0, err, c) } } // 员工档案详情 func staffInfoContEidt(manKeyNum int64, num string, contData eitePersonnel) { var staffAttribute models.PersonnelContent contErr := staffAttribute.GetCont(map[string]interface{}{"`key`": manKeyNum}) if contErr == nil { saveData := overallhandle.MapOut() if contData.Passportno != "" && contData.Passportno != staffAttribute.Passportno { saveData["passportno"] = contData.Passportno } if contData.Globalroaming != "" && contData.Globalroaming != staffAttribute.Globalroaming { saveData["globalroaming"] = contData.Globalroaming } if contData.IDCardNo != "" && contData.IDCardNo != staffAttribute.Idcardno { saveData["idcardno"] = contData.IDCardNo } if contData.IDCardStartTime != "" { idCardStarTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.IDCardStartTime)) if idCardStarTime != staffAttribute.Idcardstartdate { saveData["idcardstartdate"] = idCardStarTime } } if contData.IDCardEndTime != "" { idCardEndTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.IDCardEndTime)) if idCardEndTime != staffAttribute.Idcardenddate { saveData["idcardenddate"] = idCardEndTime } } if contData.IDCardAddress != "" && contData.IDCardAddress != staffAttribute.Idcardaddress { saveData["idcardaddress"] = contData.IDCardAddress } if contData.IDCardIsSued != "" && contData.IDCardIsSued != staffAttribute.IdcardIssued { saveData["idcardIssued"] = contData.IDCardIsSued } if contData.Mobilephone != "" && contData.Mobilephone != staffAttribute.Mobilephone { saveData["mobilephone"] = contData.Mobilephone } if contData.Email != "" && contData.Email != staffAttribute.Email { saveData["email"] = contData.Email } if contData.Gender != 0 && contData.Gender != staffAttribute.Gender { saveData["gender"] = contData.Gender } if contData.Birthday != "" { brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.Birthday)) if brrthday != staffAttribute.Birthday { saveData["birthday"] = brrthday } } if contData.Nation != "" && contData.Nation != staffAttribute.Myfolk { saveData["myfolk"] = contData.Nation } if contData.NativePlace != "" && contData.NativePlace != staffAttribute.Nativeplace { saveData["nativeplace"] = contData.NativePlace } if contData.Health != 0 && contData.Health != staffAttribute.Health { saveData["health"] = contData.Health } if contData.Maritalstatus != 0 && contData.Maritalstatus != staffAttribute.Maritalstatus { saveData["maritalstatus"] = contData.Maritalstatus } if contData.CurrentResidence != "" && contData.CurrentResidence != staffAttribute.Currentresidence { saveData["currentresidence"] = contData.CurrentResidence } if contData.Constellation != 0 && contData.Constellation != staffAttribute.Constellation { saveData["constellationing"] = contData.Constellation } if contData.Iisdoubleworker != 0 && contData.Iisdoubleworker != staffAttribute.Isdoubleworker { saveData["isdoubleworker"] = contData.Iisdoubleworker // eidtDoubleWorker(contData, contData.Iisdoubleworker) doubleWorkerStaffNoXiecheng(manKeyNum, staffAttribute.Number, contData.DoubleWorkerList) } if contData.Isveterans != 0 && contData.Isveterans != staffAttribute.Isveterans { saveData["isveterans"] = contData.Isveterans if contData.Isveterans == 1 { if contData.Veteransnumber != "" && contData.Veteransnumber != staffAttribute.Veteransnumber { saveData["veteransnumber"] = contData.Veteransnumber } } else { saveData["veteransnumber"] = "" } } if contData.WorkingDate != "" { workInData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.WorkingDate)) if workInData != staffAttribute.Jobstartdate { saveData["jobstartdate"] = workInData } } if contData.EntryDate != "" { entryData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.EntryDate)) if entryData != staffAttribute.Entrydate { saveData["entrydate"] = entryData } } if contData.ProbationPeriod != 0 && contData.ProbationPeriod != staffAttribute.Probationperiod { saveData["probationperiod"] = contData.ProbationPeriod entryData := staffAttribute.Entrydate if contData.EntryDate != "" { entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.EntryDate)) } planformalData := overallhandle.GetFutureMonthTime(entryData, contData.ProbationPeriod, 2) saveData["planformaldate"] = planformalData } if contData.ConfirmationDate != "" { planformalData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.ConfirmationDate)) saveData["planformaldate"] = planformalData } if contData.PoliticalOutlook != 0 && contData.PoliticalOutlook != staffAttribute.PoliticalOutlook { saveData["political_outlook"] = contData.PoliticalOutlook } if len(saveData) > 0 { saveData["`time`"] = time.Now().Unix() staffAttribute.EiteCont(map[string]interface{}{"`key`": staffAttribute.Key}, saveData) } } else { staffAttribute.Key = manKeyNum staffAttribute.Number = num staffAttribute.Passportno = contData.Passportno staffAttribute.Globalroaming = contData.Globalroaming staffAttribute.Idcardno = contData.IDCardNo staffAttribute.Mobilephone = contData.Mobilephone staffAttribute.Email = contData.Email staffAttribute.Gender = contData.Gender brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.Birthday)) staffAttribute.Birthday = brrthday staffAttribute.Myfolk = contData.Nation staffAttribute.Nativeplace = contData.NativePlace idCardStarTime := time.Now().Unix() if contData.IDCardStartTime != "" { idCardStarTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.IDCardStartTime)) } staffAttribute.Idcardstartdate = idCardStarTime //身份证有效期开始 idCardEndTime := time.Now().Unix() if contData.IDCardEndTime != "" { idCardEndTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.IDCardEndTime)) } staffAttribute.Idcardenddate = idCardEndTime //身份证有效期结束 staffAttribute.Idcardaddress = contData.IDCardAddress //身份证地址 staffAttribute.IdcardIssued = contData.IDCardIsSued //身份证签发机关 staffAttribute.Health = contData.Health staffAttribute.Maritalstatus = contData.Maritalstatus staffAttribute.Internaltelephone = "" staffAttribute.Currentresidence = contData.CurrentResidence staffAttribute.Time = time.Now().Unix() staffAttribute.Constellation = contData.Constellation staffAttribute.Isdoubleworker = contData.Iisdoubleworker staffAttribute.Isveterans = contData.Isveterans staffAttribute.Veteransnumber = contData.Veteransnumber workInData := time.Now().Unix() if contData.WorkingDate != "" { workInData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.WorkingDate)) } staffAttribute.Jobstartdate = workInData entryData := time.Now().Unix() if contData.EntryDate != "" { entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.EntryDate)) } staffAttribute.Entrydate = entryData staffAttribute.Probationperiod = contData.ProbationPeriod planformalData := time.Now().Unix() if contData.ConfirmationDate != "" { planformalData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", contData.ConfirmationDate)) } else { planformalData = overallhandle.GetFutureMonthTime(entryData, contData.ProbationPeriod, 2) } staffAttribute.Planformaldate = planformalData staffAttribute.PoliticalOutlook = contData.PoliticalOutlook overall.CONSTANT_DB_HR.Create(&staffAttribute) } } // 双职工 func doubleWorkerStaffNoXiecheng(manKeyNum int64, numStr string, dobleMan []DoubleWorkerInFo) { var dwManAry []models.DoubleWorker dwManAryErr := overall.CONSTANT_DB_HR.Where("`key` = ?", manKeyNum).Find(&dwManAry).Error if dwManAryErr == nil { var eidtIint []int for i, v := range dobleMan { var dwManInfo models.DoubleWorker dwInFoErr := dwManInfo.GetCont(map[string]interface{}{"`key`": manKeyNum, "`name`": v.Name}) if dwInFoErr == nil { eidtIint = append(eidtIint, i) saveData := overallhandle.MapOut() if v.Company != "" && v.Company != dwManInfo.Company { saveData["company"] = v.Company } if v.Department != "" && v.Department != dwManInfo.Department { saveData["department"] = v.Department } if v.Position != "" && v.Position != dwManInfo.Position { saveData["position"] = v.Position } if v.Mobilephone != "" && v.Mobilephone != dwManInfo.Tel { saveData["tel"] = v.Mobilephone } if dwManInfo.State != 1 { saveData["state"] = 1 } if len(saveData) > 0 { saveData["`time`"] = time.Now().Unix() dwManInfo.EiteCont(map[string]interface{}{"`id`": dwManInfo.Id}, saveData) } } } } else { var doublePeopleInset []models.DoubleWorker if len(dobleMan) > 0 { for _, v := range dobleMan { var doublePeople models.DoubleWorker doublePeople.Key = manKeyNum doublePeople.Number = numStr doublePeople.Name = v.Name doublePeople.Company = v.Company doublePeople.Department = v.Department doublePeople.Position = v.Position doublePeople.Tel = v.Mobilephone doublePeople.Time = time.Now().Unix() doublePeopleInset = append(doublePeopleInset, doublePeople) } } if len(doublePeopleInset) > 0 { overall.CONSTANT_DB_HR.Create(&doublePeopleInset) } } } func workInsideHistoryLog(manKeyNum int64, num string, workHistoryList []insideHistoryerMy) { defer synPro.Done() if len(workHistoryList) > 0 && manKeyNum != 0 { var insetConr []models.InsideWorkHistory for _, v := range workHistoryList { var insetInfor models.InsideWorkHistory orgIdInt, _ := strconv.ParseInt(v.OrgId, 10, 64) groupId, companyId, departmentId, sunDepartId, workShopId := overallhandle.GetOrgStructure(orgIdInt) insetInfor.Group = groupId insetInfor.Company = companyId insetInfor.Department = departmentId insetInfor.WorkShop = sunDepartId insetInfor.WorkshopSection = workShopId positionIdInt, _ := strconv.ParseInt(v.Position, 10, 64) insetInfor.Position = positionIdInt insetInfor.GradePositions = v.GradePositions startTimeInt, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.StartTime)) insetInfor.StartTime = startTimeInt if v.EndTime != "" { endTimeInt, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.EndTime)) insetInfor.EndTime = endTimeInt } teamIdInt, _ := strconv.ParseInt(v.Team, 10, 64) insetInfor.Team = teamIdInt insetInfor.ChangeType = v.ChangeType insetInfor.AssignType = v.AssignType insetInfor.Time = time.Now().Unix() insetInfor.State = 1 insetConr = append(insetConr, insetInfor) } if len(insetConr) > 0 { overall.CONSTANT_DB_HR.Create(&insetConr) } } } // 修改密码 func (s *StaffApi) EditPassWord(c *gin.Context) { var requestData editPws err := c.ShouldBindJSON(&requestData) if err != nil { overallhandle.Result(1, err, c, "数据格式不正确!") return } if requestData.Id == "" { overallhandle.Result(1, err, c, "未知用户ID") return } if requestData.Pwd == "" { overallhandle.Result(1, err, c, "请输入密码!") return } if requestData.Pwdes == "" { overallhandle.Result(1, err, c, "请确认密码") return } if requestData.Pwd != requestData.Pwdes { overallhandle.Result(1, err, c, "您两次输入的密码不一致!") return } //员工档案主 var staffInfo models.PersonArchives //判断工号是存在 whereAry := overallhandle.MapOut() whereAry["`key`"] = requestData.Id if judgeNoErr := staffInfo.GetCont(whereAry, "`key`"); judgeNoErr != nil { overallhandle.Result(107, requestData, c) return } //密码加密 var passwordMd5 overallhandle.Md5Encryption passwordMd5.Md5EncryptionInit(requestData.Pwdes) passwordMd5Str := passwordMd5.Md5EncryptionAlgorithm() saveDate := overallhandle.MapOut() saveDate["`password`"] = passwordMd5Str saveDate["`eite_time`"] = time.Now().Unix() err = staffInfo.EiteCont(whereAry, saveDate) if err != nil { overallhandle.Result(1, err, c, "修改失败!") return } overallhandle.Result(0, err, c, "修改成功!") } /* * @ 作者: 秦东 @ 时间: 2022-11-26 13:36:23 @ 功能: 添加员工信息 @ 参数 # @ 返回值 # @ 方法原型 # */ func (s *StaffApi) AddPeopleCont(c *gin.Context) { var requestData AddNewPeopleCont c.ShouldBindJSON(&requestData) if requestData.Number == "" { overallhandle.Result(1, requestData.Number, c, "工号不能为空!") return } if requestData.Name == "" { overallhandle.Result(1, requestData.Name, c, "姓名不能为空!") return } if requestData.Icon == "" { overallhandle.Result(1, requestData.Name, c, "请上传员工照片") return } if requestData.Gender == 0 { requestData.Gender = 1 } if requestData.HireType == 0 { requestData.HireType = 1 } if requestData.EmpType == 0 { requestData.HireType = 3 } if requestData.AdminOrg == 0 { overallhandle.Result(1, requestData.AdminOrg, c, "请选择员工归属行政组织!") return } if requestData.Position == 0 { overallhandle.Result(1, requestData.Position, c, "请选择人员职务!") return } if requestData.TeamId == 0 { overallhandle.Result(1, requestData.TeamId, c, "请选择人员归属班组!") return } if requestData.PositionGrade == 0 { requestData.PositionGrade = 3 return } if requestData.Mobilephone == "" { overallhandle.Result(1, requestData.Mobilephone, c, "请输入人员手机号!") return } if requestData.Health == 0 { requestData.Health = 2 return } if requestData.EntryDate == "" { overallhandle.Result(1, requestData.EntryDate, c, "请输入人员入职日期!") return } if requestData.ProbationPeriod == 0 { requestData.ProbationPeriod = 3 return } if requestData.IDCardNo == "" { overallhandle.Result(1, requestData.IDCardNo, c, "请输入员工身份证号码!") return } if requestData.PoliticalOutlook == 0 { requestData.PoliticalOutlook = 1 //政治面貌 } if requestData.HireType == 0 { requestData.HireType = 1 } // if requestData.JobId == 0 { // requestData.JobId = 1 // } if requestData.Maritalstatus == 0 { requestData.Maritalstatus = 1 } if requestData.Constellation == 0 { requestData.Constellation = 1 } if requestData.Isveterans == 0 { requestData.Isveterans = 2 } //员工档案主 var staffInfo models.PersonArchives //判断工号是存在 whereAry := overallhandle.MapOut() whereAry["number"] = requestData.Number if judgeNoErr := staffInfo.GetCont(whereAry, "number"); judgeNoErr == nil { overallhandle.Result(1, requestData, c, "该工号已经被使用!请不要重复使用!") return } isMeKey := overallhandle.OnlyOneNumber(3) //获取唯一编号 setTime := time.Now().Unix() staffInfo.Number = requestData.Number staffInfo.Name = requestData.Name staffInfo.Icon = requestData.Icon staffInfo.HireClass = requestData.HireType staffInfo.EmpType = requestData.EmpType //获取相关行政组织 _, companyId, departmentId, sunDepartId, _ := overallhandle.GetOrgStructure(requestData.AdminOrg) staffInfo.Company = companyId //公司 staffInfo.MainDeparment = departmentId //主部门 staffInfo.SunMainDeparment = sunDepartId //二级部门 staffInfo.AdminOrg = requestData.AdminOrg //行政组织 staffInfo.TeamId = requestData.TeamId //班组 staffInfo.Position = requestData.Position //获取职务及职务分类 if requestData.JobId == 0 { var postDuitesCont models.PostDutiesJob postDuitesCont.GetCont(map[string]interface{}{"id": requestData.Position}, "`duties`", "`job_type`") staffInfo.JobClass = postDuitesCont.JobType staffInfo.JobId = postDuitesCont.Duties } else { var dutiesCont models.Duties dutiesCont.GetCont(map[string]interface{}{"id": requestData.JobId}, "`job_type`") staffInfo.JobClass = dutiesCont.JobType staffInfo.JobId = requestData.JobId } staffInfo.JobLeve = requestData.PositionGrade //入职等级 staffInfo.Time = setTime staffInfo.EiteTime = setTime staffInfo.State = 1 staffInfo.Key = isMeKey staffInfo.WorkWechat = requestData.WeorWechat //员工资料副表 var peopleContEs models.PersonnelContent peopleContEs.Key = isMeKey peopleContEs.Number = requestData.Number peopleContEs.Passportno = requestData.Passportno peopleContEs.Globalroaming = requestData.Globalroaming peopleContEs.Idcardno = requestData.IDCardNo peopleContEs.Mobilephone = requestData.Mobilephone peopleContEs.Gender = requestData.Gender brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", requestData.Birthday)) peopleContEs.Birthday = brrthday peopleContEs.Myfolk = requestData.Nation peopleContEs.Nativeplace = requestData.NativePlace idCardStarTime := time.Now().Unix() if requestData.IdCardStartDate != "" { idCardStarTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", requestData.IdCardStartDate)) } peopleContEs.Idcardstartdate = idCardStarTime //身份证有效期开始 idCardEndTime := time.Now().Unix() if requestData.IdCardEndDate != "" { idCardEndTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", requestData.IdCardEndDate)) } peopleContEs.Idcardenddate = idCardEndTime //身份证有效期结束 peopleContEs.Health = requestData.Health peopleContEs.Maritalstatus = requestData.Maritalstatus peopleContEs.Internaltelephone = "" peopleContEs.Currentresidence = requestData.CurrentResidence peopleContEs.Time = setTime peopleContEs.Constellation = requestData.Constellation peopleContEs.Isveterans = requestData.Isveterans peopleContEs.Veteransnumber = requestData.Veteransnumber workInData := setTime if requestData.WorkingDate != "" { workInData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", requestData.WorkingDate)) } peopleContEs.Jobstartdate = workInData entryData := setTime if requestData.EntryDate != "" { entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", requestData.EntryDate)) } peopleContEs.Entrydate = entryData peopleContEs.Probationperiod = requestData.ProbationPeriod planformalData := setTime if requestData.ConfirmationDate != "" { planformalData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", requestData.ConfirmationDate)) } else { planformalData = overallhandle.GetFutureMonthTime(entryData, requestData.ProbationPeriod, 2) } peopleContEs.Planformaldate = planformalData peopleContEs.PoliticalOutlook = requestData.PoliticalOutlook //开启事务 gromDbBeginAffair := overall.CONSTANT_DB_HR.Begin() gromDbBeginAffair.SavePoint("CallBackBegin") mainPeopenContErr := gromDbBeginAffair.Create(&staffInfo).Error mainPeopenContEsErr := gromDbBeginAffair.Create(&peopleContEs).Error fmt.Printf("开启事务%v----------%v\n", mainPeopenContErr, mainPeopenContEsErr) if mainPeopenContErr == nil && mainPeopenContEsErr == nil { addErr := gromDbBeginAffair.Commit().Error overallhandle.Result(0, addErr, c) } else { gromDbBeginAffair.RollbackTo("CallBackBegin") addErr := gromDbBeginAffair.Rollback().Error overallhandle.Result(104, addErr, c) } // addErr := overall.CONSTANT_DB_HR.Transaction(func(tx *gorm.DB) error { // mainPeopenContErr := tx.Create(&staffInfo).Error // if mainPeopenContErr != nil { // return mainPeopenContErr // } // mainPeopenContEsErr := tx.Create(&peopleContEs).Error // if mainPeopenContEsErr != nil { // return mainPeopenContEsErr // } // return nil // }) // if addErr != nil { // overallhandle.Result(104, addErr, c) // } else { // overallhandle.Result(0, addErr, c) // } } /* * @ 作者: 秦东 @ 时间: 2022-11-30 09:29:27 @ 功能: 计算资料完整度 @ 参数 # @ 返回值 # @ 方法原型 # */ func (s *StaffApi) GetPeopleDataIntegrity(c *gin.Context) { var requestData overallhandle.GetId c.ShouldBindJSON(&requestData) if requestData.IdStr == "" && requestData.Id == 0 { overallhandle.Result(101, requestData, c) return } if requestData.IdStr != "" { idInt, idErr := strconv.ParseInt(requestData.IdStr, 10, 64) if idErr == nil { requestData.Id = idInt } } var scoreVal float64 //计算主表 var mainTable models.PersonArchives err := mainTable.GetCont(map[string]interface{}{"`id`": requestData.Id}) wher := map[string]interface{}{"`key`": mainTable.Key} if err == nil { var mainScore float64 if mainTable.Number != "" { mainScore = mainScore + 1 } if mainTable.Name != "" { mainScore = mainScore + 1 } if mainTable.Icon != "" { mainScore = mainScore + 1 } if mainTable.HireClass != 0 { mainScore = mainScore + 1 } if mainTable.EmpType != 0 { mainScore = mainScore + 1 } if mainTable.AdminOrg != 0 { mainScore = mainScore + 1 } if mainTable.Position != 0 { mainScore = mainScore + 1 } if mainTable.JobId != 0 { mainScore = mainScore + 1 } if mainTable.JobClass != 0 { mainScore = mainScore + 1 } if mainTable.JobLeve != 0 { mainScore = mainScore + 1 } if mainTable.Wechat != "" || mainTable.WorkWechat != "" { mainScore = mainScore + 1 } if mainTable.TeamId != 0 { mainScore = mainScore + 1 } if mainScore == 12 { scoreVal = scoreVal + 30 } else { scoreVal = scoreVal + (mainScore/12)*30 fmt.Printf("main----121--->%v-------->%v\n", mainScore, (mainScore / 12)) } fmt.Printf("main----12--->%v-------->%v\n", mainScore, scoreVal) } //人员补充资料 var manContTable models.PersonnelContent err = manContTable.GetCont(wher) if err == nil { var mainScoreEs float64 if manContTable.Idcardno != "" { mainScoreEs = mainScoreEs + 1 } if manContTable.Mobilephone != "" { mainScoreEs = mainScoreEs + 1 } if manContTable.Email != "" { mainScoreEs = mainScoreEs + 1 } if manContTable.Gender != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.Birthday != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.Myfolk != "" { mainScoreEs = mainScoreEs + 1 } if manContTable.Nativeplace != "" { mainScoreEs = mainScoreEs + 1 } if manContTable.Idcardstartdate != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.Idcardenddate != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.Idcardaddress != "" { mainScoreEs = mainScoreEs + 1 } if manContTable.IdcardIssued != "" { mainScoreEs = mainScoreEs + 1 } if manContTable.Health != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.Maritalstatus != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.Currentresidence != "" { mainScoreEs = mainScoreEs + 1 } if manContTable.Constellation != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.Isveterans == 1 { if manContTable.Veteransnumber != "" { mainScoreEs = mainScoreEs + 1 } } if manContTable.Jobstartdate != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.Entrydate != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.Probationperiod != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.Planformaldate != 0 { mainScoreEs = mainScoreEs + 1 } if manContTable.PoliticalOutlook != 0 { mainScoreEs = mainScoreEs + 1 } if mainScoreEs == 21 { scoreVal = scoreVal + 30 } else { scoreVal = scoreVal + (mainScoreEs/21)*30 } } //判断是否有紧急联系人 var emeContAct models.EmergencyContact err = emeContAct.GetCont(wher, "`id`") if err == nil { scoreVal = scoreVal + 10 } //判断是否有家庭成员 var familyMemCont models.FamilyMembers err = familyMemCont.GetCont(wher, "`id`") if err == nil { scoreVal = scoreVal + 10 } //判断是否有教育经历 var perEducationCont models.PersonnelEducation err = perEducationCont.GetCont(wher, "`id`") if err == nil { scoreVal = scoreVal + 10 } //判断是否有工作经历 var workHistory models.WorkHistory err = workHistory.GetCont(wher, "`id`") if err == nil { scoreVal = scoreVal + 10 } fmt.Printf("scoreVal------->%v\n", scoreVal) scoreVal = overallhandle.DecimalEs(scoreVal, 2) overallhandle.Result(0, scoreVal, c) } /* * @ 作者: 秦东 @ 时间: 2023-06-19 16:47:32 @ 功能: 修改用户头像 @ 参数 # @ 返回值 # @ 方法原型 # */ func (s *StaffApi) EditPeopleIcon(c *gin.Context) { var requestData editUSerIcons err := c.ShouldBindJSON(&requestData) if err != nil { overallhandle.Result(100, err, c) return } if requestData.Id == 0 { overallhandle.Result(1, err, c, "未知参数") return } why := overallhandle.MapOut() why["`id`"] = requestData.Id var oldCont models.PersonArchives err = oldCont.GetCont(why, "`id`") if err != nil { overallhandle.Result(107, err, c) return } editCont := overallhandle.MapOut() editCont["icon"] = requestData.IconPath editCont["eite_time"] = time.Now().Unix() err = oldCont.EiteCont(why, editCont) if err != nil { overallhandle.Result(106, err, c) return } overallhandle.Result(0, err, c) }