Merge branch 'develop' of https://e.coding.net/ctcdevteam/hberp/hberp into develop

This commit is contained in:
shilixia 2021-08-12 10:31:47 +08:00
commit 2fed5b2aec
14 changed files with 265 additions and 26 deletions

View File

@ -0,0 +1,46 @@
# Generated by Django 3.2.6 on 2021-08-12 02:13
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('system', '0003_auto_20210812_0909'),
]
operations = [
migrations.CreateModel(
name='Equipment',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('name', models.CharField(max_length=50, verbose_name='设备名称')),
('number', models.CharField(max_length=50, unique=True, verbose_name='设备编号')),
('model', models.CharField(blank=True, max_length=10, null=True, verbose_name='规格型号')),
('factory', models.CharField(blank=True, max_length=50, null=True, verbose_name='生产厂')),
('production_date', models.DateField(blank=True, null=True, verbose_name='生产日期')),
('buy_date', models.DateField(blank=True, null=True, verbose_name='购置日期')),
('state', models.CharField(choices=[(1, '运转正常'), (0, '停用'), (2, '报废')], default=1, max_length=11, verbose_name='设备状态')),
('parameter', models.TextField(blank=True, null=True, verbose_name='技术参数')),
('place', models.CharField(blank=True, max_length=50, null=True, verbose_name='存放位置')),
('description', models.CharField(blank=True, max_length=200, null=True, verbose_name='描述')),
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='equipment_belong_dept', to='system.organization', verbose_name='所属部门')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='equipment_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('keeper', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='保管人')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='equipment_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'verbose_name': '设备信息',
'verbose_name_plural': '设备信息',
},
),
]

View File

@ -9,32 +9,31 @@ from simple_history.models import HistoricalRecords
class Equipment(BaseModel):
class Equipment(CommonBModel):
"""
设备台账信息
"""
state_choices = (
('启用', '启用'),
('停用', '停用'),
(1, '运转正常'),
(0, '停用'),
(2, '报废')
)
node = models.IntegerField('序号', max_length=50, default=0)
name = models.CharField('设备名称', max_length=50)
number = models.CharField('设备编号', max_length=50,null=True, blank=True, unique=True)
number = models.CharField('设备编号', max_length=50, unique=True)
model = models.CharField('规格型号', max_length=10, null=True, blank=True)
factory = models.CharField('生产厂', max_length=50)
country = models.CharField('国别', max_length=50)
productiondate = models.DateField('生产日期', max_length=50,null=True, blank=True, unique=True)
buydate = models.DateField('购置日期', max_length=10,null=True, blank=True)
gznumber = models.IntegerField('购置数量', max_length=10,null=True, blank=True,default=0)
state = models.CharField('设备状态', max_length=11,choices=state_choices, default='启用')
indicators = models.CharField('技术指标', max_length=50)
address = models.CharField('存放位置', max_length=50,null=True, blank=True, unique=True)
contact = models.CharField('经管联系人', max_length=20, blank=True, null=True)
contactphone = models.CharField('联系电话', max_length=11,unique=True, blank=True, null=True)
factory = models.CharField('生产厂', max_length=50, null=True, blank=True)
production_date = models.DateField('生产日期', null=True, blank=True)
buy_date = models.DateField('购置日期', null=True, blank=True)
state = models.CharField('设备状态', max_length=11, choices=state_choices, default=1)
parameter = models.TextField('技术参数', null=True, blank=True)
place = models.CharField('存放位置', max_length=50, null=True, blank=True)
keeper = models.ForeignKey(User, verbose_name='保管人', on_delete=models.CASCADE, null=True, blank=True)
description = models.CharField('描述', max_length=200, blank=True, null=True)
class Meta:
verbose_name = '供应商信息'
verbose_name = '设备信息'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
return self.name + '-' + self.name

View File

@ -0,0 +1,18 @@
from rest_framework.serializers import ModelSerializer
from .models import Equipment
from apps.system.serializers import OrganizationSimpleSerializer, UserSimpleSerializer
class EquipmentSerializer(ModelSerializer):
belong_dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True)
keeper_ = UserSimpleSerializer(source='keeper', read_only=True)
class Meta:
model = Equipment
fields = '__all__'
@staticmethod
def setup_eager_loading(queryset):
""" Perform necessary eager loading of data. """
queryset = queryset.select_related('belong_dept','keeper')
return queryset

12
hb_server/apps/em/urls.py Normal file
View File

@ -0,0 +1,12 @@
from django.db.models import base
from rest_framework import urlpatterns
from apps.em.views import EquipmentViewSet
from django.urls import path, include
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register('equipment', EquipmentViewSet, basename='equipment')
urlpatterns = [
path('', include(router.urls)),
]

View File

@ -1,3 +1,21 @@
from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
from apps.em.models import Equipment
from apps.em.serializers import EquipmentSerializer
from apps.system.mixins import OptimizationMixin
# Create your views here.
class EquipmentViewSet(ModelViewSet):
"""
设备台账-增删改查
"""
perms_map = {'get': '*', 'post': 'equipment_create',
'put': 'equipment_update', 'delete': 'equipment_delete'}
queryset = Equipment.objects.all()
serializer_class = EquipmentSerializer
search_fields = ['number', 'name', 'place']
filterset_fields = ['belong_dept', 'keeper']
ordering_fields = ['create_time']
ordering = ['-create_time']

View File

@ -0,0 +1,38 @@
# Generated by Django 3.2.6 on 2021-08-12 01:09
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Vendor',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('name', models.CharField(max_length=50, unique=True, verbose_name='供应商名称')),
('contact', models.CharField(max_length=20, verbose_name='联系人')),
('contact_phone', models.CharField(max_length=11, unique=True, verbose_name='联系电话')),
('address', models.CharField(blank=True, max_length=200, null=True, verbose_name='地址')),
('description', models.CharField(blank=True, max_length=200, null=True, verbose_name='描述')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vendor_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vendor_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'verbose_name': '供应商信息',
'verbose_name_plural': '供应商信息',
},
),
]

View File

@ -1,5 +1,4 @@
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.db.models.base import Model
import django.utils.timezone as timezone
from django.db.models.query import QuerySet
@ -9,16 +8,15 @@ from simple_history.models import HistoricalRecords
class Vendor(BaseModel):
class Vendor(CommonAModel):
"""
供应商信息
"""
name = models.CharField('供应商名称', max_length=50)
gyname = models.CharField('供应品名称', max_length=50,null=True, blank=True, unique=True)
model = models.CharField('规格型号', max_length=10,null=True, blank=True)
contact = models.CharField('联系人', max_length=20, blank=True, null=True)
contactphone = models.CharField('联系电话', max_length=11,unique=True, blank=True, null=True)
name = models.CharField('供应商名称', max_length=50, unique=True)
contact = models.CharField('联系人', max_length=20)
contact_phone = models.CharField('联系电话', max_length=11, unique=True)
address = models.CharField('地址', max_length=200, null=True, blank=True)
description = models.CharField('描述', max_length=200, blank=True, null=True)
class Meta:
verbose_name = '供应商信息'

View File

@ -0,0 +1,9 @@
from rest_framework.serializers import ModelSerializer
from .models import Vendor
class VendorSerializer(ModelSerializer):
class Meta:
model = Vendor
fields = '__all__'

View File

@ -0,0 +1,12 @@
from django.db.models import base
from rest_framework import urlpatterns
from apps.pum.views import VendorViewSet
from django.urls import path, include
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register('vendor', VendorViewSet, basename='vendor')
urlpatterns = [
path('', include(router.urls)),
]

View File

@ -1,3 +1,21 @@
from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
from apps.pum.models import Vendor
from apps.pum.serializers import VendorSerializer
from apps.system.mixins import OptimizationMixin
# Create your views here.
class VendorViewSet(ModelViewSet):
"""
供应商-增删改查
"""
perms_map = {'get': '*', 'post': 'vendor_create',
'put': 'vendor_update', 'delete': 'vendor_delete'}
queryset = Vendor.objects.all()
serializer_class = VendorSerializer
search_fields = ['name', 'contact']
filterset_fields = []
ordering_fields = ['create_time']
ordering = ['-create_time']

View File

@ -0,0 +1,58 @@
# Generated by Django 3.2.6 on 2021-08-12 01:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('system', '0002_auto_20210718_0918'),
]
operations = [
migrations.AlterField(
model_name='dict',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='dicttype',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='file',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='historicaldict',
name='id',
field=models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID'),
),
migrations.AlterField(
model_name='organization',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='permission',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='position',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='role',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='user',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
]

View File

@ -110,6 +110,15 @@ class OrganizationSerializer(serializers.ModelSerializer):
model = Organization
fields = '__all__'
class OrganizationSimpleSerializer(serializers.ModelSerializer):
class Meta:
model = Organization
fields = ['id', 'name']
class UserSimpleSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'name']
class UserListSerializer(serializers.ModelSerializer):
"""

View File

@ -46,7 +46,9 @@ INSTALLED_APPS = [
"django_filters",
'simple_history',
'apps.system',
'apps.monitor'
'apps.monitor',
'apps.pum',
'apps.em',
]
MIDDLEWARE = [

View File

@ -56,6 +56,8 @@ urlpatterns = [
path('api/file/', include(router.urls)),
path('api/system/', include('apps.system.urls')),
path('api/monitor/', include('apps.monitor.urls')),
path('api/pum/', include('apps.pum.urls')),
path('api/em/', include('apps.em.urls')),
# 前端页面入口
path('',TemplateView.as_view(template_name="index.html"))