From b44eec2c7d984033ba5d0ce9f0641051f198086a Mon Sep 17 00:00:00 2001 From: Sherlock0618 <867921653@qq.com> Date: Mon, 24 Feb 2025 15:03:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BAconnector=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChaCeRndTrans/settings.py | 3 +- apps/connector/__init__.py | 0 apps/connector/admin.py | 3 + apps/connector/apps.py | 5 + apps/connector/migrations/0001_initial.py | 42 ++ apps/connector/migrations/__init__.py | 0 apps/connector/models.py | 33 ++ apps/connector/serializers/__init__.py | 4 + .../serializers/connector_serializer.py | 11 + apps/connector/tests.py | 3 + apps/connector/urls.py | 12 + apps/connector/views.py | 3 + apps/connector/views/__init__.py | 4 + apps/connector/views/connector.py | 113 +++++ .../migrations/0002_auto_20250221_1723.py | 83 ++++ .../migrations/0002_auto_20250221_1723.py | 421 ++++++++++++++++++ apps/tasks/migrations/0001_initial.py | 29 ++ 17 files changed, 768 insertions(+), 1 deletion(-) create mode 100644 apps/connector/__init__.py create mode 100644 apps/connector/admin.py create mode 100644 apps/connector/apps.py create mode 100644 apps/connector/migrations/0001_initial.py create mode 100644 apps/connector/migrations/__init__.py create mode 100644 apps/connector/models.py create mode 100644 apps/connector/serializers/__init__.py create mode 100644 apps/connector/serializers/connector_serializer.py create mode 100644 apps/connector/tests.py create mode 100644 apps/connector/urls.py create mode 100644 apps/connector/views.py create mode 100644 apps/connector/views/__init__.py create mode 100644 apps/connector/views/connector.py create mode 100644 apps/rbac/migrations/0002_auto_20250221_1723.py create mode 100644 apps/staff/migrations/0002_auto_20250221_1723.py create mode 100644 apps/tasks/migrations/0001_initial.py diff --git a/ChaCeRndTrans/settings.py b/ChaCeRndTrans/settings.py index e029d87..9ffb8ac 100644 --- a/ChaCeRndTrans/settings.py +++ b/ChaCeRndTrans/settings.py @@ -78,6 +78,7 @@ INSTALLED_APPS = [ "rbac", # 权限模块 "staff", # 权限模块 "tasks", # 定时任务 + "connector", # 数据连接 ] MIDDLEWARE = [ @@ -154,7 +155,7 @@ DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", # "ENGINE": "dj_db_conn_pool.backends.mysql", - "NAME": "chace_rnd_3x", + "NAME": "chace_rnd_trans", "USER": "ccwtdm", "PASSWORD": "fhRZLEu562wi23M4QC4iYq615UZEvgeB", "HOST": "47.112.242.103", diff --git a/apps/connector/__init__.py b/apps/connector/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/connector/admin.py b/apps/connector/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/apps/connector/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/apps/connector/apps.py b/apps/connector/apps.py new file mode 100644 index 0000000..859331e --- /dev/null +++ b/apps/connector/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class ConnectorConfig(AppConfig): + name = 'connector' diff --git a/apps/connector/migrations/0001_initial.py b/apps/connector/migrations/0001_initial.py new file mode 100644 index 0000000..02b6ba5 --- /dev/null +++ b/apps/connector/migrations/0001_initial.py @@ -0,0 +1,42 @@ +# Generated by Django 3.1.4 on 2025-02-21 17:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Connection', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='主键')), + ('type', models.IntegerField(help_text='1:数据库,2:API', verbose_name='连接类型')), + ('host', models.CharField(max_length=255, verbose_name='地址')), + ('port', models.IntegerField(verbose_name='端口')), + ('username', models.CharField(max_length=255, verbose_name='用户名')), + ('password', models.CharField(max_length=255, verbose_name='密码')), + ('database_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='数据库名称')), + ('apiUrl', models.TextField(blank=True, null=True, verbose_name='APIURL')), + ('authType', models.IntegerField(blank=True, help_text='1:Basic Authentication,2:Bearer Token,3:API Key', null=True, verbose_name='认证类型')), + ('requestMethod', models.IntegerField(help_text='1:get,2:post', verbose_name='请求方法')), + ('requestParams', models.JSONField(blank=True, null=True, verbose_name='请求参数')), + ('companyMid', models.CharField(max_length=255, verbose_name='公司全局MainID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ], + options={ + 'verbose_name': '数据连接', + 'verbose_name_plural': '数据连接', + 'ordering': ['id'], + }, + ), + ] diff --git a/apps/connector/migrations/__init__.py b/apps/connector/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/connector/models.py b/apps/connector/models.py new file mode 100644 index 0000000..5f8c727 --- /dev/null +++ b/apps/connector/models.py @@ -0,0 +1,33 @@ +from django.db import models + + +class Connection(models.Model): + id = models.AutoField(primary_key=True, verbose_name='主键') + type = models.IntegerField(verbose_name='连接类型', help_text='1:数据库,2:API') + host = models.CharField(max_length=255, verbose_name='地址') + port = models.IntegerField(verbose_name='端口') + username = models.CharField(max_length=255, verbose_name='用户名') + password = models.CharField(max_length=255, verbose_name='密码') # 建议加密存储 + database_name = models.CharField(max_length=255, null=True, blank=True, verbose_name='数据库名称') + apiUrl = models.TextField(null=True, blank=True, verbose_name='APIURL') + authType = models.IntegerField(null=True, blank=True, verbose_name='认证类型', + help_text='1:Basic Authentication,2:Bearer Token,3:API Key') # 例如: # Basic Authentication:使用用户名和密码进行简单的认证。 + # Bearer Token:使用访问令牌进行认证,通常用于 OAuth 2.0。 + # API Key:通过在请求头或 URL 中传递 API 密钥进行认证。 + requestMethod = models.IntegerField(verbose_name='请求方法', help_text='1:get,2:post') + requestParams = models.JSONField(null=True, blank=True, verbose_name='请求参数') + companyMid = models.CharField(max_length=255, verbose_name='公司全局MainID') + CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') + CreateByUid = models.IntegerField(null=True, blank=True, verbose_name='创建人ID') + CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name='创建人') + UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name='更新人') + UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name='更新人ID') + UpdateDateTime = models.DateTimeField(auto_now=True, blank=True, verbose_name='更新时间') + + class Meta: + verbose_name = '数据连接' + verbose_name_plural = verbose_name + ordering = ["id"] + + def __str__(self): + return self.id diff --git a/apps/connector/serializers/__init__.py b/apps/connector/serializers/__init__.py new file mode 100644 index 0000000..48cc356 --- /dev/null +++ b/apps/connector/serializers/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# @Author : Sherlock +# @Time : 2025/2/21 17:49 +# @Description : diff --git a/apps/connector/serializers/connector_serializer.py b/apps/connector/serializers/connector_serializer.py new file mode 100644 index 0000000..297a919 --- /dev/null +++ b/apps/connector/serializers/connector_serializer.py @@ -0,0 +1,11 @@ +# Created by Sherlock on 2025/2/21 17:49 +from rest_framework import serializers +from .models import Connection + +class ConnectionSerializer(serializers.ModelSerializer): + """ + 数据连接 + """ + class Meta: + model = Connection + fields = "__all__" diff --git a/apps/connector/tests.py b/apps/connector/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/apps/connector/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/apps/connector/urls.py b/apps/connector/urls.py new file mode 100644 index 0000000..987db6b --- /dev/null +++ b/apps/connector/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, include +from rbac.views import user, menu, role, permission, message, SubAccount, FrontRole, company +from rest_framework import routers + +from rbac.views.Slider_Verification import SliderVerification + +router = routers.SimpleRouter() + + +urlpatterns = [ + path(r"api/", include(router.urls)), +] diff --git a/apps/connector/views.py b/apps/connector/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/apps/connector/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/apps/connector/views/__init__.py b/apps/connector/views/__init__.py new file mode 100644 index 0000000..8d99e84 --- /dev/null +++ b/apps/connector/views/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# @Author : Sherlock +# @Time : 2025/2/21 17:53 +# @Description : diff --git a/apps/connector/views/connector.py b/apps/connector/views/connector.py new file mode 100644 index 0000000..2d3ddd5 --- /dev/null +++ b/apps/connector/views/connector.py @@ -0,0 +1,113 @@ +# -*- coding: utf-8 -*- +# @Author : Sherlock +# @Time : 2025/2/21 17:53 +# @Description : 数据连接 +from rest_framework.permissions import IsAuthenticated +from rest_framework_jwt.authentication import JSONWebTokenAuthentication +from django_filters.rest_framework import DjangoFilterBackend +from rest_framework.decorators import action +from rest_framework.filters import SearchFilter, OrderingFilter + + +class ConnectorViewSet(CustomViewBase): + ''' + 字典详情树 + ''' + perms_map = ( + {'*': 'admin'}, + {'*': 'connector_all'}, + {'get': 'connector_list'}, + {'post': 'connector_create'}, + {'put': 'connector_edit'}, + {'delete': 'connector_delete'} + ) + queryset = Connection.objects.all() + serializer_class = ConnectionSerializer + filter_backends = (SearchFilter, OrderingFilter) + ordering_fields = ('id',) + authentication_classes = (JSONWebTokenAuthentication,) + permission_classes = (IsAuthenticated,) + + def list(self, request, *args, **kwargs): + ''' + 重写list方法 + ''' + companyMid = request.GET.get("companyMid", None) + is_enabled = request.GET.get("is_enabled") + label = request.GET.get("label") + order = request.GET.get("order") + sort = request.GET.get("ordering") + order_by = 'id' + try: + + queryRows = Connection.objects.filter(companyMid=companyMid).order_by(order_by) + for item in queryRows: + item.__dict__.pop('_state') + results.append(item.__dict__) + result = [] + return CCAIResponse(results) + else: + logger.error("connector list failed: \n%s" % traceback.format_exc()) + return CCAIResponse(PARAMS_ERR, SERVER_ERROR) + + def create(self, request, *args, **kwargs): + '''添加数据POST''' + try: + data = req_operate_by_user(request) + # data['dict_detail_id'] = uuid.uuid4().__str__() + + serializer = self.get_serializer(data=data) + serializer.is_valid(raise_exception=True) + self.perform_create(serializer) + + + return CCAIResponse(data="success") + except Exception as e: + logger.error("connector create failed: \n%s" % traceback.format_exc()) + return CCAIResponse("connector create failed", SERVER_ERROR) + + def destroy(self, request, *args, **kwargs): + try: + instance = self.get_object() + # 查询是否存在关联 + queryRows = Connection.objects.filter(id=instance.id) + if len(queryRows > 0): + # return CCAIResponse("该数据存在关联,请先删除关联数据", BAD) + # is_association = self.check_association(deptId=instance.id) + # if is_association: + # return CCAIResponse(is_association, BAD) + self.perform_destroy(instance) + + return CCAIResponse(data="delete connector success") + else: + logger.error("connector id failed: \n%s" % traceback.format_exc()) + return CCAIResponse("delete connector id inexistence ", BAD) + except Exception as e: + logger.error("user: %s, delete dept failed: \n%s" % (request.user.id, traceback.format_exc())) + return CCAIResponse("delete dept failed", SERVER_ERROR) + + + def update(self, request, *args, **kwargs): + from rest_framework.exceptions import ValidationError + try: + companyMid = request.query_params.get('companyMid', None) + data = req_operate_by_user(request) + data['companyMid'] = companyMid + partial = kwargs.pop('partial', False) # True:所有字段全部更新, False:仅更新提供的字段 + instance = self.get_object() + + + serializer = self.get_serializer(instance, data=data, partial=partial) + serializer.is_valid(raise_exception=True) + self.perform_update(serializer) + + if getattr(instance, '_prefetched_objects_cache', None): + # If 'prefetch_related' has been applied to a queryset, we need to + # forcibly invalidate the prefetch cache on the instance. + instance._prefetched_objects_cache = {} + return CCAIResponse(data="success") + + except Exception as e: + logger.error("user: %s, update connector failed: \n%s" % (request.user.id, traceback.format_exc())) + return CCAIResponse("update dept failed", SERVER_ERROR) + diff --git a/apps/rbac/migrations/0002_auto_20250221_1723.py b/apps/rbac/migrations/0002_auto_20250221_1723.py new file mode 100644 index 0000000..2d93c86 --- /dev/null +++ b/apps/rbac/migrations/0002_auto_20250221_1723.py @@ -0,0 +1,83 @@ +# Generated by Django 3.1.4 on 2025-02-21 17:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rbac', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='company', + name='AmEnd', + field=models.CharField(blank=True, default='12:00', help_text='早班结束时间', max_length=10, null=True, verbose_name='早班结束时间'), + ), + migrations.AddField( + model_name='company', + name='AmStart', + field=models.CharField(blank=True, default='8:00', help_text='早班起始时间', max_length=10, null=True, verbose_name='早班起始时间'), + ), + migrations.AddField( + model_name='company', + name='PmEnd', + field=models.CharField(blank=True, default='18:00', help_text='午班结束时间', max_length=10, null=True, verbose_name='午班结束时间'), + ), + migrations.AddField( + model_name='company', + name='PmStart', + field=models.CharField(blank=True, default='14:00', help_text='午班起始时间', max_length=10, null=True, verbose_name='午班起始时间'), + ), + migrations.AddField( + model_name='company', + name='checkIn', + field=models.IntegerField(default=0, help_text='打卡方案,0-原方案, 1-新方案(细颗粒度)', verbose_name='打卡方案,0-原方案, 1-新方案(细颗粒度)'), + ), + migrations.AddField( + model_name='company', + name='hightechDate', + field=models.DateField(blank=True, help_text='获取高企时间', null=True, verbose_name='获取高企时间'), + ), + migrations.AddField( + model_name='company', + name='tech', + field=models.CharField(blank=True, help_text='技术领域id', max_length=200, null=True, verbose_name='技术领域id'), + ), + migrations.AddField( + model_name='company', + name='tolerance', + field=models.IntegerField(default=900, help_text='打卡容错时间,单位s, 默认900s=15min', verbose_name='打卡容错时间,单位s, 默认900s=15min'), + ), + migrations.AddField( + model_name='menu', + name='label', + field=models.IntegerField(default=1, verbose_name='是否前台菜单 # 1:是 2:不是'), + ), + migrations.AddField( + model_name='permission', + name='label', + field=models.IntegerField(default=1, verbose_name='是否前台权限 # 1:是 2:不是'), + ), + migrations.AddField( + model_name='role', + name='label', + field=models.IntegerField(default=1, verbose_name='是否前台角色 # 1:是 2:不是'), + ), + migrations.AddField( + model_name='userprofile', + name='label', + field=models.IntegerField(default=1, verbose_name='是否前台用户 # 1:是 2:不是'), + ), + migrations.AlterField( + model_name='userprofile', + name='image', + field=models.CharField(default='/image/default.png', max_length=100, verbose_name='头像'), + ), + migrations.AlterField( + model_name='userprofile', + name='is_staff', + field=models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status'), + ), + ] diff --git a/apps/staff/migrations/0002_auto_20250221_1723.py b/apps/staff/migrations/0002_auto_20250221_1723.py new file mode 100644 index 0000000..be054f2 --- /dev/null +++ b/apps/staff/migrations/0002_auto_20250221_1723.py @@ -0,0 +1,421 @@ +# Generated by Django 3.1.4 on 2025-02-21 17:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('staff', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='AccruedAccumulation', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('staffId', models.IntegerField(blank=True, help_text='员工id', null=True, verbose_name='员工id')), + ('date', models.DateField(blank=True, help_text='薪资入账年月 # 2024-01', null=True, verbose_name='薪资入账年月')), + ('startDate', models.DateField(blank=True, help_text='薪资费用发生开始年月 # 2024-01', null=True, verbose_name='薪资费用发生开始年月')), + ('endDate', models.DateField(blank=True, help_text='薪资费用发生结束年月 # 2024-01', null=True, verbose_name='薪资费用发生结束年月')), + ('amount', models.DecimalField(blank=True, decimal_places=2, default=0, help_text='金额', max_digits=18, verbose_name='金额')), + ('subjectId', models.IntegerField(blank=True, help_text='对应科目id', null=True, verbose_name='对应科目id')), + ('status', models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态')), + ('attendanceStatus', models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('companyMid', models.CharField(blank=True, max_length=36, null=True, verbose_name='公司全局id')), + ], + options={ + 'verbose_name': '公积金记录', + 'verbose_name_plural': '公积金记录', + 'db_table': 'staff_accrued_accumulation', + 'ordering': ['id'], + }, + ), + migrations.CreateModel( + name='AccruedBonus', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('staffId', models.IntegerField(blank=True, help_text='员工id', null=True, verbose_name='员工id')), + ('date', models.DateField(blank=True, help_text='薪资入账年月 # 2024-01', null=True, verbose_name='薪资入账年月')), + ('startDate', models.DateField(blank=True, help_text='薪资费用发生开始年月 # 2024-01', null=True, verbose_name='薪资费用发生开始年月')), + ('endDate', models.DateField(blank=True, help_text='薪资费用发生结束年月 # 2024-01', null=True, verbose_name='薪资费用发生结束年月')), + ('amount', models.DecimalField(blank=True, decimal_places=2, help_text='金额', max_digits=18, null=True, verbose_name='金额')), + ('subjectId', models.IntegerField(blank=True, help_text='对应科目id', null=True, verbose_name='对应科目id')), + ('status', models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态')), + ('attendanceStatus', models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成')), + ('remark', models.CharField(blank=True, help_text='备注信息', max_length=200, null=True, verbose_name='备注信息')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('companyMid', models.CharField(blank=True, max_length=36, null=True, verbose_name='公司全局id')), + ], + options={ + 'verbose_name': '奖金管理', + 'verbose_name_plural': '奖金管理', + 'db_table': 'staff_accrued_bonus', + 'ordering': ['id'], + }, + ), + migrations.CreateModel( + name='AccruedSocialInsurance', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('staffId', models.IntegerField(blank=True, help_text='员工id', null=True, verbose_name='员工id')), + ('date', models.DateField(blank=True, help_text='薪资入账年月 # 2024-01', null=True, verbose_name='薪资入账年月')), + ('startDate', models.DateField(blank=True, help_text='薪资费用发生开始年月 # 2024-01', null=True, verbose_name='薪资费用发生开始年月')), + ('endDate', models.DateField(blank=True, help_text='薪资费用发生结束年月 # 2024-01', null=True, verbose_name='薪资费用发生结束年月')), + ('amount', models.DecimalField(blank=True, decimal_places=2, default=0, help_text='金额', max_digits=18, verbose_name='金额')), + ('subjectId', models.IntegerField(blank=True, help_text='对应科目id', null=True, verbose_name='对应科目id')), + ('status', models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态')), + ('attendanceStatus', models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('companyMid', models.CharField(blank=True, max_length=36, null=True, verbose_name='公司全局id')), + ], + options={ + 'verbose_name': '社保记录', + 'verbose_name_plural': '社保记录', + 'db_table': 'staff_accrued_social_insurance', + 'ordering': ['id'], + }, + ), + migrations.CreateModel( + name='AccruedWages', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('staffId', models.IntegerField(blank=True, help_text='员工id', null=True, verbose_name='员工id')), + ('date', models.DateField(blank=True, help_text='薪资入账年月 # 2024-01', null=True, verbose_name='薪资入账年月')), + ('startDate', models.DateField(blank=True, help_text='薪资费用发生开始年月 # 2024-01', null=True, verbose_name='薪资费用发生开始年月')), + ('endDate', models.DateField(blank=True, help_text='薪资费用发生结束年月 # 2024-01', null=True, verbose_name='薪资费用发生结束年月')), + ('amount', models.DecimalField(blank=True, decimal_places=2, default=0, help_text='工资', max_digits=18, verbose_name='工资')), + ('subjectId', models.IntegerField(blank=True, help_text='对应科目id', null=True, verbose_name='对应科目id')), + ('status', models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态')), + ('attendanceStatus', models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('companyMid', models.CharField(blank=True, max_length=36, null=True, verbose_name='公司全局id')), + ], + options={ + 'verbose_name': '工资记录', + 'verbose_name_plural': '工资记录', + 'db_table': 'staff_accrued_wages', + 'ordering': ['id'], + }, + ), + migrations.CreateModel( + name='AccruedWelfare', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('staffId', models.IntegerField(blank=True, help_text='员工id', null=True, verbose_name='员工id')), + ('date', models.DateField(blank=True, help_text='薪资入账年月 # 2024-01', null=True, verbose_name='薪资入账年月')), + ('startDate', models.DateField(blank=True, help_text='薪资费用发生开始年月 # 2024-01', null=True, verbose_name='薪资费用发生开始年月')), + ('endDate', models.DateField(blank=True, help_text='薪资费用发生结束年月 # 2024-01', null=True, verbose_name='薪资费用发生结束年月')), + ('amount', models.DecimalField(blank=True, decimal_places=2, help_text='金额', max_digits=18, null=True, verbose_name='金额')), + ('subjectId', models.IntegerField(blank=True, help_text='对应科目id', null=True, verbose_name='对应科目id')), + ('status', models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态')), + ('attendanceStatus', models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成')), + ('remark', models.CharField(blank=True, help_text='备注信息', max_length=200, null=True, verbose_name='备注信息')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('companyMid', models.CharField(blank=True, max_length=36, null=True, verbose_name='公司全局id')), + ], + options={ + 'verbose_name': '福利管理', + 'verbose_name_plural': '福利管理', + 'db_table': 'staff_accrued_welfare', + 'ordering': ['id'], + }, + ), + migrations.CreateModel( + name='Accumulation', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('staffId', models.IntegerField(blank=True, help_text='员工id', null=True, verbose_name='员工id')), + ('date', models.DateField(blank=True, help_text='薪资入账年月 # 2024-01', null=True, verbose_name='薪资入账年月')), + ('startDate', models.DateField(blank=True, help_text='薪资费用发生开始年月 # 2024-01', null=True, verbose_name='薪资费用发生开始年月')), + ('endDate', models.DateField(blank=True, help_text='薪资费用发生结束年月 # 2024-01', null=True, verbose_name='薪资费用发生结束年月')), + ('amount', models.DecimalField(blank=True, decimal_places=2, default=0, help_text='金额', max_digits=18, verbose_name='金额')), + ('subjectId', models.IntegerField(blank=True, help_text='对应科目id', null=True, verbose_name='对应科目id')), + ('status', models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态')), + ('attendanceStatus', models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('companyMid', models.CharField(blank=True, max_length=36, null=True, verbose_name='公司全局id')), + ], + options={ + 'verbose_name': '公积金记录', + 'verbose_name_plural': '公积金记录', + 'db_table': 'staff_accumulation', + 'ordering': ['id'], + }, + ), + migrations.CreateModel( + name='Bonus', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('staffId', models.IntegerField(blank=True, help_text='员工id', null=True, verbose_name='员工id')), + ('date', models.DateField(blank=True, help_text='薪资入账年月 # 2024-01', null=True, verbose_name='薪资入账年月')), + ('startDate', models.DateField(blank=True, help_text='薪资费用发生开始年月 # 2024-01', null=True, verbose_name='薪资费用发生开始年月')), + ('endDate', models.DateField(blank=True, help_text='薪资费用发生结束年月 # 2024-01', null=True, verbose_name='薪资费用发生结束年月')), + ('amount', models.DecimalField(blank=True, decimal_places=2, help_text='金额', max_digits=18, null=True, verbose_name='金额')), + ('subjectId', models.IntegerField(blank=True, help_text='对应科目id', null=True, verbose_name='对应科目id')), + ('status', models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态')), + ('attendanceStatus', models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成')), + ('remark', models.CharField(blank=True, help_text='备注信息', max_length=200, null=True, verbose_name='备注信息')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('companyMid', models.CharField(blank=True, max_length=36, null=True, verbose_name='公司全局id')), + ], + options={ + 'verbose_name': '奖金管理', + 'verbose_name_plural': '奖金管理', + 'db_table': 'staff_bonus', + 'ordering': ['id'], + }, + ), + migrations.CreateModel( + name='SocialInsurance', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('staffId', models.IntegerField(blank=True, help_text='员工id', null=True, verbose_name='员工id')), + ('date', models.DateField(blank=True, help_text='薪资入账年月 # 2024-01', null=True, verbose_name='薪资入账年月')), + ('startDate', models.DateField(blank=True, help_text='薪资费用发生开始年月 # 2024-01', null=True, verbose_name='薪资费用发生开始年月')), + ('endDate', models.DateField(blank=True, help_text='薪资费用发生结束年月 # 2024-01', null=True, verbose_name='薪资费用发生结束年月')), + ('amount', models.DecimalField(blank=True, decimal_places=2, default=0, help_text='金额', max_digits=18, verbose_name='金额')), + ('subjectId', models.IntegerField(blank=True, help_text='对应科目id', null=True, verbose_name='对应科目id')), + ('status', models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态')), + ('attendanceStatus', models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('companyMid', models.CharField(blank=True, max_length=36, null=True, verbose_name='公司全局id')), + ], + options={ + 'verbose_name': '社保记录', + 'verbose_name_plural': '社保记录', + 'db_table': 'staff_social_insurance', + 'ordering': ['id'], + }, + ), + migrations.CreateModel( + name='Wages', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('staffId', models.IntegerField(blank=True, help_text='员工id', null=True, verbose_name='员工id')), + ('date', models.DateField(blank=True, help_text='薪资入账年月 # 2024-01', null=True, verbose_name='薪资入账年月')), + ('startDate', models.DateField(blank=True, help_text='薪资费用发生开始年月 # 2024-01', null=True, verbose_name='薪资费用发生开始年月')), + ('endDate', models.DateField(blank=True, help_text='薪资费用发生结束年月 # 2024-01', null=True, verbose_name='薪资费用发生结束年月')), + ('amount', models.DecimalField(blank=True, decimal_places=2, default=0, help_text='工资', max_digits=18, verbose_name='工资')), + ('subjectId', models.IntegerField(blank=True, help_text='对应科目id', null=True, verbose_name='对应科目id')), + ('status', models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态')), + ('attendanceStatus', models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('companyMid', models.CharField(blank=True, max_length=36, null=True, verbose_name='公司全局id')), + ], + options={ + 'verbose_name': '工资记录', + 'verbose_name_plural': '工资记录', + 'db_table': 'staff_wages', + 'ordering': ['id'], + }, + ), + migrations.CreateModel( + name='Welfare', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('staffId', models.IntegerField(blank=True, help_text='员工id', null=True, verbose_name='员工id')), + ('date', models.DateField(blank=True, help_text='薪资入账年月 # 2024-01', null=True, verbose_name='薪资入账年月')), + ('startDate', models.DateField(blank=True, help_text='薪资费用发生开始年月 # 2024-01', null=True, verbose_name='薪资费用发生开始年月')), + ('endDate', models.DateField(blank=True, help_text='薪资费用发生结束年月 # 2024-01', null=True, verbose_name='薪资费用发生结束年月')), + ('amount', models.DecimalField(blank=True, decimal_places=2, help_text='金额', max_digits=18, null=True, verbose_name='金额')), + ('subjectId', models.IntegerField(blank=True, help_text='对应科目id', null=True, verbose_name='对应科目id')), + ('status', models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态')), + ('attendanceStatus', models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成')), + ('remark', models.CharField(blank=True, help_text='备注信息', max_length=200, null=True, verbose_name='备注信息')), + ('CreateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='创建人')), + ('UpdateBy', models.CharField(blank=True, max_length=36, null=True, verbose_name='更新人')), + ('CreateByUid', models.IntegerField(blank=True, null=True, verbose_name='创建人ID')), + ('UpdateByUid', models.IntegerField(blank=True, null=True, verbose_name='更新人ID')), + ('CreateDateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('UpdateDateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('companyMid', models.CharField(blank=True, max_length=36, null=True, verbose_name='公司全局id')), + ], + options={ + 'verbose_name': '福利管理', + 'verbose_name_plural': '福利管理', + 'db_table': 'staff_welfare', + 'ordering': ['id'], + }, + ), + migrations.RemoveField( + model_name='salary', + name='type', + ), + migrations.AddField( + model_name='accrued', + name='accumulation', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='公积金', max_digits=18, verbose_name='公积金'), + ), + migrations.AddField( + model_name='accrued', + name='attendanceStatus', + field=models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成'), + ), + migrations.AddField( + model_name='accrued', + name='endowment', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='养老', max_digits=18, verbose_name='养老'), + ), + migrations.AddField( + model_name='accrued', + name='illness', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='大病医疗', max_digits=18, verbose_name='大病医疗'), + ), + migrations.AddField( + model_name='accrued', + name='maternity', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='生育', max_digits=18, verbose_name='生育'), + ), + migrations.AddField( + model_name='accrued', + name='medical', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='医疗', max_digits=18, verbose_name='医疗'), + ), + migrations.AddField( + model_name='accrued', + name='unemployment', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='失业', max_digits=18, verbose_name='失业'), + ), + migrations.AddField( + model_name='accrued', + name='workInjury', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='工伤', max_digits=18, verbose_name='工伤'), + ), + migrations.AddField( + model_name='reward', + name='attendanceStatus', + field=models.BooleanField(default=False, help_text='是否完成对应时间的考勤,0-未完成', verbose_name='是否完成对应时间的考勤,0-未完成'), + ), + migrations.AddField( + model_name='salary', + name='attendanceStatus', + field=models.BooleanField(default=0, help_text='考勤状态是否完成,0-未完成', verbose_name='考勤状态是否完成,0-未完成'), + ), + migrations.AddField( + model_name='staff', + name='graduationSchool', + field=models.CharField(blank=True, max_length=200, null=True, verbose_name='毕业院校'), + ), + migrations.AddField( + model_name='staff', + name='personalHonor', + field=models.CharField(blank=True, max_length=200, null=True, verbose_name='个人荣誉'), + ), + migrations.AddField( + model_name='staff', + name='professionalCertificate', + field=models.CharField(blank=True, max_length=200, null=True, verbose_name='专业证书'), + ), + migrations.AddField( + model_name='staff', + name='talentQualification', + field=models.CharField(blank=True, help_text='1.国家高层次人才 2.地方高层次人才 3.区高层次人才', max_length=10, null=True, verbose_name='人才资质'), + ), + migrations.AlterField( + model_name='accrued', + name='accruedType', + field=models.IntegerField(blank=True, help_text='预提类型 # (1:工资&社保公积金,2:奖金,3:福利)', null=True, verbose_name='预提类型'), + ), + migrations.AlterField( + model_name='attendance', + name='status', + field=models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证(已记账)', null=True, verbose_name='状态'), + ), + migrations.AlterField( + model_name='salary', + name='accumulation', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='公积金', max_digits=18, verbose_name='公积金'), + ), + migrations.AlterField( + model_name='salary', + name='endowment', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='养老', max_digits=18, verbose_name='养老'), + ), + migrations.AlterField( + model_name='salary', + name='illness', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='大病医疗', max_digits=18, verbose_name='大病医疗'), + ), + migrations.AlterField( + model_name='salary', + name='maternity', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='生育', max_digits=18, verbose_name='生育'), + ), + migrations.AlterField( + model_name='salary', + name='medical', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='医疗', max_digits=18, verbose_name='医疗'), + ), + migrations.AlterField( + model_name='salary', + name='salaryAmount', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='工资', max_digits=18, verbose_name='工资'), + ), + migrations.AlterField( + model_name='salary', + name='status', + field=models.IntegerField(blank=True, default=0, help_text='状态 # 0:未审核 1:已审核保存 1+:已添加凭证', null=True, verbose_name='状态'), + ), + migrations.AlterField( + model_name='salary', + name='unemployment', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='失业', max_digits=18, verbose_name='失业'), + ), + migrations.AlterField( + model_name='salary', + name='workInjury', + field=models.DecimalField(blank=True, decimal_places=2, default=0, help_text='工伤', max_digits=18, verbose_name='工伤'), + ), + migrations.AlterField( + model_name='staff', + name='education', + field=models.IntegerField(blank=True, help_text='学历 # 1.高中(中专)及以下 2.大专 3.本科 4.硕士 5.博士', null=True, verbose_name='学历'), + ), + ] diff --git a/apps/tasks/migrations/0001_initial.py b/apps/tasks/migrations/0001_initial.py new file mode 100644 index 0000000..ba14960 --- /dev/null +++ b/apps/tasks/migrations/0001_initial.py @@ -0,0 +1,29 @@ +# Generated by Django 3.1.4 on 2025-02-21 17:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='TasksConsloe', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('task', models.CharField(blank=True, max_length=500, null=True, verbose_name='任务')), + ('content', models.CharField(blank=True, max_length=500, null=True, verbose_name='内容')), + ('start_time', models.DateTimeField(auto_now_add=True, verbose_name='执行时间')), + ('finish_time', models.DateTimeField(auto_now_add=True, verbose_name='结束时间')), + ], + options={ + 'verbose_name': '任务输出', + 'verbose_name_plural': '任务输出', + 'ordering': ['id'], + }, + ), + ]