package approval import ( "github.com/fonchain_enterprise/fonchain-main/api/approval" "github.com/fonchain_enterprise/fonchain-main/pkg/service/approval/model" ) // OA 相关审批 需要 判断 days func MakeRetApprovalUser(req *approval.CreateRequest, approvalUsers []*approval.ApprovalUser) (retApprovalUsers []*approval.ApprovalUser) { if approvalUsers == nil && len(approvalUsers) < 1 { return nil } if model.GetOaType(req.Type) != "" { if req.Type == "outWork" || req.Type == "funeralLeave" || req.Type == "paternityLeave" || req.Type == "maritalLeave" || req.Type == "parentalLeave" || req.Type == "nursingLeave" || req.Type == "matingCheckLeave" || req.Type == "annualLeave" || req.Type == "businessTrip" || req.Type == "sick" || req.Type == "leave" || req.Type == "maternityLeave" || req.Type == "abortLeave" || req.Type == "goOut" { var days float32 if req.ApprovalOA.Leave != nil { days = req.ApprovalOA.Leave.Days } if req.ApprovalOA.BusinessTrip != nil { days = req.ApprovalOA.BusinessTrip.TotalDays } if req.ApprovalOA.GoOut != nil { days = req.ApprovalOA.GoOut.Hours / 8 } if req.ApprovalOA.OutWork != nil { days = req.ApprovalOA.OutWork.Hours / 8 } //出纳特殊处理 if req.Domain == "8fa1d8936af32f97aae832a3224bc93d" { if days <= 1 { // 获取审批人 的 全部直属 和 剔除 指定岗位的 最后2位 // 获取审批人第一级 retApprovalUser := approvalUsers[0] retApprovalUser.Level = 1 retApprovalUsers = append(retApprovalUsers, retApprovalUser) retApprovalUsers = append(retApprovalUsers, approvalUsers[1:len(approvalUsers)-2]...) } else if days > 1 && days <= 3 { // 获取审批人 的 全部直属 和 剔除 指定岗位的 最后一位 retApprovalUsers = append(retApprovalUsers, approvalUsers[:len(approvalUsers)-1]...) } else if days > 3 { // 获取审批人 全部 retApprovalUsers = approvalUsers } } else { if days <= 1 { // 获取审批人第一级 retApprovalUser := approvalUsers[0] retApprovalUser.Level = 1 retApprovalUsers = append(retApprovalUsers, retApprovalUser) } else if days > 1 && days <= 3 { // 获取审批人 的 全部直属 和 剔除 指定岗位的 最后一位 retApprovalUsers = append(retApprovalUsers, approvalUsers[:len(approvalUsers)-1]...) } else if days > 3 { // 获取审批人 全部 retApprovalUsers = approvalUsers } } return retApprovalUsers } } return approvalUsers } func DeleteApprovalUser(userId uint64, approvalUsers []*approval.ApprovalUser) (retApprovalUsers []*approval.ApprovalUser) { retApprovalUsers = make([]*approval.ApprovalUser, 0) for i := 0; i < len(approvalUsers); i++ { if approvalUsers[i].ID != userId { retApprovalUsers = append(retApprovalUsers, approvalUsers[i]) } } return }