Ver Fonte

2023-5-18

zhangnaiwen há 2 anos atrás
pai
commit
3f51a6fb67

+ 1 - 0
src/app/api/device.py

@@ -550,6 +550,7 @@ delete_device_alarm.add_argument(name='alarm_message_id', type=str, location='fo
 
 @ns.route('/device_alarm')
 class DeviceAlarmApi(Resource):
+    # method_decorators = [login_required]
 
     @ns.doc(description='获取设备告警列表')
     @ns.expect(device_alarm)

+ 85 - 6
src/app/api/information.py

@@ -9,7 +9,8 @@ from sqlalchemy.orm import Session
 from werkzeug.datastructures import FileStorage
 
 from app.defines import Module, OperationType, StatesCode
-from app.modle.information import FloorConfiguration, StaffConfiguration, SecurityPerson, FloorConfigurationHistory
+from app.modle.information import FloorConfiguration, StaffConfiguration, SecurityPerson, FloorConfigurationHistory, \
+    StaffConfigurationHistory
 from app.utils.jwt_util import login_required
 from app.utils.save_log import save_log
 from app.utils.util import to_dict, cn_now
@@ -56,6 +57,24 @@ def upload_history(floor_configuration_id, url):
         session.commit()
 
 
+def staff_upload_history(staff_configuration_id, staff_list, duty_time):
+    """
+    记录安保人员信息配置历史记录
+    :param staff_configuration_id: 配置id
+    :param staff_list: 人员列表
+    :param duty_time: 值班时间
+    :return:
+    """
+    with Session(current_app.engine) as session:
+        stmt = insert(StaffConfigurationHistory).values(
+            configuration_id=staff_configuration_id,
+            staff_list=staff_list,
+            duty_time=duty_time
+        )
+        session.execute(stmt)
+        session.commit()
+
+
 @ns.route('/information_list')
 class InformationTypeApi(Resource):
     # method_decorators = [login_required]
@@ -251,6 +270,8 @@ floor_configuration.add_argument(name='responsibility_range', type=str, location
                                  help='职责范围')
 floor_configuration.add_argument(name='staff_list', type=str, location='form', required=False, help='人员名单')
 floor_configuration.add_argument(name='remark', type=str, location='form', required=False, help='备注')
+floor_configuration.add_argument(name='duty_time', type=str, location='form', required=False,
+                                 help="值班日期:{'start_time': '', end_time: ''}")
 
 
 @ns.route('/staff_configuration')
@@ -269,11 +290,21 @@ class StaffConfigurationApi(Resource):
         try:
             with Session(current_app.engine) as session:
                 stmt = select(StaffConfiguration).where(StaffConfiguration.id == staff_configuration_id)
-                results = session.execute(stmt).scalars().all()
+                results = session.execute(stmt).scalars().first().__dict__
+                del results['_sa_instance_state']
+
+                # 获取人员
+                staff_list = []
+                for staff_id in json.loads(results['staff_list']):
+                    stmt = select(SecurityPerson).where(SecurityPerson.id == staff_id)
+                    staff = session.execute(stmt).scalars().first().__dict__
+                    del staff['_sa_instance_state']
+                    staff_list.append(staff)
+                results['staff_list'] = staff_list
 
             save_log(request, Module.INFORMATION, OperationType.INQUIRE, StatesCode.SUCCESS)
 
-            return jsonify(code=StatesCode.SUCCESS, message='成功', data=to_dict(results))
+            return jsonify(code=StatesCode.SUCCESS, message='成功', data=results)
         except Exception as e:
             save_log(request, Module.INFORMATION, OperationType.INQUIRE, StatesCode.UNKNOWN_ERROR)
             return jsonify(code=StatesCode.UNKNOWN_ERROR, message=str(e))
@@ -287,6 +318,7 @@ class StaffConfigurationApi(Resource):
         responsibility_range = request.form.get('responsibility_range')
         staff_list = request.form.get('staff_list')
         remark = request.form.get('remark')
+        duty_time = request.form.get('duty_time')
 
         try:
             with Session(current_app.engine) as session:
@@ -295,11 +327,15 @@ class StaffConfigurationApi(Resource):
                     personnel_type=personnel_type,
                     responsibility_range=responsibility_range,
                     staff_list=staff_list,
-                    remark=remark
+                    remark=remark,
+                    duty_time=duty_time
                 )
-                session.execute(stmt)
+                result = session.execute(stmt)
                 session.commit()
 
+            # 添加历史记录
+            staff_upload_history(result.inserted_primary_key[0], staff_list, duty_time)
+
             save_log(request, Module.INFORMATION, OperationType.ADD, StatesCode.SUCCESS)
 
             return jsonify(code=StatesCode.SUCCESS, message='成功')
@@ -318,6 +354,7 @@ class StaffConfigurationApi(Resource):
         responsibility_range = request.form.get('responsibility_range')
         staff_list = request.form.get('staff_list')
         remark = request.form.get('remark')
+        duty_time = request.form.get('duty_time')
 
         if staff_configuration_id is None:
             return jsonify(code=StatesCode.UNKNOWN_ERROR, message="配置id不能为空")
@@ -329,11 +366,15 @@ class StaffConfigurationApi(Resource):
                     personnel_type=personnel_type,
                     responsibility_range=responsibility_range,
                     staff_list=staff_list,
-                    remark=remark
+                    remark=remark,
+                    duty_time=duty_time
                 )
                 session.execute(stmt)
                 session.commit()
 
+                # 记录历史
+                staff_upload_history(staff_configuration_id, staff_list, duty_time)
+
             save_log(request, Module.INFORMATION, OperationType.UPDATE, StatesCode.SUCCESS)
 
             return jsonify(code=StatesCode.SUCCESS, message='成功')
@@ -418,3 +459,41 @@ class GetFloorConfigurationHistory(Resource):
         except Exception as e:
             save_log(request, Module.INFORMATION, OperationType.INQUIRE, StatesCode.UNKNOWN_ERROR)
             return jsonify(code=StatesCode.UNKNOWN_ERROR, message=str(e))
+
+
+@ns.route('/staff_configuration_history')
+class GetStaffConfigurationHistory(Resource):
+
+    @ns.doc(description='获取安保人员信息配置历史记录')
+    @ns.expect(staff_configuration_details)
+    def get(self):
+        """获取人员历史记录"""
+        staff_configuration_id = request.args.get('id')
+
+        if staff_configuration_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="配置id不能为空")
+
+        try:
+            with Session(current_app.engine) as session:
+                stmt = select(StaffConfigurationHistory).where(
+                    StaffConfigurationHistory.configuration_id == staff_configuration_id
+                )
+                results = session.execute(stmt).scalars().all()
+                results = to_dict(results)
+                for result in results:
+                    pass
+                    staff_list = []
+                    for staff_id in json.loads(result['staff_list']):
+                        stmt = select(SecurityPerson).where(SecurityPerson.id == staff_id)
+                        staff = session.execute(stmt).scalars().first().__dict__
+                        del staff['_sa_instance_state']
+                        staff_list.append(staff)
+                    result['staff_list'] = staff_list
+
+            save_log(request, Module.INFORMATION, OperationType.INQUIRE, StatesCode.SUCCESS)
+
+            return jsonify(code=StatesCode.SUCCESS, message='成功', data=results)
+
+        except Exception as e:
+            save_log(request, Module.INFORMATION, OperationType.INQUIRE, StatesCode.UNKNOWN_ERROR)
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message=str(e))

+ 3 - 2
src/app/api/login.py

@@ -28,7 +28,8 @@ class LoginApi(Resource):
             stmt = select(User).where(User.user_name == username)
             result = session.execute(stmt).scalars().first()
             # statement = session.query(User).filter_by(user_name=username).first()
-
+            message = result.__dict__
+            del message['_sa_instance_state']
         if result is None:
             return jsonify(code=StatesCode.UNKNOWN_ERROR, message='用户不存在')
 
@@ -44,6 +45,6 @@ class LoginApi(Resource):
             g.user_name = result.name  # 存错用户名,用于日志写入
             save_log(request, Module.LOGIN, OperationType.LOGIN, StatesCode.SUCCESS)
 
-            return jsonify(code=StatesCode.SUCCESS, message="登录成功", data=token)
+            return jsonify(code=StatesCode.SUCCESS, message=message, data=token)
         else:
             return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户名或密码错误")

+ 59 - 3
src/app/api/system_index.py

@@ -1,3 +1,5 @@
+import json
+
 import requests
 from flask import request, jsonify
 from flask_restx import Resource, Namespace, reqparse
@@ -42,6 +44,61 @@ class IndexApi(Resource):
         return jsonify(code=StatesCode.SUCCESS, message='成功', data=rep)
 
 
+edit_index = reqparse.RequestParser(bundle_errors=True)
+edit_index.add_argument(name='data', type=str, location='form', required=False)
+# edit_index.add_argument(name='compare', type=str, location='form', required=False)
+# edit_index.add_argument(name='defaultValue', type=str, location='form', required=False)
+# edit_index.add_argument(name='isDel', type=str, location='form', required=False)
+# edit_index.add_argument(name='name', type=str, location='form', required=False)
+# edit_index.add_argument(name='parentId', type=str, location='form', required=False)
+# edit_index.add_argument(name='remark', type=str, location='form', required=False)
+# edit_index.add_argument(name='rule', type=str, location='form', required=False)
+# edit_index.add_argument(name='units', type=str, location='form', required=False)
+# edit_index.add_argument(name='useSite', type=str, location='form', required=False)
+
+
+@ns.route('/edit_index')
+class EditIndex(Resource):
+
+    @ns.doc(description='编辑指标')
+    @ns.expect(edit_index)
+    def post(self):
+        """编辑指标"""
+        # id = request.form.get('id')
+        # compare = request.form.get('compare')
+        # defaultValue = request.form.get('defaultValue')
+        # isDel = request.form.get('isDel')
+        # name = request.form.get('name')
+        # parentId = request.form.get('parentId')
+        # remark = request.form.get('remark')
+        # rule = request.form.get('rule')
+        # units = request.form.get('units')
+        # useSite = request.form.get('useSite')
+        data =request.form.get('data')
+        print(json.loads(data))
+
+        # data = {
+        #     "compare": compare,
+        #     "defaultValue": defaultValue,
+        #     "id": id,
+        #     "isDel": isDel,
+        #     "name": name,
+        #     "parentId": parentId,
+        #     "remark": remark,
+        #     "rule": rule,
+        #     "units": units,
+        #     "useSite": useSite
+        # }
+        rep = requests.post(
+            'http://{host}:{post}/ioc-api/system_index/editIndex'.format(host=config.system_monitoring.HOST,
+                                                                                  post=config.system_monitoring.POST
+                                                                                  ),
+            json=json.loads(data), headers={'clientId': "99", "content-type": "application/json"}).json()
+
+        return jsonify(code=StatesCode.SUCCESS, message='成功', data=rep)
+
+
+
 get_system_menus_list = reqparse.RequestParser(bundle_errors=True)
 get_system_menus_list.add_argument(name='parentId', type=int, location='args', required=False)
 
@@ -65,9 +122,8 @@ class SystemMenusListApi(Resource):
 
         rep = requests.get(
             'http://{host}:{post}/ioc-api/system_index/getSystemMenusList'.format(host=config.system_monitoring.HOST,
-                                                                            post=config.system_monitoring.POST
-                                                                            ),
+                                                                                  post=config.system_monitoring.POST
+                                                                                  ),
             params=params, headers={'clientId': "99"}).json()
 
         return jsonify(code=StatesCode.SUCCESS, message='成功', data=rep)
-

+ 14 - 1
src/app/modle/information.py

@@ -1,4 +1,6 @@
-from sqlalchemy import String, Column, Integer, DateTime, JSON
+from urllib import parse
+
+from sqlalchemy import String, Column, Integer, DateTime, JSON, create_engine
 
 from app.modle import Base
 from app.utils.util import cn_now
@@ -43,6 +45,17 @@ class StaffConfiguration(Base):
     duty_time = Column(JSON, nullable=True, unique=False, index=False, doc="值班日期:{'start_time': '', end_time: ''}")
 
 
+class StaffConfigurationHistory(Base):
+    """安保人员信息配置历史记录"""
+
+    __tablename__ = 'StaffConfigurationHistory'
+
+    id = Column(Integer, primary_key=True, autoincrement=True, nullable=False, unique=True, doc='id')
+    configuration_id = Column(String, nullable=True, unique=False, index=False, doc='配置id')
+    staff_list = Column(String, nullable=True, unique=False, index=False, doc='人员名单')
+    duty_time = Column(JSON, nullable=True, unique=False, index=False, doc="值班日期:{'start_time': '', end_time: ''}")
+
+
 class SecurityPerson(Base):
     """人员表"""