|
@@ -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))
|