├── ruidun_system
├── db
│ ├── __init__.py
│ ├── drop_mapping.sql
│ └── base_model.py
├── staff
│ ├── views.py
│ ├── viewsets
│ │ ├── __init__.py
│ │ ├── team_viewset.py
│ │ ├── jobstation_viewset.py
│ │ ├── trades_viewset.py
│ │ ├── user_departement_viewset.py
│ │ ├── folk_viewset.py
│ │ ├── department_viewset.py
│ │ ├── check_staff_name.py
│ │ ├── usermouthwork_viewset.py
│ │ ├── project_viewset.py
│ │ ├── company_viewset.py
│ │ ├── departmentwork_viewset.py
│ │ └── part_viewset.py
│ ├── serializers
│ │ ├── __init__.py
│ │ ├── jobstation_serializer.py
│ │ ├── team_serializer.py
│ │ ├── user_department_serializer.py
│ │ ├── trades_serializer.py
│ │ ├── folk_serializer.py
│ │ ├── company_serializer.py
│ │ ├── project_serializer.py
│ │ ├── part_serializer.py
│ │ ├── departmentwork_serializer.py
│ │ └── usermouthwork_detail_serialzer.py
│ ├── __init__.py
│ ├── tests.py
│ └── apps.py
├── bim
│ ├── __init__.py
│ ├── crud
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── admin.py
│ ├── views.py
│ └── apps.py
├── help
│ ├── __init__.py
│ ├── crud
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── admin.py
│ ├── views.py
│ └── apps.py
├── lib
│ ├── __init__.py
│ ├── log_middleware.py
│ ├── model_viewset.py
│ └── user_permission.py
├── safe
│ ├── __init__.py
│ ├── serializers
│ │ ├── __init__.py
│ │ ├── dangerouscategory_serializer.py
│ │ ├── dangername_serializer.py
│ │ ├── method_serializer.py
│ │ ├── priorscheme_serializer.py
│ │ ├── specialscheme_serializer.py
│ │ └── dangerused_serializer.py
│ ├── viewsets
│ │ ├── __init__.py
│ │ ├── dangerouscategory_viewset.py
│ │ ├── method_viewset.py
│ │ └── dangername_viewset.py
│ ├── tests.py
│ ├── admin.py
│ ├── apps.py
│ ├── views.py
│ ├── urls.py
│ └── fixtures
│ │ └── dangers.json
├── search
│ ├── __init__.py
│ ├── models.py
│ ├── admin.py
│ ├── tests.py
│ ├── views.py
│ └── apps.py
├── auth_system
│ ├── __init__.py
│ ├── admin.py
│ ├── tests.py
│ ├── apps.py
│ ├── views.py
│ └── user_serializer.py
├── base_system
│ ├── views.py
│ ├── serializers.py
│ ├── __init__.py
│ ├── pagination.py
│ ├── wsgi.py
│ └── urls.py
├── equipment
│ ├── __init__.py
│ ├── serializers
│ │ ├── __init__.py
│ │ ├── equipmentlocation_seriallizer.py
│ │ ├── equipmentupkeep_serializer.py
│ │ ├── equipmentrepair_serializer.py
│ │ └── equipmentused_serializer.py
│ ├── viewsets
│ │ ├── __init__.py
│ │ ├── equipmentrepair_viewset.py
│ │ ├── equipmentuser_viewset.py
│ │ ├── equipmentlocation_viewset.py
│ │ ├── equipmentinfo_viewset.py
│ │ └── equipmentupkeep_viewset.py
│ ├── tests.py
│ ├── admin.py
│ ├── views.py
│ ├── apps.py
│ └── urls.py
├── work_area
│ ├── __init__.py
│ ├── serializers
│ │ ├── __init__.py
│ │ ├── team_serializer.py
│ │ ├── department_serializer.py
│ │ ├── staffbreak_serializer.py
│ │ ├── staffstatus_serializer.py
│ │ ├── carbreak_serializer.py
│ │ ├── carrecord_serializer.py
│ │ └── staffrecord_serializer.py
│ ├── viewsets
│ │ ├── __init__.py
│ │ ├── staffbreak_viewset.py
│ │ ├── carbreak_viewset.py
│ │ ├── department_viewset.py
│ │ ├── open_carbreak_view.py
│ │ ├── open_staffbreak_view.py
│ │ ├── deviceinfo_viewset.py
│ │ ├── team_viewset.py
│ │ ├── staffrecord_viewset.py
│ │ └── carrecord_viewset.py
│ ├── tests.py
│ ├── views.py
│ ├── admin.py
│ ├── apps.py
│ ├── fixtures
│ │ ├── staff_record.json
│ │ └── car_record.json
│ └── urls.py
├── bridge_and_tunnel
│ ├── __init__.py
│ ├── models.py
│ ├── admin.py
│ ├── tests.py
│ ├── apps.py
│ ├── urls.py
│ └── views.py
├── internet_operate
│ ├── __init__.py
│ ├── models.py
│ ├── admin.py
│ ├── tests.py
│ ├── apps.py
│ ├── urls.py
│ ├── views.py
│ └── viewsets
│ │ ├── get_monitoring_viewset.py
│ │ ├── ipswitch_viewset.py
│ │ ├── speaker_viewset.py
│ │ └── led_viewset.py
├── internet_setting
│ ├── __init__.py
│ ├── viewsets
│ │ ├── __init__.py
│ │ ├── bstaion_viewset.py
│ │ ├── led_programme_viewset.py
│ │ ├── staff_location_viewset.py
│ │ ├── location_card_viewset.py
│ │ ├── device_info_viewset.py
│ │ ├── ipswitch_detail_viewset.py
│ │ ├── music_viewset.py
│ │ ├── device_upkeep_viewset.py
│ │ ├── device_category_viewset.py
│ │ ├── voice_viewset.py
│ │ ├── car_pass_viewset.py
│ │ ├── caution_record_viewset.py
│ │ ├── led_viewset.py
│ │ ├── monitor_viewset.py
│ │ ├── staff_pass_viewset.py
│ │ └── voice_server_viewset.py
│ ├── serializers
│ │ ├── __init__.py
│ │ ├── bstation_serializer.py
│ │ ├── music_serializer.py
│ │ ├── caution_record_serializer.py
│ │ ├── device_category_serializer.py
│ │ ├── staff_location_serializer.py
│ │ ├── staff_pass_serializer.py
│ │ ├── voice_server_serializer.py
│ │ ├── led_programme_serializer.py
│ │ ├── location_card_serializer.py
│ │ ├── device_upkeep_serializer.py
│ │ ├── ipswitch_detail_serializer.py
│ │ ├── ipswitch_serializer.py
│ │ ├── monitor_serializer.py
│ │ ├── voice_serializer.py
│ │ ├── car_pass_serializer.py
│ │ └── led_serializer.py
│ ├── admin.py
│ ├── tests.py
│ ├── apps.py
│ ├── views.py
│ └── fixtures
│ │ └── staff_pass.json
├── system_manage
│ ├── __init__.py
│ ├── tests.py
│ ├── admin.py
│ ├── views.py
│ ├── apps.py
│ ├── serializers
│ │ ├── permission_serializer.py
│ │ ├── extra_group_serializer.py
│ │ ├── artificial_log_category_serializer.py
│ │ ├── password_serializer.py
│ │ ├── group_serializer.py
│ │ └── artificial_log_serializer.py
│ ├── viewsets
│ │ ├── artificial_log_category_viewset.py
│ │ └── artificial_log_viewset.py
│ ├── urls.py
│ ├── models.py
│ └── fixtures
│ │ └── system_manage.json
├── cfg.ini
├── .idea
│ ├── dataSources
│ │ └── a11e133e-dd51-4800-9178-590ee20cee02
│ │ │ └── storage_v2
│ │ │ └── _src_
│ │ │ └── schema
│ │ │ ├── ruidun.t3UqyQ.meta
│ │ │ └── ruidun.t3UqyQ.zip
│ ├── modules.xml
│ ├── misc.xml
│ ├── inspectionProfiles
│ │ └── Project_Default.xml
│ ├── dataSources.local.xml
│ ├── dataSources.xml
│ └── ruidun_system.iml
├── common
│ ├── cfg - demo.ini
│ └── dbdemo.py
├── Dockerfile
├── manage.py
├── docker-compose.yml
├── README.md
├── package.json
├── requirements.txt
├── huanjing.txt
├── client
│ ├── ipvoice.py
│ └── ipswitch.py
└── .gitignore
└── README.md
/ruidun_system/db/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/staff/views.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/bim/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/help/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/lib/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/safe/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/search/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/auth_system/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/base_system/views.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/bim/crud/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/help/crud/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/base_system/serializers.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/bridge_and_tunnel/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/safe/serializers/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/safe/viewsets/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/serializers/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/viewsets/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/serializers/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/viewsets/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/__init__.py:
--------------------------------------------------------------------------------
1 | from .company_viewset import *
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/__init__.py:
--------------------------------------------------------------------------------
1 | from .company_serializer import *
2 |
--------------------------------------------------------------------------------
/ruidun_system/base_system/__init__.py:
--------------------------------------------------------------------------------
1 | import pymysql
2 | pymysql.install_as_MySQLdb()
--------------------------------------------------------------------------------
/ruidun_system/staff/__init__.py:
--------------------------------------------------------------------------------
1 | default_app_config = 'staff.apps.FunctionAndOrgConfig'
--------------------------------------------------------------------------------
/ruidun_system/bim/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 | # Create your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/bim/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/help/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 | # Create your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/help/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/safe/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/search/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 | # Create your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/staff/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/bim/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/bim/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/cfg.ini:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xiaocatwy/django-restframework/HEAD/ruidun_system/cfg.ini
--------------------------------------------------------------------------------
/ruidun_system/equipment/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/help/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/help/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/safe/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/search/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/search/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/search/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
--------------------------------------------------------------------------------
/ruidun_system/auth_system/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/auth_system/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/bridge_and_tunnel/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 | # Create your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 | # Create your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/bridge_and_tunnel/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/bridge_and_tunnel/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
4 |
5 |
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
4 |
--------------------------------------------------------------------------------
/ruidun_system/.idea/dataSources/a11e133e-dd51-4800-9178-590ee20cee02/storage_v2/_src_/schema/ruidun.t3UqyQ.meta:
--------------------------------------------------------------------------------
1 | #n:ruidun
--------------------------------------------------------------------------------
/ruidun_system/common/cfg - demo.ini:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xiaocatwy/django-restframework/HEAD/ruidun_system/common/cfg - demo.ini
--------------------------------------------------------------------------------
/ruidun_system/auth_system/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class AuthSystemConfig(AppConfig):
5 | name = 'auth_system'
6 |
--------------------------------------------------------------------------------
/ruidun_system/bim/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class BimConfig(AppConfig):
5 | name = 'bim'
6 | verbose_name = "bim接口"
7 |
--------------------------------------------------------------------------------
/ruidun_system/help/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class HelpConfig(AppConfig):
5 | name = 'help'
6 | verbose_name = "帮助"
7 |
--------------------------------------------------------------------------------
/ruidun_system/safe/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class SafeConfig(AppConfig):
5 | name = 'safe'
6 | verbose_name = "安全管理"
7 |
--------------------------------------------------------------------------------
/ruidun_system/search/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class SearchConfig(AppConfig):
5 | name = 'search'
6 | verbose_name = "查询中心"
7 |
--------------------------------------------------------------------------------
/ruidun_system/staff/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 | class FunctionAndOrgConfig(AppConfig):
4 | name = 'staff'
5 | verbose_name = "人员管理"
6 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class EquipmentConfig(AppConfig):
5 | name = 'equipment'
6 | verbose_name = "工程设备管理"
7 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class WorkAreaConfig(AppConfig):
5 | name = 'work_area'
6 | verbose_name = "工区管理"
7 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class SystemManageConfig(AppConfig):
5 | name = 'system_manage'
6 | verbose_name = "系统管理"
7 |
--------------------------------------------------------------------------------
/ruidun_system/bridge_and_tunnel/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class BridgeAndTunnelConfig(AppConfig):
5 | name = 'bridge_and_tunnel'
6 | verbose_name = "桥隧管理"
7 |
--------------------------------------------------------------------------------
/ruidun_system/bridge_and_tunnel/urls.py:
--------------------------------------------------------------------------------
1 | from django.urls import include, path
2 | from . import views
3 |
4 | urlpatterns = [
5 | path('bandtindex', views.bandtindex, name='bandtindex'),
6 | ]
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class InternetOperateConfig(AppConfig):
5 | name = 'internet_operate'
6 | verbose_name = "物联网硬件系统"
7 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class InternetSettingConfig(AppConfig):
5 | name = 'internet_setting'
6 | verbose_name = "物联网硬件设置"
7 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # django-restframework
2 | 前后端分离,使用restfarmework作为django的接口规范,vue作为前端开发,前期从0到1开发系统,后期偏向硬件,使软件控制ip硬件,包括led,开关,道闸,拉取定位信息,视频推流(rtmp)等开发测试服务器:
3 | ##### 项目地址:http://47.92.26.15:8050/static/index.html#/home
4 |
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/urls.py:
--------------------------------------------------------------------------------
1 | from django.urls import include, path
2 | from . import viewsets
3 |
4 | urlpatterns = [
5 | path('internetindex', viewsets.internetindex, name='internetindex'),
6 | ]
--------------------------------------------------------------------------------
/ruidun_system/safe/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
4 |
5 |
6 | def safeindex(request):
7 | """安全管理二级菜单"""
8 |
9 | return render(request, 'safeindex.html')
--------------------------------------------------------------------------------
/ruidun_system/bridge_and_tunnel/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
4 |
5 | def bandtindex(request):
6 | """桥隧二级菜单"""
7 |
8 | return render(request, 'bandtindex.html')
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
4 |
5 |
6 | def settingindex(request):
7 | """设置二级菜单"""
8 |
9 | return render(request, 'settingindex.html')
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 |
3 | # Create your views here.
4 |
5 |
6 | def internetindex(request):
7 | """物联网硬件管理系统二级菜单"""
8 |
9 | return render(request, 'internetindex.html')
--------------------------------------------------------------------------------
/ruidun_system/base_system/pagination.py:
--------------------------------------------------------------------------------
1 | from rest_framework.pagination import PageNumberPagination
2 |
3 |
4 | class StandardPageNumberPagination(PageNumberPagination):
5 | page_size_query_param = 'page_size'
6 | max_page_size = 10000
7 |
--------------------------------------------------------------------------------
/ruidun_system/db/drop_mapping.sql:
--------------------------------------------------------------------------------
1 | drop trigger carrecord;
2 | drop trigger locationcard;
3 | drop trigger staff;
4 | drop trigger LED;
5 | drop trigger staffrecord;
6 | drop trigger carinfo;
7 | drop trigger bstation;
8 | drop trigger userworks;
9 | drop trigger department;
--------------------------------------------------------------------------------
/ruidun_system/.idea/dataSources/a11e133e-dd51-4800-9178-590ee20cee02/storage_v2/_src_/schema/ruidun.t3UqyQ.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xiaocatwy/django-restframework/HEAD/ruidun_system/.idea/dataSources/a11e133e-dd51-4800-9178-590ee20cee02/storage_v2/_src_/schema/ruidun.t3UqyQ.zip
--------------------------------------------------------------------------------
/ruidun_system/common/dbdemo.py:
--------------------------------------------------------------------------------
1 | #coding=utf-8
2 | import pymysql as MySQLdb
3 | from DBUtils.PooledDB import PooledDB
4 | import common.mydb as mydb
5 | from common.mydb import DB
6 |
7 | mydb = DB()
8 | SQL = "select * from test"
9 | data=mydb.query(SQL)
10 | print(data)
11 |
12 |
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/viewsets/get_monitoring_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework import viewsets
2 |
3 |
4 | class GetMonitoringViewSet(viewsets.ReadOnlyModelViewSet):
5 |
6 | def retrieve(self, request, *args, **kwargs):
7 | # 获取视频内容,视频应该是实时传输的,这里应该怎么返回数据?
8 | pass
9 |
--------------------------------------------------------------------------------
/ruidun_system/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/bstation_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 | from internet_setting.models import BsTation
3 |
4 |
5 | class BsTaionSerializer(serializers.ModelSerializer):
6 |
7 | class Meta:
8 | model = BsTation
9 | fields = '__all__'
10 |
11 |
--------------------------------------------------------------------------------
/ruidun_system/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/team_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 |
3 | from ..models import Team
4 | from ..serializers.team_serializer import TeamSerializer
5 |
6 |
7 | class TeamViewset(ModelViewSet):
8 | """施工组信息"""
9 | queryset = Team.objects.all()
10 | serializer_class = TeamSerializer
--------------------------------------------------------------------------------
/ruidun_system/system_manage/serializers/permission_serializer.py:
--------------------------------------------------------------------------------
1 | from django.contrib.auth.models import Permission
2 | from rest_framework import serializers
3 |
4 |
5 | # class PermissionSerializer(serializers.ModelSerializer):
6 | # class Meta:
7 | # model = Permission
8 | # fields = ('id', 'content_type', 'name')
9 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/serializers/extra_group_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 |
3 | from auth_system.models import ExtraGroup
4 |
5 |
6 | class ExtraGroupSerializer(serializers.ModelSerializer):
7 |
8 | class Meta:
9 | model = ExtraGroup
10 | fields = ["note", "index", "is_used"]
11 |
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/jobstation_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 |
3 | from ..models import JobStation
4 | from ..serializers.jobstation_serializer import JobStationSerializer
5 |
6 |
7 | class JobStationViewset(ModelViewSet):
8 | """岗位信息"""
9 | queryset = JobStation.objects.filter(is_used=1)
10 | serializer_class = JobStationSerializer
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/viewsets/ipswitch_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework import status
2 | from rest_framework.decorators import action
3 | from rest_framework.response import Response
4 | from rest_framework.viewsets import ViewSet, ModelViewSet
5 |
6 | from client.ipswitch import Client
7 |
8 |
9 | class IPSwitchViewSet(ModelViewSet):
10 | """控制ip开关接口"""
11 |
12 | pass
13 |
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/trades_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 |
3 | from ..models import Trades
4 | from ..serializers.trades_serializer import TradesSerializer
5 |
6 |
7 | class TradesViewset(ModelViewSet):
8 | """施工组信息"""
9 |
10 | queryset = Trades.objects.filter(is_used=1)
11 | serializer_class = TradesSerializer
12 | filter_fields = ('trades_name',)
--------------------------------------------------------------------------------
/ruidun_system/work_area/serializers/team_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 | from staff.models import Team
3 |
4 |
5 | class TeamSerializer(serializers.ModelSerializer):
6 | """班组序列化器"""
7 | staff_set = serializers.PrimaryKeyRelatedField(read_only=True, many=True)
8 |
9 | class Meta:
10 | model = Team
11 | fields = ('id', 'name', 'staff_set')
12 |
13 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/viewsets/staffbreak_viewset.py:
--------------------------------------------------------------------------------
1 | from ..models import StaffBreak
2 | from ..serializers.staffbreak_serializer import StaffBreakSerializer
3 | from lib.model_viewset import ModelViewSet
4 |
5 |
6 | class StaffBreakViewset(ModelViewSet):
7 | """人员道闸"""
8 |
9 | queryset = StaffBreak.objects.filter(is_used=1)
10 | serializer_class = StaffBreakSerializer
11 | filter_fields = ('part_id',)
--------------------------------------------------------------------------------
/ruidun_system/safe/viewsets/dangerouscategory_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 | from ..models import DangerousCategory
3 | from ..serializers.dangerouscategory_serializer import DangerousCategorySerializer
4 |
5 |
6 | class DangerousCategoryViewset(ModelViewSet):
7 | """危险物品分类序列化器"""
8 |
9 | queryset = DangerousCategory.objects.filter(is_used=1)
10 | serializer_class = DangerousCategorySerializer
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/user_departement_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 |
3 | from auth_system.models import User_Department
4 | from ..serializers.user_department_serializer import UserDepartementSerializer
5 |
6 |
7 | class UserDepartementViewset(ModelViewSet):
8 | """施工组信息"""
9 |
10 | queryset = User_Department.objects.filter(is_used=1)
11 | serializer_class = UserDepartementSerializer
--------------------------------------------------------------------------------
/ruidun_system/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3
2 | ENV PYTHONUNBUFFERED 1
3 | RUN apt-get update -qq && apt-get install build-essential g++ flex bison gperf ruby perl \
4 | mysql-client \
5 | libfontconfig1-dev libicu-dev libfreetype6 libssl-dev \
6 | libpng-dev libjpeg-dev python libx11-dev libxext-dev -y
7 | RUN mkdir /code
8 | WORKDIR /code
9 | ADD requirements.txt /code/
10 | RUN pip install -r requirements.txt
11 | ADD . /code/
12 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/serializers/artificial_log_category_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 |
3 | from system_manage.models import ArtificialLogCategory
4 |
5 |
6 | class ArtificialLogCategorySerializer(serializers.ModelSerializer):
7 | note = serializers.SerializerMethodField()
8 | permission_ids = serializers.ListField(write_only=True)
9 |
10 | class Meta:
11 | model = ArtificialLogCategory
12 | fields = "__all__"
13 |
--------------------------------------------------------------------------------
/ruidun_system/base_system/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for base_system project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 |
14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'base_system.settings')
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/viewsets/artificial_log_category_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 | from system_manage.models import ArtificialLogCategory
3 | from system_manage.serializers.artificial_log_category_serializer import ArtificialLogCategorySerializer
4 |
5 |
6 | class ArtificialLogCategoryViewSet(ModelViewSet):
7 | """人工日志类视图"""
8 |
9 | serializer_class = ArtificialLogCategorySerializer
10 | queryset = ArtificialLogCategory.objects.filter(is_used=1).all()
11 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/viewsets/carbreak_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework.response import Response
2 |
3 | from ..models import CarBreak
4 | from ..serializers.carbreak_serializer import CarBreakSerializer
5 | from lib.model_viewset import ModelViewSet
6 |
7 |
8 | class CarBreakViewset(ModelViewSet):
9 | """车辆道闸
10 |
11 | get:
12 | 获取全部道闸信息
13 |
14 | """
15 | queryset = CarBreak.objects.filter(is_used=1)
16 | serializer_class = CarBreakSerializer
17 | filter_fields = ('part_id', )
--------------------------------------------------------------------------------
/ruidun_system/work_area/viewsets/department_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 | from rest_framework.filters import OrderingFilter
3 | from django_filters import rest_framework as filters
4 |
5 | from staff.models import Department
6 | from work_area.serializers.department_serializer import DepartmentSerializer
7 |
8 |
9 | class DepartmentViewset(ModelViewSet):
10 | """施工班组"""
11 |
12 | # TODO 等待传入当前工区id
13 | # part_id = 2
14 | queryset = Department.objects.all()
15 | serializer_class = DepartmentSerializer
--------------------------------------------------------------------------------
/ruidun_system/work_area/serializers/department_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 | from staff.models import Department
3 |
4 |
5 | class DepartmentSerializer(serializers.ModelSerializer):
6 | """班组序列化器"""
7 | # staff_set = serializers.PrimaryKeyRelatedField(read_only=True, many=True)
8 | department = serializers.SerializerMethodField()
9 |
10 | class Meta:
11 | model = Department
12 | fields = ('id', 'department')
13 |
14 | def get_department(self, obj):
15 |
16 | return obj.department + '/' + obj.group_name
--------------------------------------------------------------------------------
/ruidun_system/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import os
3 | import sys
4 |
5 | if __name__ == '__main__':
6 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'base_system.settings')
7 | try:
8 | from django.core.management import execute_from_command_line
9 | except ImportError as exc:
10 | raise ImportError(
11 | "Couldn't import Django. Are you sure it's installed and "
12 | "available on your PYTHONPATH environment variable? Did you "
13 | "forget to activate a virtual environment?"
14 | ) from exc
15 | execute_from_command_line(sys.argv)
16 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/bstaion_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from rest_framework import viewsets
5 |
6 | from internet_setting.models import BsTation
7 | from internet_setting.serializers.bstation_serializer import BsTaionSerializer
8 |
9 |
10 | class BsTaionViewSet(viewsets.ReadOnlyModelViewSet):
11 | """
12 | A simple ViewSet for viewing and editing accounts.
13 | """
14 | queryset = BsTation.objects.all()
15 | serializer_class = BsTaionSerializer
16 | filter_fields = ("part_id",)
--------------------------------------------------------------------------------
/ruidun_system/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/ruidun_system/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 |
3 | services:
4 | api:
5 | build: .
6 | command: python3 ./manage.py runserver 0.0.0.0:8000
7 |
8 | #依赖库发生变化时,重新安装
9 | #command: docker-compose run api pip install -r requirements.txt --user --upgrade
10 |
11 | volumes:
12 | - .:/code
13 | ports:
14 | - "9080:8000"
15 |
16 | environment:
17 | PYTHONUSERBASE: /code/vendor
18 | depends_on:
19 | - db
20 |
21 | db:
22 | image: mysql:5.6
23 | environment:
24 | MYSQL_ROOT_PASSWORD: 123456
25 | ports:
26 | - "3343:3306"
27 | volumes:
28 | - ruidun_data:/var/lib/mysql
29 |
30 | volumes:
31 | ruidun_data:
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/fixtures/staff_pass.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "model": "internet_setting.staffpass",
4 | "pk": "1",
5 | "fields": {
6 | "code": "1",
7 | "staff": "1",
8 | "status": 1,
9 | "time": "2019-03-12T13:52:08.604Z"
10 | }
11 | },
12 | {
13 | "model": "internet_setting.staffpass",
14 | "pk": "2",
15 | "fields": {
16 | "code": "2",
17 | "staff": "2",
18 | "status": 1,
19 | "time": "2019-03-12T13:52:10.245Z"
20 | }
21 | },
22 | {
23 | "model": "internet_setting.staffpass",
24 | "pk": "3",
25 | "fields": {
26 | "code": "3",
27 | "staff": "3",
28 | "status": 0,
29 | "time": "2019-03-10T13:52:12.275Z"
30 | }
31 | }
32 | ]
--------------------------------------------------------------------------------
/ruidun_system/README.md:
--------------------------------------------------------------------------------
1 | # fengkong_new
2 |
3 | #### 项目介绍
4 | 风险管控提示平台新版
5 |
6 | #### 软件架构
7 | 软件架构说明
8 |
9 |
10 | #### 安装教程
11 |
12 | 1. xxxx
13 | 2. xxxx
14 | 3. xxxx
15 |
16 | #### 使用说明
17 |
18 | 1. xxxx
19 | 2. xxxx
20 | 3. xxxx
21 |
22 | #### 参与贡献
23 |
24 | 1. Fork 本项目
25 | 2. 新建 Feat_xxx 分支
26 | 3. 提交代码
27 | 4. 新建 Pull Request
28 |
29 |
30 | #### 码云特技
31 |
32 | 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
33 | 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
34 | 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
35 | 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
36 | 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
37 | 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/music_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from internet_setting.models import Music
6 |
7 |
8 | class MusicSerializer(serializers.ModelSerializer):
9 | class Meta:
10 | model = Music
11 | exclude = ("is_used",)
12 | extra_kwargs = {
13 | "id": {"read_only": True},
14 | }
15 |
16 | def create(self, validated_data):
17 | pk = uuid.uuid4()
18 | return Music.objects.create(pk=pk, **validated_data)
19 |
20 | def update(self, instance, validated_data):
21 | instance.note = validated_data.get("note", instance.note)
22 | instance.path = validated_data.get("path", instance.path)
23 |
24 | instance.save()
25 | return instance
26 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/caution_record_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 |
3 | from internet_setting.models import CautionRecord
4 |
5 |
6 | class CautionRecordSerializer(serializers.ModelSerializer):
7 |
8 | device = serializers.SlugRelatedField(slug_field="name", read_only=True)
9 | device_id = serializers.CharField()
10 | disposer_id = serializers.CharField()
11 | disposer = serializers.SlugRelatedField(slug_field="name", read_only=True)
12 | category = serializers.SerializerMethodField()
13 |
14 | class Meta:
15 | model = CautionRecord
16 | fields = '__all__'
17 | extra_kwargs = {
18 | "id": {"read_only": True}
19 | }
20 |
21 | def get_category(self, obj):
22 | return obj.device.category.name
23 |
24 |
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/folk_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 | import django_filters as filters
3 | from ..models import Folk
4 | from ..serializers.folk_serializer import FolkSerializer
5 |
6 |
7 |
8 | class FolkFilter(filters.FilterSet):
9 | create_time = filters.DateTimeFilter(field_name="create_time", lookup_expr='gte')
10 | update_time = filters.DateTimeFilter(field_name="update_time", lookup_expr='lte')
11 | staff_name = filters.CharFilter(field_name="staff_id", lookup_expr="name")
12 |
13 | class Meta:
14 | model = Folk
15 | fields = ["create_time", "update_time", "staff_name", "name"]
16 |
17 |
18 | class FolkViewset(ModelViewSet):
19 | """人员家属信息"""
20 | queryset = Folk.objects.all()
21 | serializer_class = FolkSerializer
22 | filterset_class = FolkFilter
--------------------------------------------------------------------------------
/ruidun_system/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "xitongguanli",
3 | "version": "1.0.0",
4 | "description": "系统权限控制模板",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "https://gitee.com/e3rong/xitongguanli.git"
12 | },
13 | "author": "cheng.donghui@gmail.com",
14 | "license": "ISC",
15 | "devDependencies": {
16 | "autoprefixer": "^7.1.2",
17 | "babel-preset-es2015": "^6.24.1",
18 | "babelify": "^7.3.0",
19 | "browserify": "^14.4.0",
20 | "node-sass": "^4.5.3",
21 | "postcss-cli": "^4.1.0"
22 | },
23 | "dependencies": {
24 | "admin-lte": "",
25 | "animate.css": "^3.7.0",
26 | "hamburgers": "^0.9.3",
27 | "select2": "^4.0.6-rc.1",
28 | "popper.js": "^1.14.4",
29 | "tilt.js": "1.2.1"
30 | }
31 | }
--------------------------------------------------------------------------------
/ruidun_system/.idea/dataSources.local.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #@
7 | `
8 |
9 |
10 | master_key
11 | root
12 | *:@
13 |
14 |
15 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/led_programme_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 | import django_filters as filters
3 | from ..models import LedProgramme
4 | from internet_setting.serializers.led_programme_serializer import LedProgrammeSerializer
5 |
6 |
7 | # class FolkFilter(filters.FilterSet):
8 | # create_time = filters.DateTimeFilter(field_name="create_time", lookup_expr='gte')
9 | # update_time = filters.DateTimeFilter(field_name="update_time", lookup_expr='lte')
10 | # staff_name = filters.CharFilter(field_name="staff_id", lookup_expr="name")
11 | #
12 | # class Meta:
13 | # model = LedProgramme
14 | # fields = ["create_time", "update_time", "staff_name", "name"]
15 |
16 |
17 | class LedProgrammeViewset(ModelViewSet):
18 |
19 | """LED节目信息"""
20 | queryset = LedProgramme.objects.all()
21 | serializer_class = LedProgrammeSerializer
22 | # filterset_class = FolkFilter
--------------------------------------------------------------------------------
/ruidun_system/safe/serializers/dangerouscategory_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 | from rest_framework import serializers
3 | from ..models import DangerousCategory
4 |
5 |
6 | class DangerousCategorySerializer(serializers.ModelSerializer):
7 | """危险物品分类序列化器(搜索字段)"""
8 |
9 | # id = serializers.IntegerField(read_only=True)
10 |
11 | class Meta:
12 | model = DangerousCategory
13 | exclude = ('create_time', 'update_time')
14 | extra_kwargs = {
15 | 'id': {'required': False}
16 | }
17 |
18 | def create(self, validated_data):
19 | """新建"""
20 | pk = uuid.uuid4()
21 | return DangerousCategory.objects.create(pk=pk, **validated_data)
22 |
23 | def update(self, instance, validated_data):
24 | """更新,instance为要更新的对象实例"""
25 | instance.name = validated_data.get('name', instance.name)
26 | instance.save()
27 | return instance
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/device_category_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from internet_setting.models import DeviceCategory
6 |
7 |
8 | class DeviceCategorySerializer(serializers.ModelSerializer):
9 | class Meta:
10 | model = DeviceCategory
11 | fields = '__all__'
12 | extra_kwargs = {
13 | "id": {"read_only": True},
14 | }
15 |
16 | def create(self, validated_data):
17 | pk = uuid.uuid4()
18 | return DeviceCategory.objects.create(pk=pk, **validated_data)
19 |
20 | def update(self, instance, validated_data):
21 | instance.name = validated_data.get("name", instance.name)
22 | instance.index = validated_data.get("index", instance.index)
23 | instance.is_used = validated_data.get("is_used", instance.is_used)
24 |
25 | instance.save()
26 | return instance
27 |
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/jobstation_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from staff.models import JobStation
5 |
6 |
7 | class JobStationSerializer(serializers.ModelSerializer):
8 | class Meta:
9 | model = JobStation
10 | fields = '__all__'
11 | extra_kwargs = {
12 | "id": {"required": False}
13 | }
14 |
15 | def create(self, validated_data):
16 | """新建"""
17 | validated_data['id'] = uuid.uuid4()
18 | return JobStation.objects.create(**validated_data)
19 |
20 | def update(self, instance, validated_data):
21 | """更新,instance为要更新的对象实例"""
22 | instance.name = validated_data.get('name', instance.name)
23 | instance.index = validated_data.get('index', instance.index)
24 | instance.is_used = validated_data.get('is_used', instance.is_used)
25 | instance.save()
26 | return instance
--------------------------------------------------------------------------------
/ruidun_system/lib/log_middleware.py:
--------------------------------------------------------------------------------
1 | import datetime
2 | from django.utils.deprecation import MiddlewareMixin
3 |
4 |
5 | class LogMiddleware(MiddlewareMixin):
6 |
7 | def process_request(self, request):
8 | print(type(request))
9 |
10 | def process_response(self, request, response):
11 | # print(request)
12 | # print(response)
13 | # 记录增删改的操作
14 | print(type(request))
15 | # if request.method == "POST":
16 | # category = "增加数据"
17 | # elif request.method == "PUT":
18 | # category = "修改数据"
19 | # elif request.method == "DELETE":
20 | # category = "删除数据"
21 | # else:
22 | # return response
23 | # # object = request.view.serializer_class.Meta.Model.Meta.verbose_name
24 | # user = request.user.username
25 | # time = datetime.datetime.now()
26 | # print(category, user, time)
27 | return response
--------------------------------------------------------------------------------
/ruidun_system/work_area/serializers/staffbreak_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from ..models import StaffBreak
5 |
6 |
7 | class StaffBreakSerializer(serializers.ModelSerializer):
8 | """人员道闸序列化器"""
9 |
10 | class Meta:
11 | model = StaffBreak
12 | fields = '__all__'
13 | extra_kwargs = {
14 | 'id': {'required': False}
15 | }
16 |
17 | def create(self, validated_data):
18 | """新建"""
19 | pk = uuid.uuid4()
20 | return StaffBreak.objects.create(pk=pk, **validated_data)
21 |
22 | def update(self, instance, validated_data):
23 | """更新,instance为要更新的对象实例"""
24 | instance.id = validated_data.get('id', instance.id)
25 | instance.part_id = validated_data.get('part_id', instance.part_id)
26 | instance.name = validated_data.get('name', instance.name)
27 | instance.save()
28 | return instance
--------------------------------------------------------------------------------
/ruidun_system/.idea/dataSources.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | mysql
6 | true
7 | com.mysql.jdbc.Driver
8 | jdbc:mysql://47.92.26.15:3306/ruidun
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/team_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from staff.models import Team
5 |
6 | """施工组序列化"""
7 | class TeamSerializer(serializers.ModelSerializer):
8 | class Meta:
9 | model = Team
10 | fields = '__all__'
11 | extra_kwargs = {
12 | "id": {"required": False},
13 | "name": {"required": False}
14 | }
15 |
16 | def create(self, validated_data):
17 | """新建"""
18 | validated_data['id'] = uuid.uuid4()
19 | return Team.objects.create(**validated_data)
20 |
21 | def update(self, instance, validated_data):
22 | """更新,instance为要更新的对象实例"""
23 |
24 | instance.name = validated_data.get('name', instance.name)
25 | instance.index = validated_data.get('index', instance.index)
26 | instance.is_used = validated_data.get('is_used', instance.is_used)
27 | instance.save()
28 | return instance
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/user_department_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from auth_system.models import User_Department
5 |
6 |
7 | class UserDepartementSerializer(serializers.ModelSerializer):
8 | class Meta:
9 | model = User_Department
10 | fields = '__all__'
11 | extra_kwargs = {
12 | "id": {"required": False},
13 | "name": {"required": False}
14 | }
15 |
16 | def create(self, validated_data):
17 | """新建"""
18 | return User_Department.objects.create(pk=uuid.uuid4(), **validated_data)
19 |
20 | def update(self, instance, validated_data):
21 | """更新,instance为要更新的对象实例"""
22 |
23 | instance.name = validated_data.get('name', instance.name)
24 | instance.index = validated_data.get('index', instance.index)
25 | instance.is_used = validated_data.get('is_used', instance.is_used)
26 | instance.save()
27 | return instance
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/staff_location_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 |
3 | from internet_setting.models import StaffLocation
4 |
5 |
6 | class StaffLocationSerializer(serializers.ModelSerializer):
7 | """工程车辆定位记录序列化器(暂时只有查询)"""
8 | # location_card_id = serializers.CharField(allow_null=True, required=False)
9 |
10 |
11 | class Meta:
12 | model = StaffLocation
13 | exclude = ["id"]
14 | extra_kwargs = {
15 |
16 | }
17 |
18 | def get_equipment_name(self, obj):
19 | return obj.location_card.equipment.name
20 |
21 | def get_company_name(self, obj):
22 | return obj.location_card.equipment.company.name
23 |
24 | def get_model_name(self, obj):
25 | return obj.location_card.equipment.model.name
26 |
27 | def get_user_name(self, obj):
28 | user_id = EquipmentUsed.objects.get(id=obj.location_card.equipment_id).user_id
29 | return Staff.objects.get(id=user_id).name
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/trades_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 | from rest_framework import serializers
3 | from staff.models import Trades
4 |
5 |
6 | class TradesSerializer(serializers.ModelSerializer):
7 |
8 | class Meta:
9 | model = Trades
10 | fields = '__all__'
11 | extra_kwargs = {
12 | "id": {"required": False},
13 | "colour": {"required": False}
14 | }
15 |
16 | def create(self, validated_data):
17 | """新建"""
18 | return Trades.objects.create(pk=uuid.uuid4(), **validated_data)
19 |
20 | def update(self, instance, validated_data):
21 | """更新,instance为要更新的对象实例"""
22 |
23 | instance.trades_name = validated_data.get('trades_name', instance.trades_name)
24 | instance.colour = validated_data.get('colour', instance.colour)
25 | instance.index = validated_data.get('index', instance.index)
26 | instance.is_used = validated_data.get('is_used', instance.is_used)
27 | instance.save()
28 | return instance
--------------------------------------------------------------------------------
/ruidun_system/system_manage/serializers/password_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 |
3 |
4 | class PasswordSerializer(serializers.Serializer):
5 | origin_password = serializers.CharField(required=False)
6 | password = serializers.CharField(min_length=6, max_length=18)
7 | password2 = serializers.CharField(min_length=6, max_length=18) # 确认密码
8 |
9 | class Meta:
10 | fields = ["password", 'password2']
11 |
12 | def validate_origin_password(self, value):
13 | user = self.context["request"].user
14 | if user.is_superuser:
15 | # 如果是超级管理员,可以更改其他人的密码
16 | return value
17 | if not user.check_password(value):
18 | raise serializers.ValidationError("原密码不正确")
19 | return value
20 |
21 | def validate(self, attrs):
22 | password = attrs.get("password")
23 | password2 = attrs.get("password2")
24 | if password != password2: # 防止为空
25 | raise serializers.ValidationError("两次密码不一致")
26 | return attrs
27 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/serializers/staffstatus_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 | from staff.models import Part, Team, Staff, Department
3 |
4 |
5 | # class TeamSerializer(serializers.ModelSerializer):
6 | # """班组序列化器"""
7 | #
8 | # class Meta:
9 | # model = Team
10 | # fields = ('name',)
11 |
12 |
13 | class StaffSerializer(serializers.ModelSerializer):
14 | """工区人员状态序列化器"""
15 |
16 | # job_station
17 | # group_number_id = serializers.CharField(label='班组id', allow_null=True)
18 | # job_station = serializers.SlugRelatedField(label='工作岗位', read_only=True, slug_field='name')
19 | department = serializers.SerializerMethodField()
20 |
21 | class Meta:
22 | model = Staff
23 | fields = ('id', 'name', 'phone', 'department', 'medical_history')
24 |
25 | def get_department(self, obj):
26 | department_id = obj.department_id
27 | department = Department.objects.get(id=department_id)
28 | return department.department + '/' + department.group_name
29 |
30 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/urls.py:
--------------------------------------------------------------------------------
1 | from django.urls import include, path
2 | from rest_framework import routers
3 | from .viewsets import group_permission_viewset, user_viewset, artificial_log_viewset, artificial_log_category_viewset
4 |
5 | urlpatterns = []
6 |
7 | # 角色权限相关
8 | router = routers.DefaultRouter()
9 | router.register('group_permission', group_permission_viewset.GroupPermissionViewSet, base_name="group_permission")
10 |
11 | urlpatterns += router.urls
12 |
13 | # 用户相关
14 | router = routers.DefaultRouter()
15 | router.register('user_permission', user_viewset.UserPermissionViewSet, base_name="user_permission")
16 |
17 | urlpatterns += router.urls
18 |
19 | # 日志相关
20 | router = routers.DefaultRouter()
21 | router.register('artificial_log', artificial_log_viewset.ArtificialLogViewSet, base_name="artificial_log")
22 |
23 | urlpatterns += router.urls
24 |
25 | router = routers.DefaultRouter()
26 | router.register('artificial_log_category', artificial_log_category_viewset.ArtificialLogCategoryViewSet, base_name="artificial_log_category")
27 |
28 | urlpatterns += router.urls
29 |
--------------------------------------------------------------------------------
/ruidun_system/lib/model_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework import mixins, status
2 | from rest_framework.permissions import IsAuthenticated
3 | from rest_framework.response import Response
4 | from rest_framework.viewsets import GenericViewSet
5 |
6 | from lib.user_permission import SelfPermission
7 |
8 |
9 | class DestroyModelMixin(object):
10 | """
11 | Destroy a model instance.
12 | """
13 | def destroy(self, request, *args, **kwargs):
14 | instance = self.get_object()
15 | instance.is_used = 0
16 | instance.save()
17 | return Response(status=status.HTTP_204_NO_CONTENT)
18 |
19 |
20 | class ModelViewSet(mixins.CreateModelMixin,
21 | mixins.RetrieveModelMixin,
22 | mixins.UpdateModelMixin,
23 | DestroyModelMixin,
24 | mixins.ListModelMixin,
25 | GenericViewSet):
26 | """
27 | A viewset that provides default `create()`, `retrieve()`, `update()`,
28 | `partial_update()`, `destroy()` and `list()` actions.
29 | """
30 | # permission_classes = [SelfPermission, IsAuthenticated]
31 | permission_classes = [SelfPermission]
--------------------------------------------------------------------------------
/ruidun_system/.idea/ruidun_system.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/models.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django.db import models
3 |
4 | from auth_system.models import User
5 | from db.base_model import SortBaseModel
6 |
7 |
8 | class ArtificialLogCategory(SortBaseModel):
9 | name = models.CharField(max_length=100, verbose_name="人工日子分类名字")
10 |
11 | class Meta:
12 | db_table = "tb_artificial_log_category"
13 | verbose_name = "人工日志分类"
14 | verbose_name_plural = verbose_name
15 |
16 |
17 | class ArtificialLog(models.Model):
18 | """人工日志类"""
19 | id = models.CharField(max_length=50, verbose_name="主键", primary_key=True)
20 | object = models.CharField(max_length=100, verbose_name="操作对象")
21 | user = models.CharField(verbose_name="作者", max_length=50)
22 | category = models.CharField(verbose_name="日志分类", max_length=50)
23 | time = models.DateTimeField(verbose_name="日志时间")
24 | # status = models.BooleanField(default=True, verbose_name="是否删除")
25 | # level = models.SmallIntegerField(verbose_name="日志等级")
26 |
27 | class Meta:
28 | db_table = "tb_artificial_log"
29 | verbose_name = "人工日志"
30 | verbose_name_plural = verbose_name
31 |
32 |
--------------------------------------------------------------------------------
/ruidun_system/requirements.txt:
--------------------------------------------------------------------------------
1 | asn1crypto==0.24.0
2 | certifi==2018.8.24
3 | cffi==1.11.5
4 | chardet==3.0.4
5 | cryptography==2.3.1
6 | cycler==0.10.0
7 | defusedxml==0.5.0
8 | Django==2.1
9 | # django-adminlte==1.2
10 | # django-adminlte2==0.4.1
11 | # django-allauth==0.37.1
12 | # django-appconf==1.0.2
13 | # django-compressor==2.2
14 | # django-compressor-toolkit==0.6.0
15 | # django-crudbuilder==0.2.7
16 | # django-debug-toolbar==1.9.1
17 | django-extensions==2.1.2
18 | django-filter==2.0.0
19 | # django-tables2==1.21.2
20 | # django-widget-tweaks==1.4.2
21 | idna==2.7
22 | kiwisolver==1.0.1
23 | matplotlib==3.0.0rc2
24 | numpy==1.15.1
25 | oauthlib==2.1.0
26 | Pillow==5.2.0
27 | pycparser==2.18
28 | PyMySQL==0.9.2
29 | mysqlclient
30 | pyparsing==2.2.0
31 | python-dateutil==2.7.3
32 | python3-openid==3.1.0
33 | pytz==2018.5
34 | rcssmin==1.0.6
35 | requests==2.19.1
36 | requests-oauthlib==1.0.0
37 | rjsmin==1.0.12
38 | six==1.11.0
39 | split==0.4
40 | sqlparse==0.2.4
41 | suds-jurko==0.6
42 | urllib3==1.23
43 | djangorestframework
44 | # django-rest-auth
45 | djangorestframework-jwt
46 | django-cors-headers
47 | djangorestframework-jsonapi
48 | django-autofixture
49 | drf-tracking
--------------------------------------------------------------------------------
/ruidun_system/work_area/serializers/carbreak_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from ..models import CarBreak
5 |
6 |
7 | class CarBreakSerializer(serializers.ModelSerializer):
8 | """车辆道闸序列化器"""
9 |
10 | part = serializers.SlugRelatedField(slug_field='name', read_only=True)
11 | part_id = serializers.CharField(allow_null=True)
12 |
13 | class Meta:
14 | model = CarBreak
15 | fields = '__all__'
16 | extra_kwargs = {
17 | 'id': {'required': False}
18 | }
19 |
20 | def create(self, validated_data):
21 | """新建"""
22 | pk = uuid.uuid4()
23 | return CarBreak.objects.create(pk=pk, **validated_data)
24 |
25 | def update(self, instance, validated_data):
26 | """更新,instance为要更新的对象实例"""
27 | instance.id = validated_data.get('id', instance.id)
28 | instance.part_id = validated_data.get('part_id', instance.part_id)
29 | instance.name = validated_data.get('name', instance.name)
30 | instance.x = validated_data.get('x', instance.x)
31 | instance.y = validated_data.get('y', instance.y)
32 | instance.save()
33 | return instance
34 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/staff_location_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework import viewsets
4 | from rest_framework.filters import OrderingFilter
5 |
6 | from internet_setting.models import StaffLocation
7 | from internet_setting.serializers.staff_location_serializer import StaffLocationSerializer
8 |
9 |
10 | class StaffLocationFilter(django_filters.FilterSet):
11 | time_gt = django_filters.DateTimeFilter(field_name="time", lookup_expr='gte')
12 | time_lt = django_filters.DateTimeFilter(field_name="time", lookup_expr='lte')
13 | part_id = django_filters.CharFilter(field_name="location_card_id", lookup_expr='staff__part_id')
14 | location_card_id = django_filters.CharFilter()
15 |
16 | class Meta:
17 | model = StaffLocation
18 | fields = ["time_gt", "time_lt", 'part_id']
19 |
20 |
21 | class StaffLocationViewSet(viewsets.ReadOnlyModelViewSet):
22 | queryset = StaffLocation.objects.all()
23 | serializer_class = StaffLocationSerializer
24 | filterset_class = StaffLocationFilter
25 | filter_backends = [OrderingFilter, DjangoFilterBackend]
26 | ordering_fields = ("time",)
27 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/serializers/group_serializer.py:
--------------------------------------------------------------------------------
1 | from django.contrib.auth.models import Group, Permission
2 | from rest_framework import serializers
3 |
4 | from auth_system.models import ExtraGroup
5 |
6 |
7 | class GroupSerializer(serializers.ModelSerializer):
8 | note = serializers.SerializerMethodField()
9 | permission_ids = serializers.ListField(write_only=True)
10 |
11 | class Meta:
12 | model = Group
13 | fields = ["id", 'name', 'note', 'permission_ids']
14 | extra_kwargs = {
15 | "id": {"read_only": True},
16 | "note": {"required": False},
17 | "name": {"required": False},
18 | "permission_ids": {"required": False}
19 | }
20 |
21 | def get_note(self, obj):
22 | return obj.extra_group.note
23 |
24 | def validate_permission_ids(self, value):
25 | # 校验权限ids
26 | # 取到数据库中拥有的权限id,比较传过来的id列表是否在里面,方法是转化为集合,判断一个是否小于另一个
27 | value = set(value)
28 | ori_permission_ids = set([p.pk for p in Permission.objects.all()])
29 | if value <= ori_permission_ids:
30 | return value
31 | else:
32 | raise serializers.ValidationError("id列表中有不存在的权限id")
33 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/viewsets/equipmentrepair_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 | import django_filters as filters
3 | from django_filters.rest_framework import DjangoFilterBackend
4 | from rest_framework.filters import OrderingFilter
5 | from ..models import EquipmentRepair
6 | from ..serializers.equipmentrepair_serializer import EquipmentRepairSerializer
7 |
8 | """维修记录搜索查询"""
9 | class EquipmentrepairFilter(filters.FilterSet):
10 | manager = filters.CharFilter(field_name="manager_id", lookup_expr="name")
11 | name = filters.CharFilter(field_name="equipment_id", lookup_expr="name")
12 | time_gt = filters.DateTimeFilter(field_name="time", lookup_expr='gte')
13 | time_lt = filters.DateTimeFilter(field_name="time", lookup_expr='lte')
14 |
15 | class Meta:
16 | model = EquipmentRepair
17 | fields = ["manager", 'equipment_id', "time_gt", "time_lt", "serviceman", "name"]
18 |
19 | class EquipmentRepairViewSet(ModelViewSet):
20 |
21 | queryset = EquipmentRepair.objects.all()
22 | serializer_class = EquipmentRepairSerializer
23 | filterset_class = EquipmentrepairFilter
24 | filter_backends = [OrderingFilter, DjangoFilterBackend]
25 | ordering_fields = ("time",)
26 |
27 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/location_card_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from rest_framework import viewsets
5 |
6 | from internet_setting.models import LocationCard
7 | from internet_setting.serializers.location_card_serializer import LocationCardSerializer
8 |
9 |
10 | class LocationCardFilter(django_filters.FilterSet):
11 | '''可以根据时间区间, 发放状态来过滤'''
12 |
13 | time__gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
14 | time__lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
15 |
16 | # 还会补充其他字段,暂保留
17 |
18 | class Meta:
19 | model = LocationCard
20 | fields = ["time__gt", 'time__lt', 'status']
21 |
22 |
23 | class LocationCardViewSet(viewsets.ReadOnlyModelViewSet):
24 | """
25 | A simple ViewSet for viewing and editing accounts.
26 | """
27 | queryset = LocationCard.objects.all()
28 | serializer_class = LocationCardSerializer
29 | # permission_classes = [SelfPermission]
30 | filterset_class = LocationCardFilter
31 | filter_backends = [OrderingFilter, DjangoFilterBackend]
32 | ordering_fields = ('time', 'status')
33 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/device_info_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from lib.model_viewset import ModelViewSet
5 |
6 | from internet_setting.models import DeviceInfo
7 | from internet_setting.serializers.device_info_serializer import DeviceInfoSerializer
8 |
9 |
10 | class DeviceInfoFilter(django_filters.FilterSet):
11 | '''可以根据时间区间, 是否损坏, 厂家id, 型号, 分类等来过滤'''
12 |
13 | time__gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
14 | time__lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
15 |
16 | class Meta:
17 | model = DeviceInfo
18 | fields = ["time__gt", 'time__lt', 'status', 'category_id', 'factory', 'model']
19 |
20 |
21 | class DeviceInfoViewSet(ModelViewSet):
22 | """
23 | A simple ViewSet for viewing and editing accounts.
24 | """
25 | queryset = DeviceInfo.objects.all()
26 | serializer_class = DeviceInfoSerializer
27 | # permission_classes = [SelfPermission]
28 | filterset_class = DeviceInfoFilter
29 | filter_backends = [OrderingFilter, DjangoFilterBackend]
30 | ordering_fields = ('time', 'status', 'category_id')
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/ipswitch_detail_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from lib.model_viewset import ModelViewSet
5 |
6 | from internet_setting.models import IPSwitchDetail
7 | from internet_setting.serializers.ipswitch_detail_serializer import IPSwitchDetailSerializer
8 |
9 |
10 | # class VoiceFilter(django_filters.FilterSet):
11 | # '''可以根据时间区间, 是否损坏, 厂家, 型号等来过滤'''
12 | #
13 | # time__gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
14 | # time__lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
15 | #
16 | # class Meta:
17 | # model = Voice
18 | # fields = ["time__gt", 'time__lt', 'status', 'factory', 'model']
19 | #
20 |
21 | class IPSwitchDetailViewSet(ModelViewSet):
22 | """
23 | A simple ViewSet for viewing and editing accounts.
24 | """
25 | queryset = IPSwitchDetail.objects.all()
26 | serializer_class = IPSwitchDetailSerializer
27 | # permission_classes = [SelfPermission]
28 | # filterset_class = VoiceFilter
29 | # filter_backends = [OrderingFilter, DjangoFilterBackend]
30 | # ordering_fields = ('time', 'status', 'category_id')
31 |
32 |
33 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/music_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework import viewsets, status
2 | from rest_framework.filters import OrderingFilter
3 | from rest_framework.response import Response
4 |
5 | from internet_setting.models import Music
6 | from internet_setting.serializers.music_serializer import MusicSerializer
7 | from lib import model_viewset
8 |
9 |
10 | class MusicViewSet(model_viewset.ModelViewSet):
11 | """
12 | A simple ViewSet for viewing and editing accounts.
13 | """
14 | queryset = Music.objects.filter(is_used=1).all()
15 | serializer_class = MusicSerializer
16 | filter_backends = [OrderingFilter]
17 | # ordering_fields = ('index',)
18 |
19 | # permission_classes = [SelfPermission]
20 | #
21 | # def destroy(self, request, *args, **kwargs):
22 | # instance = self.get_object()
23 | # instance.is_used = 0
24 | # instance.save()
25 | # return Response(status=status.HTTP_204_NO_CONTENT)
26 |
27 | # def destroy(self, request, *args, **kwargs):
28 | # partial = kwargs.pop('partial', False)
29 | # instance = self.get_object()
30 | # serializer = self.get_serializer(instance, data=request.data, partial=partial)
31 | # serializer.is_valid(raise_exception=True)
32 | # instance.save()
--------------------------------------------------------------------------------
/ruidun_system/equipment/serializers/equipmentlocation_seriallizer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 |
3 | from staff.models import Staff
4 | from ..models import EquipmentLocation, EquipmentUsed
5 |
6 |
7 | class EquipmentLocationSerializer(serializers.ModelSerializer):
8 | """工程车辆定位记录序列化器(暂时只有查询)"""
9 | # location_card_id = serializers.CharField(allow_null=True, required=False)
10 | equipment_name = serializers.SerializerMethodField()
11 | company_name = serializers.SerializerMethodField()
12 | model_name = serializers.SerializerMethodField()
13 | user_name = serializers.SerializerMethodField()
14 |
15 | class Meta:
16 | model = EquipmentLocation
17 | fields = "__all__"
18 | extra_kwargs = {
19 | "id": {"required": False}
20 | }
21 |
22 | def get_equipment_name(self, obj):
23 | return obj.location_card.equipment.name
24 |
25 | def get_company_name(self, obj):
26 | return obj.location_card.equipment.company.name
27 |
28 | def get_model_name(self, obj):
29 | return obj.location_card.equipment.model.name
30 |
31 | def get_user_name(self, obj):
32 | user_id = EquipmentUsed.objects.get(id=obj.location_card.equipment_id).user_id
33 | return Staff.objects.get(id=user_id).name
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/device_upkeep_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from lib.model_viewset import ModelViewSet
5 |
6 | from internet_setting.models import DeviceUpkeep
7 | from internet_setting.serializers.device_upkeep_serializer import DeviceUpkeepSerializer
8 |
9 |
10 | class DeviceUpkeepFilter(django_filters.FilterSet):
11 | '''可以根据时间区间,负责人, 维护人来过滤'''
12 |
13 | time__gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
14 | time__lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
15 |
16 | manager = django_filters.CharFilter(field_name='manager_id', lookup_expr='name') # 负责人
17 |
18 | class Meta:
19 | model = DeviceUpkeep
20 | fields = ["time__gt", 'time__lt', 'manager', 'upkeep_man']
21 |
22 |
23 | class DeviceUpkeepViewSet(ModelViewSet):
24 | """
25 | A simple ViewSet for viewing and editing accounts.
26 | """
27 | queryset = DeviceUpkeep.objects.all()
28 | serializer_class = DeviceUpkeepSerializer
29 | # permission_classes = [SelfPermission]
30 | filterset_class = DeviceUpkeepFilter
31 | filter_backends = [OrderingFilter, DjangoFilterBackend]
32 | ordering_fields = ('time',)
--------------------------------------------------------------------------------
/ruidun_system/work_area/viewsets/open_carbreak_view.py:
--------------------------------------------------------------------------------
1 | from rest_framework import status
2 | from rest_framework.response import Response
3 | from rest_framework.views import APIView
4 |
5 | from work_area.models import CarBreak
6 |
7 |
8 | class OpenCarbreak(APIView):
9 | """开启车辆道闸"""
10 |
11 | def get(self, request):
12 |
13 | id = request.query_params.get('id')
14 | action = request.query_params.get('action')
15 |
16 | # 校验参数是否有值
17 | if not all([id, action]):
18 | return Response({'error':'参数不足'}, status=status.HTTP_400_BAD_REQUEST)
19 |
20 | if action not in ("True", "False"):
21 | return Response({'error': '参数错误'}, status=status.HTTP_400_BAD_REQUEST)
22 |
23 | # 查看道闸是否存在
24 | carbreak = None
25 | try:
26 | carbreak = CarBreak.objects.get(id=id)
27 | except Exception as e:
28 | # 写入logger日志
29 | pass
30 | if not carbreak:
31 | return Response({'error':'车辆道闸不存在'}, status=status.HTTP_400_BAD_REQUEST)
32 |
33 | # 调用硬件接口
34 | state, message = 接口(id, action) # TODO 改为车辆道闸接口
35 |
36 | data = {
37 | 'state': state,
38 | 'message': message
39 | }
40 |
41 | return Response(data, status=status.HTTP_200_OK)
--------------------------------------------------------------------------------
/ruidun_system/safe/viewsets/method_viewset.py:
--------------------------------------------------------------------------------
1 | import os
2 | from time import time
3 |
4 | import django_filters
5 | from django_filters import rest_framework as filters
6 | from rest_framework.filters import OrderingFilter
7 | from rest_framework.response import Response
8 | from rest_framework import status
9 | from rest_framework.decorators import action
10 |
11 | from safe.serializers.method_serializer import MethodSerializer
12 | from ..models import SpecialScheme, Method
13 | from ..serializers.specialscheme_serializer import SpecialSchemeSerializer
14 | from base_system import settings
15 | from lib.model_viewset import ModelViewSet
16 |
17 |
18 | class MethodFilter(django_filters.FilterSet):
19 | """专项方案过滤器"""
20 |
21 | time_gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
22 | time_lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
23 |
24 | class Meta:
25 | model = Method
26 | fields = ['time_gt', 'time_lt', 'people']
27 |
28 |
29 | class MethodViewset(ModelViewSet):
30 | """专项方案管理"""
31 |
32 | queryset = Method.objects.all()
33 | serializer_class = MethodSerializer
34 | filterset_class = MethodFilter
35 | filter_backends = (OrderingFilter, filters.DjangoFilterBackend,)
36 | ordering_fields = ('reate_time', 'update_time')
37 |
38 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/viewsets/open_staffbreak_view.py:
--------------------------------------------------------------------------------
1 | from rest_framework import status
2 | from rest_framework.response import Response
3 | from rest_framework.views import APIView
4 |
5 | from work_area.models import StaffRecord
6 |
7 |
8 | class OpenStaffbreak(APIView):
9 | """开启人员道闸"""
10 |
11 | def get(self, request):
12 |
13 | id = request.query_params.get('id')
14 | action = request.query_params.get('action')
15 |
16 | # 校验参数是否有值
17 | if not all([id, action]):
18 | return Response({'error':'参数不足'}, status=status.HTTP_400_BAD_REQUEST)
19 |
20 | if action not in ("True", "False"):
21 | return Response({'error': '参数错误'}, status=status.HTTP_400_BAD_REQUEST)
22 |
23 | # 查看道闸是否存在
24 | staffbreak = None
25 | try:
26 | staffbreak = StaffRecord.objects.get(id=id)
27 | except Exception as e:
28 | # 写入logger日志
29 | pass
30 | if not staffbreak:
31 | return Response({'error':'人员道闸不存在'}, status=status.HTTP_400_BAD_REQUEST)
32 |
33 | # 调用硬件接口
34 | state, message = 接口(id, action) # TODO 改为人员道闸接口
35 |
36 | data = {
37 | 'state': state,
38 | 'message': message
39 | }
40 |
41 | return Response(data, status=status.HTTP_200_OK)
--------------------------------------------------------------------------------
/ruidun_system/equipment/viewsets/equipmentuser_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters as filters
2 | from lib.model_viewset import ModelViewSet
3 | from django_filters.rest_framework import DjangoFilterBackend
4 | from rest_framework.filters import OrderingFilter
5 | from ..models import EquipmentUsed
6 | from ..serializers.equipmentused_serializer import EquipmentUsedSerializer
7 |
8 | """使用记录搜索查询"""
9 | class EquipmentuserFilter(filters.FilterSet):
10 | time_gt = filters.DateTimeFilter(field_name="start_time", lookup_expr='gte')
11 | time_lt = filters.DateTimeFilter(field_name="start_time", lookup_expr='lte')
12 | user_name = filters.CharFilter(field_name="user_id", lookup_expr='name')
13 | equipment_name = filters.CharFilter(field_name="equipment_id", lookup_expr="name")
14 | manager_name = filters.CharFilter(field_name="manager_id", lookup_expr="name")
15 |
16 | class Meta:
17 | model = EquipmentUsed
18 | fields = ["time_gt", "time_lt", 'user_name', "equipment_id", "manager_name", "equipment_name"]
19 |
20 |
21 | class EquipmentUsedViewSet(ModelViewSet):
22 | queryset = EquipmentUsed.objects.all()
23 | serializer_class = EquipmentUsedSerializer
24 | filterset_class = EquipmentuserFilter
25 | filter_backends = [OrderingFilter, DjangoFilterBackend]
26 | ordering_fields = ("start_time", "id")
27 |
28 |
29 |
--------------------------------------------------------------------------------
/ruidun_system/huanjing.txt:
--------------------------------------------------------------------------------
1 | asn1crypto==0.24.0
2 | certifi==2018.8.24
3 | cffi==1.11.5
4 | chardet==3.0.4
5 | cryptography==2.3.1
6 | cycler==0.10.0
7 | defusedxml==0.5.0
8 | Django==2.1
9 | django-adminlte==1.2
10 | django-adminlte2==0.4.1
11 | django-allauth==0.37.1
12 | django-appconf==1.0.2
13 | django-autofixture==0.12.1
14 | django-compressor==2.2
15 | django-compressor-toolkit==0.6.0
16 | django-cors-headers==2.4.0
17 | django-crudbuilder==0.2.7
18 | django-debug-toolbar==1.9.1
19 | django-extensions==2.1.2
20 | django-filter==2.0.0
21 | django-tables2==1.21.2
22 | django-widget-tweaks==1.4.2
23 | djangorestframework==3.9.1
24 | djangorestframework-jsonapi==2.7.0
25 | djangorestframework-jwt==1.11.0
26 | drf-tracking==1.5.0
27 | et-xmlfile==1.0.1
28 | idna==2.7
29 | inflection==0.3.1
30 | jdcal==1.4
31 | kiwisolver==1.0.1
32 | matplotlib==3.0.0rc2
33 | mysqlclient==1.4.2
34 | numpy==1.15.1
35 | oauthlib==2.1.0
36 | openpyxl==2.6.1
37 | pandas==0.24.2
38 | Pillow==5.2.0
39 | pycparser==2.18
40 | PyJWT==1.7.1
41 | PyMySQL==0.9.2
42 | pyparsing==2.2.0
43 | python-dateutil==2.7.3
44 | python3-openid==3.1.0
45 | pytz==2018.5
46 | rcssmin==1.0.6
47 | requests==2.19.1
48 | requests-oauthlib==1.0.0
49 | rjsmin==1.0.12
50 | six==1.11.0
51 | split==0.4
52 | sqlparse==0.2.4
53 | suds-jurko==0.6
54 | urllib3==1.23
55 | Werkzeug==0.14.1
56 | xlrd==1.2.0
57 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/serializers/artificial_log_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from auth_system.models import User
6 | from system_manage.models import ArtificialLog, ArtificialLogCategory
7 |
8 |
9 | class ArtificialLogSerializer(serializers.ModelSerializer):
10 | # user = serializers.SlugRelatedField(slug_field="username", read_only=True)
11 | # user_id = serializers.CharField(read_only=True)
12 | # category = serializers.SlugRelatedField(slug_field="name", read_only=True)
13 | # category_id = serializers.CharField()
14 |
15 | class Meta:
16 | model = ArtificialLog
17 | fields = "__all__"
18 | # exclude = ["status", 'level']
19 | extra_kwargs = {
20 | "id": {"read_only": True},
21 | }
22 | #
23 | # def validate_category_id(self, value):
24 | # if ArtificialLogCategory.objects.filter(pk=value).count() == 0:
25 | # raise serializers.ValidationError("无效的分类id")
26 | # return value
27 | #
28 | # def create(self, validated_data):
29 | # user = self.context["request"].user
30 | # # 日志的用户id和等级都由系统自己生成
31 | # validated_data["level"] = user.log_level
32 | # validated_data["user"] = user.pk
33 | # return ArtificialLog.objects.create(pk=uuid.uuid4(), **validated_data)
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/device_category_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework import viewsets, status
2 | from rest_framework.filters import OrderingFilter
3 | from rest_framework.response import Response
4 |
5 | from internet_setting.models import DeviceCategory
6 | from internet_setting.serializers.device_category_serializer import DeviceCategorySerializer
7 | from lib import model_viewset
8 |
9 |
10 | class DeviceCategoryViewSet(model_viewset.ModelViewSet):
11 | """
12 | A simple ViewSet for viewing and editing accounts.
13 | """
14 | queryset = DeviceCategory.objects.filter(is_used=1).all()
15 | serializer_class = DeviceCategorySerializer
16 | filter_backends = [OrderingFilter]
17 | ordering_fields = ('index',)
18 |
19 | # permission_classes = [SelfPermission]
20 | #
21 | # def destroy(self, request, *args, **kwargs):
22 | # instance = self.get_object()
23 | # instance.is_used = 0
24 | # instance.save()
25 | # return Response(status=status.HTTP_204_NO_CONTENT)
26 |
27 | # def destroy(self, request, *args, **kwargs):
28 | # partial = kwargs.pop('partial', False)
29 | # instance = self.get_object()
30 | # serializer = self.get_serializer(instance, data=request.data, partial=partial)
31 | # serializer.is_valid(raise_exception=True)
32 | # instance.save()
--------------------------------------------------------------------------------
/ruidun_system/work_area/serializers/carrecord_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 |
3 | from internet_setting.models import CarPass
4 | from ..models import CarRecord, CarInfo, CarBreak
5 |
6 |
7 | class CarInfoSerializer(serializers.ModelSerializer):
8 | """车辆信息序列化器"""
9 |
10 | code = serializers.SerializerMethodField()
11 |
12 | class Meta:
13 | model = CarInfo
14 | fields = ('code', 'id', 'car_owner', 'phone_number')
15 |
16 | def get_code(self, obj):
17 | request = self.context['request']
18 | part_id = request.query_params.get('part_id')
19 | # TODO 等待传入part_id
20 | carpass_set = obj.carpass_set.filter(part_id=1)
21 | # return map(lambda p: {"code": p.code}, staffpass_set)
22 |
23 | if not carpass_set:
24 | return None
25 |
26 | return (carpass_set[0].code)
27 |
28 |
29 | class CarRecordSerializer(serializers.ModelSerializer):
30 | """车辆通行记录序列化器"""
31 |
32 | # car = CarInfoSerializer(read_only=True)
33 | # car_break = serializers.SlugRelatedField(label='道闸', read_only=True, slug_field='name')
34 |
35 | class Meta:
36 | model = CarRecord
37 | # fields = ('id', 'car', 'car_break', 'in_out', 'time')
38 | fields = ('id', 'cardid', 'cardnumber', 'intime', 'inplace', 'outtime', 'outplace')
39 |
40 |
41 |
--------------------------------------------------------------------------------
/ruidun_system/auth_system/views.py:
--------------------------------------------------------------------------------
1 | # from django.contrib.auth.models import Group
2 | # from django.shortcuts import render
3 | #
4 | # # Create your views here.
5 | # from rest_framework import viewsets, status
6 | # from rest_framework.generics import GenericAPIView
7 | # from rest_framework.response import Response
8 | #
9 | # from .models import User, Part
10 | #
11 | #
12 | # class DeforChangeViewset(GenericAPIView):
13 | # """修改默认组和工区"""
14 | #
15 | # def post(self, request):
16 | # user_id = request.data.get('user_id')
17 | # group_id = request.data.get('group_id')
18 | # part_id = request.data.get('part_id')
19 | #
20 | # try:
21 | # user = User.objects.get(id=user_id)
22 | # except Exception as e:
23 | # return Response({'error': '用户不存在'}, status=status.HTTP_400_BAD_REQUEST)
24 | #
25 | # if Part.objects.filter(id=part_id).count():
26 | # user.default_part_id = part_id
27 | #
28 | # if Group.objects.filter(id=group_id).count():
29 | # user.default_group_id = group_id
30 | #
31 | # user.save()
32 | #
33 | # user_dict = dict()
34 | # user_dict['default_group_id'] = user.default_group_id
35 | # user_dict['default_part_id'] = user.default_part_id
36 | #
37 | # return Response(user_dict, status=status.HTTP_400_BAD_REQUEST)
38 | #
39 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/staff_pass_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from internet_setting.models import StaffPass
6 | from staff.models import Staff
7 |
8 |
9 | class StaffPassSerializer(serializers.ModelSerializer):
10 |
11 | staff = serializers.SlugRelatedField(slug_field='name', read_only=True)
12 | staff_id = serializers.CharField(allow_null=True, required=False)
13 |
14 | class Meta:
15 | model = StaffPass
16 | fields = '__all__'
17 | extra_kwargs = {
18 | "id": {"read_only": True}
19 | }
20 |
21 | def validate_staff_id(self, value):
22 | if Staff.objects.filter(pk=value).count() == 0:
23 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
24 | return value
25 |
26 | def create(self, validated_data):
27 | pk = uuid.uuid4()
28 | return StaffPass.objects.create(pk=pk, **validated_data)
29 |
30 | def update(self, instance, validated_data):
31 | instance.status = validated_data.get("status", instance.status)
32 | instance.staff_id = validated_data.get("staff_id", instance.staff_id)
33 | instance.is_used = validated_data.get("is_used", instance.is_used)
34 | instance.code = validated_data.get("code", instance.code)
35 |
36 | instance.save()
37 | return instance
--------------------------------------------------------------------------------
/ruidun_system/work_area/fixtures/staff_record.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "model": "work_area.staffbreak",
4 | "pk": "1",
5 | "fields": {
6 | "create_time": "2019-03-12T00:00:00Z",
7 | "update_time": "2019-03-13T00:00:00Z",
8 | "index": 1,
9 | "is_used": 1,
10 | "name": "\u4eba\u5458\u897f\u4e00\u9053\u95f8"
11 | }
12 | },
13 | {
14 | "model": "work_area.staffbreak",
15 | "pk": "2",
16 | "fields": {
17 | "create_time": "2019-03-11T00:00:00Z",
18 | "update_time": "2019-03-12T00:00:00Z",
19 | "index": 2,
20 | "is_used": 1,
21 | "name": "\u4eba\u5458\u4e1c\u4e00\u9053\u95f8"
22 | }
23 | },
24 | {
25 | "model": "work_area.staffrecord",
26 | "pk": "1",
27 | "fields": {
28 | "staff": "1",
29 | "staff_break": "1",
30 | "in_out": true,
31 | "time": "2019-03-13T00:00:00Z"
32 | }
33 | },
34 | {
35 | "model": "work_area.staffrecord",
36 | "pk": "2",
37 | "fields": {
38 | "staff": "2",
39 | "staff_break": "2",
40 | "in_out": true,
41 | "time": "2019-03-12T00:00:00Z"
42 | }
43 | },
44 | {
45 | "model": "work_area.staffrecord",
46 | "pk": "3",
47 | "fields": {
48 | "staff": "1",
49 | "staff_break": "2",
50 | "in_out": false,
51 | "time": "2019-03-13T10:00:00Z"
52 | }
53 | }
54 | ]
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/viewsets/speaker_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework import status
2 | from rest_framework.decorators import action
3 | from rest_framework.response import Response
4 | from rest_framework.viewsets import ViewSet, ModelViewSet
5 |
6 | from internet_setting.models import Voice
7 | from client.ipvoice import Client
8 |
9 |
10 | class SpeakerViewSet(ModelViewSet):
11 | "音箱相关接口"
12 |
13 | # @action(methods=['POST'], detail=False)
14 | # def control(self, request):
15 | # "控制音箱开关的接口"
16 | # part_id = request.data.get('part_id')
17 | # ids = request.data.get('ids', [])
18 | # act = request.data.get('action')
19 | # if not all([part_id, ids, act]):
20 | # return Response(data={'message': "参数不足"}, status=status.HTTP_400_BAD_REQUEST)
21 | # # 校验操作方式和操作ids是否符合规则
22 | # if act not in ["open", "down"]:
23 | # return Response(data={'message': "操作方式错误"}, status=status.HTTP_400_BAD_REQUEST)
24 | # if DeviceInfo.objects.filter(id__in=ids).count() != len(ids):
25 | # return Response(data={'message': "操作音箱id错误,部分id不存在"}, status=status.HTTP_400_BAD_REQUEST)
26 | #
27 | # # 调用硬件接口:
28 | # result, message = 开启音箱接口(part_id=part_id, ids=ids, act=act)
29 | # return Response(data={"reslut": result, "message":message}, status=status.HTTP_200_OK)
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/urls.py:
--------------------------------------------------------------------------------
1 | urlpatterns = [
2 |
3 | ]
4 |
5 | #车辆信息
6 | from rest_framework import routers
7 | from .viewsets.equipmentinfo_viewset import EquipmentInfoViewSet
8 | router = routers.DefaultRouter()
9 | router.register('equipmentinfos', EquipmentInfoViewSet, base_name='equipment')
10 |
11 | urlpatterns += router.urls
12 |
13 | # 使用信息
14 | from .viewsets.equipmentuser_viewset import EquipmentUsedViewSet
15 | router = routers.DefaultRouter()
16 | router.register('equipmentuseds', EquipmentUsedViewSet, base_name='equipmentused')
17 |
18 | urlpatterns += router.urls
19 |
20 |
21 | # 保养信息
22 | from .viewsets.equipmentupkeep_viewset import EquipmentUpkeepViewSet
23 | router = routers.DefaultRouter()
24 | router.register('equipmentupkeeps', EquipmentUpkeepViewSet, base_name='equipmentupkeep')
25 |
26 | urlpatterns += router.urls
27 |
28 |
29 | # 修理信息
30 | from .viewsets.equipmentrepair_viewset import EquipmentRepairViewSet
31 | router = routers.DefaultRouter()
32 | router.register('equipmentrepairs', EquipmentRepairViewSet, base_name='equipmentrepair')
33 |
34 | urlpatterns += router.urls
35 |
36 |
37 | # 定位信息
38 | from .viewsets.equipmentlocation_viewset import EquipmentLocationViewSet
39 | router = routers.DefaultRouter()
40 | router.register('equipmentlocations', EquipmentLocationViewSet, base_name='equipmentlocation')
41 |
42 | urlpatterns += router.urls
43 |
44 |
45 |
--------------------------------------------------------------------------------
/ruidun_system/auth_system/user_serializer.py:
--------------------------------------------------------------------------------
1 | # from django.contrib.auth.models import User
2 | from rest_framework import routers, serializers, viewsets
3 |
4 | from auth_system.models import User
5 | from .serializers import GroupSerializer
6 |
7 |
8 | class UserSerializer(serializers.ModelSerializer):
9 | groups = GroupSerializer(many=True, read_only=True)
10 | # groups = serializers.SerializerMethodField()
11 | parts = serializers.SerializerMethodField()
12 | # parts = PartSerializer(many=True, read_only=True)
13 |
14 | class Meta:
15 | model = User
16 | fields = ('username', 'id', 'email', 'is_active','first_name','last_name','groups', 'parts', 'default_part_id', 'default_group_id')
17 |
18 | # def get_groups(self, obj):
19 | # return GroupSerializer(instance=obj.groups.all(), many=True, read_only=True, context={"user": obj}).data
20 |
21 | def get_parts(self, obj):
22 | #TODO 后期修改为项目在外层
23 | parts = obj.parts.all()
24 | # projects = map(lambda p: p.project, parts) # 根据工区得到项目
25 | # projects = list(set(projects)) # 得到去重的列表
26 | return map(lambda p: {"id":p.id, "name": p.name, "project": {"project_id": p.project.id, "name": p.project.name}}, parts)
27 | # return map(lambda pj: {"id": pj.id, "name": pj.name, "parts": map(lambda p: {"id": p.id, "name": p.name, },set(pj.parts.all()) & set(parts))}, projects)
28 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/voice_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.decorators import action
4 | from rest_framework.filters import OrderingFilter
5 | from rest_framework import status
6 | from lib.model_viewset import ModelViewSet
7 | from rest_framework.response import Response
8 |
9 | from client.ipvoice import Client
10 | from internet_setting.models import Voice
11 | from internet_setting.serializers.voice_serializer import VoiceSerializer
12 |
13 |
14 | class VoiceFilter(django_filters.FilterSet):
15 | '''可以根据时间区间, 是否损坏, 厂家, 型号等来过滤'''
16 |
17 | time__gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
18 | time__lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
19 |
20 | class Meta:
21 | model = Voice
22 | fields = ["time__gt", 'time__lt', 'status', 'factory', 'model']
23 |
24 |
25 | class VoiceViewSet(ModelViewSet):
26 | """
27 | A simple ViewSet for viewing and editing accounts.
28 | """
29 | queryset = Voice.objects.all()
30 | serializer_class = VoiceSerializer
31 | # permission_classes = [SelfPermission]
32 | filterset_class = VoiceFilter
33 | filter_backends = [OrderingFilter, DjangoFilterBackend]
34 | ordering_fields = ('time', 'status', 'category_id')
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/car_pass_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from rest_framework import viewsets
5 |
6 | from internet_setting.models import CarPass
7 | from internet_setting.serializers.car_pass_serializer import CarPassSerializer
8 | from work_area.models import CarInfo
9 |
10 |
11 |
12 | class CarPassFilter(django_filters.FilterSet):
13 | '''可以根据时间区间,车主姓名, 车牌号来过滤'''
14 |
15 | # time__gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
16 | # time__lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
17 | #
18 | # name = django_filters.CharFilter(field_name='car_id', lookup_expr='car_owner') # 车主姓名
19 |
20 | class Meta:
21 | # model = CarPass
22 | # fields = ["time__gt", 'time__lt', 'car_id', 'name']
23 | model = CarInfo
24 | fields = ['cphm', 'clxh']
25 |
26 |
27 | class CarPassViewSet(viewsets.ReadOnlyModelViewSet):
28 | """
29 | A simple ViewSet for viewing and editing accounts.
30 | """
31 | queryset = CarInfo.objects.all()
32 | serializer_class = CarPassSerializer
33 | # permission_classes = [SelfPermission]
34 | filterset_class = CarPassFilter
35 | filter_backends = [OrderingFilter, DjangoFilterBackend]
36 | ordering_fields = ('cphm',)
--------------------------------------------------------------------------------
/ruidun_system/safe/serializers/dangername_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from safe.models import Danger
5 |
6 |
7 | class DangerNameSerializer(serializers.ModelSerializer):
8 | """危险品名字序列化器(搜索字段)"""
9 | part_id = serializers.CharField(allow_null=True, required=False)
10 | part = serializers.SlugRelatedField(slug_field='name', read_only=True)
11 | category_id = serializers.CharField(allow_null=True, required=False)
12 | category = serializers.SlugRelatedField(slug_field='name', read_only=True)
13 | class Meta:
14 | model = Danger
15 | fields = '__all__'
16 | #('id', 'name')
17 | extra_kwargs = {
18 | 'id': {'read_only': True},
19 | }
20 |
21 | def create(self, validated_data):
22 | """新建"""
23 | pk = uuid.uuid4()
24 | # print(validated_data)
25 | return Danger.objects.create(pk=pk, **validated_data)
26 |
27 | def update(self, instance, validated_data):
28 | """更新,instance为要更新的对象实例"""
29 | instance.category_id = validated_data.get('category_id', instance.category_id)
30 | instance.part_id = validated_data.get('part_id', instance.part_id)
31 | instance.count = validated_data.get('count', instance.count)
32 | instance.name = validated_data.get('name', instance.name)
33 | instance.save()
34 | return instance
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/folk_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from staff.models import Folk, Staff
6 |
7 |
8 | class FolkSerializer(serializers.ModelSerializer):
9 | staff = serializers.SlugRelatedField(read_only=True, slug_field="name")
10 | staff_id = serializers.CharField(allow_null=True, required=False)
11 |
12 | class Meta:
13 | model = Folk
14 | fields = '__all__'
15 | extra_kwargs = {
16 | "id": {"required": False},
17 | "name": {"required": False}
18 | }
19 |
20 | # 验证
21 | def validate_staff_id(self, value):
22 | if Staff.objects.filter(pk=value).count() == 0:
23 | raise serializers.ValidationError("无效的值")
24 | return value
25 |
26 | def create(self, validated_data):
27 | """新建"""
28 | validated_data['id'] = uuid.uuid4()
29 | return Folk.objects.create(**validated_data)
30 |
31 | def update(self, instance, validated_data):
32 | """更新,instance为要更新的对象实例"""
33 | instance.name = validated_data.get('name', instance.name)
34 | instance.phone = validated_data.get('phone', instance.phone)
35 | instance.address = validated_data.get('address', instance.address)
36 | instance.staff_id = validated_data.get('staff_id', instance.staff_id)
37 | instance.save()
38 | return instance
--------------------------------------------------------------------------------
/ruidun_system/client/ipvoice.py:
--------------------------------------------------------------------------------
1 | #coding=utf-8
2 | from common.cfg import Config
3 | from common.myfuncs import Funcs
4 | from common.myproxy import Proxy
5 |
6 | '''
7 | ipvoice语音客户端接口
8 | '''
9 | class Client:
10 | device='ipvoice' #设备类型
11 | token='...' #暂略
12 |
13 | ip="192.168.0.112"
14 | port=6002
15 | voiceFilePath="D:/tts2.mp3" #完整路径
16 | snlist="e9682bb1b27ba83368d3932d0d2bd241" # 终端序列号列表,多个设备采用逗号分隔,如:"e9682bb1b27ba83368d3932d0d2bd241,e9682bb1b27ba83368d3932d0d2bd241"
17 |
18 | def __init__(self,ip,port,voiceFilePath,snlist):
19 | self.cfg = Config()
20 | self.url = self.cfg.get('main', 'url') + "/device"
21 |
22 | self.ip=ip
23 | self.port=port
24 | self.voiceFilePath=voiceFilePath
25 | self.snlist=snlist
26 |
27 | pass
28 |
29 | def send(self):
30 | #参数示例
31 | data={}
32 | data["token"]=self.token
33 | data["device"]=self.device
34 |
35 | data["ip"]=self.ip
36 | data["port"]=Funcs.toInt(self.port)
37 |
38 | data["voiceFilePath"]=self.voiceFilePath
39 | data["snlist"]=self.snlist
40 |
41 | result=Proxy.send(self.url,data)
42 | return result #异常返回值为'',正确返回值为1
43 |
44 | if __name__ == '__main__':
45 | obj=Client("192.168.0.112",6002,"D:/tts2.mp3","e9682bb1b27ba83368d3932d0d2bd241")
46 | result=obj.send()
47 | print(result)
48 |
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/company_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 |
3 | import uuid
4 |
5 | from auth_system.models import Company
6 |
7 |
8 | class CompanySerializer(serializers.ModelSerializer):
9 | class Meta:
10 | model = Company
11 | fields = '__all__'
12 | extra_kwargs = {
13 | "id": {"read_only":True},
14 | "boss_name": {"required": False},
15 | "phone_num": {"required": False},
16 | "name": {"required": False},
17 | "company_address": {"required": False}
18 | }
19 |
20 | def create(self, validated_data):
21 | """新建"""
22 | validated_data['id'] = uuid.uuid4()
23 | return Company.objects.create(**validated_data)
24 |
25 | def update(self, instance, validated_data):
26 | """更新,instance为要更新的对象实例"""
27 |
28 | instance.name = validated_data.get('name', instance.name)
29 | instance.index = validated_data.get('index', instance.index)
30 | instance.is_used = validated_data.get('is_used', instance.is_used)
31 | instance.boss_name = validated_data.get('boss_name', instance.boss_name)
32 | instance.phone_num = validated_data.get('phone_num', instance.phone_num)
33 | instance.company_address = validated_data.get('company_address', instance.company_address)
34 | instance.save()
35 | return instance
36 |
37 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/caution_record_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from rest_framework import viewsets
5 |
6 | from internet_setting.models import CautionRecord
7 | from internet_setting.serializers.caution_record_serializer import CautionRecordSerializer
8 |
9 |
10 | class CautionRecordFilter(django_filters.FilterSet):
11 | '''可以根据时间区间,报警设备分类id, 处置人姓名来过滤'''
12 |
13 | time__gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
14 | time__lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
15 |
16 | name = django_filters.CharFilter(field_name='disposer_id', lookup_expr='name')
17 | category_id = django_filters.CharFilter(field_name='device_id', lookup_expr='category_id')
18 |
19 | class Meta:
20 | model = CautionRecord
21 | fields = ["time__gt", 'time__lt', 'category_id', 'name', 'status']
22 |
23 |
24 | class CautionRecordViewSet(viewsets.ReadOnlyModelViewSet):
25 | """
26 | A simple ViewSet for viewing and editing accounts.
27 | """
28 | queryset = CautionRecord.objects.all()
29 | serializer_class = CautionRecordSerializer
30 | # permission_classes = [SelfPermission]
31 | filterset_class = CautionRecordFilter
32 | filter_backends = [OrderingFilter, DjangoFilterBackend]
33 | ordering_fields = ('id', 'time')
--------------------------------------------------------------------------------
/ruidun_system/db/base_model.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 | from rest_framework.exceptions import ValidationError
3 |
4 |
5 | class TimeBaseModel(models.Model):
6 | """模型抽象基类"""
7 |
8 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
9 | update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
10 | # is_delete = models.BooleanField(default=False, verbose_name='删除标记')
11 |
12 | class Meta:
13 | # 说明是一个抽象模型类
14 | abstract = True
15 |
16 |
17 | class SortBaseModel(models.Model):
18 | """模型抽象基类"""
19 |
20 | index = models.IntegerField(verbose_name='排序', default=0, null=True)
21 | is_used = models.IntegerField(verbose_name='是否启用', default=True, null=True)
22 | # is_delete = models.BooleanField(default=False, verbose_name='删除标记')
23 |
24 | class Meta:
25 | # 说明是一个抽象模型类
26 | abstract = True
27 |
28 |
29 | # 自定义捕获异常
30 | from rest_framework.views import exception_handler
31 |
32 |
33 | def custom_exception_handler(exc, context):
34 | # 先调用REST framework默认的异常处理方法获得标准错误响应对象
35 | response = exception_handler(exc, context)
36 |
37 | if response:
38 | s = response.data
39 | s['errno'] = s.pop(list(s)[0])
40 | # 在此处补充自定义的异常处理
41 | # if response is not None:
42 | # view = context['view']
43 | # if isinstance(exc, ValidationError):
44 | # response.data['errno'] = exc
45 |
46 | return response
47 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/viewsets/equipmentlocation_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework.permissions import IsAuthenticated
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | import django_filters as filters
5 |
6 | from client.location import Client
7 | from lib.model_viewset import ModelViewSet
8 | from lib.user_permission import SelfPermission
9 | from ..models import EquipmentLocation
10 | from ..serializers.equipmentlocation_seriallizer import EquipmentLocationSerializer
11 |
12 | # 查询设备的轨迹
13 | class EquipmentLocationFilter(filters.FilterSet):
14 | time_gt = filters.DateTimeFilter(field_name="time", lookup_expr='gte')
15 | time_lt = filters.DateTimeFilter(field_name="time", lookup_expr='lte')
16 | equipment_name = filters.CharFilter(field_name="location_card_id", lookup_expr='equipment__name')
17 | user_name = filters.CharFilter(field_name="location_card_id", lookup_expr='equipment__equipmentused__user__name')
18 |
19 | class Meta:
20 | model = EquipmentLocation
21 | fields = ["time_gt", "time_lt", "location_card_id", "location", "user_name", "equipment_name"]
22 |
23 |
24 | class EquipmentLocationViewSet(ModelViewSet):
25 | queryset = EquipmentLocation.objects.all()
26 | serializer_class = EquipmentLocationSerializer
27 | filterset_class = EquipmentLocationFilter
28 | filter_backends = [OrderingFilter, DjangoFilterBackend]
29 | ordering_fields = ("time", "id")
30 |
31 |
32 |
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/department_viewset.py:
--------------------------------------------------------------------------------
1 | # from lib.model_viewset import ModelViewSet
2 | #
3 | # from ..models import Department
4 | # from ..serializers.department_serializer import DepartmentSerializer
5 | #
6 | #
7 | # class DepartmentViewset(ModelViewSet):
8 | # """部门信息"""
9 | # queryset = Department.objects.filter(is_used=1).all()
10 | # serializer_class = DepartmentSerializer
11 | from rest_framework.response import Response
12 | from rest_framework import status
13 |
14 | from lib.model_viewset import ModelViewSet
15 | import django_filters as filters
16 | from django_filters.rest_framework import DjangoFilterBackend
17 | from rest_framework.filters import OrderingFilter
18 | from ..models import Department
19 | from ..serializers.department_serializer import DepartmentSerializer
20 |
21 |
22 | class DepartmentFilter(filters.FilterSet):
23 | class Meta:
24 | model = Department
25 | fields = ["department", "part_id"]
26 |
27 |
28 | class DepartmentViewset(ModelViewSet):
29 | """部门信息"""
30 | queryset = Department.objects.filter(is_used=1)
31 | serializer_class = DepartmentSerializer
32 | filterset_class = DepartmentFilter
33 | filter_backends = [OrderingFilter, DjangoFilterBackend]
34 |
35 | def destroy(self, request, *args, **kwargs):
36 | instance = self.get_object()
37 | instance.is_used = 0
38 | instance.status = 2
39 | instance.save()
40 | return Response(status=status.HTTP_204_NO_CONTENT)
41 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/viewsets/artificial_log_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from rest_framework import viewsets
5 | from django.db.models import Q
6 |
7 | from lib.model_viewset import DestroyModelMixin
8 | from system_manage.models import ArtificialLog
9 | from system_manage.serializers.artificial_log_serializer import ArtificialLogSerializer
10 |
11 |
12 | class ArtificialLogFilter(django_filters.FilterSet):
13 | '''可以根据作者名, 时间'''
14 |
15 | time_gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
16 | time_lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
17 |
18 | # name = django_filters.CharFilter(field_name='user_id', lookup_expr='username')
19 |
20 | class Meta:
21 | model = ArtificialLog
22 | fields = ["time_gt", 'time_lt', 'time', 'user']
23 |
24 |
25 | class ArtificialLogViewSet(viewsets.ReadOnlyModelViewSet):
26 | """人工日志类视图"""
27 |
28 | queryset = ArtificialLog.objects.all().order_by('-time')
29 | serializer_class = ArtificialLogSerializer
30 | filterset_class = ArtificialLogFilter
31 | filter_backends = [OrderingFilter, DjangoFilterBackend]
32 | ordering_fields = ["time", "category_id"]
33 |
34 | # def get_queryset(self):
35 | # query = ArtificialLog.objects.filter(Q(level__lt=self.request.user.log_level) | Q(user=self.request.user))
36 | # return query
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/voice_server_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from auth_system.models import Part
6 | from internet_setting.models import VoiceServer
7 |
8 |
9 | class VoiceServerSerializer(serializers.ModelSerializer):
10 | part = serializers.SlugRelatedField(slug_field='name', read_only=True)
11 | part_id = serializers.CharField(allow_null=True, required=False)
12 |
13 | class Meta:
14 | model = VoiceServer
15 | fields = '__all__'
16 | extra_kwargs = {
17 | "id": {"read_only": True},
18 | }
19 |
20 | def validate_part_id(self, value):
21 | if Part.objects.filter(pk=value).count() == 0:
22 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
23 | return value
24 |
25 | def create(self, validated_data):
26 | pk = uuid.uuid4()
27 | return VoiceServer.objects.create(pk=pk, **validated_data)
28 |
29 | def update(self, instance, validated_data):
30 | instance.name = validated_data.get("name", instance.name)
31 | instance.ip = validated_data.get("ip", instance.ip)
32 | instance.part_id = validated_data.get("part_id", instance.part_id)
33 | instance.port = validated_data.get("port", instance.port)
34 | instance.note = validated_data.get("note", instance.note)
35 | # instance.is_used = validated_data.get("is_used", instance.is_used)
36 |
37 | instance.save()
38 | return instance
39 |
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/check_staff_name.py:
--------------------------------------------------------------------------------
1 | from django.http import HttpResponse, JsonResponse
2 |
3 | from staff.models import Staff
4 | from staff.serializers.staff_serializer import StaffSerializer
5 | from rest_framework.response import Response
6 |
7 |
8 | def check_staff_name(request):
9 | # 检查人员是否存在
10 | if request.method == "GET":
11 | staff_name = request.GET.get('staff_name', None)
12 | if not staff_name:
13 | return JsonResponse(data={"detail": "请求参数错误"}, status=400)
14 |
15 | staffs = Staff.objects.filter(name=staff_name)
16 | count = staffs.count()
17 | data = {"count": count}
18 | # 如果没有找到
19 | if not count:
20 | data["message"] = "这个名字不存在"
21 | elif count == 1:
22 | data["message"] = "不存在重名现象"
23 | data["id"] = staffs.first().pk
24 | else:
25 | # 存在重名现象
26 | data["message"] = '存在重名现象'
27 | serializer = StaffSerializer(staffs.all(), many=True)
28 | data["staffs"] = serializer.data
29 | for s in data["staffs"]:
30 | del s["folks"]
31 | # print(data["staffs"])
32 | return JsonResponse(data=data, status=200)
33 | else:
34 | return JsonResponse(data={"detail": "请求方式错误"}, status=405)
35 |
36 | # if len(staffs) == 1:
37 | # return HttpResponse(staff_names[0].id)
38 | #
39 | # elif len(staff_names) > 1:
40 | # for name in staff_names:
41 | # id_list.append(name.id)
42 | # return HttpResponse(id_list)
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/led_programme_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from ..models import LedProgramme
6 |
7 |
8 | class LedProgrammeSerializer(serializers.ModelSerializer):
9 |
10 | class Meta:
11 | model = LedProgramme
12 | fields = '__all__'
13 | extra_kwargs = {
14 | "id": {"required": False},
15 | }
16 |
17 | def create(self, validated_data):
18 | """新建"""
19 | validated_data['id'] = uuid.uuid4()
20 | return LedProgramme.objects.create(**validated_data)
21 |
22 | def update(self, instance, validated_data):
23 | """更新,instance为要更新的对象实例"""
24 | instance.name = validated_data.get('name', instance.name)
25 | instance.w_x = validated_data.get('w_x', instance.w_x)
26 | instance.h_y = validated_data.get('h_y', instance.h_y)
27 | instance.font_name = validated_data.get('font_name', instance.font_name)
28 | instance.font_size = validated_data.get('font_size', instance.font_size)
29 | instance.font_bold = validated_data.get('font_bold', instance.font_bold)
30 | instance.x_align = validated_data.get('x_align', instance.x_align)
31 | instance.y_align = validated_data.get('y_align', instance.y_align)
32 | instance.font_stunt = validated_data.get('font_stunt', instance.font_stunt)
33 | instance.font_showtime = validated_data.get('font_showtime', instance.font_showtime)
34 | instance.font_run = validated_data.get('font_run', instance.font_run)
35 | instance.save()
36 | return instance
37 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/viewsets/deviceinfo_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from rest_framework.response import Response
3 |
4 | from internet_setting.models import DeviceInfo
5 | from internet_setting.serializers.device_info_serializer import DeviceInfoSerializer
6 | from lib.model_viewset import ModelViewSet
7 |
8 |
9 | class DeviceInfoFilter(django_filters.FilterSet):
10 | # 工区设备信息过滤器
11 | staff = django_filters.CharFilter(field_name='staff_id', lookup_expr='name')
12 | company = django_filters.CharFilter(field_name='part_id', lookup_expr='company_id__name')
13 |
14 |
15 | class Meta:
16 | model = DeviceInfo
17 | fields = ['category', 'name', 'factory', 'model', 'staff']
18 |
19 |
20 | class DeviceInfoViewset(ModelViewSet):
21 | """工区设备信息"""
22 |
23 | queryset = DeviceInfo.objects.all()
24 | serializer_class = DeviceInfoSerializer
25 | filterset_class = DeviceInfoFilter
26 |
27 | # def list(self, request, *args, **kwargs):
28 | #
29 | # # 获取到分类id
30 | # device_category_id = request.query_params.get('id')
31 | #
32 | # # 过滤
33 | # queryset = self.filter_queryset(self.get_queryset())
34 | # # 分页
35 | # page = self.paginate_queryset(queryset)
36 | # if page is not None:
37 | # serializer = DeviceInfoSerializer(queryset, many=True)
38 | # return self.get_paginated_response(serializer.data)
39 | # # 序列化
40 | # serializer = DeviceInfoSerializer(queryset, many=True)
41 | # data = serializer.data
42 | # return Response(serializer.data)
--------------------------------------------------------------------------------
/ruidun_system/safe/urls.py:
--------------------------------------------------------------------------------
1 | from django.urls import path
2 | from . import views
3 |
4 | urlpatterns = [
5 |
6 | ]
7 |
8 | from rest_framework import routers
9 | from .viewsets.dangerused_viewset import DangerUsedViewset
10 | from .viewsets.dangerouscategory_viewset import DangerousCategoryViewset
11 | from .viewsets.dangername_viewset import DangerNameViewset
12 | from .viewsets.priorscheme_viewset import PriorSchemeViewset
13 | from .viewsets.specialscheme_viewset import SpecialSchemeViewset
14 | from .viewsets.method_viewset import MethodViewset
15 |
16 | # 危险品使用记录
17 | router = routers.DefaultRouter()
18 | router.register('dangeruseds', DangerUsedViewset, base_name='dangeruseds' )
19 |
20 | urlpatterns += router.urls
21 |
22 |
23 | # 危险品分类
24 | router = routers.DefaultRouter()
25 | router.register('dangerouscategorys', DangerousCategoryViewset, base_name='dangerouscategorys' )
26 |
27 | urlpatterns += router.urls
28 |
29 |
30 | # 危险品名称
31 | router = routers.DefaultRouter()
32 | router.register('dangernames', DangerNameViewset, base_name='dangernames' )
33 |
34 | urlpatterns += router.urls
35 |
36 |
37 | # 应急方案
38 | router = routers.DefaultRouter()
39 | router.register('priorschemes', PriorSchemeViewset, base_name='priorschemes' )
40 |
41 | urlpatterns += router.urls
42 |
43 |
44 | # 专项方案
45 | router = routers.DefaultRouter()
46 | router.register('specialschemes', SpecialSchemeViewset, base_name='specialschemes' )
47 |
48 | urlpatterns += router.urls
49 |
50 | router = routers.DefaultRouter()
51 | router.register('method', MethodViewset , base_name='method' )
52 |
53 | urlpatterns += router.urls
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/location_card_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 | from staff.models import Staff
3 | from rest_framework import serializers
4 |
5 | from internet_setting.models import LocationCard
6 | from staff.models import Staff
7 | from staff.models import Company,Department
8 |
9 |
10 | class LocationCardSerializer(serializers.ModelSerializer):
11 | staff_name = serializers.SerializerMethodField()
12 |
13 |
14 |
15 | class Meta:
16 | model = LocationCard
17 | fields = '__all__'
18 | extra_kwargs = {
19 | "id": {"read_only": True}
20 | }
21 |
22 | def get_staff_name(self, obj):
23 | return Staff.objects.filter(id=obj.card_id).values("name")
24 |
25 | # def validate_staff_id(self, value):
26 | # if Staff.objects.filter(pk=value).count() == 0:
27 | # raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
28 | # return value
29 | #
30 | # def get_department(self, obj):
31 | # return obj.staff.department.name
32 | #
33 | # def get_company(self, obj):
34 | # return obj.staff.company.name
35 |
36 | def create(self, validated_data):
37 | pk = uuid.uuid4()
38 | return LocationCard.objects.create(pk=pk, **validated_data)
39 |
40 | def update(self, instance, validated_data):
41 | instance.status = validated_data.get("status", instance.status)
42 | instance.card_id = validated_data.get("card_id", instance.card_id)
43 | instance.time = validated_data.get("time", instance.time)
44 | instance.save()
45 | return instance
46 |
--------------------------------------------------------------------------------
/ruidun_system/safe/viewsets/dangername_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters import rest_framework as filters
3 | from rest_framework.filters import OrderingFilter
4 | from rest_framework.viewsets import ModelViewSet
5 |
6 | from ..models import Danger
7 | from ..serializers.dangername_serializer import DangerNameSerializer
8 |
9 |
10 | class DangerFilter(django_filters.FilterSet):
11 | """危险品过滤器"""
12 | # start_time = django_filters.DateTimeFilter()
13 | # start_time_gt = django_filters.DateTimeFilter(field_name='start_time', lookup_expr='gt')
14 | # start_time_lt = django_filters.DateTimeFilter(field_name='start_time', lookup_expr='lte')
15 | # end_time = django_filters.DateTimeFilter()
16 | # end_time_gt = django_filters.DateTimeFilter(field_name='end_time', lookup_expr='gt')
17 | # # danger = django_filters.CharFilter(field_name='danger_id', lookup_expr='name')
18 | # # 物品分类
19 | # category = django_filters.CharFilter(field_name='danger_id', lookup_expr='category_id')
20 | # manager = django_filters.CharFilter(field_name='manager_id', lookup_expr='name')
21 | # user = django_filters.CharFilter(field_name='user_id', lookup_expr='name')
22 |
23 | class Meta:
24 | model = Danger
25 | fields = ['category_id', 'part_id']
26 |
27 |
28 | class DangerNameViewset(ModelViewSet):
29 | """危险品名称(搜索)"""
30 |
31 | queryset = Danger.objects.filter(is_used=1)
32 | serializer_class = DangerNameSerializer
33 | filterset_class = DangerFilter
34 | filter_backends = (OrderingFilter, filters.DjangoFilterBackend,)
35 | ordering_fields = ('name',)
36 |
--------------------------------------------------------------------------------
/ruidun_system/safe/serializers/method_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from ..models import SpecialScheme, Method
5 |
6 |
7 | class MethodSerializer(serializers.ModelSerializer):
8 | """应急演练序列化器"""
9 |
10 | class Meta:
11 | model = Method
12 | fields = '__all__'
13 | extra_kwargs = {
14 | 'id': {'read_only': True},
15 | }
16 |
17 | def create(self, validated_data):
18 | """新建"""
19 | pk = uuid.uuid4()
20 |
21 | people = self.context["request"].user.staff.name if self.context["request"].user.staff else "匿名用户"
22 | return Method.objects.create(pk=pk,people=people, **validated_data)
23 |
24 | def update(self, instance, validated_data):
25 | """更新,instance为要更新的对象实例"""
26 | instance.name = validated_data.get('name', instance.name)
27 | instance.people = validated_data.get('people', instance.people)
28 | instance.phone = validated_data.get('phone', instance.phone)
29 | instance.time = validated_data.get('time', instance.time)
30 | instance.use_message = validated_data.get('use_message', instance.use_message)
31 | instance.message_content = validated_data.get('message_content', instance.message_content)
32 | instance.set_light = validated_data.get('set_light', instance.set_light)
33 | instance.set_ling = validated_data.get('set_ling', instance.set_ling)
34 | instance.set_voice = validated_data.get(''
35 | 'set_voice', instance.set_voice)
36 | instance.save()
37 | return instance
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/project_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from auth_system.models import Project, Company
5 |
6 | """项目模型序列化"""
7 | class ProjectSerializer(serializers.ModelSerializer):
8 |
9 | company = serializers.SlugRelatedField(label='单位', read_only=True, slug_field="name")
10 | company_id = serializers.CharField(allow_null=True,required=False)
11 |
12 | class Meta:
13 | model = Project
14 | fields = '__all__'
15 | extra_kwargs = {
16 | "id": {"required": False},
17 | "name": {"required": False}
18 | }
19 | #验证
20 | def validate_company_id(self, value):
21 | if Company.objects.filter(pk=value).count() == 0:
22 | raise serializers.ValidationError("无效的值")
23 | return value
24 |
25 | def create(self, validated_data):
26 | """新建"""
27 | validated_data['id'] = uuid.uuid4()
28 | return Project.objects.create(**validated_data)
29 |
30 | def update(self, instance, validated_data):
31 | """更新,instance为要更新的对象实例"""
32 | instance.name = validated_data.get('name', instance.name)
33 | instance.index = validated_data.get('index', instance.index)
34 | instance.is_used = validated_data.get('is_used', instance.is_used)
35 | instance.company_id = validated_data.get('company_id', instance.company_id)
36 | instance.manager = validated_data.get('manager', instance.manager)
37 | instance.manager_phone = validated_data.get('manager_phone', instance.manager_phone)
38 | instance.save()
39 | return instance
--------------------------------------------------------------------------------
/ruidun_system/equipment/serializers/equipmentupkeep_serializer.py:
--------------------------------------------------------------------------------
1 | import time
2 | import uuid
3 |
4 | from rest_framework import serializers
5 |
6 | from staff.models import Staff
7 | from ..models import EquipmentUpkeep, EquipmentInfo
8 | from equipment.serializers.equipmentinfo_serializer import EquipmentinfopSerializer
9 |
10 | class EquipmentUpkeepSerializer(serializers.ModelSerializer):
11 | """工程车辆保养记录序列化器"""
12 | equipment = EquipmentinfopSerializer(read_only=True)
13 | manager = serializers.SlugRelatedField(read_only=True, slug_field="name")
14 | manager_id = serializers.CharField(allow_null=True, required=False)
15 | equipment_id = serializers.CharField(allow_null=True, required=False)
16 | car_age = serializers.SerializerMethodField()
17 |
18 | class Meta:
19 | model = EquipmentUpkeep
20 | fields = '__all__'
21 | extra_kwargs = {
22 | "id": {"required": False}
23 | }
24 |
25 | def get_car_age(self, obj):
26 | a = int(str(obj.equipment.bought_time)[0:4])
27 | b = int(time.strftime("%Y"))
28 | return b-a+1
29 |
30 | def validate_equipment_id(self, value):
31 | if EquipmentInfo.objects.filter(pk=value).count() == 0:
32 | raise serializers.ValidationError("无效的值")
33 | return value
34 |
35 | def validate_manager_id(self, value):
36 | if Staff.objects.filter(pk=value).count() == 0:
37 | raise serializers.ValidationError("无效的值")
38 | return value
39 |
40 | def create(self, validated_data):
41 | """新建"""
42 | validated_data['id'] = uuid.uuid4()
43 | return EquipmentUpkeep.objects.create(**validated_data)
--------------------------------------------------------------------------------
/ruidun_system/equipment/serializers/equipmentrepair_serializer.py:
--------------------------------------------------------------------------------
1 | import time
2 |
3 | from rest_framework import serializers
4 |
5 | from ..models import EquipmentRepair, EquipmentInfo
6 |
7 | import uuid
8 |
9 | from staff.models import Staff
10 |
11 | from equipment.serializers.equipmentinfo_serializer import EquipmentinfopSerializer
12 |
13 | class EquipmentRepairSerializer(serializers.ModelSerializer):
14 | """工程车辆保养记录序列化器"""
15 | equipment = EquipmentinfopSerializer(read_only=True)
16 | manager = serializers.SlugRelatedField(read_only=True, slug_field="name")
17 | manager_id = serializers.CharField(allow_null=True, required=False)
18 | equipment_id = serializers.CharField(allow_null=True, required=False)
19 | car_age = serializers.SerializerMethodField()
20 |
21 | class Meta:
22 | model = EquipmentRepair
23 | fields = '__all__'
24 | extra_kwargs = {
25 | "id": {"required": False}
26 | }
27 |
28 | def get_car_age(self, obj):
29 | a = int(str(obj.equipment.bought_time)[0:4])
30 | b = int(time.strftime("%Y"))
31 | return b - a + 1
32 |
33 | def validate_equipment_id(self, value):
34 | if EquipmentInfo.objects.filter(pk=value).count() == 0:
35 | raise serializers.ValidationError("无效的值")
36 | return value
37 |
38 | def validate_manager_id(self, value):
39 | if Staff.objects.filter(pk=value).count() == 0:
40 | raise serializers.ValidationError("无效的值")
41 | return value
42 |
43 | def create(self, validated_data):
44 | """新建"""
45 | validated_data['id'] = uuid.uuid4()
46 | return EquipmentRepair.objects.create(**validated_data)
47 |
--------------------------------------------------------------------------------
/ruidun_system/safe/serializers/priorscheme_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from ..models import PriorScheme
5 |
6 |
7 | class PriorSchemeSerializer(serializers.ModelSerializer):
8 | """应急方案序列化器"""
9 |
10 | staff_id = serializers.CharField(label='上传者id')
11 | staff = serializers.SlugRelatedField(label='员工', read_only=True, slug_field='name')
12 |
13 | class Meta:
14 | model = PriorScheme
15 | fields = '__all__'
16 | extra_kwargs = {
17 | 'id': {'read_only': True},
18 | 'path': {'required': False},
19 | 'download_times': {'required': False}
20 | }
21 |
22 | def create(self, validated_data):
23 | """新建"""
24 | pk = uuid.uuid4()
25 |
26 | # 没有上传文件抛出错误(考虑到更新时不需要传入文件)
27 | request = self.context['request']
28 | if not request.data.get('path'):
29 | raise serializers.ValidationError('没有上传文件')
30 |
31 | return PriorScheme.objects.create(pk=pk, **validated_data)
32 |
33 | def update(self, instance, validated_data):
34 | """更新,instance为要更新的对象实例"""
35 | instance.staff_id = validated_data.get('staff_id', instance.staff_id)
36 | instance.name = validated_data.get('name', instance.name)
37 | instance.path = validated_data.get('path', instance.path)
38 | instance.download_times = validated_data.get('download_times', instance.download_times)
39 | instance.reate_time = validated_data.get('reate_time', instance.reate_time)
40 | instance.update_time = validated_data.get('update_time', instance.update_time)
41 | instance.save()
42 | return instance
43 |
--------------------------------------------------------------------------------
/ruidun_system/safe/serializers/specialscheme_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from ..models import SpecialScheme
5 |
6 |
7 | class SpecialSchemeSerializer(serializers.ModelSerializer):
8 | """专项方案序列化器"""
9 |
10 | staff_id = serializers.CharField(label='上传者id')
11 | staff = serializers.SlugRelatedField(label='员工', slug_field='name', read_only=True)
12 |
13 | class Meta:
14 | model = SpecialScheme
15 | fields = '__all__'
16 | extra_kwargs = {
17 | 'id': {'read_only':True},
18 | 'path': {'required': False},
19 | 'download_times': {'required': False}
20 | }
21 |
22 | def create(self, validated_data):
23 | """新建"""
24 | pk = uuid.uuid4()
25 |
26 | # 没有上传文件抛出错误(考虑到更新时不需要传入文件)
27 | request = self.context['request']
28 | if not request.data.get('path'):
29 | raise serializers.ValidationError('没有上传文件')
30 |
31 | return SpecialScheme.objects.create(pk=pk, **validated_data)
32 |
33 | def update(self, instance, validated_data):
34 | """更新,instance为要更新的对象实例"""
35 | instance.staff_id = validated_data.get('staff_id', instance.staff_id)
36 | instance.name = validated_data.get('name', instance.name)
37 | instance.path = validated_data.get('path', instance.path)
38 | instance.download_times = validated_data.get('download_times', instance.download_times)
39 | instance.reate_time = validated_data.get('reate_time', instance.reate_time)
40 | instance.update_time = validated_data.get('update_time', instance.update_time)
41 | instance.save()
42 | return instance
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/usermouthwork_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework.response import Response
2 | from rest_framework.viewsets import ModelViewSet
3 | import django_filters as filters
4 | from django_filters.rest_framework import DjangoFilterBackend
5 | from rest_framework.filters import OrderingFilter
6 | from ..models import Staff, UserWork
7 | from ..serializers.usermouthwork_serializer import UserMouthWorkSerializer
8 | import calendar
9 | import datetime
10 |
11 | class UserWorkWorkFilter(filters.FilterSet):
12 | """根据时间,姓名,部门查询出勤率"""
13 | department = filters.CharFilter(field_name="department_id", lookup_expr="name")
14 | class Meta:
15 | model = Staff
16 | fields = ["name", "department", "department_id", "part_id"]
17 |
18 |
19 | class UserMouthWorkViewset(ModelViewSet):
20 | """月考勤信息时间排序在序列化器里面"""
21 | queryset = Staff.objects.all()
22 | serializer_class = UserMouthWorkSerializer
23 | filterset_class = UserWorkWorkFilter
24 | # filter_backends = [OrderingFilter, DjangoFilterBackend]
25 | # ordering_fields = ("staff_id__name", "time")
26 | # def get_queryset(self):
27 | # def list(self, request, *args, **kwargs):
28 | # queryset = self.filter_queryset(self.get_queryset())
29 | # print(request)
30 | #
31 | # page = self.paginate_queryset(queryset)
32 | # if page is not None:
33 | # serializer = self.get_serializer(page, many=True, context={"time_limit": request.data.get("time_limit")})
34 | # return self.get_paginated_response(serializer.data)
35 | #
36 | # serializer = self.get_serializer(queryset, many=True, context={"time_limit": request.data.get("time_limit")})
37 | # return Response(serializer.data)
38 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/serializers/equipmentused_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from equipment.serializers.equipmentinfo_serializer import EquipmentinfosSerializer
6 |
7 | from ..models import EquipmentUsed, EquipmentInfo
8 | from staff.models import Staff
9 | class EquipmentUsedSerializer(serializers.ModelSerializer):
10 | """工程车辆使用记录序列化器"""
11 | equipment = EquipmentinfosSerializer(read_only=True)
12 | manager = serializers.SlugRelatedField(label='负责人', read_only=True, slug_field="name")
13 | user = serializers.SlugRelatedField(label='使用人', read_only=True, slug_field="name")
14 | manager_id = serializers.CharField(allow_null=True, required=False)
15 | user_id = serializers.CharField(allow_null=True, required=False)
16 | equipment_id = serializers.CharField(allow_null=True, required=False)
17 |
18 | class Meta:
19 | model = EquipmentUsed
20 | fields = '__all__'
21 | extra_kwargs = {
22 | "id": {"required": False},
23 | }
24 |
25 | def validate_manager_id(self, value):
26 | if Staff.objects.filter(pk=value).count() == 0:
27 | raise serializers.ValidationError("无效的值")
28 | return value
29 |
30 | def validate_user_id(self, value):
31 | if Staff.objects.filter(pk=value).count() == 0:
32 | raise serializers.ValidationError("无效的值")
33 | return value
34 |
35 | def validate_equipment_id(self, value):
36 | if EquipmentInfo.objects.filter(pk=value).count() == 0:
37 | raise serializers.ValidationError("无效的值")
38 | return value
39 |
40 | def create(self, validated_data):
41 | """新建"""
42 | validated_data['id'] = uuid.uuid4()
43 | return EquipmentUsed.objects.create(**validated_data)
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/device_upkeep_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from internet_setting.models import DeviceUpkeep, DeviceInfo
6 | from staff.models import Staff
7 |
8 |
9 | class DeviceUpkeepSerializer(serializers.ModelSerializer):
10 | manager = serializers.SlugRelatedField(slug_field='name', read_only=True)
11 | manager_id = serializers.CharField(allow_null=True, required=False)
12 | device = serializers.SlugRelatedField(slug_field='name', read_only=True)
13 | device_id = serializers.CharField(allow_null=True, required=False)
14 |
15 | class Meta:
16 | model = DeviceUpkeep
17 | fields = '__all__'
18 | extra_kwargs = {
19 | "id": {"read_only": True}
20 | }
21 |
22 | def validate_manager_id(self, value):
23 | if Staff.objects.filter(pk=value).count() == 0:
24 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
25 | return value
26 |
27 | def validate_device_id(self, value):
28 | if DeviceInfo.objects.filter(pk=value).count() == 0:
29 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
30 | return value
31 |
32 | def create(self, validated_data):
33 | pk = uuid.uuid4()
34 | return DeviceUpkeep.objects.create(pk=pk, **validated_data)
35 |
36 | def update(self, instance, validated_data):
37 | instance.manager_id = validated_data.get("manager_id", instance.manager_id)
38 | instance.device_id = validated_data.get("device_id", instance.device_id)
39 | instance.upkeep_man = validated_data.get("upkeep_man", instance.upkeep_man)
40 | instance.time = validated_data.get("time", instance.time)
41 |
42 | instance.save()
43 | return instance
--------------------------------------------------------------------------------
/ruidun_system/equipment/viewsets/equipmentinfo_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework.decorators import action
2 | from rest_framework.permissions import IsAuthenticated
3 | from rest_framework.response import Response
4 | from lib.model_viewset import ModelViewSet
5 | import django_filters as filters
6 | from django_filters.rest_framework import DjangoFilterBackend
7 | from rest_framework.filters import OrderingFilter
8 |
9 | # from lib.user_permission import SelfPermission
10 | from ..models import EquipmentInfo
11 | from ..serializers.equipmentinfo_serializer import EquipmentInfoSerializer, EquipmentinfosSerializer, EquipmentinfopSerializer
12 |
13 | """基础信息搜索查询"""
14 | class EquipmentinfoFilter(filters.FilterSet):
15 | # company_name = filters.CharFilter(field_name="company_id", lookup_expr='name')
16 | class Meta:
17 | model = EquipmentInfo
18 | fields = ["factory", 'model', "company_id", "name", "part_id"]
19 |
20 |
21 | class EquipmentInfoViewSet(ModelViewSet):
22 |
23 | queryset = EquipmentInfo.objects.filter().all()
24 | serializer_class = EquipmentInfoSerializer
25 | filterset_class = EquipmentinfoFilter
26 | filter_backends = [OrderingFilter, DjangoFilterBackend]
27 | ordering_fields = ("bought_time", "id")
28 | # permission_classes = [SelfPermission, IsAuthenticated]
29 |
30 | @action(methods=["GET"], detail=False)
31 | def get_names(self, request):
32 | query = self.queryset
33 | data = map(lambda obj: {"id": obj.id, "name": "%s" % obj.name}, query)
34 | return Response(data=data, status=200)
35 |
36 |
37 | class EquipmentInfosViewSet(ModelViewSet):
38 | queryset = EquipmentInfo.objects.all()
39 | serializer_class = EquipmentinfosSerializer
40 |
41 |
42 | class EquipmentInfopViewSet(ModelViewSet):
43 | queryset = EquipmentInfo.objects.all()
44 | serializer_class = EquipmentinfopSerializer
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/ipswitch_detail_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from auth_system.models import Part
6 | from internet_setting.models import Voice, VoiceServer, IPSwitch, IPSwitchDetail
7 |
8 |
9 | class IPSwitchDetailSerializer(serializers.ModelSerializer):
10 | part = serializers.SlugRelatedField(slug_field='name', read_only=True)
11 | part_id = serializers.CharField(allow_null=True, required=False)
12 | ipswitch = serializers.SlugRelatedField(slug_field='name', read_only=True)
13 | ipswitch_id = serializers.CharField(allow_null=True, required=False)
14 |
15 | class Meta:
16 | model = IPSwitchDetail
17 | fields = '__all__'
18 | extra_kwargs = {
19 | "id": {"read_only": True},
20 | }
21 |
22 | def validate_part_id(self, value):
23 | if Part.objects.filter(pk=value).count() == 0:
24 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
25 | return value
26 |
27 | def validate_ipswitch_id(self, value):
28 | if IPSwitch.objects.filter(pk=value).count() == 0:
29 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
30 | return value
31 |
32 | def create(self, validated_data):
33 | pk = uuid.uuid4()
34 | return IPSwitchDetail.objects.create(pk=pk, **validated_data)
35 |
36 | def update(self, instance, validated_data):
37 | instance.number = validated_data.get("part_id", instance.part_id)
38 | instance.ipswitch_id = validated_data.get("server_id", instance.server_id)
39 | instance.content = validated_data.get("note", instance.note)
40 | instance.note = validated_data.get("is_used", instance.is_used)
41 | instance.part_id = validated_data.get("status", instance.status)
42 |
43 | instance.save()
44 | return instance
45 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/ipswitch_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from auth_system.models import Part
6 | from internet_setting.models import VoiceServer, IPSwitch
7 | from internet_setting.serializers.ipswitch_detail_serializer import IPSwitchDetailSerializer
8 |
9 |
10 | class IPSwitchSerializer(serializers.ModelSerializer):
11 | part = serializers.SlugRelatedField(slug_field='name', read_only=True)
12 | part_id = serializers.CharField(allow_null=True, required=False)
13 | detail = serializers.SerializerMethodField()
14 |
15 | class Meta:
16 | model = IPSwitch
17 | fields = '__all__'
18 | extra_kwargs = {
19 | "id": {"read_only": True},
20 | }
21 |
22 | def get_detail(self, obj):
23 | return IPSwitchDetailSerializer(obj.detail.all(), many=True).data
24 |
25 | def validate_part_id(self, value):
26 | if Part.objects.filter(pk=value).count() == 0:
27 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
28 | return value
29 |
30 | def create(self, validated_data):
31 | pk = uuid.uuid4()
32 | return IPSwitch.objects.create(pk=pk, **validated_data)
33 |
34 | def update(self, instance, validated_data):
35 | instance.name = validated_data.get("name", instance.name)
36 | instance.ip = validated_data.get("ip", instance.ip)
37 | instance.part_id = validated_data.get("part_id", instance.part_id)
38 | instance.port = validated_data.get("port", instance.port)
39 | instance.note = validated_data.get("note", instance.note)
40 | instance.x = validated_data.get("x", instance.x)
41 | instance.y = validated_data.get("y", instance.y)
42 | # instance.is_used = validated_data.get("is_used", instance.is_used)
43 |
44 | instance.save()
45 | return instance
46 |
--------------------------------------------------------------------------------
/ruidun_system/system_manage/fixtures/system_manage.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "model": "system_manage.artificiallogcategory",
4 | "pk": 1,
5 | "fields": {
6 | "index": 1,
7 | "is_used": 1,
8 | "name": "\u4e00\u822c\u65e5\u5fd7"
9 | }
10 | },
11 | {
12 | "model": "system_manage.artificiallogcategory",
13 | "pk": 2,
14 | "fields": {
15 | "index": 3,
16 | "is_used": 1,
17 | "name": "\u91cd\u8981\u65e5\u5fd7"
18 | }
19 | },
20 | {
21 | "model": "system_manage.artificiallogcategory",
22 | "pk": 3,
23 | "fields": {
24 | "index": 2,
25 | "is_used": 1,
26 | "name": "\u6781\u91cd\u8981\u65e5\u5fd7"
27 | }
28 | },
29 | {
30 | "model": "system_manage.artificiallog",
31 | "pk": "1",
32 | "fields": {
33 | "name": "\u65e5\u5fd71",
34 | "user": 10,
35 | "category": 1,
36 | "time": "2019-03-15T14:09:30.151Z",
37 | "status": true,
38 | "level": 5
39 | }
40 | },
41 | {
42 | "model": "system_manage.artificiallog",
43 | "pk": "2",
44 | "fields": {
45 | "name": "\u65e5\u5fd72",
46 | "user": 10,
47 | "category": 2,
48 | "time": "2019-03-15T14:09:32.256Z",
49 | "status": true,
50 | "level": 6
51 | }
52 | },
53 | {
54 | "model": "system_manage.artificiallog",
55 | "pk": "3",
56 | "fields": {
57 | "name": "\u65e5\u5fd73",
58 | "user": 11,
59 | "category": 1,
60 | "time": "2019-03-19T14:09:33.320Z",
61 | "status": true,
62 | "level": 1
63 | }
64 | },
65 | {
66 | "model": "system_manage.artificiallog",
67 | "pk": "4",
68 | "fields": {
69 | "name": "\u65e5\u5fd74",
70 | "user": 12,
71 | "category": 1,
72 | "time": "2019-03-24T14:09:34.488Z",
73 | "status": true,
74 | "level": 5
75 | }
76 | }
77 | ]
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/part_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from auth_system.models import Project, Part
5 |
6 | """工区模型序列化"""
7 |
8 |
9 | class PartSerializer(serializers.ModelSerializer):
10 | project = serializers.SlugRelatedField(read_only=True, slug_field="name")
11 | project_id = serializers.CharField(allow_null=True, required=False)
12 | company = serializers.SerializerMethodField()
13 | company_id = serializers.SerializerMethodField()
14 | class Meta:
15 | model = Part
16 | fields = '__all__'
17 | extra_kwargs = {
18 | "id": {"required": False},
19 | "name": {"required": False},
20 | "sysid":{"required": False}
21 | }
22 |
23 | def get_company(self, obj):
24 | return obj.project.company.name
25 |
26 | def get_company_id(self, obj):
27 | return obj.project.company.id
28 |
29 | # 验证
30 | def validate_project_id(self, value):
31 | if Project.objects.filter(pk=value).count() == 0:
32 | raise serializers.ValidationError("无效的值")
33 | return value
34 |
35 | def create(self, validated_data):
36 | """新建"""
37 | validated_data['id'] = uuid.uuid4()
38 | return Part.objects.create(**validated_data)
39 |
40 | def update(self, instance, validated_data):
41 | """更新,instance为要更新的对象实例"""
42 | instance.name = validated_data.get('name', instance.name)
43 | instance.index = validated_data.get('index', instance.index)
44 | instance.is_used = validated_data.get('is_used', instance.is_used)
45 | instance.project_id = validated_data.get('project_id', instance.project_id)
46 | instance.manager = validated_data.get('manager', instance.manager)
47 | instance.manager_phone = validated_data.get('manager_phone', instance.manager_phone)
48 | instance.save()
49 | return instance
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/departmentwork_serializer.py:
--------------------------------------------------------------------------------
1 | import datetime
2 | import uuid
3 |
4 | from rest_framework import serializers
5 | from staff.models import UserWork
6 | from staff.models import Department
7 |
8 |
9 | class DepartmentworkSerializer(serializers.ModelSerializer):
10 | department_group = serializers.SerializerMethodField()
11 | time = serializers.SerializerMethodField()
12 | fact = serializers.SerializerMethodField()
13 | real = serializers.SerializerMethodField()
14 | rate = serializers.SerializerMethodField()
15 |
16 |
17 | class Meta:
18 | model = Department
19 | fields = "__all__"
20 | extra_kwargs = {
21 | "id": {"required": False}
22 | }
23 |
24 | def get_department_group(self, obj):
25 | return obj.department+'/'+obj.group_name
26 |
27 | def get_time(self, obj):
28 | yes_time = (datetime.datetime.now() + datetime.timedelta()).strftime("%Y-%m-%d")
29 | time = self.context["request"].query_params.get("time", yes_time)
30 | return time
31 |
32 | def get_fact(self, obj):
33 | return obj.staff.count()
34 |
35 | def get_real(self, obj):
36 | yes_time = (datetime.datetime.now()+datetime.timedelta()).strftime("%Y-%m-%d")
37 | time = self.context["request"].query_params.get("time", yes_time)
38 | ids = obj.staff.all().values("id")
39 | lists = [i["id"] for i in ids]
40 | real = UserWork.objects.filter(time=time, staff_id__in=lists, work_time__gt=0).count()
41 | return real
42 |
43 | def get_rate(self, obj):
44 | if self.get_fact(obj) == 0:
45 | return "0.0%"
46 | else:
47 | return str((self.get_real(obj)/self.get_fact(obj))*100)[0:5]+"%"
48 |
49 | def validate_department_id(self, value):
50 | if Department.objects.filter(pk=value).count() == 0:
51 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
52 | return value
53 |
54 |
55 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/led_viewset.py:
--------------------------------------------------------------------------------
1 | import json
2 |
3 | import django_filters
4 | from django_filters.rest_framework import DjangoFilterBackend
5 | from rest_framework import status
6 | from rest_framework.decorators import action
7 | from rest_framework.filters import OrderingFilter
8 | from rest_framework.response import Response
9 |
10 | from client.ipled import Client
11 | from lib.model_viewset import ModelViewSet
12 |
13 | from internet_setting.models import LEDInfo
14 | from internet_setting.serializers.led_serializer import LEDInfoSerializer
15 |
16 |
17 | class LEDInfoFilter(django_filters.FilterSet):
18 | '''可以根据时间区间, 是否损坏, 厂家id, 型号, 分类等来过滤'''
19 |
20 | time__gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
21 | time__lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
22 |
23 | class Meta:
24 | model = LEDInfo
25 | fields = ["time__gt", 'time__lt', 'status', 'factory', 'model']
26 |
27 |
28 | class LEDInfoViewSet(ModelViewSet):
29 | """
30 | A simple ViewSet for viewing and editing accounts.
31 | """
32 | queryset = LEDInfo.objects.all()
33 | serializer_class = LEDInfoSerializer
34 | # permission_classes = [SelfPermission]
35 | filterset_class = LEDInfoFilter
36 | filter_backends = [OrderingFilter, DjangoFilterBackend]
37 | ordering_fields = ('time', 'status')
38 |
39 | @action(methods=['POST'], detail=False)
40 | def control_led(self, request):
41 | client = Client()
42 | client.pText = request.data.get("pText", "") # 控制显示文字
43 | client.nScreenNo = request.data.get("nScreenNo", "1")
44 | # client.nSendCmd = request.data.get("nSendCmd", "41456")
45 | client.nStunt = request.data.get("nStunt", "4")
46 | # print(client.pText)
47 | try:
48 | result = client.send()
49 | return Response(data=result, status=200)
50 | except Exception:
51 | return Response(data={"message": "LED屏幕连接异常"}, status=status.HTTP_200_OK)
52 |
53 |
54 |
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/project_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters as filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from lib import model_viewset
5 | from auth_system.models import Project
6 | from ..serializers.project_serializer import ProjectSerializer
7 | from rest_framework.decorators import action
8 | from rest_framework.response import Response
9 | import numpy as np
10 | import pandas as pd
11 | import os
12 |
13 |
14 | class ProjectFilter(filters.FilterSet):
15 | '''可以根据项目名称,公司名称等来过滤'''
16 |
17 | company_name = filters.CharFilter(field_name="company_id", lookup_expr="name")
18 |
19 | class Meta:
20 | model = Project
21 | fields = ["name", "company_name"]
22 |
23 |
24 | class ProjectViewset(model_viewset.ModelViewSet):
25 | """项目模型"""
26 | queryset = Project.objects.filter(is_used=1).all()
27 | serializer_class = ProjectSerializer
28 | filterset_class = ProjectFilter
29 | filter_backends = [OrderingFilter, DjangoFilterBackend]
30 |
31 | @action(methods=["GET"], detail=False)
32 | def project_out(self, request):
33 | id_str = request.query_params.get("list")
34 | if not id_str:
35 | return Response({"msg": "请勾选导出的内容"}, status=200)
36 | else:
37 | id_list = id_str.split(",")
38 |
39 | value = self.queryset.filter(id__in=id_list).values("name", "company_id__name", "manager", "manager_phone")
40 |
41 | array = [list(array.values()) for array in value]
42 |
43 | excel = pd.DataFrame(np.array(array), columns=["项目名称", "所属公司", "负责人", "负责人电话"])
44 |
45 | filepath = "media/xlsx/project.xlsx"
46 | if os.path.exists(filepath):
47 | os.remove(filepath)
48 | excel.to_excel(filepath)
49 | path = request.META.get('SERVER_PROTOCOL').split("/")[0].lower() + "://" + request.META.get(
50 | 'HTTP_HOST') + "/" + filepath
51 | return Response({"path": path}, status=200)
52 |
--------------------------------------------------------------------------------
/ruidun_system/client/ipswitch.py:
--------------------------------------------------------------------------------
1 | #coding=utf-8
2 | from common.cfg import Config
3 | from common.myfuncs import Funcs
4 | from common.myproxy import Proxy
5 |
6 | '''
7 | ipswitch开关客户端接口
8 | '''
9 | class Client:
10 | device='ipswitch' #设备类型
11 | token='...' #暂略
12 |
13 | ip="192.168.1.166"
14 | port=1234
15 | cmd = "device=?"
16 |
17 | '''
18 | #命令示例
19 | cmd = "device=?" #查看设备信息,返回值:{"sn":"0369127442293896","devicename":"0369127442293896","hver":"ZMRN0808-V6M","mqtt_user":"","mqtt_psw":"","ip":"192.168.1.166","tcport":1234,"cmd":"device"}
20 | cmd = "restart=?" #重启设备,返回值:{"sn":"0369127442293896","cmd":"restart"}
21 | cmd = "state=?" #查询设备状态,返回值:{"cmd":"state","output":"10000000","input":"00000000","sn":"0369127442293896"}
22 | cmd = "setr=1x0xxxxx" #输出控制,setr=输出值,返回值{"cmd":"setr","output":"10000000","input":"00000000","sn":"0369127442293896"}
23 | '''
24 |
25 | '''
26 | 发送:setr=输出值
27 | 8 通道输出值为 8 字节,
28 | ’0’表示关,’1’表示 开,’2’表示点触,’3’表示翻转,’4’表示互锁,’x’表示不动作。
29 | ‘2’:表示点动输出,实现打开,然后延时,然后自动关闭。
30 | ‘3’:表示翻转,以前开,翻转后为关;以前是关,翻转后是开。
31 | ’4’:表示相邻 2 个互锁;互锁为 1-2,3-4,5-6 这样成对出现。 如果成对的控制中,不能出现 14 或 24 命令。
32 | 例如控制继电器 1 打开,则发送字符串 setr=1xxxxxxx 控制继电器 2 关闭,则发送字符串 setr=x0xxxxxx
33 |
34 | output 表示输出状态,1 表示有输出,0 表示无输出
35 | input 表示输入状态,1 表示有输入,0 表示无输入
36 |
37 | '''
38 |
39 | def __init__(self,ip,port,cmd):
40 | self.cfg = Config()
41 | self.url = self.cfg.get('main', 'url') + "/device"
42 |
43 | self.ip=ip
44 | self.port=port
45 | self.cmd=cmd
46 |
47 | pass
48 |
49 | def send(self):
50 | #参数示例
51 | data={}
52 | data["token"]=self.token
53 | data["device"]=self.device
54 |
55 | data["ip"]=self.ip
56 | data["port"]=Funcs.toInt(self.port)
57 |
58 | data["cmd"]=self.cmd
59 |
60 | result=Proxy.send(self.url,data)
61 | return result
62 |
63 | if __name__ == '__main__':
64 | obj=Client("192.168.1.166",1234,"setr=1x1xxxxx")
65 | result=obj.send()
66 | print(result)
67 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/monitor_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from lib.model_viewset import ModelViewSet
5 | from rest_framework.decorators import action
6 | from rest_framework.response import Response
7 | from internet_setting.models import LEDInfo, MonitorInfo
8 | from internet_setting.serializers.led_serializer import LEDInfoSerializer
9 | from internet_setting.serializers.monitor_serializer import MonitorInfoSerializer
10 |
11 |
12 | class MonitorInfoFilter(django_filters.FilterSet):
13 | '''可以根据时间区间, 是否损坏, 厂家id, 型号, 分类等来过滤'''
14 |
15 | time__gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
16 | time__lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
17 |
18 | class Meta:
19 | model = MonitorInfo
20 | fields = ["time__gt", 'time__lt', 'status', 'factory', 'model']
21 |
22 |
23 | class MonitorInfoViewSet(ModelViewSet):
24 | """
25 | A simple ViewSet for viewing and editing accounts.
26 | """
27 | queryset = MonitorInfo.objects.all().order_by("number")
28 | serializer_class = MonitorInfoSerializer
29 | # permission_classes = [SelfPermission]
30 | filterset_class = MonitorInfoFilter
31 | filter_backends = [OrderingFilter, DjangoFilterBackend]
32 | ordering_fields = ('time', 'status')
33 |
34 | @action(methods=["GET"], detail=False)
35 | def monitor_order(self, request):
36 | id_list=[]
37 | monitor = MonitorInfo.objects.all().order_by("number")
38 | numbers = request.query_params.get("number_list")
39 | number_list = numbers.split(",")
40 | ids = monitor.values("id")
41 | for i in ids:
42 | id_list.append(i["id"])
43 | for i in range(len(number_list)):
44 | change = MonitorInfo.objects.get(id=id_list[i])
45 | change.number = number_list[i]
46 | change.save()
47 | return Response(data={"msg":"ok"}, status=200)
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/monitor_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from auth_system.models import Part
6 | from internet_setting.models import LEDInfo, MonitorInfo
7 |
8 |
9 | class MonitorInfoSerializer(serializers.ModelSerializer):
10 |
11 | part = serializers.SlugRelatedField(slug_field='name', read_only=True)
12 | part_id = serializers.CharField(allow_null=True, required=False)
13 |
14 | class Meta:
15 | model = MonitorInfo
16 | fields = "__all__"
17 | extra_kwargs = {
18 | "id":{"read_only": True}
19 | }
20 |
21 | # 关于外键的需要单独验证,因为外键字段指定两个序列化字段会出现问题
22 |
23 | def validate_part_id(self, value):
24 | if Part.objects.filter(pk=value).count() == 0:
25 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
26 | return value
27 |
28 | def create(self, validated_data):
29 | validated_data["id"] = uuid.uuid4() # 添加一个唯一的UUID为主键
30 | return LEDInfo.objects.create(**validated_data)
31 |
32 | def update(self, instance, validated_data):
33 | # 因为有可能没有传过来,所以用字典.get() 方法
34 | instance.name = validated_data.get("name", instance.name)
35 | instance.time = validated_data.get("time", instance.bought_time)
36 | instance.location = validated_data.get("location", instance.location)
37 | instance.factory = validated_data.get("factory", instance.factory)
38 | instance.model= validated_data.get("model", instance.model)
39 | instance.ip = validated_data.get("ip", instance.ip)
40 | instance.port = validated_data.get("port", instance.port)
41 | instance.part_id = validated_data.get("part_id", instance.part_id)
42 | instance.is_used = validated_data.get("is_used", instance.is_used)
43 | instance.status = validated_data.get("status", instance.status)
44 | instance.note = validated_data.get("note", instance.note)
45 | instance.x = validated_data.get("x", instance.x)
46 | instance.y = validated_data.get("y", instance.y)
47 |
48 | instance.save()
49 | return instance
50 |
51 |
52 |
--------------------------------------------------------------------------------
/ruidun_system/internet_operate/viewsets/led_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework import status
2 | from rest_framework.decorators import action
3 | from rest_framework.response import Response
4 | from rest_framework.viewsets import ViewSet
5 |
6 | from internet_setting.models import DeviceInfo
7 |
8 |
9 | class LedViewSet(ViewSet):
10 | "音箱相关接口"
11 |
12 | @action(methods=['post'], detail=False)
13 | def control(self, request):
14 | "控制led开关的接口"
15 | part_id = request.data.get('part_id')
16 | ids = request.data.get('ids', [])
17 | act = request.data.get('action')
18 | if not all([part_id, ids, act]):
19 | return Response(data={'message': "参数不足"}, status=status.HTTP_400_BAD_REQUEST)
20 | # 校验操作方式和操作ids是否符合规则
21 | if act not in ["open", "down"]:
22 | return Response(data={'message': "操作方式错误"}, status=status.HTTP_400_BAD_REQUEST)
23 | if DeviceInfo.objects.filter(id__in=ids).count() != len(ids):
24 | return Response(data={'message': "操作LED id错误,部分id不存在"}, status=status.HTTP_400_BAD_REQUEST)
25 |
26 | # 调用硬件接口:
27 | result, message = 开启led接口(part_id = part_id, ids=ids, act=act)
28 | return Response(data={"reslut": result, "message":message}, status=status.HTTP_200_OK)
29 |
30 | @action(methods=['post'], detail=False)
31 | def voice(self, request):
32 | "控制音箱播放的接口"
33 | part_id = request.data.get('part_id')
34 | ids = request.data.get('ids', [])
35 | content = request.data.get('content')
36 | font = request.data.get('font')
37 | size = request.data.get('size')
38 | if not all([ids, content, font, size, part_id]):
39 | return Response(data={'message': "参数不足"}, status=status.HTTP_400_BAD_REQUEST)
40 | # 校验操作方式和操作ids是否符合规则
41 | if DeviceInfo.objects.filter(id__in=ids).count() != len(ids):
42 | return Response(data={'message': "操作音箱id错误,部分id不存在"}, status=status.HTTP_400_BAD_REQUEST)
43 |
44 | # 调用硬件接口:
45 | result, message = 控制led显示接口(part_id=part_id, ids=ids, content=content, font=font, size=size)
46 | return Response(data={"reslut": result, "message": message}, status=status.HTTP_200_OK)
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/voice_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from auth_system.models import Part
6 | from internet_setting.models import Voice, VoiceServer
7 |
8 |
9 | class VoiceSerializer(serializers.ModelSerializer):
10 | part = serializers.SlugRelatedField(slug_field='name', read_only=True)
11 | server = serializers.SlugRelatedField(slug_field='name', read_only=True)
12 | part_id = serializers.CharField(allow_null=True, required=False)
13 | server_id = serializers.CharField(allow_null=True, required=False)
14 |
15 | class Meta:
16 | model = Voice
17 | fields = '__all__'
18 | extra_kwargs = {
19 | # "id": {"read_only": True},
20 | }
21 |
22 | def validate_part_id(self, value):
23 | if Part.objects.filter(pk=value).count() == 0:
24 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
25 | return value
26 |
27 | def validate_server_id(self, value):
28 | if VoiceServer.objects.filter(pk=value).count() == 0:
29 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
30 | return value
31 |
32 | def create(self, validated_data):
33 | # pk = uuid.uuid4()
34 | return Voice.objects.create(**validated_data)
35 |
36 | def update(self, instance, validated_data):
37 | instance.name = validated_data.get("name", instance.name)
38 | instance.part_id = validated_data.get("part_id", instance.part_id)
39 | instance.server_id = validated_data.get("server_id", instance.server_id)
40 | instance.note = validated_data.get("note", instance.note)
41 | instance.is_used = validated_data.get("is_used", instance.is_used)
42 | instance.status = validated_data.get("status", instance.status)
43 | instance.factory = validated_data.get("factory", instance.factory)
44 | instance.model = validated_data.get("model", instance.model)
45 | instance.time = validated_data.get("time", instance.time)
46 | instance.x = validated_data.get("x", instance.x)
47 | instance.y = validated_data.get("y", instance.y)
48 |
49 | instance.save()
50 | return instance
51 |
--------------------------------------------------------------------------------
/ruidun_system/lib/user_permission.py:
--------------------------------------------------------------------------------
1 | import datetime
2 | import uuid
3 |
4 | from pymysql import *
5 | from django.conf import settings
6 | from rest_framework.permissions import BasePermission
7 |
8 | from system_manage.models import ArtificialLog
9 |
10 |
11 | class SelfPermission(BasePermission):
12 |
13 | def has_permission(self, request, view):
14 | permissions = self.get_user_permissions(request)
15 | # print(request.user)
16 | # print(request.method)
17 | # print(view.__class__.__name__)
18 |
19 | if request.method == "POST":
20 | category = "增加数据"
21 | elif request.method == "PUT":
22 | category = "修改数据"
23 | elif request.method == "DELETE":
24 | category = "删除数据"
25 | else:
26 | category = ""
27 | if category:
28 | try:
29 | object = view.serializer_class.Meta.model._meta.verbose_name
30 | except Exception:
31 | return True
32 | user = request.user.username
33 | time = datetime.datetime.now()
34 | ArtificialLog.objects.create(pk=uuid.uuid4(), user=user, category=category, time=time, object=object)
35 | # print(category, user, time, object)
36 |
37 | # if view.__class__.__name__ == "CompanyViewSet":
38 | # if request.method == 'GET':
39 | # return 'view_company' in permissions
40 | # else:
41 | # return 'change_company' in permissions
42 | # elif view.__class__.__name__ == "StaffViewSet":
43 | # if request.method == 'GET':
44 | # return 'view_staff' in permissions
45 | # else:
46 | # return 'change_staff' in permissions
47 | return True
48 |
49 | @staticmethod
50 | def get_user_permissions(request):
51 | user = request.user
52 | user_id = user.id
53 | # 如果没有登录用户为未认证类型,id为None,所以判断不为空再执行下边逻辑
54 | if user_id:
55 | permissions_all = user.groups.first().permissions.all()
56 | permissions = map(lambda per: per.codename, permissions_all)
57 |
58 | else:
59 | permissions = tuple()
60 |
61 | return permissions
62 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/viewsets/team_viewset.py:
--------------------------------------------------------------------------------
1 | from rest_framework import status
2 | from rest_framework.response import Response
3 | from lib.model_viewset import ModelViewSet
4 | from rest_framework.filters import OrderingFilter
5 | from django_filters import rest_framework as filters
6 |
7 | from staff.models import Team, Staff
8 | from work_area.serializers.team_serializer import TeamSerializer
9 | from work_area.serializers.staffstatus_serializer import StaffSerializer
10 |
11 |
12 | class TeamViewset(ModelViewSet):
13 | """施工班组"""
14 |
15 | # TODO 等待传入当前工区id
16 | # part_id = 2
17 | # queryset = Team.objects.filter(part__id=part_id)
18 | serializer_class = TeamSerializer
19 | # filter_backends = (OrderingFilter, filters.DjangoFilterBackend,)
20 | # ordering_fields = ('name',)
21 |
22 | def get_queryset(self):
23 | part_id = self.request.query_params.get("part_id", self.request.user.default_part_id if self.request.user.default_part_id else "88888")
24 | return Team.objects.filter(part__id=part_id)
25 |
26 | def list(self, request, *args, **kwargs):
27 | # 过滤
28 | queryset = self.filter_queryset(self.get_queryset())
29 | # 分页
30 | page = self.paginate_queryset(queryset)
31 | if page is not None:
32 | serializer = self.get_serializer(page, many=True)
33 | data = serializer.data
34 |
35 | if not data:
36 | return Response({'error':'请求数据不存在'}, status=status.HTTP_400_BAD_REQUEST)
37 |
38 | group_id = data[0]['id']
39 | a = Staff.objects.filter(group_id=group_id)
40 | staff = StaffSerializer(a, many=True).data
41 |
42 | data[0]['staff'] = staff
43 | return self.get_paginated_response(data)
44 | # 序列化
45 | serializer = self.get_serializer(queryset, many=True)
46 | data = serializer.data
47 |
48 | if not data:
49 | return Response({'error': '请求数据不存在'}, status=status.HTTP_400_BAD_REQUEST)
50 |
51 | group_id = data[0]['id']
52 | a = Staff.objects.filter(group_id=group_id)
53 | staff = StaffSerializer(a, many=True).data
54 |
55 | data[0]['staff'] = staff
56 |
57 | return Response(data)
--------------------------------------------------------------------------------
/ruidun_system/safe/fixtures/dangers.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "model": "safe.dangerouscategory",
4 | "pk": "1",
5 | "fields": {
6 | "create_time": "2019-03-12T00:00:00Z",
7 | "update_time": "2019-03-12T00:00:00Z",
8 | "index": 1,
9 | "is_used": 1,
10 | "name": "\u6d88\u8017\u54c1"
11 | }
12 | },
13 | {
14 | "model": "safe.dangerouscategory",
15 | "pk": "2",
16 | "fields": {
17 | "create_time": "2019-03-12T00:00:00Z",
18 | "update_time": "2019-03-12T00:00:00Z",
19 | "index": 2,
20 | "is_used": 1,
21 | "name": "\u7206\u7834\u54c1"
22 | }
23 | },
24 | {
25 | "model": "safe.danger",
26 | "pk": "1",
27 | "fields": {
28 | "create_time": "2019-03-12T00:00:00Z",
29 | "update_time": "2019-03-12T00:00:00Z",
30 | "index": 1,
31 | "is_used": 1,
32 | "category": "1",
33 | "part": "1",
34 | "name": "\u786b\u9178",
35 | "count": 20
36 | }
37 | },
38 | {
39 | "model": "safe.danger",
40 | "pk": "2",
41 | "fields": {
42 | "create_time": "2019-03-12T00:00:00Z",
43 | "update_time": "2019-03-12T00:00:00Z",
44 | "index": 2,
45 | "is_used": 1,
46 | "category": "2",
47 | "part": "2",
48 | "name": "\u70b8\u836f",
49 | "count": 50
50 | }
51 | },
52 | {
53 | "model": "safe.dangerused",
54 | "pk": "1",
55 | "fields": {
56 | "create_time": "2019-03-02T00:00:00Z",
57 | "update_time": "2019-03-12T00:00:00Z",
58 | "danger": "1",
59 | "count": 10,
60 | "manager": "1",
61 | "user": "2",
62 | "is_need_back": true,
63 | "is_back": true,
64 | "start_time": "2019-03-02T00:00:00Z",
65 | "end_time": "2019-03-12T00:00:00Z"
66 | }
67 | },
68 | {
69 | "model": "safe.dangerused",
70 | "pk": "2",
71 | "fields": {
72 | "create_time": "2019-03-05T00:00:00Z",
73 | "update_time": "2019-03-11T00:00:00Z",
74 | "danger": "2",
75 | "count": 15,
76 | "manager": "2",
77 | "user": "1",
78 | "is_need_back": true,
79 | "is_back": true,
80 | "start_time": "2019-03-05T00:00:00Z",
81 | "end_time": "2019-03-11T00:00:00Z"
82 | }
83 | }
84 | ]
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/company_viewset.py:
--------------------------------------------------------------------------------
1 | from lib import model_viewset
2 | from rest_framework import permissions
3 | import django_filters as filters
4 | from django_filters.rest_framework import DjangoFilterBackend
5 | from rest_framework.filters import OrderingFilter
6 |
7 | from auth_system.models import Company
8 | from lib.user_permission import SelfPermission
9 |
10 | from staff.serializers import CompanySerializer
11 | from rest_framework_tracking.mixins import LoggingMixin
12 | from rest_framework.decorators import action
13 | from rest_framework.response import Response
14 | import numpy as np
15 | import pandas as pd
16 | import os
17 |
18 |
19 | class CompanyFilter(filters.FilterSet):
20 | '''可以根据名称等来过滤'''
21 |
22 | class Meta:
23 | model = Company
24 | fields = ["name"]
25 |
26 |
27 | class CompanyViewSet(model_viewset.ModelViewSet):
28 | """
29 | A simple ViewSet for viewing and editing accounts.
30 | """
31 | queryset = Company.objects.filter(is_used=1).all()
32 | serializer_class = CompanySerializer
33 | filterset_class = CompanyFilter
34 | filter_backends = [OrderingFilter, DjangoFilterBackend]
35 | # permission_classes = [SelfPermission]
36 | # permission_classes = [permissions.IsAuthenticatedOrReadOnly]
37 |
38 | @action(methods=["GET"], detail=False)
39 | def company_out(self, request):
40 | id_str = request.query_params.get("list")
41 | if not id_str:
42 | return Response({"msg": "请勾选导出的内容"}, status=200)
43 | else:
44 | id_list = id_str.split(",")
45 |
46 | value = self.queryset.filter(id__in=id_list).values("name", "boss_name", "phone_num", "company_address")
47 |
48 | array = [list(array.values()) for array in value]
49 |
50 | excel = pd.DataFrame(np.array(array), columns=["公司名称", "联系人", "联系电话", "联系地址"])
51 |
52 | filepath = "media/xlsx/company.xlsx"
53 | if os.path.exists(filepath):
54 | os.remove(filepath)
55 | excel.to_excel(filepath)
56 | path = request.META.get('SERVER_PROTOCOL').split("/")[0].lower() + "://" + request.META.get(
57 | 'HTTP_HOST') + "/" + filepath
58 | return Response({"path": path}, status=200)
59 |
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/departmentwork_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 | import django_filters as filters
3 | from django_filters.rest_framework import DjangoFilterBackend
4 | from rest_framework.filters import OrderingFilter
5 | from rest_framework.decorators import action
6 | from rest_framework.response import Response
7 | from staff.models import Department
8 | from ..serializers.departmentwork_serializer import DepartmentworkSerializer
9 | import numpy as np
10 | import pandas as pd
11 | import os
12 |
13 | class DepartmentWorkFilter(filters.FilterSet):
14 | '''根据时间和部门查询出勤率'''
15 | # TODO 增加part_id
16 | class Meta:
17 | model = Department
18 | fields = ["department", "id", "part_id"]
19 |
20 |
21 |
22 | class DepartmentworkViewset(ModelViewSet):
23 | """部门考勤信息"""
24 | queryset = Department.objects.all()
25 | serializer_class = DepartmentworkSerializer
26 | filterset_class = DepartmentWorkFilter
27 | # filter_backends = [OrderingFilter, DjangoFilterBackend]
28 |
29 |
30 | @action(methods=["GET"], detail=False)
31 | def department_work_out(self, request):
32 | id_str = request.query_params.get("list")
33 | if not id_str:
34 | return Response({"msg": "请勾选导出的内容"}, status=200)
35 | else:
36 | id_list = id_str.split(",")
37 | queryset = self.filter_queryset(self.get_queryset())
38 | serializer = self.get_serializer(queryset, many=True)
39 | array = []
40 | for all_id in serializer.data:
41 | id = all_id.get("id")
42 | if str(id) in id_list:
43 | list = [all_id["time"], all_id["department"], all_id["fact"], all_id["real"], all_id["rate"]]
44 | array.append(list)
45 | excel = pd.DataFrame(np.array(array), columns=["日期", "部门", "应到人数", "实到人数", "出勤率"])
46 | filepath = "media/xlsx/department.xlsx"
47 | if os.path.exists(filepath):
48 | os.remove(filepath)
49 | excel.to_excel(filepath)
50 | path = request.META.get('SERVER_PROTOCOL').split("/")[0].lower() + "://" + request.META.get(
51 | 'HTTP_HOST') + "/" + filepath
52 | return Response({"path": path}, status=200)
53 |
--------------------------------------------------------------------------------
/ruidun_system/staff/viewsets/part_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters as filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from lib import model_viewset
5 | from ..models import Part
6 | from ..serializers.part_serializer import PartSerializer
7 | from rest_framework.decorators import action
8 | from rest_framework.response import Response
9 | import numpy as np
10 | import pandas as pd
11 | import os
12 |
13 |
14 | class PartFilter(filters.FilterSet):
15 | '''可以根据工区名称, 项目名称,公司名称等来过滤'''
16 |
17 | project_name = filters.CharFilter(field_name="project_id", lookup_expr="name")
18 | company_name = filters.CharFilter(field_name="project_id", lookup_expr="name")
19 |
20 | class Meta:
21 | model = Part
22 | fields = ["name", "project_name", "company_name"]
23 |
24 |
25 | class PartViewset(model_viewset.ModelViewSet):
26 | """工区模型"""
27 | queryset = Part.objects.filter(is_used=1).all()
28 | serializer_class = PartSerializer
29 | filterset_class = PartFilter
30 | filter_backends = [OrderingFilter, DjangoFilterBackend]
31 | # ordering_fields = ()
32 |
33 | @action(methods=["GET"], detail=False)
34 | def part_out(self, request):
35 | id_str = request.query_params.get("list")
36 | if not id_str:
37 | return Response({"msg": "请勾选导出的内容"}, status=200)
38 | else:
39 | id_list = id_str.split(",")
40 |
41 | value = self.queryset.filter(id__in=id_list).values("name", "project_id__name",
42 | "project_id__company_id__name", "manager",
43 | "manager_phone")
44 |
45 | array = [list(array.values()) for array in value]
46 |
47 | excel = pd.DataFrame(np.array(array), columns=["工区信息", "所属项目", "所属公司", "负责人", "负责人电话"])
48 |
49 | filepath = "media/xlsx/part.xlsx"
50 | if os.path.exists(filepath):
51 | os.remove(filepath)
52 | excel.to_excel(filepath)
53 | path = request.META.get('SERVER_PROTOCOL').split("/")[0].lower() + "://" + request.META.get(
54 | 'HTTP_HOST') + "/" + filepath
55 | return Response({"path": path}, status=200)
56 |
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/staff_pass_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django_filters.rest_framework import DjangoFilterBackend
3 | from rest_framework.filters import OrderingFilter
4 | from rest_framework import viewsets
5 |
6 | from auth_system.models import Company
7 | from internet_setting.models import StaffPass
8 | from internet_setting.serializers.staff_pass_serializer import StaffPassSerializer
9 |
10 | class StaffPassFilter(django_filters.FilterSet):
11 | # time = django_filters.DateTimeFilter()
12 | time__gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
13 | time__lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
14 | # company = django_filters.ModelChoiceFilter(to_field_name="name", queryset=Company.objects.all())
15 | staff = django_filters.CharFilter(field_name='staff_id', lookup_expr='name')
16 | class Meta:
17 | model = StaffPass
18 | fields = ["time__gt", 'time__lt', 'status', 'staff']
19 |
20 |
21 | class StaffPassViewSet(viewsets.ReadOnlyModelViewSet):
22 | """
23 | A simple ViewSet for viewing and editing accounts.
24 | """
25 | queryset = StaffPass.objects.all()
26 | serializer_class = StaffPassSerializer
27 | # filter_fields = {
28 | # 'time': ['gt', 'lt']
29 | # }
30 | filterset_class = StaffPassFilter
31 | # filter_fields = ('status', 'staff_id')
32 | filter_backends = [OrderingFilter, DjangoFilterBackend] # 为了兼容排序和过滤能同时有效
33 | ordering_fields = ('status', 'time')
34 |
35 |
36 | # permission_classes = [SelfPermission]
37 |
38 | # def get_queryset(self):
39 | # company_id = self.request.query_params.get("company_id", None)
40 | # staff = self.request.query_params.get("staff", None)
41 | # status = self.request.query_params.get("status", None)
42 | # start_time = self.request.query_params.get('start_time', None)
43 | # end_time = self.request.query_params.get('end_time', None)
44 | # conditions = {} # 查询的条件
45 | #
46 | # if staff:
47 | # conditions["staff"] = staff
48 | # if status:
49 | # conditions["status"] = status
50 | # if start_time:
51 | # conditions['time__gt'] = start_time
52 | # if end_time:
53 | # conditions['time__lt'] = end_time
54 | #
55 | #
56 | # queryset = StaffPass.objects.filter(**conditions).all()
57 | # return queryset
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/viewsets/voice_server_viewset.py:
--------------------------------------------------------------------------------
1 | import os
2 | import re
3 |
4 | from rest_framework import viewsets, status
5 | from rest_framework.decorators import action
6 | from rest_framework.filters import OrderingFilter
7 | from rest_framework.response import Response
8 |
9 | from client.ipvoice import Client
10 | from internet_setting.models import VoiceServer
11 | from internet_setting.serializers.voice_server_serializer import VoiceServerSerializer
12 | from lib import model_viewset
13 |
14 |
15 | class VoiceServerViewSet(model_viewset.ModelViewSet):
16 | """
17 | A simple ViewSet for viewing and editing accounts.
18 | """
19 | queryset = VoiceServer.objects.all()
20 | serializer_class = VoiceServerSerializer
21 | filter_backends = [OrderingFilter]
22 | # ordering_fields = ('index',)
23 |
24 | # @action(methods=['POST'], detail=True)
25 | # def voice(self, request, pk):
26 | # "指定音响播放录音接口"
27 | # obj = self.get_object()
28 | # # print(obj.ip)
29 | # # print(obj.port)
30 | # voice_path = request.data.get('voice_path')
31 | # snlist = request.data.get('snlist') # 多个序列号之间用逗号隔开
32 | # # print(voice_path, snlist)
33 | # # 调用硬件接口:
34 | # client = Client(ip=obj.ip, port=obj.port, voiceFilePath=voice_path, snlist=snlist)
35 | # try:
36 | # result = client.send()
37 | # return Response(data=result, status=status.HTTP_200_OK)
38 | # except Exception:
39 | # return Response(data={"message": "硬件连接异常"}, status=status.HTTP_200_OK)
40 |
41 | @action(methods=['POST'], detail=True)
42 | def voice(self, request, pk):
43 | "指定音响播放录音接口"
44 | obj = self.get_object()
45 | # print(obj.ip)
46 | # print(obj.port)
47 | voice_path = request.data.get('voice_path')
48 | paths = re.search(r"m.*", voice_path).group()
49 | # voice_path = os.path.realpath(voice_path.split("8001/")[-1])
50 | voice_path = os.path.realpath(paths)
51 | snlist = request.data.get('snlist') # 多个序列号之间用逗号隔开
52 | # print(voice_path, snlist)
53 | # 调用硬件接口:
54 | client = Client(ip=obj.ip, port=obj.port, voiceFilePath=voice_path, snlist=snlist)
55 | try:
56 | result = client.send()
57 | return Response(data=result, status=status.HTTP_200_OK)
58 | except Exception:
59 | return Response(data={"message": "音响设备连接异常"}, status=status.HTTP_200_OK)
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/car_pass_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from internet_setting.models import CarPass
6 |
7 |
8 | # class CarPassSerializer(serializers.ModelSerializer):
9 | #
10 | # name = serializers.SerializerMethodField()
11 | #
12 | # class Meta:
13 | # model = CarPass
14 | # fields = '__all__'
15 | # extra_kwargs = {
16 | # "id": {"read_only": True}
17 | # }
18 | #
19 | # def get_name(self, obj):
20 | # return obj.car.car_owner
21 | #
22 | # def create(self, validated_data):
23 | # pk = uuid.uuid4()
24 | # return CarPass.objects.create(pk=pk, **validated_data)
25 | #
26 | # def update(self, instance, validated_data):
27 | # instance.status = validated_data.get("status", instance.status)
28 | # instance.car = validated_data.get("car", instance.car)
29 | # instance.is_used = validated_data.get("is_used", instance.is_used)
30 | # instance.code = validated_data.get("code", instance.code)
31 | #
32 | # instance.save()
33 | # return instance
34 | from work_area.models import CarInfo
35 |
36 |
37 | class CarPassSerializer(serializers.ModelSerializer):
38 |
39 | part = serializers.SlugRelatedField(slug_field='name', read_only=True)
40 | part_id = serializers.CharField(allow_null=True)
41 |
42 | class Meta:
43 | model = CarInfo
44 | fields = '__all__'
45 | extra_kwargs = {
46 | "id": {"read_only": True}
47 | }
48 |
49 |
50 | def create(self, validated_data):
51 | pk = uuid.uuid4()
52 | return CarInfo.objects.create(pk=pk, **validated_data)
53 |
54 | # def update(self, instance, validated_data):
55 | # instance.status = validated_data.get("status", instance.status)
56 | # instance.car = validated_data.get("car", instance.car)
57 | # instance.is_used = validated_data.get("is_used", instance.is_used)
58 | # instance.code = validated_data.get("code", instance.code)
59 | #
60 | # instance.save()
61 | # return instance
62 |
63 | def update(self, instance, validated_data):
64 | instance.cphm = validated_data.get("cphm", instance.cphm)
65 | instance.clys = validated_data.get("clys", instance.clys)
66 | instance.clxh = validated_data.get("clxh", instance.clxh)
67 | instance.part_id = validated_data.get("part_id", instance.part_id)
68 |
69 | instance.save()
70 | return instance
--------------------------------------------------------------------------------
/ruidun_system/work_area/serializers/staffrecord_serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 |
3 | from auth_system.models import Part
4 | from internet_setting.models import StaffPass
5 | from ..models import StaffBreak, StaffRecord
6 | from staff.models import Staff
7 |
8 |
9 | class StaffSerializer(serializers.ModelSerializer):
10 | """人员序列化器"""
11 |
12 | code = serializers.SerializerMethodField()
13 | # part = serializers.SerializerMethodField()
14 |
15 | class Meta:
16 | model = Staff
17 | fields = ('code', 'id', 'name', 'phone')
18 |
19 | def get_code(self, obj):
20 | # 人员通行证卡号
21 | request = self.context['request']
22 | part_id = request.query_params.get('part_id')
23 | # TODO 等待传入part_id(下方)
24 | staffpass_set = obj.staffpass_set.filter(part_id=1)
25 |
26 | if not staffpass_set:
27 | return None
28 |
29 | return (staffpass_set[0].code)
30 |
31 | # def get_part(self, obj):
32 | # # 判断人员是否属于当前工区
33 | # request = self.context['request']
34 | # part_id = request.query_params.get('part_id')
35 | # # TODO 等待传入part_id(下方)
36 | #
37 | # if not part_id:
38 | # raise serializers.ValidationError("参数不足")
39 | #
40 | # if not Part.objects.filter(id=part_id):
41 | # raise serializers.ValidationError("工区不存在")
42 | #
43 | # if obj.part_id != part_id:
44 | # # 判断人员是否属于当前工区
45 | # part_name = Part.objects.filter(id=obj.part_id)[0].name
46 | # return part_name
47 |
48 |
49 | # class StaffBreakSerializer (serializers.ModelSerializer):
50 | # """人员道闸序列化器"""
51 | #
52 | # class Meta:
53 | # model = StaffBreak
54 | # fields = ('name',)
55 | # # extra_kwargs = {
56 | # # 'name': {'label': '道闸'}
57 | # # }
58 |
59 |
60 | # class StffPassSerializer(serializers.ModelSerializer):
61 | # """人员通行证序列化器"""
62 | #
63 | # class Meta:
64 | # model = StaffPass
65 | # fields = ('code', )
66 |
67 |
68 | class StaffRecordSerializer(serializers.ModelSerializer):
69 | """人员通行记录序列化器"""
70 |
71 | # staff = StaffSerializer(read_only=True)
72 | # staff_break = serializers.SlugRelatedField(label='道闸', read_only=True, slug_field='name')
73 |
74 | class Meta:
75 | model = StaffRecord
76 | # fields = ('id', 'staff', 'staff_break', 'in_out', 'time')
77 | fields = ('id', 'sysid', 'zone_name', 'device_name', 'names', 'card_number', 'inouts', 'time', 'group_number')
--------------------------------------------------------------------------------
/ruidun_system/base_system/urls.py:
--------------------------------------------------------------------------------
1 | """base_system URL Configuration
2 |
3 | The `urlpatterns` list routes URLs to views. For more information please see:
4 | https://docs.djangoproject.com/en/2.1/topics/http/urls/
5 | Examples:
6 | Function views
7 | 1. Add an import: from my_app import views
8 | 2. Add a URL to urlpatterns: path('', views.home, name='home')
9 | Class-based views
10 | 1. Add an import: from other_app.views import Home
11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
12 | Including another URLconf
13 | 1. Import the include() function: from django.urls import include, path
14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
15 | """
16 | from django.contrib import admin
17 | from django.shortcuts import redirect
18 | from django.urls import include, path
19 | from django.conf import settings
20 | from django.conf.urls.static import static
21 | from django.views.generic import TemplateView
22 |
23 | from . import settings
24 | from . import views
25 | from rest_framework_jwt.views import obtain_jwt_token
26 | from rest_framework_jwt.views import refresh_jwt_token
27 | from rest_framework_jwt.views import verify_jwt_token
28 |
29 | def red(request):
30 | # 默认进去主页
31 | return redirect("static/index.html")
32 |
33 | def demo(request):
34 | # 海康web
35 | return redirect("static/demo/index.html")
36 |
37 | urlpatterns = [
38 | path('', red),
39 | path('haikang', demo),
40 | # path('^$', TemplateView.as_view(template_name="index.html")),
41 | path('admin/', admin.site.urls),
42 |
43 | path('auth-jwt/', obtain_jwt_token),
44 | path('auth-jwt-refresh/', refresh_jwt_token),
45 | path('auth-jwt-verify/', verify_jwt_token),
46 | # path('accounts/', include('django.contrib.auth.urls')),
47 | # path('crud/', include('crudbuilder.urls')),
48 |
49 | # path('home', views.home, name='home'),
50 | path('staff/', include('staff.urls'), name='staff'),
51 | path('work_area/', include('work_area.urls'), name='work_area'),
52 | # path('bridge_and_tunnel/', include('bridge_and_tunnel.urls'), name='bridge_and_tunnel'),
53 | path('equipment/', include('equipment.urls'), name='equipment'),
54 | path('safe/', include('safe.urls'), name='safe'),
55 | # path('internet_operate/', include('internet_operate.urls'), name='internet_operate'),
56 | path('internet_setting/', include('internet_setting.urls'), name='internet_setting'),
57 | path('system_manage/', include('system_manage.urls'), name='system_manage'),
58 | ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
--------------------------------------------------------------------------------
/ruidun_system/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Created by https://www.gitignore.io/api/django
3 | # Edit at https://www.gitignore.io/?templates=django
4 |
5 | ### Django ###
6 | *.log
7 | *.pot
8 | *.pyc
9 | __pycache__/
10 | local_settings.py
11 | db.sqlite3
12 | *static/
13 | *media/
14 |
15 | # If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/
16 | # in your Git repository. Update and uncomment the following line accordingly.
17 | # /staticfiles/
18 |
19 | ### Django.Python Stack ###
20 | # Byte-compiled / optimized / DLL files
21 | *.py[cod]
22 | *$py.class
23 |
24 | # C extensions
25 | *.so
26 |
27 | # Distribution / packaging
28 | .Python
29 | build/
30 | develop-eggs/
31 | dist/
32 | downloads/
33 | eggs/
34 | .eggs/
35 | lib64/
36 | parts/
37 | sdist/
38 | var/
39 | wheels/
40 | pip-wheel-metadata/
41 | share/python-wheels/
42 | *.egg-info/
43 | .installed.cfg
44 | *.egg
45 | MANIFEST
46 |
47 | # PyInstaller
48 | # Usually these files are written by a python script from a template
49 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
50 | *.manifest
51 | *.spec
52 |
53 | # Installer logs
54 | pip-log.txt
55 | pip-delete-this-directory.txt
56 |
57 | # Unit test / coverage reports
58 | htmlcov/
59 | .tox/
60 | .nox/
61 | .coverage
62 | .coverage.*
63 | .cache
64 | nosetests.xml
65 | coverage.xml
66 | *.cover
67 | .hypothesis/
68 | .pytest_cache/
69 |
70 | # Translations
71 | *.mo
72 |
73 | # Django stuff:
74 |
75 | # Flask stuff:
76 | instance/
77 | .webassets-cache
78 |
79 | # Scrapy stuff:
80 | .scrapy
81 |
82 | # Sphinx documentation
83 | docs/_build/
84 |
85 | # PyBuilder
86 | target/
87 |
88 | # Jupyter Notebook
89 | .ipynb_checkpoints
90 |
91 | # IPython
92 | profile_default/
93 | ipython_config.py
94 |
95 | # pyenv
96 | .python-version
97 |
98 | # celery beat schedule file
99 | celerybeat-schedule
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
131 | # End of https://www.gitignore.io/api/django
132 |
133 | migrations/
134 |
--------------------------------------------------------------------------------
/ruidun_system/equipment/viewsets/equipmentupkeep_viewset.py:
--------------------------------------------------------------------------------
1 | from lib.model_viewset import ModelViewSet
2 | import django_filters as filters
3 | from django_filters.rest_framework import DjangoFilterBackend
4 | from rest_framework.filters import OrderingFilter
5 | from ..models import EquipmentUpkeep
6 | from ..serializers.equipmentupkeep_serializer import EquipmentUpkeepSerializer
7 |
8 |
9 | class EquipmentupkeepFilter(filters.FilterSet):
10 | manager_name = filters.CharFilter(field_name="manager_id", lookup_expr="name")
11 | name = filters.CharFilter(field_name="equipment_id", lookup_expr="name")
12 | time_gt = filters.DateTimeFilter(field_name="time", lookup_expr='gte')
13 | time_lt = filters.DateTimeFilter(field_name="time", lookup_expr='lte')
14 | company_id = filters.CharFilter(field_name="equipment_id", lookup_expr="company_id")
15 |
16 | class Meta:
17 | model = EquipmentUpkeep
18 | fields = ["manager_name", "time_gt", "time_lt", "upkeep_man", "name", "company_id", "equipment_id"]
19 |
20 |
21 | """保养记录搜索查询"""
22 | class EquipmentUpkeepViewSet(ModelViewSet):
23 |
24 | queryset = EquipmentUpkeep.objects.all()
25 | serializer_class = EquipmentUpkeepSerializer
26 | filterset_class = EquipmentupkeepFilter
27 | filter_backends = [OrderingFilter, DjangoFilterBackend]
28 | ordering_fields = ("time",)
29 |
30 | # def get_queryset(self):
31 | #
32 | # query_dict = {}
33 | # equipment = self.request.query_params.get("equipment", None)
34 | # manager = self.request.query_params.get("manager", None)
35 | # upkeep_man = self.request.query_params.get("upkeep_man", None)
36 | # time = self.request.query_params.get("time", None)
37 | # if equipment:
38 | # if EquipmentInfo.objects.filter(name=equipment).count() == 0:
39 | # return []
40 | # query_dict["equipment_id"] = EquipmentInfo.objects.get(name=equipment).engineering_car_id
41 | # if manager:
42 | # if Staff.objects.filter(name=manager).count() == 0:
43 | # return []
44 | # query_dict["manager_id"] = Staff.objects.get(name=manager).staff_id
45 | # if upkeep_man:
46 | # if EquipmentUpkeep.objects.filter(upkeep_man=upkeep_man).count() == 0:
47 | # return []
48 | # query_dict["upkeep_man"] = upkeep_man
49 | # if time:
50 | # if EquipmentUpkeep.objects.filter(time=time).count() == 0:
51 | # return []
52 | # query_dict["time"] = time
53 | #
54 | # queryset = EquipmentUpkeep.objects.filter(**query_dict)
55 | #
56 | # return queryset
--------------------------------------------------------------------------------
/ruidun_system/internet_setting/serializers/led_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 |
5 | from auth_system.models import Part
6 | from internet_setting.models import LEDInfo
7 |
8 |
9 | class LEDInfoSerializer(serializers.ModelSerializer):
10 |
11 | part = serializers.SlugRelatedField(slug_field='name', read_only=True)
12 | part_id = serializers.CharField(allow_null=True, required=False)
13 |
14 | class Meta:
15 | model = LEDInfo
16 | fields = "__all__"
17 | extra_kwargs = {
18 | "id":{"read_only": True},
19 | "sysid":{"read_only": True},
20 | "part_id":{"read_only": True},
21 | "note":{"required": False},
22 | "area_name":{"required": False}
23 | }
24 |
25 | # 关于外键的需要单独验证,因为外键字段指定两个序列化字段会出现问题
26 |
27 | def validate_part_id(self, value):
28 | if Part.objects.filter(pk=value).count() == 0:
29 | raise serializers.ValidationError("无效的值,关联表中不存在这条记录")
30 | return value
31 |
32 | def create(self, validated_data):
33 | validated_data["id"] = uuid.uuid4() # 添加一个唯一的UUID为主键
34 | return LEDInfo.objects.create(**validated_data)
35 |
36 | def update(self, instance, validated_data):
37 | # 因为有可能没有传过来,所以用字典.get() 方法
38 | instance.time = validated_data.get("time", instance.bought_time)
39 | instance.factory = validated_data.get("factory", instance.factory)
40 | instance.model= validated_data.get("model", instance.model)
41 | instance.ip = validated_data.get("ip", instance.ip)
42 | instance.port = validated_data.get("port", instance.port)
43 | instance.part_id = validated_data.get("part_id", instance.part_id)
44 | instance.is_used = validated_data.get("is_used", instance.is_used)
45 | instance.status = validated_data.get("status", instance.status)
46 | instance.note = validated_data.get("note", instance.note)
47 | instance.x = validated_data.get("x", instance.x)
48 | instance.y = validated_data.get("y", instance.y)
49 | instance.sysid = validated_data.get("sysid", instance.sysid)
50 | instance.area_name = validated_data.get("area_name", instance.area_name)
51 | instance.nScreenNo = validated_data.get("nScreenNo", instance.nScreenNo)
52 | instance.pScreenName = validated_data.get("pScreenName", instance.pScreenName)
53 | instance.nWidth = validated_data.get("nWidth", instance.nWidth)
54 | instance.nHeight = validated_data.get("nHeight", instance.nHeight)
55 | instance.nScreenType = validated_data.get("nScreenType", instance.nScreenType)
56 | instance.nPixelMode = validated_data.get("nPixelMode", instance.nPixelMode)
57 |
58 | instance.save()
59 | return instance
60 |
61 |
62 |
--------------------------------------------------------------------------------
/ruidun_system/staff/serializers/usermouthwork_detail_serialzer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 | import calendar
3 | from rest_framework import serializers
4 |
5 | from staff.models import UserWork, Staff
6 |
7 | import datetime
8 |
9 | now_time =datetime.datetime.now().strftime("%Y-%m-%d")
10 |
11 |
12 | class UserMouthWorkDetailSerializer(serializers.ModelSerializer):
13 | department = serializers.SlugRelatedField(slug_field='department', read_only=True)
14 | department_id = serializers.CharField(allow_null=True, required=False)
15 | daywork = serializers.SerializerMethodField()
16 |
17 | class Meta:
18 | model = Staff
19 | fields = ('id', 'name', 'department', "department_id", 'daywork')
20 | extra_kwargs = {
21 | "id": {"required": False}
22 | }
23 |
24 | def get_daywork(self, obj):
25 | mouth = self.context["request"].query_params.get('mouth')
26 | if mouth:
27 | year, month = [int(a) for a in mouth.split("-")]
28 | # 得出该年这个月份的第一天是周几和共多少天(monthrange)
29 | weekday, monthrange = calendar.monthrange(year, month)
30 | time_gt = datetime.date(year=year, month=month, day=1)
31 | time_lt = datetime.date(year=year, month=month, day=monthrange)
32 | work = UserWork.objects.filter(staff_id=obj.id, time__gte=time_gt, time__lte=time_lt).values("id", "time", "work_time", "detail",'enter_time', 'leave_time').order_by("time")
33 | for i in work:
34 | if i["work_time"] >= 720000:
35 | i["work_time"] = "正常"
36 | elif 0 < i["work_time"] < 720000:
37 | i["work_time"] = "缺工"
38 | else:
39 | i["work_time"] = "旷工"
40 | return work
41 |
42 | def get_department(self, obj):
43 | return obj.staff.department.department
44 |
45 | def get_department_id(self, obj):
46 | return obj.staff.department.id
47 |
48 | def validate_staff_id(self, value):
49 | if Staff.objects.filter(pk=value).count() == 0:
50 | raise serializers.ValidationError("无效的值")
51 | return value
52 |
53 | def create(self, validated_data):
54 | validated_data["id"] = uuid.uuid4() # 添加一个唯一的UUID为主键
55 | return UserWork.objects.create(**validated_data)
56 |
57 | def update(self, instance, validated_data):
58 | # 因为有可能没有传过来,所以用字典.get() 方法
59 | instance.time = validated_data.get("time", instance.time)
60 | instance.work_time = validated_data.get("work_time", instance.work_time)
61 | instance.detail = validated_data.get("detail", instance.detail)
62 | instance.enter_time = validated_data.get("enter_time", instance.enter_time)
63 | instance.leave_time = validated_data.get("leave_time", instance.leave_time)
64 | instance.save()
65 | return instance
--------------------------------------------------------------------------------
/ruidun_system/work_area/urls.py:
--------------------------------------------------------------------------------
1 | from django.urls import path, re_path
2 |
3 | from work_area.viewsets.staff_location import StaffLocationViewSet
4 | from .viewsets.open_carbreak_view import OpenCarbreak
5 | from .viewsets.open_staffbreak_view import OpenStaffbreak
6 | # from .viewsets.staffstatus_viewset import StaffStatusAPIView
7 |
8 | urlpatterns = [
9 | # path('staffstatus/', StaffStatusAPIView.as_view()), # 工区人员状态
10 | # re_path(r'staffstatus/(?P\d+)/$', StaffStatusAPIView.as_view()),
11 | path("open_carbreak/", OpenCarbreak.as_view()), # 开启车辆道闸
12 | path("open_staffbreak/", OpenStaffbreak.as_view()) # 开启人员道闸
13 | ]
14 |
15 | from rest_framework import routers
16 | from .viewsets.carrecord_viewset import CarRecordViewset
17 | from .viewsets.carbreak_viewset import CarBreakViewset
18 | from .viewsets.staffrecord_viewset import StaffRecordViewset
19 | from .viewsets.staffbreak_viewset import StaffBreakViewset
20 | from .viewsets.team_viewset import TeamViewset
21 | from .viewsets.staffstatus_viewset import StaffStatusViewset
22 | from .viewsets.deviceinfo_viewset import DeviceInfoViewset
23 | from .viewsets.department_viewset import DepartmentViewset
24 |
25 | # 车辆通行记录
26 | router = routers.DefaultRouter()
27 | router.register('carrecords', CarRecordViewset, base_name='carrecords' )
28 |
29 | urlpatterns += router.urls
30 |
31 |
32 | # 车辆道闸
33 | router = routers.DefaultRouter()
34 | router.register('carbreaks', CarBreakViewset, base_name='carbreaks' )
35 |
36 | urlpatterns += router.urls
37 |
38 |
39 | # 人员通行记录
40 | router = routers.DefaultRouter()
41 | router.register('staffrecords', StaffRecordViewset, base_name='staffrecords' )
42 |
43 | urlpatterns += router.urls
44 |
45 |
46 | # 人员道闸
47 | router = routers.DefaultRouter()
48 | router.register('staffbreaks', StaffBreakViewset, base_name='staffbreaks' )
49 |
50 | urlpatterns += router.urls
51 |
52 |
53 | # 工区下的施工班组(加班组下的第一组人员信息)
54 | router = routers.DefaultRouter()
55 | router.register('teams', TeamViewset, base_name='teams' )
56 |
57 | urlpatterns += router.urls
58 |
59 |
60 | # 工区人员状态(当前工区施工班组下的人员)
61 | router = routers.DefaultRouter()
62 | router.register('staffstatus', StaffStatusViewset, base_name='staffstatus' )
63 |
64 | urlpatterns += router.urls
65 |
66 | #
67 | # # 工区设备信息
68 | # router = routers.DefaultRouter()
69 | # router.register('deviceinfos', DeviceInfoViewset, base_name='deviceinfos' )
70 | #
71 | # urlpatterns += router.urls
72 |
73 |
74 | # 工区下的部门/班组
75 | router = routers.DefaultRouter()
76 | router.register('departments', DepartmentViewset, base_name='departments' )
77 |
78 | urlpatterns += router.urls
79 |
80 |
81 | # 人员定位信息
82 | router = routers.DefaultRouter()
83 | router.register('stafflocations', StaffLocationViewSet, base_name='stafflocations' )
84 |
85 | urlpatterns += router.urls
86 |
87 |
88 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/fixtures/car_record.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "model": "work_area.carinfo",
4 | "pk": "\u4eacAD8888",
5 | "fields": {
6 | "car_owner": "\u674e\u98de\u817e",
7 | "phone_number": "18536754205"
8 | }
9 | },
10 | {
11 | "model": "work_area.carinfo",
12 | "pk": "\u8c6bAMZ000",
13 | "fields": {
14 | "car_owner": "\u9ad8\u98de",
15 | "phone_number": "18626354876"
16 | }
17 | },
18 | {
19 | "model": "work_area.carinfo",
20 | "pk": "\u8c6bAZ6666",
21 | "fields": {
22 | "car_owner": "\u5f20\u4e09",
23 | "phone_number": "18626354888"
24 | }
25 | },
26 | {
27 | "model": "work_area.carbreak",
28 | "pk": "1",
29 | "fields": {
30 | "create_time": "2019-03-10T00:00:00Z",
31 | "update_time": "2019-03-13T00:00:00Z",
32 | "index": 1,
33 | "is_used": 1,
34 | "name": "\u897f\u4e00\u9053\u95f8"
35 | }
36 | },
37 | {
38 | "model": "work_area.carbreak",
39 | "pk": "2",
40 | "fields": {
41 | "create_time": "2019-03-10T00:00:00Z",
42 | "update_time": "2019-03-13T00:00:00Z",
43 | "index": 1,
44 | "is_used": 1,
45 | "name": "\u4e1c\u4e00\u9053\u95f8"
46 | }
47 | },
48 | {
49 | "model": "work_area.carbreak",
50 | "pk": "3",
51 | "fields": {
52 | "create_time": "2019-03-10T00:00:00Z",
53 | "update_time": "2019-03-13T00:00:00Z",
54 | "index": 1,
55 | "is_used": 1,
56 | "name": "\u5357\u4e00\u9053\u95f8"
57 | }
58 | },
59 | {
60 | "model": "work_area.carrecord",
61 | "pk": "1",
62 | "fields": {
63 | "car": "\u4eacAD8888",
64 | "car_break": "1",
65 | "in_out": true,
66 | "time": "2019-03-11T00:00:00Z"
67 | }
68 | },
69 | {
70 | "model": "work_area.carrecord",
71 | "pk": "2",
72 | "fields": {
73 | "car": "\u4eacAD8888",
74 | "car_break": "2",
75 | "in_out": false,
76 | "time": "2019-03-12T12:00:00Z"
77 | }
78 | },
79 | {
80 | "model": "work_area.carrecord",
81 | "pk": "3",
82 | "fields": {
83 | "car": "\u8c6bAMZ000",
84 | "car_break": "3",
85 | "in_out": true,
86 | "time": "2019-03-12T00:00:00Z"
87 | }
88 | },
89 | {
90 | "model": "work_area.carrecord",
91 | "pk": "4",
92 | "fields": {
93 | "car": "\u8c6bAMZ000",
94 | "car_break": "1",
95 | "in_out": false,
96 | "time": "2019-03-12T14:22:00Z"
97 | }
98 | },
99 | {
100 | "model": "work_area.carrecord",
101 | "pk": "5",
102 | "fields": {
103 | "car": "\u8c6bAZ6666",
104 | "car_break": "2",
105 | "in_out": true,
106 | "time": "2019-03-13T00:00:00Z"
107 | }
108 | }
109 | ]
--------------------------------------------------------------------------------
/ruidun_system/work_area/viewsets/staffrecord_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from lib.model_viewset import ModelViewSet
3 | from rest_framework.filters import OrderingFilter
4 | from django_filters import rest_framework as filters
5 |
6 | from ..models import StaffRecord
7 | from staff.models import Staff
8 | from ..serializers.staffrecord_serializer import StaffRecordSerializer
9 | # 自定义
10 | from rest_framework.decorators import action
11 | from rest_framework.response import Response
12 | from rest_framework import status
13 | import numpy as np
14 | import pandas as pd
15 | import os
16 |
17 |
18 | class StaffRecordFilter(django_filters.FilterSet):
19 | # 人员通行记录过滤器
20 | time = django_filters.DateTimeFilter()
21 | time_gt = django_filters.DateTimeFilter(field_name='time', lookup_expr='gt')
22 | time_lt = django_filters.DateTimeFilter(field_name='time', lookup_expr='lt')
23 | # staff = django_filters.CharFilter(field_name='staff_id', lookup_expr='name')
24 |
25 | class Meta:
26 | model = StaffRecord
27 | # fields = ['time_gt', 'time_lt', 'staff', 'staff_break']
28 | fields = ['time_gt', 'time_lt', 'device_name', 'names', 'part_id']
29 |
30 |
31 | class StaffRecordViewset(ModelViewSet):
32 | """人员通行记录"""
33 |
34 | # TODO 等待传入工区id
35 | sysid = 'SYS0101'
36 | queryset = StaffRecord.objects.all().order_by('-time')
37 | serializer_class = StaffRecordSerializer
38 | filterset_class = StaffRecordFilter
39 | filter_backends = (OrderingFilter, filters.DjangoFilterBackend,)
40 | ordering_fields = ('time',)
41 |
42 | # 导出
43 | @action(methods=["GET"], detail=False)
44 | def staff_recode_out(self, request):
45 | id_str = request.query_params.get("list")
46 | if not id_str:
47 | return Response({"msg": "请勾选导出的内容"}, status=200)
48 | else:
49 | id_list = id_str.split(",")
50 | value = self.queryset.filter(id__in=id_list).values("card_number","names","device_name","inouts","time")
51 | array = [list(array.values()) for array in value]
52 | print(array)
53 | for i in range(len(array)):
54 | array[i][4] = array[i][4].strftime("%Y-%m-%d %H:%M:%S")
55 | if str(array[i][3]) == "in":
56 | array[i][3] = "进入"
57 | else:
58 | array[i][3] = "离开"
59 | excel = pd.DataFrame(np.array(array), columns=["人员通行证卡号", "姓名", "识别设备", "进出", "时间"])
60 | filepath = "media/xlsx/staff_recode.xlsx"
61 | if os.path.exists(filepath):
62 | os.remove(filepath)
63 | excel.to_excel(filepath)
64 | path = request.META.get('SERVER_PROTOCOL').split("/")[0].lower() + "://" + request.META.get(
65 | 'HTTP_HOST') + "/" + filepath
66 | return Response({"path": path}, status=200)
67 |
--------------------------------------------------------------------------------
/ruidun_system/work_area/viewsets/carrecord_viewset.py:
--------------------------------------------------------------------------------
1 | import django_filters
2 | from django.conf import settings
3 | from rest_framework.filters import OrderingFilter
4 | from lib.model_viewset import ModelViewSet
5 | from django_filters import rest_framework as filters
6 |
7 | from ..models import CarRecord, CarInfo, CarBreak
8 | from ..serializers.carrecord_serializer import CarRecordSerializer
9 | # 自定义
10 | from rest_framework.decorators import action
11 | from rest_framework.response import Response
12 | from rest_framework import status
13 | import numpy as np
14 | import pandas as pd
15 | import os
16 |
17 |
18 | class CarRecordFilter(django_filters.FilterSet):
19 | # 车辆通行记录过滤器
20 | time = django_filters.DateTimeFilter()
21 | time_gt = django_filters.DateTimeFilter(field_name='intime', lookup_expr='gt')
22 | time_lt = django_filters.DateTimeFilter(field_name='intime', lookup_expr='lt')
23 | # # 车牌号
24 | # car_number = django_filters.CharFilter(field_name='car_id', lookup_expr='id')
25 | # # 车主
26 | # car_owner = django_filters.CharFilter(field_name='car_id', lookup_expr='car_owner')
27 |
28 | class Meta:
29 | model = CarRecord
30 | # fields = ['time_gt', 'time_lt', 'car_number', 'car_owner', 'car_break']
31 | fields = ['time_gt', 'time_lt', 'cardnumber', 'inplace', 'outplace', 'part_id']
32 |
33 |
34 | class CarRecordViewset(ModelViewSet):
35 | """车辆通行记录"""
36 |
37 | # sysid = 'SYS0101'
38 | queryset = CarRecord.objects.all().order_by('-intime')
39 | serializer_class = CarRecordSerializer
40 | filterset_class = CarRecordFilter
41 | filter_backends = (OrderingFilter, filters.DjangoFilterBackend,)
42 | ordering_fields = ('intime',)
43 |
44 | # 导出
45 | @action(methods=["GET"], detail=False)
46 | def car_recode_out(self, request):
47 | id_str = request.query_params.get("list")
48 | if not id_str:
49 | return Response({"msg": "请勾选导出的内容"}, status=200)
50 | else:
51 | id_list = id_str.split(",")
52 | value = self.queryset.filter(id__in=id_list).values("cardnumber", "inplace", "intime", "outplace", "outtime")
53 | array = [list(array.values()) for array in value]
54 | for i in range(len(array)):
55 | array[i][2] = array[i][2].strftime("%Y-%m-%d %H:%M:%S")
56 | array[i][4] = array[i][4].strftime("%Y-%m-%d %H:%M:%S")
57 | excel = pd.DataFrame(np.array(array), columns=["车牌号", "进入闸道", "进入时间" ,"离开道闸", "离开时间"])
58 | filepath = "media/xlsx/car_recode.xlsx"
59 | if os.path.exists(filepath):
60 | os.remove(filepath)
61 | excel.to_excel(filepath)
62 | path = request.META.get('SERVER_PROTOCOL').split("/")[0].lower() + "://" + request.META.get('HTTP_HOST') + "/" + filepath
63 | return Response({"path": path}, status=200)
64 |
--------------------------------------------------------------------------------
/ruidun_system/safe/serializers/dangerused_serializer.py:
--------------------------------------------------------------------------------
1 | import uuid
2 |
3 | from rest_framework import serializers
4 | from ..models import DangerUsed, Danger, DangerousCategory
5 | from staff.models import Staff
6 |
7 |
8 | class DangerSerializer(serializers.ModelSerializer):
9 | """危险品模型"""
10 |
11 | category = serializers.SlugRelatedField(label='分类名称', slug_field='name', read_only=True)
12 |
13 | class Meta:
14 | model = Danger
15 | exclude = ('create_time', 'update_time', 'count')
16 |
17 |
18 | class DangerUsedSerializer(serializers.ModelSerializer):
19 | """危险物品管理序列化器"""
20 |
21 | id = serializers.CharField(label='使用记录编号', read_only=True)
22 | danger_id = serializers.CharField(label='危险品编号', allow_null=True, write_only=True)
23 | # danger = serializers.SlugRelatedField(slug_field='name',read_only=True)
24 | danger = DangerSerializer(required=False)
25 | manager_id = serializers.CharField(label='负责人id', allow_null=True)
26 | manager = serializers.SlugRelatedField(label='负责人', slug_field='name', read_only=True)
27 | user_id = serializers.CharField(label='使用人id', allow_null=True, max_length=50)
28 | user = serializers.SlugRelatedField(label='使用人', slug_field='name', read_only=True)
29 |
30 | class Meta:
31 | model = DangerUsed
32 | exclude = ('create_time', 'update_time')
33 |
34 | def validate_danger_id(self, value):
35 | if Danger.objects.filter(pk=value).count() == 0:
36 | raise serializers.ValidationError("危险品不存在")
37 | return value
38 |
39 | def validate_manager(self, value):
40 | # 查看人员表中,是否存在该用户
41 | if Staff.objects.filter(name=value).count() == 0:
42 | raise serializers.ValidationError("负责人不存在")
43 | return value
44 |
45 | def validate_user(self, value):
46 | # 查看人员表中,是否存在该用户
47 | if Staff.objects.filter(name=value).count() == 0:
48 | raise serializers.ValidationError("使用人不存在")
49 | return value
50 |
51 | def create(self, validated_data):
52 | """新建"""
53 | pk = uuid.uuid4()
54 | return DangerUsed.objects.create(pk=pk, **validated_data)
55 |
56 | def update(self, instance, validated_data):
57 | """更新,instance为要更新的对象实例"""
58 | instance.danger_id = validated_data.get('danger_id', instance.danger_id)
59 | instance.manager_id = validated_data.get('manager_id', instance.manager)
60 | instance.user_id = validated_data.get('user_id', instance.user)
61 | instance.count = validated_data.get('count', instance.count)
62 | instance.is_need_back = validated_data.get('is_need_back', instance.is_need_back)
63 | instance.is_back = validated_data.get('is_back', instance.is_back)
64 | instance.start_time = validated_data.get('start_time', instance.start_time)
65 | instance.end_time = validated_data.get('end_time', instance.end_time)
66 | instance.save()
67 | return instance
--------------------------------------------------------------------------------