|
@@ -1313,3 +1313,162 @@ def duty_today(
|
|
|
# }]
|
|
|
# }
|
|
|
|
|
|
+
|
|
|
+# 小屏值班使用
|
|
|
+@router.get("/duty_by_day")
|
|
|
+async def duty_by_day(
|
|
|
+ day: str,
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id = Depends(valid_access_token)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ data = {}
|
|
|
+ # 默认值
|
|
|
+ data['users'] = {
|
|
|
+ "user1": "-",
|
|
|
+ "user2": "-",
|
|
|
+ "user3": "-",
|
|
|
+ "user4": "-"
|
|
|
+ }
|
|
|
+
|
|
|
+ # now = datetime.now()
|
|
|
+
|
|
|
+ # 往前推8小时30分钟
|
|
|
+ # eight_and_half_hours_ago = now - timedelta(hours=8, minutes=30)
|
|
|
+ eight_and_half_hours_ago = datetime.strptime(day, "%Y-%m-%d")
|
|
|
+
|
|
|
+ # 获取对应的日期
|
|
|
+ date_of_eight_and_half_hours_ago = eight_and_half_hours_ago.date()
|
|
|
+
|
|
|
+ query = db.query(DutySchedule)
|
|
|
+
|
|
|
+ query = query.filter(DutySchedule.del_flag != '2' and DutySchedule.duty_date==date_of_eight_and_half_hours_ago)
|
|
|
+ now_user_info = user_id_get_user_info(db, user_id)
|
|
|
+ if now_user_info:
|
|
|
+ user_unit = mobile_phone_get_dept_id(db, mpfun.dec_data(now_user_info.phonenumber),
|
|
|
+ get_duty_unit_id_list(db))
|
|
|
+ if user_unit==0:
|
|
|
+ user_unit=1
|
|
|
+ query = query.filter(
|
|
|
+ DutySchedule.duty_unit == user_unit)
|
|
|
+ else:
|
|
|
+ query = query.filter(
|
|
|
+ DutySchedule.duty_unit == 1)
|
|
|
+
|
|
|
+ subquery = db.query(
|
|
|
+ DutySchedule.shift_type,
|
|
|
+ func.max(DutySchedule.update_time).label("latest_create_time")
|
|
|
+ ).filter(DutySchedule.del_flag != '2' and DutySchedule.duty_date==date_of_eight_and_half_hours_ago).group_by(
|
|
|
+ DutySchedule.shift_type
|
|
|
+ ).subquery()
|
|
|
+
|
|
|
+ query = query.join(
|
|
|
+ subquery,
|
|
|
+ and_(
|
|
|
+ DutySchedule.shift_type == subquery.c.shift_type,
|
|
|
+ DutySchedule.update_time == subquery.c.latest_create_time
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
+ query = query.order_by(DutySchedule.update_time.desc())
|
|
|
+ duty_data = query.all()
|
|
|
+ # print(query,len(duty_data),duty_data,date_of_eight_and_half_hours_ago,mobile_phone_get_dept_id(db, mpfun.dec_data(now_user_info.phonenumber),
|
|
|
+ # get_duty_unit_id_list(db)))
|
|
|
+ # 转换为字典
|
|
|
+ data_list = []
|
|
|
+ duty_id = []
|
|
|
+ shift_status = 0
|
|
|
+ for d in duty_data:
|
|
|
+ duty_id.append(d.id)
|
|
|
+
|
|
|
+ user_data = []
|
|
|
+ class_leader = []
|
|
|
+ main_class=[]
|
|
|
+ deputy_class = []
|
|
|
+ prepare_class = []
|
|
|
+
|
|
|
+ user_list = duty_id_get_user_id(db, d.id)
|
|
|
+ for user_info in user_list:
|
|
|
+ contact_info = user_id_get_info(db, user_info.personnel_id)
|
|
|
+ if contact_info:
|
|
|
+ user_data.append({"position_id": user_info.position_id,
|
|
|
+ "personnel_id": user_info.personnel_id,
|
|
|
+ "name": contact_info.name,
|
|
|
+ "position": contact_info.position,
|
|
|
+ "mobile_phone": contact_info.mobile_phone,
|
|
|
+ "office_phone": contact_info.office_phone,
|
|
|
+ "department_id": contact_info.department_id,
|
|
|
+ "yzy_userid": contact_info.userid})
|
|
|
+ if user_info.position_id==1:
|
|
|
+ class_leader.append(contact_info.name)
|
|
|
+ if user_info.position_id==2:
|
|
|
+ main_class.append(contact_info.name)
|
|
|
+ if user_info.position_id==8:
|
|
|
+ deputy_class.append(contact_info.name)
|
|
|
+ if user_info.position_id==9:
|
|
|
+ prepare_class.append(contact_info.name)
|
|
|
+ else:
|
|
|
+ user_data.append({"position_id": user_info.position_id,
|
|
|
+ "personnel_id": user_info.personnel_id})
|
|
|
+ data_list.append({
|
|
|
+ "id": d.id,
|
|
|
+ "start_time": d.start_time.strftime('%Y-%m-%d %H:%M:%S') if d.start_time else '',
|
|
|
+ "end_time": d.end_time.strftime('%Y-%m-%d %H:%M:%S') if d.end_time else '',
|
|
|
+ "duty_date": d.duty_date,
|
|
|
+ "shift_type": d.shift_type,
|
|
|
+ "duty_unit": d.duty_unit,
|
|
|
+ "duty_type": d.duty_type,
|
|
|
+ "createTime": d.create_time.strftime('%Y-%m-%d %H:%M:%S') if d.create_time else '',
|
|
|
+ "user_data": user_data,
|
|
|
+ "class_leader":"、".join(class_leader),
|
|
|
+ "main_class":"、".join(main_class),
|
|
|
+ "deputy_class":"、".join(deputy_class),
|
|
|
+ "prepare_class":"、".join(prepare_class)
|
|
|
+ })
|
|
|
+
|
|
|
+ data['users']["user1"] = "、".join(class_leader)
|
|
|
+ data['users']["user2"] = "、".join(main_class)
|
|
|
+ data['users']["user3"] = "、".join(deputy_class)
|
|
|
+ data['users']["user4"] = "、".join(prepare_class)
|
|
|
+
|
|
|
+ # 提醒事项
|
|
|
+ where = and_(DutyNotify.del_flag == '0', DutyNotify.notify_type == '1', DutyNotify.shift_id.in_(duty_id))
|
|
|
+ rows = db.query(DutyNotify).filter(where).all()
|
|
|
+ items = []
|
|
|
+ for row in rows:
|
|
|
+ items.append({
|
|
|
+ "text": row.notify_content,
|
|
|
+ "time": get_datetime_str(row.create_time)
|
|
|
+ })
|
|
|
+ data['remainds'] = items
|
|
|
+
|
|
|
+ # 待办事项
|
|
|
+ where = and_(DutyNotify.del_flag == '0', DutyNotify.notify_type == '2', DutyNotify.shift_id.in_(duty_id))
|
|
|
+ rows = db.query(DutyNotify).filter(where).all()
|
|
|
+ items = []
|
|
|
+ for row in rows:
|
|
|
+ items.append({
|
|
|
+ "text": row.notify_content,
|
|
|
+ "time": get_datetime_str(row.create_time)
|
|
|
+ })
|
|
|
+ data['todos'] = items
|
|
|
+
|
|
|
+ data['shift_id'] = duty_id
|
|
|
+ data['shift_status'] = shift_status
|
|
|
+ data['handover_time'] = ''
|
|
|
+
|
|
|
+ # 构建返回结果
|
|
|
+
|
|
|
+ result = {
|
|
|
+ "data": data,
|
|
|
+ "code": 200,
|
|
|
+ "msg": "查询成功"
|
|
|
+ }
|
|
|
+ return result
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ traceback.print_exc()
|
|
|
+ return JSONResponse(status_code=404, content={
|
|
|
+ 'code': 404,
|
|
|
+ 'msg': str(e)
|
|
|
+ })
|