libushang пре 6 дана
родитељ
комит
1bbf582f2e
3 измењених фајлова са 65 додато и 13 уклоњено
  1. 4 1
      models/duty_base.py
  2. 46 1
      routers/api/dutyManagement/duty.py
  3. 15 11
      routers/api/dutyManagement/schedule.py

+ 4 - 1
models/duty_base.py

@@ -21,7 +21,7 @@ class DutyShift(Base):
     standby_staff_id = Column(Integer, nullable=False, comment="备班人员ID")
 
     duty_type = Column(String, default='', server_default='', comment="值班类型")
-    shift_status = Column(Integer, default='0', server_default='0', comment="值班状态 0 默认 1已交班")
+    shift_status = Column(Integer, default='0', server_default='0', comment="值班状态 0 默认 1已交班 2已接班")
     handover_user_id = Column(Integer, comment="交班人员ID")
     handover_time = Column(DateTime, comment="交班时间")
     dept_id = Column(Integer, nullable=False, comment="部门ID")
@@ -30,6 +30,9 @@ class DutyShift(Base):
     book_id = Column(Integer, default='0', server_default='0', comment="导入值班表ID")
     onduty_user = Column(String, default='', server_default='', comment='值班人员')
     onduty_leader = Column(String, default='', server_default='', comment='带班领导')
+
+    takeover_user_id = Column(Integer, comment="接班人员ID")
+    takeover_time = Column(DateTime, comment="接班时间")
     
     class Config:
         orm_mode = True

+ 46 - 1
routers/api/dutyManagement/duty.py

@@ -393,7 +393,11 @@ async def handover(
         where = and_(DutyShift.shift_id == shift_id)
         row = db.query(DutyShift).filter(where).first()
         if row is None:
-            raise AppException(1, "班次不存在")
+            new_duty = DutyShift(shift_id = shift_id, shift_status = 0)
+            db.add(new_duty)
+            db.commit()
+
+            row = db.query(DutyShift).filter(where).first()
         
         if row.shift_status == 1:
             raise AppException(1, "班次已交班,不用重复操作")
@@ -419,6 +423,47 @@ async def handover(
         traceback.print_exc()
         # 处理异常
         raise HTTPException(status_code=500, detail=str(e))
+    
+
+# 接班
+@router.post("/takeover")
+async def takeover(
+    db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        shift_id = body['shift_id']
+
+        where = and_(DutyShift.shift_id == shift_id)
+        row = db.query(DutyShift).filter(where).first()
+        if row is None:
+            raise AppException(1, "班次不存在")
+        
+        if row.shift_status == 2:
+            raise AppException(1, "班次已接班,不用重复操作")
+        
+        row.shift_status = 2
+        row.takeover_time = datetime.now()
+        row.takeover_user_id = user_id
+        db.commit()
+
+        return {
+            "code": 200,
+            "msg": "接班成功",
+            "data": shift_id
+        }
+
+    except AppException as e:
+        return {
+            "code": e.code,
+            "msg": e.msg
+        }
+
+    except Exception as e:
+        traceback.print_exc()
+        # 处理异常
+        raise HTTPException(status_code=500, detail=str(e))
 
 # 值班表查询    
 @router.get("/duty_book_by_area")

+ 15 - 11
routers/api/dutyManagement/schedule.py

@@ -10,7 +10,7 @@ from sqlalchemy.sql import func
 from common.auth_user import *
 from pydantic import BaseModel
 from common.db import db_dept
-from common.db import db_czrz
+from common.db import db_czrz, db_user
 from exceptions import AppException, HmacException
 from database import get_db
 from typing import List
@@ -1324,12 +1324,7 @@ async def duty_by_day(
     try:
         data = {}
         # 默认值
-        data['users'] = {
-            "user1":  "-",
-            "user2": "-", 
-            "user3":  "-",
-            "user4": "-"
-        }
+        data['users'] = []
 
         # now = datetime.now()
 
@@ -1377,7 +1372,6 @@ async def duty_by_day(
         # 转换为字典
         data_list = []
         duty_id = []
-        shift_status = 0
         for d in duty_data:
             duty_id.append(d.id)
 
@@ -1451,9 +1445,19 @@ async def duty_by_day(
             })
         data['todos'] = items
 
-        data['shift_id'] = duty_id
-        data['shift_status'] = shift_status
-        data['handover_time'] = ''
+        data['shift_id'] = 0
+        data['shift_status'] = 0
+
+        if len(duty_id) > 0:
+            data['shift_id'] = duty_id[0]
+            shift_info = db.query(DutyShift).filter(DutyShift.shift_id == duty_id[0]).first()
+            if shift_info:
+                data['shift_status'] = shift_info.shift_status
+                data['handover_user'] = db_user.get_nick_name_by_id(db, shift_info.handover_user_id)
+                data['handover_time'] = get_datetime_str(shift_info.handover_time)
+                data['takeover_user'] = db_user.get_nick_name_by_id(db, shift_info.takeover_user_id)
+                data['takeover_time'] = get_datetime_str(shift_info.takeover_time)
+            
             
         # 构建返回结果