Browse Source

Merge branch '1.1.3-master' of http://8.130.72.63:18081/shenzhen/tjdify into 1.1.3-guoyq

guoyuanquan@mail.taiji.com.cn 2 months ago
parent
commit
97f10a98b5
2 changed files with 50 additions and 11 deletions
  1. 12 5
      api/controllers/console/dept/depts.py
  2. 38 6
      api/services/dept_service.py

+ 12 - 5
api/controllers/console/dept/depts.py

@@ -88,26 +88,33 @@ class DeptListApi(Resource):
     def post(self):
     def post(self):
         data = request.get_json()
         data = request.get_json()
         if not data:
         if not data:
+            return jsonify({"error": "Invalid JSON"}), 400
+
+        if not data:
             raise NotFound("Invalid JSON")
             raise NotFound("Invalid JSON")
         dept_name = data.get("dept_name")
         dept_name = data.get("dept_name")
         dept_id = data.get("dept_id")
         dept_id = data.get("dept_id")
+        parent_dept_id = data.get("parent_dept_id")
+
         dept_by_name = DeptService.get_dept_by_name(dept_name)
         dept_by_name = DeptService.get_dept_by_name(dept_name)
         if dept_id not in {None, ""}:
         if dept_id not in {None, ""}:
             dept_by_id = DeptService.get_dept_by_id(dept_id)
             dept_by_id = DeptService.get_dept_by_id(dept_id)
             if dept_by_id != None:
             if dept_by_id != None:
-                if dept_by_id.dept_name != dept_name:
+                if dept_by_id.dept_name != dept_name or dept_by_id.parent_dept_id != parent_dept_id:
                     # 修改
                     # 修改
                     if dept_by_name != None:
                     if dept_by_name != None:
-                        return jsonify({"error": "'dept_name' repeat"}), 400
+                        if dept_by_name.dept_id == dept_by_id.dept_id and dept_by_id.parent_dept_id != parent_dept_id:
+                            DeptService.update_dept(dept_id, dept_name, current_user, parent_dept_id)
+
                     else:
                     else:
-                        DeptService.update_dept(dept_id, dept_name, current_user)
+                        DeptService.update_dept(dept_id, dept_name, current_user, parent_dept_id)
             else:
             else:
                 raise NotFound("Dept not found.")
                 raise NotFound("Dept not found.")
         else:
         else:
             if dept_by_name != None:
             if dept_by_name != None:
-                return jsonify({"error": "'dept_name' repeat"}), 400
+                raise ValueError("dept_name cannot repeat.")
             else:
             else:
-                DeptService.save_dept(dept_name, current_user)
+                DeptService.save_dept(dept_name, current_user, parent_dept_id)
         return {"result": "success"}, 204
         return {"result": "success"}, 204
 
 
 
 

+ 38 - 6
api/services/dept_service.py

@@ -1,5 +1,7 @@
 import datetime
 import datetime
 
 
+from sqlalchemy import or_
+
 from extensions.ext_database import db
 from extensions.ext_database import db
 from models.account import Account
 from models.account import Account
 from models.dept import Dept
 from models.dept import Dept
@@ -40,9 +42,28 @@ class DeptService:
     @staticmethod
     @staticmethod
     def get_dept_list():
     def get_dept_list():
         dept_list = []
         dept_list = []
-        dept_results = db.session.query(Dept.dept_id, Dept.dept_name).filter(Dept.status == "active").all()
+
+        condition = or_(Dept.parent_dept_id == None, Dept.parent_dept_id == "")
+        dept_results = db.session.query(Dept).filter(Dept.status == "active", condition).all()
+
+        print(str(dept_results))
         for dept_row in dept_results:
         for dept_row in dept_results:
-            dept_list.append({"dept_id": dept_row.dept_id, "dept_name": dept_row.dept_name})
+            children_dept_list = []
+            children_depts = (
+                db.session.query(Dept.dept_id, Dept.dept_name)
+                .filter(Dept.status == "active", Dept.parent_dept_id == dept_row.dept_id)
+                .all()
+            )
+            for children_dept in children_depts:
+                children_dept_list.append({"dept_id": children_dept.dept_id, "dept_name": children_dept.dept_name})
+            dept_list.append(
+                {
+                    "parent_dept_id": "",
+                    "dept_id": dept_row.dept_id,
+                    "dept_name": dept_row.dept_name,
+                    "children": children_dept_list,
+                }
+            )
         return dept_list
         return dept_list
 
 
     @staticmethod
     @staticmethod
@@ -65,22 +86,33 @@ class DeptService:
         return dept
         return dept
 
 
     @staticmethod
     @staticmethod
-    def save_dept(dept_name, current_user):
+    def save_dept(dept_name, current_user, parent_dept_id):
         dept = Dept(
         dept = Dept(
             dept_name=dept_name,
             dept_name=dept_name,
             status="active",
             status="active",
             created_at=datetime.datetime.now(),
             created_at=datetime.datetime.now(),
             created_by=current_user.id,
             created_by=current_user.id,
+            parent_dept_id=parent_dept_id,
         )
         )
         db.session.add(dept)
         db.session.add(dept)
         db.session.flush()
         db.session.flush()
         db.session.commit()
         db.session.commit()
 
 
     @staticmethod
     @staticmethod
-    def update_dept(dept_id, dept_name, current_user):
-        db.session.query(Dept).filter(Dept.dept_id == dept_id).update(
-            {"updated_by": current_user.id, "updated_at": datetime.datetime.now(), "dept_name": dept_name}
+    def update_dept(dept_id, dept_name, current_user, parent_dept_id):
+        sql = (
+            db.session.query(Dept)
+            .filter(Dept.dept_id == dept_id)
+            .update(
+                {
+                    "updated_by": current_user.id,
+                    "updated_at": datetime.datetime.now(),
+                    "dept_name": dept_name,
+                    "parent_dept_id": parent_dept_id,
+                }
+            )
         )
         )
+        print(str(sql))
         db.session.commit()
         db.session.commit()
 
 
     @staticmethod
     @staticmethod