diff --git a/gvsds/apps/gerp/management/commands/CleanAuditLogs.py b/gvsds/apps/gerp/management/commands/CleanAuditLogs.py index cbb34f12..08c5be59 100644 --- a/gvsds/apps/gerp/management/commands/CleanAuditLogs.py +++ b/gvsds/apps/gerp/management/commands/CleanAuditLogs.py @@ -11,7 +11,7 @@ import logging from django.core.management.base import BaseCommand from django.utils import timezone -from gvsdsdk.models import AuditLog +from gvsdsdk.auth.managers import AuditManager logger = logging.getLogger(__name__) @@ -43,8 +43,7 @@ class Command(BaseCommand): # 按 CreateTime 字段过滤(AuditLog.CreateTime 为 UTC 时间) threshold = timezone.now() - datetime.timedelta(days=days) - qs = AuditLog.objects.filter(CreateTime__lt=threshold) - count = qs.count() + count = AuditManager.QueryBefore(threshold).count() if dry_run: self.stdout.write(self.style.WARNING( @@ -58,7 +57,7 @@ class Command(BaseCommand): )) return - deleted_count, _ = qs.delete() + deleted_count = AuditManager.PurgeBefore(threshold) self.stdout.write(self.style.SUCCESS( f'清理完成:已删除 {deleted_count} 条早于 {days} 天的审计日志(阈值: {threshold.isoformat()})' )) diff --git a/gvsds/apps/gerp/management/commands/SeedPositionCategories.py b/gvsds/apps/gerp/management/commands/SeedPositionCategories.py index 18b208e0..d1e21fa0 100644 --- a/gvsds/apps/gerp/management/commands/SeedPositionCategories.py +++ b/gvsds/apps/gerp/management/commands/SeedPositionCategories.py @@ -9,11 +9,9 @@ - 职务绑定规则:PositionCode 前 3 位匹配通用部门编码(如 FIN-001 → 财务) - 已存在的通用部门(同租户同编码)跳过;已绑定通用部门的职务跳过,不会覆盖。 """ -import uuid - from django.core.management.base import BaseCommand -from gvsdsdk.models import Position, PositionCategory, Tenant +from gvsdsdk.auth.managers import PositionManager, TenantManager from gvsdsdk.model_utils import UUIDObj @@ -38,33 +36,24 @@ class Command(BaseCommand): bound_pos = 0 skipped_pos = 0 - for tenant in Tenant.objects.all(): + for tenant in TenantManager.ListAllTenants(): tenant_bytes = UUIDObj(tenant.TenantUUID).bytes # 1. 创建通用部门(同租户同编码已存在则跳过) cat_by_code = {} - existing_codes = set( - PositionCategory.objects.filter(TenantUUID=tenant_bytes).values_list('CategoryCode', flat=True) - ) + existing = {c.CategoryCode: c for c in PositionManager.GetCategoriesForTenant(tenant_bytes)} for code, name, sort in self.BUILTIN_CATEGORIES: - if code in existing_codes: - cat = PositionCategory.objects.get(TenantUUID=tenant_bytes, CategoryCode=code) + if code in existing: + cat = existing[code] skipped_cat += 1 else: - cat = PositionCategory.objects.create( - PositionCategoryUUID=uuid.uuid4().bytes, - TenantUUID=tenant_bytes, - CategoryName=name, - CategoryCode=code, - CategorySort=sort, - CategoryStatus=1, - ) + cat = PositionManager.CreateCategory(name, tenant_bytes, code, Sort=sort) created_cat += 1 cat_by_code[code] = cat.PositionCategoryUUID # 2. 按职务编码前缀绑定通用部门(已绑定则跳过) # 前缀取 "-" 前一段:FIN-001 → FIN;注意不能按 [:3](HR-001 会截成 "HR-") - for pos in Position.objects.filter(TenantUUID=tenant_bytes): + for pos in PositionManager.ListPositions(tenant_bytes): if pos.CategoryUUID: skipped_pos += 1 continue diff --git a/gvsds/apps/gerp/management/commands/SeedPositions.py b/gvsds/apps/gerp/management/commands/SeedPositions.py index 93f8010b..aa3de059 100644 --- a/gvsds/apps/gerp/management/commands/SeedPositions.py +++ b/gvsds/apps/gerp/management/commands/SeedPositions.py @@ -9,11 +9,9 @@ - 后续业务逻辑(调岗/升职/分类统计等)基于这些编码扩展。 """ -import uuid - from django.core.management.base import BaseCommand -from gvsdsdk.models import Position, Tenant +from gvsdsdk.auth.managers import PositionManager, TenantManager from gvsdsdk.model_utils import UUIDObj @@ -82,23 +80,15 @@ class Command(BaseCommand): def handle(self, *args, **options): created_total = 0 skipped_total = 0 - for tenant in Tenant.objects.all(): + for tenant in TenantManager.ListAllTenants(): tenant_bytes = UUIDObj(tenant.TenantUUID).bytes - existing_codes = set( - Position.objects.filter(TenantUUID=tenant_bytes).values_list('PositionCode', flat=True) - ) + existing_codes = set(PositionManager.ListPositionCodes(tenant_bytes)) for name, code, level, desc in self.BUILTIN_POSITIONS: if code in existing_codes: skipped_total += 1 continue - Position.objects.create( - PositionUUID=uuid.uuid4().bytes, - TenantUUID=tenant_bytes, - PositionName=name, - PositionCode=code, - PositionLevel=level, - PositionStatus=1, - PositionDesc=desc, + PositionManager.CreatePosition( + name, tenant_bytes, code, level, PositionDesc=desc, ) created_total += 1 self.stdout.write(self.style.SUCCESS(