From 7fdd2ad5d3b50c3bda05da650d6e800c9be4151a Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Thu, 29 Jun 2023 15:07:27 +0800 Subject: [PATCH] 20230629 --- api/version1/personnelapi/controll.go | 36 ++++ api/version1/personnelapi/kingdeecont.go | 14 +- api/version1/personnelapi/kingdeeempty.go | 173 +++++++++++++++++ api/version1/personnelapi/kingdeenew.go | 2 + api/version1/personnelapi/staff.go | 47 +++++ api/version1/personnelapi/type.go | 6 + apirouter/personnel/people.go | 1 + models/hrmodels/emp_onb_res.go | 61 ++++++ models/hrmodels/kingdee_emptype.go | 59 ++++++ models/hrmodels/user_emp_onb_res.go | 62 ++++++ overall/overallhandle/overall_handle.go | 227 ++++++++++++++++++++++ overall/overallhandle/type.go | 13 ++ 12 files changed, 699 insertions(+), 2 deletions(-) create mode 100644 api/version1/personnelapi/kingdeeempty.go create mode 100644 models/hrmodels/emp_onb_res.go create mode 100644 models/hrmodels/kingdee_emptype.go create mode 100644 models/hrmodels/user_emp_onb_res.go diff --git a/api/version1/personnelapi/controll.go b/api/version1/personnelapi/controll.go index 718dce7..ff89225 100644 --- a/api/version1/personnelapi/controll.go +++ b/api/version1/personnelapi/controll.go @@ -248,6 +248,24 @@ func changeTypeToInt(emp string) int { return 15 case "员工初始化": return 16 + case "擅自离职": + return 17 + case "即辞即走": + return 18 + case "组织调整": + return 19 + case "辞退": + return 20 + case "跨公司借调调出": + return 21 + case "跨公司借调调入": + return 22 + case "培训期间离职": + return 23 + case "合同到期": + return 24 + case "实习结束": + return 25 default: return 1 } @@ -286,6 +304,24 @@ func changeTypeToStr(emp int) string { return "返聘" case 16: return "员工初始化" + case 17: + return "擅自离职" + case 18: + return "即辞即走" + case 19: + return "组织调整" + case 20: + return "辞退" + case 21: + return "跨公司借调调出" + case 22: + return "跨公司借调调入" + case 23: + return "培训期间离职" + case 24: + return "合同到期" + case 25: + return "实习结束" default: return "预入职" } diff --git a/api/version1/personnelapi/kingdeecont.go b/api/version1/personnelapi/kingdeecont.go index ebb7fb0..317695e 100644 --- a/api/version1/personnelapi/kingdeecont.go +++ b/api/version1/personnelapi/kingdeecont.go @@ -47,7 +47,15 @@ func EditWithinGroupWorkLog(manKeyNum int64, contList []insideHistoryer) { } //批量写入 var creadContList []models.InsideWorkHistory + zongLiang := len(contList) for _, v := range contList { + weiYi := false + if zongLiang == 1 && myCont.EmpType > 11 { + weiYi = true + } + //写入员工入职离职时间 + EmployeeOnboardingAndResignation(manKeyNum, v.ChangeType, v.StartTime, weiYi) + WorkShop := myCont.SunMainDeparment if v.Workshop != "" { var workShopCont models.AdministrativeOrganization @@ -120,6 +128,7 @@ func EditWithinGroupWorkLog(manKeyNum int64, contList []insideHistoryer) { } } creadCont.StartTime = startTime //开始日期"` + state := 1 var endTime int64 if v.EndTime != "" { @@ -136,8 +145,9 @@ func EditWithinGroupWorkLog(manKeyNum int64, contList []insideHistoryer) { if achangeTypeInted > 12 && achangeTypeInted <= 14 { endTime = time.Now().Unix() } - creadCont.EndTime = endTime //结束日期"` - creadCont.Team = myCont.TeamId //(1:长白;2:甲;3:乙;4:丙;5:丁)"` + creadCont.EndTime = endTime //结束日期"` + creadCont.Team = myCont.TeamId //(1:长白;2:甲;3:乙;4:丙;5:丁)"` + WriteKingKeyWork(v.ChangeType, 2) creadCont.ChangeType = changeTypeToInt(v.ChangeType) // 变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)"` creadCont.Time = time.Now().Unix() //创建时间"` creadCont.State = state //状态(1:启用;2:禁用;3:删除)"` diff --git a/api/version1/personnelapi/kingdeeempty.go b/api/version1/personnelapi/kingdeeempty.go new file mode 100644 index 0000000..e72108f --- /dev/null +++ b/api/version1/personnelapi/kingdeeempty.go @@ -0,0 +1,173 @@ +package personnelapi + +import ( + "hr_server/models/hrmodels" + "hr_server/overall" + "hr_server/overall/overallhandle" + "time" +) + +/* +* +@ 作者: 秦东 +@ 时间: 2023-06-20 14:23:27 +@ 功能: 写入金蝶人员状态关键字 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func WriteKingKeyWork(name string, class int) { + var kingdeeCont hrmodels.KingdeeEmptype + err := kingdeeCont.GetCont(map[string]interface{}{"`name`": name, "`leibie`": class}, "`id`") + if err == nil { + return + } + if kingdeeCont.Id != 0 { + return + } + kingdeeCont.Name = name + kingdeeCont.LeiBie = class + kingdeeCont.Time = time.Now().Unix() + overall.CONSTANT_DB_HR.Create(&kingdeeCont) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2023-06-20 15:05:11 +@ 功能: 写入员工入职离职时间 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func EmployeeOnboardingAndResignation(userKey int64, changetype, starttime string, weiYi bool) { + entryList := []string{"预入职", "员工初始化"} //入职关键字 + zhuanZheng := []string{"转正"} //转正关键字 + depart := []string{"预离职", "离职", "批准辞职", "擅自离职", "即辞即走", "辞退", "培训期间离职"} //离职关键字 + contract := []string{"合同到期"} //离职关键字 + retire := []string{"退休"} //退休 + if starttime != "" { + var manageDate overallhandle.DateTimeTotimes + manageDate.BaisStrToTime(starttime) + where := overallhandle.MapOut() + where["`userid`"] = userKey + if overallhandle.IsInTrue[string](changetype, entryList) { + //新入职 + var newEntry hrmodels.UserEmpOnbRes + err := newEntry.GetCont(where, "`entry_time`") + if err != nil { + newEntry.UserId = userKey + newEntry.EntryTime = manageDate.AllTime + if weiYi { + newEntry.LeaveDate = manageDate.AllTime + } + newEntry.Time = time.Now().Unix() + overall.CONSTANT_DB_HR.Create(&newEntry) + } else { + if manageDate.AllTime != newEntry.EntryTime { + editCont := overallhandle.MapOut() + editCont["`entry_time`"] = manageDate.AllTime + if weiYi { + editCont["`leave_date`"] = manageDate.AllTime + } + editCont["`time`"] = time.Now().Unix() + var newEditEntry hrmodels.UserEmpOnbRes + newEditEntry.EiteCont(where, editCont) + } + } + } + if overallhandle.IsInTrue[string](changetype, zhuanZheng) { + //转正 + var newZhuanZheng hrmodels.UserEmpOnbRes + err := newZhuanZheng.GetCont(where, "`zhuan_zheng`") + if err != nil { + newZhuanZheng.UserId = userKey + newZhuanZheng.EntryTime = manageDate.AllTime + newZhuanZheng.Time = time.Now().Unix() + overall.CONSTANT_DB_HR.Create(&newZhuanZheng) + } else { + if manageDate.AllTime != newZhuanZheng.EntryTime { + editCont := overallhandle.MapOut() + editCont["`zhuan_zheng`"] = manageDate.AllTime + editCont["`time`"] = time.Now().Unix() + var newEditZhuanZheng hrmodels.UserEmpOnbRes + newEditZhuanZheng.EiteCont(where, editCont) + } + } + } + if overallhandle.IsInTrue[string](changetype, depart) { + //离职 + var newDepart hrmodels.UserEmpOnbRes + err := newDepart.GetCont(where, "`leave_date`") + if err != nil { + newDepart.UserId = userKey + newDepart.EntryTime = manageDate.AllTime + newDepart.Time = time.Now().Unix() + overall.CONSTANT_DB_HR.Create(&newDepart) + } else { + if manageDate.AllTime != newDepart.EntryTime { + editCont := overallhandle.MapOut() + editCont["`leave_date`"] = manageDate.AllTime + editCont["`time`"] = time.Now().Unix() + var newEditDepart hrmodels.UserEmpOnbRes + newEditDepart.EiteCont(where, editCont) + } + } + } + if overallhandle.IsInTrue[string](changetype, contract) { + //合同到期 + var newContract hrmodels.UserEmpOnbRes + err := newContract.GetCont(where, "`contract_time`") + if err != nil { + newContract.UserId = userKey + newContract.EntryTime = manageDate.AllTime + newContract.Time = time.Now().Unix() + overall.CONSTANT_DB_HR.Create(&newContract) + } else { + if manageDate.AllTime != newContract.EntryTime { + editCont := overallhandle.MapOut() + editCont["`contract_time`"] = manageDate.AllTime + editCont["`time`"] = time.Now().Unix() + var newEditContract hrmodels.UserEmpOnbRes + newEditContract.EiteCont(where, editCont) + } + } + } + if overallhandle.IsInTrue[string](changetype, retire) { + //退休 + var newRetire hrmodels.UserEmpOnbRes + err := newRetire.GetCont(where, "`retire_time`") + if err != nil { + newRetire.UserId = userKey + newRetire.EntryTime = manageDate.AllTime + newRetire.Time = time.Now().Unix() + overall.CONSTANT_DB_HR.Create(&newRetire) + } else { + if manageDate.AllTime != newRetire.EntryTime { + editCont := overallhandle.MapOut() + editCont["`retire_time`"] = manageDate.AllTime + editCont["`time`"] = time.Now().Unix() + var newEditRetire hrmodels.UserEmpOnbRes + newEditRetire.EiteCont(where, editCont) + } + } + } + } + +} diff --git a/api/version1/personnelapi/kingdeenew.go b/api/version1/personnelapi/kingdeenew.go index 66fff54..82136a8 100644 --- a/api/version1/personnelapi/kingdeenew.go +++ b/api/version1/personnelapi/kingdeenew.go @@ -122,6 +122,7 @@ func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePe // if empTypeErr != nil { // empType = 1 // } + WriteKingKeyWork(manCont.EmpType, 1) empType := EmptypeToInt(manCont.EmpType) // fmt.Printf("manCont.EmpType------------1-------->%v\n", empType) if empType != perArcInfo.EmpType { @@ -339,6 +340,7 @@ func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonneles // empType = 1 // } // manMainCont.EmpType = empType + WriteKingKeyWork(manCont.EmpType, 1) manMainCont.EmpType = EmptypeToInt(manCont.EmpType) manMainCont.EmpTypeName = manCont.EmpType diff --git a/api/version1/personnelapi/staff.go b/api/version1/personnelapi/staff.go index b0c4ac4..d1185f2 100644 --- a/api/version1/personnelapi/staff.go +++ b/api/version1/personnelapi/staff.go @@ -1890,3 +1890,50 @@ func (s *StaffApi) GetPeopleDataIntegrity(c *gin.Context) { 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) +} diff --git a/api/version1/personnelapi/type.go b/api/version1/personnelapi/type.go index 14bd5ab..9a52c04 100644 --- a/api/version1/personnelapi/type.go +++ b/api/version1/personnelapi/type.go @@ -575,3 +575,9 @@ type SendOrgAboutPeople struct { StartTimeStr string `json:"starttimeing"` // EndTimeStr string `json:"endtimeing"` // } + +// 修改头像 +type editUSerIcons struct { + Id int64 `json:"id"` // + IconPath string `json:"iconpath"` // +} diff --git a/apirouter/personnel/people.go b/apirouter/personnel/people.go index 225a650..bbbe28e 100644 --- a/apirouter/personnel/people.go +++ b/apirouter/personnel/people.go @@ -24,6 +24,7 @@ func (p *PersonnelRoute) InitRouterGroup(route *gin.RouterGroup) { apiRouter.POST("editpassword", apiHandle.EditPassWord) //修改密码 apiRouter.POST("wechat_give_uscont", apiHandle.WeChatGiveUsCont) //根据微信OpenId获取个人档案 apiRouter.POST("edit_us_wechat_openid", apiHandle.EditUsWechatOpenId) //修改员工微信或企业微信UserId + apiRouter.POST("edit_people_icon", apiHandle.EditPeopleIcon) //修改员工微信或企业微信UserId apiRouter.POST("useraboutorglist", apiHandle.UserAboutOrgList) //行政组织关系 //双职工 diff --git a/models/hrmodels/emp_onb_res.go b/models/hrmodels/emp_onb_res.go new file mode 100644 index 0000000..f633e80 --- /dev/null +++ b/models/hrmodels/emp_onb_res.go @@ -0,0 +1,61 @@ +package hrmodels + +import ( + "hr_server/overall" + "strings" +) + +// 金蝶人员状态关键字 +type EmpOnbRes struct { + Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"` + UserId int64 `json:"userid" gorm:"column:userid;type:bigint(20) unsigned;default:1;not null;comment:员工ID"` + EntryTime int64 `json:"entrytime" gorm:"column:entry_time;type:bigint(20) unsigned;default:1;not null;comment:入职时间"` + LeaveDate int64 `json:"leavedate" gorm:"column:leave_date;type:bigint(20) unsigned;default:1;not null;comment:离职日期"` + ZhuanZheng int64 `json:"zhuanzheng" gorm:"column:zhuan_zheng;type:bigint(20) unsigned;default:1;not null;comment:转正"` + Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:1;not null;comment:时间"` +} + +func (EmpOnbRes *EmpOnbRes) TableName() string { + return "emp_onb_res" +} + +// 编辑内容 +func (cont *EmpOnbRes) EiteCont(whereMap interface{}, saveData interface{}) (err error) { + err = overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Updates(saveData).Error + return +} + +// 获取内容 +func (cont *EmpOnbRes) 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 *EmpOnbRes) CountCont(whereMap interface{}) (countId int64) { + overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Count(&countId) + return +} + +// 读取全部信息 +func (cont *EmpOnbRes) ContMap(whereMap interface{}, field ...string) (countAry []EmpOnbRes, err error) { + gormDb := overall.CONSTANT_DB_HR.Model(&cont) + if len(field) > 0 { + fieldStr := strings.Join(field, ",") + gormDb = gormDb.Select(fieldStr) + } + err = gormDb.Where(whereMap).Find(&countAry).Error + return +} + +// 删除内容 +func (cont *EmpOnbRes) DelCont(whereMap interface{}) (err error) { + err = overall.CONSTANT_DB_HR.Where(whereMap).Delete(&cont).Error + return +} diff --git a/models/hrmodels/kingdee_emptype.go b/models/hrmodels/kingdee_emptype.go new file mode 100644 index 0000000..66a5efd --- /dev/null +++ b/models/hrmodels/kingdee_emptype.go @@ -0,0 +1,59 @@ +package hrmodels + +import ( + "hr_server/overall" + "strings" +) + +// 金蝶人员状态关键字 +type KingdeeEmptype struct { + Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"` + Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:关键字"` + LeiBie int `json:"leibie" gorm:"column:leibie;type:int(1) unsigned;default:1;not null;comment:类别"` + Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:1;not null;comment:时间"` +} + +func (KingdeeEmptype *KingdeeEmptype) TableName() string { + return "kingdee_emptype" +} + +// 编辑内容 +func (cont *KingdeeEmptype) EiteCont(whereMap interface{}, saveData interface{}) (err error) { + err = overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Updates(saveData).Error + return +} + +// 获取内容 +func (cont *KingdeeEmptype) 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 *KingdeeEmptype) CountCont(whereMap interface{}) (countId int64) { + overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Count(&countId) + return +} + +// 读取全部信息 +func (cont *KingdeeEmptype) ContMap(whereMap interface{}, field ...string) (countAry []KingdeeEmptype, err error) { + gormDb := overall.CONSTANT_DB_HR.Model(&cont) + if len(field) > 0 { + fieldStr := strings.Join(field, ",") + gormDb = gormDb.Select(fieldStr) + } + err = gormDb.Where(whereMap).Find(&countAry).Error + return +} + +// 删除内容 +func (cont *KingdeeEmptype) DelCont(whereMap interface{}) (err error) { + err = overall.CONSTANT_DB_HR.Where(whereMap).Delete(&cont).Error + return +} diff --git a/models/hrmodels/user_emp_onb_res.go b/models/hrmodels/user_emp_onb_res.go new file mode 100644 index 0000000..2889e9a --- /dev/null +++ b/models/hrmodels/user_emp_onb_res.go @@ -0,0 +1,62 @@ +package hrmodels + +import ( + "hr_server/overall" + "strings" +) + +// 金蝶人员状态关键字 +type UserEmpOnbRes struct { + Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"` + UserId int64 `json:"userid" gorm:"column:userid;type:bigint(20) unsigned;default:0;not null;comment:员工ID"` + EntryTime int64 `json:"entrytime" gorm:"column:entry_time;type:bigint(20) unsigned;default:0;not null;comment:入职时间"` + LeaveDate int64 `json:"leavedate" gorm:"column:leave_date;type:bigint(20) unsigned;default:0;not null;comment:离职日期"` + ZhuanZheng int64 `json:"zhuanzheng" gorm:"column:zhuan_zheng;type:bigint(20) unsigned;default:0;not null;comment:转正"` + RetireTime int64 `json:"retiretime" gorm:"column:retire_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:时间"` +} + +func (UserEmpOnbRes *UserEmpOnbRes) TableName() string { + return "user_emp_onb_res" +} + +// 编辑内容 +func (cont *UserEmpOnbRes) EiteCont(whereMap interface{}, saveData interface{}) (err error) { + err = overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Updates(saveData).Error + return +} + +// 获取内容 +func (cont *UserEmpOnbRes) 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 *UserEmpOnbRes) CountCont(whereMap interface{}) (countId int64) { + overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Count(&countId) + return +} + +// 读取全部信息 +func (cont *UserEmpOnbRes) ContMap(whereMap interface{}, field ...string) (countAry []UserEmpOnbRes, err error) { + gormDb := overall.CONSTANT_DB_HR.Model(&cont) + if len(field) > 0 { + fieldStr := strings.Join(field, ",") + gormDb = gormDb.Select(fieldStr) + } + err = gormDb.Where(whereMap).Find(&countAry).Error + return +} + +// 删除内容 +func (cont *UserEmpOnbRes) DelCont(whereMap interface{}) (err error) { + err = overall.CONSTANT_DB_HR.Where(whereMap).Delete(&cont).Error + return +} diff --git a/overall/overallhandle/overall_handle.go b/overall/overallhandle/overall_handle.go index c133ee7..63ab075 100644 --- a/overall/overallhandle/overall_handle.go +++ b/overall/overallhandle/overall_handle.go @@ -15,6 +15,7 @@ import ( "math/big" "net/http" "strconv" + "strings" "time" "github.com/mozillazg/go-pinyin" @@ -1057,3 +1058,229 @@ func HestacademicdegreeToInt(hir string) int { return 0 } } + +// 根据字符串组合时间 +/* +#dateTime 日期 +*/ +func (d *DateTimeTotimes) BaisStrToTime(dateTime string) { + timeStrAry := strings.Split(dateTime, "-") + switch len(timeStrAry) { + case 1: + dateTime = fmt.Sprintf("%v-01-01 12:00:00", dateTime) + case 2: + if len(timeStrAry[1]) < 2 { + dateTime = fmt.Sprintf("%v-0%v-01 12:00:00", timeStrAry[0], timeStrAry[1]) + } + case 3: + monthStr := timeStrAry[1] + if len(timeStrAry[1]) < 2 { + monthStr = fmt.Sprintf("0%v", timeStrAry[1]) + } + dayAry := strings.Split(timeStrAry[2], " ") + // fmt.Printf("dayAry:%v------>%v\n", dayAry, len(dayAry)) + dayStr := dayAry[0] + if len(dayAry[0]) < 2 { + dayStr = fmt.Sprintf("0%v", dayAry[0]) + } + if len(dayAry) > 1 { + // fmt.Printf("dayAry[1]:%v------>%v\n", dayAry[1], len(dayAry[1])) + if len(dayAry[1]) > 0 { + Hours := "00" + minutes := "00" + seconds := "00" + hisAry := strings.Split(dayAry[1], ":") + switch len(hisAry) { + case 1: + if len(hisAry[0]) < 2 { + Hours = fmt.Sprintf("0%v", hisAry[0]) + } else { + Hours = hisAry[0] + } + case 2: + if len(hisAry[0]) < 2 { + Hours = fmt.Sprintf("0%v", hisAry[0]) + } else { + Hours = hisAry[0] + } + if len(hisAry[1]) < 2 { + minutes = fmt.Sprintf("0%v", hisAry[1]) + } else { + minutes = hisAry[1] + } + case 3: + if len(hisAry[0]) < 2 { + Hours = fmt.Sprintf("0%v", hisAry[0]) + } else { + Hours = hisAry[0] + } + if len(hisAry[1]) < 2 { + minutes = fmt.Sprintf("0%v", hisAry[1]) + } else { + minutes = hisAry[1] + } + if len(hisAry[2]) < 2 { + seconds = fmt.Sprintf("0%v", hisAry[2]) + } else { + seconds = hisAry[2] + } + default: + } + dayStr = fmt.Sprintf("%v %v:%v:%v", dayStr, Hours, minutes, seconds) + } + } + // dayStr := timeStrAry[2] + // if len(timeStrAry[2]) < 2 { + // dayStr = fmt.Sprintf("0%v", timeStrAry[2]) + // } + dateTime = fmt.Sprintf("%v-%v-%v", timeStrAry[0], monthStr, dayStr) + + default: + } + fmt.Printf("dateTime:%v---1--->%v\n", dateTime, len(dateTime)) + orgTime, orgTimeErr := DateToTimeStamp(fmt.Sprintf("%v-01-01 12:00:00", dateTime)) + if orgTimeErr { + d.AllTime = orgTime + d.Years = strconv.FormatInt(ComputingTime(orgTime, 1), 10) + d.Quarter = strconv.FormatInt(ComputingTime(orgTime, 2), 10) + d.Months = strconv.FormatInt(ComputingTime(orgTime, 3), 10) + d.Week = strconv.FormatInt(ComputingTime(orgTime, 4), 10) + d.Days = strconv.FormatInt(ComputingTime(orgTime, 5), 10) + d.Hours = strconv.FormatInt(ComputingTime(orgTime, 7), 10) + d.Minutes = strconv.FormatInt(ComputingTime(orgTime, 8), 10) + d.Second = strconv.FormatInt(ComputingTime(orgTime, 9), 10) + } else { + + orgTime, orgTimeErr = DateToTimeStamp(fmt.Sprintf("%v-01 12:00:00", dateTime)) + if orgTimeErr { + d.AllTime = orgTime + d.Years = strconv.FormatInt(ComputingTime(orgTime, 1), 10) + d.Quarter = strconv.FormatInt(ComputingTime(orgTime, 2), 10) + d.Months = strconv.FormatInt(ComputingTime(orgTime, 3), 10) + d.Week = strconv.FormatInt(ComputingTime(orgTime, 4), 10) + d.Days = strconv.FormatInt(ComputingTime(orgTime, 5), 10) + d.Hours = strconv.FormatInt(ComputingTime(orgTime, 7), 10) + d.Minutes = strconv.FormatInt(ComputingTime(orgTime, 8), 10) + d.Second = strconv.FormatInt(ComputingTime(orgTime, 9), 10) + + fmt.Printf("dateTime:%v---2--->%v--->%v\n", orgTime, d.AllTime, d.Quarter) + } else { + orgTime, orgTimeErr = DateToTimeStamp(fmt.Sprintf("%v 12:00:00", dateTime)) + if orgTimeErr { + d.AllTime = orgTime + d.Years = strconv.FormatInt(ComputingTime(orgTime, 1), 10) + d.Quarter = strconv.FormatInt(ComputingTime(orgTime, 2), 10) + d.Months = strconv.FormatInt(ComputingTime(orgTime, 3), 10) + d.Week = strconv.FormatInt(ComputingTime(orgTime, 4), 10) + d.Days = strconv.FormatInt(ComputingTime(orgTime, 5), 10) + d.Hours = strconv.FormatInt(ComputingTime(orgTime, 7), 10) + d.Minutes = strconv.FormatInt(ComputingTime(orgTime, 8), 10) + d.Second = strconv.FormatInt(ComputingTime(orgTime, 9), 10) + } else { + orgTime, orgTimeErr = DateToTimeStamp(fmt.Sprintf("%v:00:00", dateTime)) + if orgTimeErr { + d.AllTime = orgTime + d.Years = strconv.FormatInt(ComputingTime(orgTime, 1), 10) + d.Quarter = strconv.FormatInt(ComputingTime(orgTime, 2), 10) + d.Months = strconv.FormatInt(ComputingTime(orgTime, 3), 10) + d.Week = strconv.FormatInt(ComputingTime(orgTime, 4), 10) + d.Days = strconv.FormatInt(ComputingTime(orgTime, 5), 10) + d.Hours = strconv.FormatInt(ComputingTime(orgTime, 7), 10) + d.Minutes = strconv.FormatInt(ComputingTime(orgTime, 8), 10) + d.Second = strconv.FormatInt(ComputingTime(orgTime, 9), 10) + } else { + orgTime, orgTimeErr = DateToTimeStamp(fmt.Sprintf("%v:00", dateTime)) + if orgTimeErr { + d.AllTime = orgTime + d.Years = strconv.FormatInt(ComputingTime(orgTime, 1), 10) + d.Quarter = strconv.FormatInt(ComputingTime(orgTime, 2), 10) + d.Months = strconv.FormatInt(ComputingTime(orgTime, 3), 10) + d.Week = strconv.FormatInt(ComputingTime(orgTime, 4), 10) + d.Days = strconv.FormatInt(ComputingTime(orgTime, 5), 10) + d.Hours = strconv.FormatInt(ComputingTime(orgTime, 7), 10) + d.Minutes = strconv.FormatInt(ComputingTime(orgTime, 8), 10) + d.Second = strconv.FormatInt(ComputingTime(orgTime, 9), 10) + } else { + orgTime, orgTimeErr = DateToTimeStamp(dateTime) + if orgTimeErr { + d.AllTime = orgTime + d.Years = strconv.FormatInt(ComputingTime(orgTime, 1), 10) + d.Quarter = strconv.FormatInt(ComputingTime(orgTime, 2), 10) + d.Months = strconv.FormatInt(ComputingTime(orgTime, 3), 10) + d.Week = strconv.FormatInt(ComputingTime(orgTime, 4), 10) + d.Days = strconv.FormatInt(ComputingTime(orgTime, 5), 10) + d.Hours = strconv.FormatInt(ComputingTime(orgTime, 7), 10) + d.Minutes = strconv.FormatInt(ComputingTime(orgTime, 8), 10) + d.Second = strconv.FormatInt(ComputingTime(orgTime, 9), 10) + } + } + } + } + } + } +} +func DateToTimeStampOld(dataStr string) (timeStamp int64) { + tmp := "2006-01-02 15:04:05" + res, _ := time.ParseInLocation(tmp, dataStr, time.Local) + timeStamp = res.Unix() + return +} + +// 时间计算(年、季、月、周、日、时、分、秒) +func ComputingTime(timeStamp int64, timeType int) (timeDataInt int64) { + var timeData string = "1" + switch timeType { + case 1: + timeData = time.Unix(timeStamp, 0).Format("2006") //年 + case 2: + dayMonth := time.Unix(timeStamp, 0).Format("01") //季度 + datMonthFloat, datMonthFloatErr := strconv.ParseFloat(dayMonth, 10) + if datMonthFloatErr == nil { + timeData = strconv.FormatFloat(math.Ceil(datMonthFloat/3), 'f', -1, 64) + } else { + timeData = "1" + } + case 3: + timeData = time.Unix(timeStamp, 0).Format("01") //月份 + case 4: //当前日期为本月第几周 + monthFirstDayStr := DateToTimeStampOld(UnixTimeToDay(timeStamp, 15) + "-01 00:00:00") //获取指定月第一天时间戳 + dayTime := time.Unix(monthFirstDayStr, 0) + dayOfWeek := int(dayTime.Weekday()) //获取本月第一天是周几 + if dayOfWeek == 0 { + dayOfWeek = 7 + } + + dayNumber, dayNumberErr := strconv.ParseInt(UnixTimeToDay(timeStamp, 18), 10, 64) //获取今天是几号 + if dayNumberErr != nil { + dayNumber = 1 + } + daysAndWeeksDiff := dayNumber - (8 - int64(dayOfWeek)) + if daysAndWeeksDiff <= 0 { + timeData = "1" + } else { + daysAndWeeksDiffFlot, daysAndWeeksDiffFloatErr := strconv.ParseFloat(strconv.FormatInt(daysAndWeeksDiff, 10), 10) + if daysAndWeeksDiffFloatErr == nil { + daysWeeksDiffVal := math.Ceil(daysAndWeeksDiffFlot/7) + 1 + timeData = strconv.FormatFloat(daysWeeksDiffVal, 'f', -1, 64) + } else { + timeData = "1" + } + } + case 5: + timeData = time.Unix(timeStamp, 0).Format("02") //天 + case 7: + timeData = time.Unix(timeStamp, 0).Format("15") //时 + case 8: + timeData = time.Unix(timeStamp, 0).Format("04") //分 + case 9: + timeData = time.Unix(timeStamp, 0).Format("05") //秒 + default: + timeData = "0" + } + timeDataInt, timeDataIntErr := strconv.ParseInt(timeData, 10, 64) + if timeDataIntErr != nil { + timeDataInt = 0 + return + } + return +} diff --git a/overall/overallhandle/type.go b/overall/overallhandle/type.go index 2d444a7..3bc903f 100644 --- a/overall/overallhandle/type.go +++ b/overall/overallhandle/type.go @@ -87,3 +87,16 @@ type EditState struct { type GetParentAllOrg struct { OrgList []models.AdministrativeOrganization `json:"org_list` //行政组织列表 } + +// 时间转换 +type DateTimeTotimes struct { + Years string `json:"years"` + Quarter string `json:"quarter"` + Months string `json:"months"` + Week string `json:"week"` + Days string `json:"days"` + Hours string `json:"hours"` + Minutes string `json:"minutes"` + Second string `json:"second"` + AllTime int64 `json:"alltime"` +}