package customerApp import ( "appPlatform/models/modelshr" "appPlatform/models/modelssystempermission" "appPlatform/models/teamlog" "appPlatform/overall" "appPlatform/overall/publicmethod" "fmt" "sort" "strconv" "strings" "time" "github.com/gin-gonic/gin" ) // var paichu = []int64{163, 281, 319} /* * @ 作者: 秦东 @ 时间: 2025-08-11 15:33:40 @ 功能: 初始化排版页面 */ func (a *ApiMethod) TestCompanyDutyInit(c *gin.Context) { context, _ := c.Get(overall.MyContJwt) var userCont modelshr.ManCont userCont.GetLoginCont(context) //当前操作人 sendData := publicmethod.MapOut[string]() sendData["currentOrg"] = userCont.Company var orgCurre modelshr.AdministrativeOrganization // orgCurre.GetCont(map[string]interface{}{"`id`": userCont.Company}, "`name`") overall.CONSTANT_DB_HrInside.Model(&orgCurre).Select("`name`").Where("`id` = ?", userCont.Company).First(&orgCurre) currentTime := time.Now().Unix() yearVal := publicmethod.UnixTimeToDay(currentTime, 16) yearValInt, _ := strconv.Atoi(yearVal) monthVal := publicmethod.UnixTimeToDay(currentTime, 17) monthValInt, _ := strconv.Atoi(monthVal) currentDay := int(time.Now().Day()) sendData["title"] = fmt.Sprintf("%v.%v.%v%v值班表", yearVal, monthVal, currentDay, orgCurre.Name) sendData["titlePc"] = fmt.Sprintf("%v年%v月%v值班表", yearVal, monthVal, orgCurre.Name) sendData["year"] = yearValInt sendData["month"] = monthValInt endTime := publicmethod.GetDaysInMonth(yearValInt, monthValInt) monthEndDay, _ := strconv.Atoi(endTime.Days) var monthAllDay []string for i := 1; i <= monthEndDay; i++ { monthAllDay = append(monthAllDay, fmt.Sprintf("%v日", i)) } //角色权限范围判定 //1:本岗位;2:本部门;3:本分部;4:指定行政组织;5:所有 switch SearchRoleLevev(userCont.Role) { case 5: sendData["orgLevel"] = 5 sendData["orgList"] = GetOrgLevel(313, 1) case 4: sendData["orgLevel"] = 4 sendData["orgList"] = GetOrgLevel(userCont.Company, 1) case 3: sendData["orgLevel"] = 3 sendData["orgList"] = GetOrgLevel(userCont.MainDeparment, 2) case 2: sendData["orgLevel"] = 2 sendData["orgList"] = GetOrgLevel(userCont.MainDeparment, 2) case 1: sendData["orgLevel"] = 1 sendData["orgList"] = GetOrgLevel(userCont.MainDeparment, 2) default: } sendData["currentDay"] = currentDay // sendData["endTime"] = endTime sendData["monthAllDay"] = monthAllDay publicmethod.Result(0, sendData, c) } // 获取行政组织层级 func TestGetOrgLevel(partenId int64, types int) (orgList []GaveOrgAry) { gormDb := overall.CONSTANT_DB_HrInside.Model(&GaveOrgAry{}).Where("`state` = 1") if types == 1 { gormDb = gormDb.Where("`superior` = ?", partenId) } else { gormDb = gormDb.Where("`id` = ?", partenId) } gormDb.Order("`sort` ASC").Find(&orgList) sort.Slice(orgList, func(i, j int) bool { return orgList[i].Sort < orgList[j].Sort }) return } // 获取最大查询范围 func TestSearchRoleLevev(roles string) (level int) { roleList := strings.Split(roles, ",") var roleVerify []modelssystempermission.RoleEmpower overall.CONSTANT_DB_System_Permission.Where("`state` = 1 AND `system` = ? AND `id` IN ? ", "appsystem", roleList).Find(&roleVerify) for _, v := range roleVerify { if v.Level >= level { level = v.Level } } return } /* * @ 作者: 秦东 @ 时间: 2025-08-12 08:36:19 @ 功能: 获取根据年月获取排班目录表 */ func (a *ApiMethod) TestGetYearMonthWorkMan(c *gin.Context) { var requestData PaiBanInfo err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.OrgId == 0 { publicmethod.Result(1, err, c, "未知行政组织!") return } currentTime := time.Now().Unix() yearVal := publicmethod.UnixTimeToDay(currentTime, 16) yearValInt, _ := strconv.Atoi(yearVal) monthVal := publicmethod.UnixTimeToDay(currentTime, 17) monthValInt, _ := strconv.Atoi(monthVal) if requestData.Years != 0 { yearValInt = requestData.Years } if requestData.Months != 0 { monthValInt = requestData.Months } endTime := publicmethod.GetDaysInMonth(yearValInt, monthValInt) monthEndDay, _ := strconv.Atoi(endTime.Days) sendCenter := publicmethod.MapOut[string]() var currOrgInfo GaveOrgAry currOrgInfo.GetCont(map[string]interface{}{"`id`": requestData.OrgId}, "`name`") sendCenter["title"] = fmt.Sprintf("%v年%v月%v", yearVal, monthValInt, currOrgInfo.Name) sendCenter["orgId"] = requestData.OrgId var sendData []SendCompanyWork var orgList []GaveOrgAry if requestData.OrgId == 309 { var gsdaban GaveOrgAry gsdaban.Id = requestData.OrgId * 10000 gsdaban.Name = "公司带班" gsdaban.IsCompany = 1 orgList = append(orgList, gsdaban) var gszhiban GaveOrgAry gszhiban.Id = requestData.OrgId*10000 + 1 gszhiban.Name = "公司值班" gszhiban.IsCompany = 1 orgList = append(orgList, gszhiban) } else { var gsld GaveOrgAry gsld.Id = requestData.OrgId * 10000 gsld.Name = "公司值班" gsld.IsCompany = 1 orgList = append(orgList, gsld) } orgListAry := GetOrgLevel(requestData.OrgId, 1) orgList = append(orgList, orgListAry...) for _, v := range orgList { if !publicmethod.IsInTrue[int64](v.Id, paichu) { var sendInfo SendCompanyWork sendInfo.OrgInfo.Id = v.Id sendInfo.OrgInfo.Name = v.Name sendInfo.OrgInfo.IsCompany = v.IsCompany var comLog []teamlog.Companylog overall.CONSTANT_DB_TeamsLog.Where("`orgid` = ? AND `years` = ? AND `months` = ?", v.Id, yearValInt, monthValInt).Find(&comLog) sendInfo.DutyList = GetOrgParWork(comLog, yearValInt, monthValInt, monthEndDay) sendData = append(sendData, sendInfo) } } sendCenter["list"] = sendData publicmethod.Result(0, sendCenter, c) } func TestGetOrgParWork(comLog []teamlog.Companylog, yearValInt, monthValInt, monthEndDay int) (DutyList []DutyListStruct) { for i := 1; i <= monthEndDay; i++ { var dayWorkMan DutyListStruct dayWorkMan.Years = yearValInt dayWorkMan.Months = monthValInt dayWorkMan.Days = i for _, v := range comLog { if i == v.Days { dayWorkMan.Id = v.ID dayWorkMan.Holiday = v.Holiday dayWorkMan.AllDay = GetMAnInfo(v.AllDay, yearValInt, monthValInt, i) dayWorkMan.BaiTian = GetMAnInfo(v.BaiTian, yearValInt, monthValInt, i) dayWorkMan.Night = GetMAnInfo(v.Night, yearValInt, monthValInt, i) dayWorkMan.Morning = GetMAnInfo(v.Morning, yearValInt, monthValInt, i) dayWorkMan.Afternoon = GetMAnInfo(v.Afternoon, yearValInt, monthValInt, i) } } DutyList = append(DutyList, dayWorkMan) } return } /* * @ 作者: 秦东 @ 时间: 2025-08-12 10:11:10 @ 功能: 值班人员信息 */ func TestGetMAnInfo(userKey string) (userList []UserCentor) { if userKey != "" { userAry := strings.Split(userKey, ",") if len(userAry) > 0 { var man []modelshr.ManCont overall.CONSTANT_DB_HrInside.Model(&modelshr.ManCont{}).Select("`id`,`key`,`name`,`number`,`icon`,`icon_photo`,`wechat`,`work_wechat`,`admin_org`,`position`,`teamid`,`mobilephone`,`company`").Where("`state` = 1 AND `emp_type` BETWEEN ? AND ? AND `key` IN ?", 1, 10, userAry).Find(&man) for _, v := range man { var userInfo UserCentor userInfo.Id = strconv.FormatInt(v.Id, 10) userInfo.UserKey = strconv.FormatInt(v.Key, 10) userInfo.Coder = v.Number userInfo.Name = v.Name userInfo.Icon = v.Icon if v.IconPhpto != "" { userInfo.Icon = v.IconPhpto } userInfo.Wechat = v.Wechat userInfo.WorkWechat = v.WorkWechat userInfo.Tel = v.Mobilephone userInfo.Gender = v.Gender userList = append(userList, userInfo) } } } return } // 根据行政组织获取人员信息 func (a *ApiMethod) TestGeiOrgAllPeople(c *gin.Context) { var requestData GetOrgPeopel err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.OrgId == 0 { publicmethod.Result(1, err, c, "未知行政组织!") return } if requestData.IsAll == 0 { requestData.IsAll = 1 } if requestData.IsAll == 1 { var sunOrg publicmethod.GetOrgAllParent sunOrg.GetOrgSunNei(requestData.OrgId) sunOrg.Id = append(sunOrg.Id, requestData.OrgId) var userList []UserCentor if len(sunOrg.Id) > 0 { var man []modelshr.ManCont overall.CONSTANT_DB_HrInside.Model(&modelshr.ManCont{}).Select("`id`,`key`,`name`,`number`,`icon`,`icon_photo`,`wechat`,`work_wechat`,`admin_org`,`position`,`teamid`,`mobilephone`,`company`").Where("`state` = 1 AND `emp_type` BETWEEN ? AND ? AND `admin_org` IN ?", 1, 10, sunOrg.Id).Find(&man) for _, v := range man { var userInfo UserCentor userInfo.Id = strconv.FormatInt(v.Id, 10) userInfo.UserKey = strconv.FormatInt(v.Key, 10) userInfo.Coder = v.Number userInfo.Name = fmt.Sprintf("%v(%v)", v.Name, v.Number) userInfo.Icon = v.Icon if v.IconPhpto != "" { userInfo.Icon = v.IconPhpto } userInfo.Wechat = v.Wechat userInfo.WorkWechat = v.WorkWechat userInfo.Tel = v.Mobilephone userInfo.Gender = v.Gender userList = append(userList, userInfo) } } publicmethod.Result(0, userList, c) } else { } } /* * @ 作者: 秦东 @ 时间: 2025-08-13 08:42:32 @ 功能: 编辑值班信息 */ func (a *ApiMethod) TestSaveEditDutyInfo(c *gin.Context) { var requestData DutyOrgInfo err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Orgid == 0 { publicmethod.Result(1, err, c, "未知行政组织!") return } if requestData.Years == 0 || requestData.Months == 0 || requestData.Days == 0 { publicmethod.Result(1, err, c, "未知时间安排!") return } holiday := 2 if requestData.Holiday != "" { holiday, _ = strconv.Atoi(requestData.Holiday) if holiday == 0 { holiday = 2 } } isAdd := true monthval := fmt.Sprintf("%v", requestData.Months) if requestData.Months < 10 { monthval = fmt.Sprintf("0%v", requestData.Months) } daysval := fmt.Sprintf("%v", requestData.Days) if requestData.Days < 10 { daysval = fmt.Sprintf("0%v", requestData.Days) } timeStr := fmt.Sprintf("%v-%v-%v 12:00:00", requestData.Years, monthval, daysval) var timeVal publicmethod.DateTimeTotimes timeVal.BaisStrToTime(timeStr) if requestData.Id != 0 { var oldDutyCont teamlog.Companylog err = oldDutyCont.GetCont(map[string]interface{}{"`id`": requestData.Id}) if err == nil { isAdd = false saveEitd := publicmethod.MapOut[string]() saveEitd["`holiday`"] = holiday saveEitd["allDay"] = strings.Join(requestData.AllDay, ",") saveEitd["baiTian"] = strings.Join(requestData.BaiTian, ",") saveEitd["night"] = strings.Join(requestData.Night, ",") saveEitd["morning"] = strings.Join(requestData.Morning, ",") saveEitd["afternoon"] = strings.Join(requestData.Afternoon, ",") saveEitd["saveTime"] = time.Now().Unix() var newDutyCont teamlog.Companylog err = newDutyCont.EiteCont(map[string]interface{}{"`id`": requestData.Id}, saveEitd) if err != nil { publicmethod.Result(106, err, c) return } } } if isAdd { var saveConter teamlog.Companylog saveConter.Orgid = requestData.Orgid // 行政组织ID saveConter.RunTime = timeVal.AllTime // 执行时间 saveConter.Years = requestData.Years // 年 saveConter.Months = requestData.Months // 月 saveConter.Days = requestData.Days // 日 saveConter.Holiday = holiday // 假日(1:是;2:否) saveConter.AllDay = strings.Join(requestData.AllDay, ",") // 全天值班人员 saveConter.BaiTian = strings.Join(requestData.BaiTian, ",") // 白天值班人员 saveConter.Night = strings.Join(requestData.Night, ",") // 夜晚值班人员 saveConter.Morning = strings.Join(requestData.Morning, ",") // 夜晚值班人员 saveConter.Afternoon = strings.Join(requestData.Afternoon, ",") // 夜晚值班人员 saveConter.SaveTime = time.Now().Unix() // 编辑时间 err = overall.CONSTANT_DB_TeamsLog.Create(&saveConter).Error if err != nil { publicmethod.Result(106, err, c) return } } publicmethod.Result(0, err, c) } // 根据日期获取行政组织排班列表 func (a *ApiMethod) TestGeyOneDayDuty(c *gin.Context) { var requestData OenDayDuty err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.OrgId == 0 { publicmethod.Result(1, err, c, "未知行政组织!") return } currentTime := time.Now().Unix() yearVal := publicmethod.UnixTimeToDay(currentTime, 16) yearValInt, _ := strconv.Atoi(yearVal) monthVal := publicmethod.UnixTimeToDay(currentTime, 17) monthValInt, _ := strconv.Atoi(monthVal) dayhVal := publicmethod.UnixTimeToDay(currentTime, 18) dayhValInt, _ := strconv.Atoi(dayhVal) if requestData.Years != 0 { yearValInt = requestData.Years } if requestData.Months != 0 { monthValInt = requestData.Months } if requestData.Days != 0 { dayhValInt = requestData.Days } sendCenter := publicmethod.MapOut[string]() var currOrgInfo GaveOrgAry // currOrgInfo.GetCont(map[string]interface{}{"`id`": requestData.OrgId}, "`name`") overall.CONSTANT_DB_HrInside.Model(&currOrgInfo).Select("`name`").Where("`id` = ?", requestData.OrgId).First(&currOrgInfo) sendCenter["title"] = fmt.Sprintf("%v.%v.%v%v", yearVal, monthValInt, dayhValInt, currOrgInfo.Name) sendCenter["orgId"] = requestData.OrgId var orgList []GaveOrgAry if requestData.OrgId == 309 { var gsdaban GaveOrgAry gsdaban.Id = requestData.OrgId * 10000 gsdaban.Name = "公司带班" gsdaban.IsCompany = 1 orgList = append(orgList, gsdaban) var gszhiban GaveOrgAry gszhiban.Id = requestData.OrgId*10000 + 1 gszhiban.Name = "公司值班" gsdaban.IsCompany = 1 orgList = append(orgList, gszhiban) } else { var gsld GaveOrgAry gsld.Id = requestData.OrgId * 10000 gsld.Name = "公司值班" gsld.IsCompany = 1 orgList = append(orgList, gsld) } orgListAry := GetOrgLevel(requestData.OrgId, 1) orgList = append(orgList, orgListAry...) var sendData []WebSendTo for _, v := range orgList { if !publicmethod.IsInTrue[int64](v.Id, paichu) { var sendInfo WebSendTo sendInfo.OrgId = v.Id sendInfo.OrgName = v.Name sendInfo.IsCompany = v.IsCompany var comLog teamlog.Companylog err = overall.CONSTANT_DB_TeamsLog.Where("`orgid` = ? AND `years` = ? AND `months` = ? AND `days` = ?", v.Id, yearValInt, monthValInt, dayhValInt).First(&comLog).Error if err == nil { sendInfo.Id = strconv.FormatInt(comLog.ID, 10) sendInfo.Holiday = comLog.Holiday sendInfo.AllDay = GetMAnInfo(comLog.AllDay, yearValInt, monthValInt, dayhValInt) sendInfo.BaiTian = GetMAnInfo(comLog.BaiTian, yearValInt, monthValInt, dayhValInt) sendInfo.Night = GetMAnInfo(comLog.Night, yearValInt, monthValInt, dayhValInt) sendInfo.Morning = GetMAnInfo(comLog.Morning, yearValInt, monthValInt, dayhValInt) sendInfo.Afternoon = GetMAnInfo(comLog.Afternoon, yearValInt, monthValInt, dayhValInt) sendData = append(sendData, sendInfo) } } } sendCenter["list"] = sendData publicmethod.Result(0, sendCenter, c) } /* * @ 作者: 秦东 @ 时间: 2025-08-13 21:24:02 @ 功能: 清空日期值班 */ func (a *ApiMethod) TestDelOneDayDuty(c *gin.Context) { var requestData publicmethod.CommonId[int64] err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Id == 0 { publicmethod.Result(1, err, c, "未知删除项目!") return } var comLog teamlog.Companylog err = comLog.DelCont(map[string]interface{}{"`id`": requestData.Id}) publicmethod.Result(0, err, c) } /* * @ 作者: 秦东 @ 时间: 2025-08-14 11:20:51 @ 功能: 获取排版信息 */ func (a *ApiMethod) TestGetDutyCont(c *gin.Context) { var requestData publicmethod.PublicId err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Id == "" { publicmethod.Result(1, err, c, "未知项目!") return } var comLog CompanyDutyCont comLog.GetCont(map[string]interface{}{"`id`": requestData.Id}) if comLog.AllDay != "" { comLog.AllDayAry = strings.Split(comLog.AllDay, ",") } else { comLog.AllDayAry = []string{} } if comLog.BaiTian != "" { comLog.BaiTianAry = strings.Split(comLog.BaiTian, ",") } else { comLog.BaiTianAry = []string{} } if comLog.Night != "" { comLog.NightAry = strings.Split(comLog.Night, ",") } else { comLog.NightAry = []string{} } if comLog.Morning != "" { comLog.MorningAry = strings.Split(comLog.Morning, ",") } else { comLog.MorningAry = []string{} } if comLog.Afternoon != "" { comLog.AfternoonAry = strings.Split(comLog.Afternoon, ",") } else { comLog.AfternoonAry = []string{} } publicmethod.Result(0, comLog, c) }