Kaynağa Gözat

241103开发。

baoyubo 6 ay önce
ebeveyn
işleme
efac415d35

+ 2 - 1
models/__init__.py

@@ -20,4 +20,5 @@ from .addressbook_base import *
 from .risk_management import *
 from .risk_management import *
 from .online_roll_call import *
 from .online_roll_call import *
 from .duty_base import *
 from .duty_base import *
-from .datafilling_base import *
+from .datafilling_base import *
+from .company_management_base import *

+ 28 - 0
models/company_management_base.py

@@ -0,0 +1,28 @@
+from sqlalchemy import create_engine, Column, BigInteger, String, Text, DateTime, CHAR,Integer,Float
+
+from database import Base
+from datetime import datetime
+
+class CompanyManagementBaseInfo(Base):
+    __tablename__ = 'company_management_base_info'
+
+    id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
+    company_code = Column(String(255), default=None, comment='企业统一社会信用代码')
+    company_name = Column(String(255), nullable=False, comment='企业名称')
+    province = Column(String(255), nullable=False, comment='辖区省')
+    province_code = Column(String(255), nullable=False, comment='辖区省区划编码')
+    city = Column(String(255), nullable=False, comment='辖区市')
+    city_code = Column(String(255), nullable=False, comment='辖区市区划编码')
+    district = Column(String(255), nullable=False, comment='辖区区县')
+    district_code = Column(String(255), nullable=False, comment='辖区区县区划编码')
+    company_address = Column(String(255), nullable=False, comment='企业地址')
+    responsible_person = Column(String(255), nullable=False, comment='联系人')
+    company_type = Column(String(255), default=None, comment='企业类型')
+    phone = Column(String(20), default=None, comment='移动电话')
+    del_flag = Column(String(1), default='0', comment='删除标志(0代表存在 2代表删除)')
+    create_dept = Column(BigInteger, default=None, comment='创建部门')
+    create_by = Column(BigInteger, default=None, comment='创建者')
+    create_time = Column(DateTime, default=datetime.now, comment='创建时间')
+    update_by = Column(BigInteger, default=None, comment='更新者')
+    update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
+    remark = Column(String(500), default=None, comment='备注')

+ 4 - 1
routers/api/__init__.py

@@ -26,6 +26,7 @@ from . import onlineRollCall
 from . import layerConfiguration
 from . import layerConfiguration
 from . import dutyManagement
 from . import dutyManagement
 from . import dataFilling
 from . import dataFilling
+from . import companyManagement
 
 
 from routers.prod_api import system
 from routers.prod_api import system
 from routers.prod_api import auth
 from routers.prod_api import auth
@@ -65,4 +66,6 @@ router.include_router(riskManagement.router, prefix="/riskManagement", tags=["
 
 
 router.include_router(onlineRollCall.router, prefix="/online_roll_call", tags=["在线点名"])
 router.include_router(onlineRollCall.router, prefix="/online_roll_call", tags=["在线点名"])
 
 
-router.include_router(dutyManagement.router, prefix="/duty_management", tags=["值班管理"])
+router.include_router(dutyManagement.router, prefix="/duty_management", tags=["值班管理"])
+
+router.include_router(companyManagement.router, prefix="/companyManagement", tags=["企业管理"]) #企业画像

+ 296 - 0
routers/api/companyManagement/__init__.py

@@ -0,0 +1,296 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from fastapi import APIRouter, Request, Depends,Query, HTTPException, status,BackgroundTasks
+from common.security import valid_access_token
+from fastapi.responses import JSONResponse
+from utils.riskManagement_uitl import *
+from utils.ry_system_util import *
+from sqlalchemy.orm import Session
+from sqlalchemy import and_, or_
+from pydantic import BaseModel
+from datetime import datetime
+from database import get_db
+from typing import List
+from models import *
+from utils import *
+import traceback
+import json
+
+
+router = APIRouter()
+
+
+@router.get('/company/list')
+async def get_company_list(
+    area_code: str = Query(None, description='区域代码'),
+    keyword :str = Query(None, description='企业名称或企业负责人'),
+    page: int = Query(1, gt=0, description='页码'),
+    pageSize: int = Query(10, gt=0, description='每页条目数量'),
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        # 构建查询
+        query = db.query(CompanyManagementBaseInfo)
+        query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
+        # 应用查询条件
+        if area_code:
+            query = query.filter(CompanyManagementBaseInfo.district_code == area_code)
+        if keyword:
+            query = query.filter(or_(CompanyManagementBaseInfo.company_name.like(f'%{keyword}%'),
+                                     CompanyManagementBaseInfo.responsible_person.like(f'%{keyword}%')))
+
+        # 计算总条目数
+        total_items = query.count()
+
+        # 排序
+
+        query = query.order_by(CompanyManagementBaseInfo.create_time.desc())
+        # 执行分页查询
+        Companys = query.offset((page - 1) * pageSize).limit(pageSize).all()
+
+        # 将查询结果转换为列表形式的字典
+        Companys_list = []
+        for company in Companys:
+            company_info = {
+                "id": company.id,
+                "company_name": company.company_name,
+                "province": company.province,
+                "province_code": company.province_code,
+                "city": company.province,
+                "city_code": company.province_code,
+                "district": company.province,
+                "district_code": company.province_code,
+                "company_address": company.company_address,
+                "responsible_person": company.responsible_person,
+                "company_type": company.company_type,
+                "phone":company.phone,
+                "create_time": company.create_time.strftime('%Y-%m-%d')
+            }
+            Companys_list.append(company_info)
+        # 返回结果
+        return {
+            "code": 200,
+            "msg": "成功",
+            "data": Companys_list,
+            "total": total_items,
+            "page": page,
+            "pageSize": pageSize,
+            "totalPages": (total_items + pageSize - 1) // pageSize
+        }
+    except Exception as e:
+        # 处理异常
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=str(e))
+
+
+@router.get('/company/{id}')
+async def get_company(
+    id: str ,
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        # 构建查询
+        query = db.query(CompanyManagementBaseInfo)
+        query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
+        # 应用查询条件
+        if id:
+            query = query.filter(CompanyManagementBaseInfo.id == id)
+
+        # 执行查询
+        company = query.first()
+        if not company:
+            detail = "数据不存在"
+            return JSONResponse(status_code=404, content={"code":404,"msg":"数据不存在"})
+
+        company_result = {
+                "id": company.id,
+                "company_name": company.company_name,
+                "province": company.province,
+                "province_code": company.province_code,
+                "city": company.province,
+                "city_code": company.province_code,
+                "district": company.province,
+                "district_code": company.province_code,
+                "company_address": company.company_address,
+                "responsible_person": company.responsible_person,
+                "company_type": company.company_type,
+                "phone":company.phone,
+                "create_time": company.create_time.strftime('%Y-%m-%d')
+            }
+
+        # 返回结果
+        return {
+            "code": 200,
+            "msg": "成功",
+            "data": company_result
+        }
+    except Exception as e:
+        # 处理异常
+        traceback.print_exc()
+        if str(e)=='':
+            e = detail
+        raise HTTPException(status_code=500, detail=str(e))
+
+
+
+
+@router.post('/company/create')
+async def create_company(
+    db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    try:
+
+        new_company = CompanyManagementBaseInfo(
+            id=new_guid(),
+            company_name = body['company_name'],
+            province = body['province'],
+            province_code = body['province_code'],
+            city = body['city'],
+            city_code = body['city_code'],
+            district = body['district'],
+            district_code = body['district_code'],
+            company_address = body['company_address'],
+            responsible_person = body['responsible_person'],
+            company_type =body['company_type'],
+            phone = body['phone'],
+            create_by = user_id
+        )
+        # 添加到数据库会话并提交
+        db.add(new_company)
+        db.commit()
+
+        # 返回创建成功的响应
+        return {
+            "code": 200,
+            "msg": "成功",
+            "data": None
+        }
+    except Exception as e:
+        # 处理异常
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=str(e))
+
+
+@router.put('/company/update')
+async def update_company(
+    db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        # 提取请求数据
+        query = db.query(CompanyManagementBaseInfo)
+        query = query.filter(CompanyManagementBaseInfo.id == body['id'])
+        query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
+        company = query.first()
+
+        if not company:
+            return JSONResponse(status_code=404, content={"code": 404, "msg": "数据不存在"})
+        if 'company_name' in body:
+            company.company_name = body['company_name']
+        if 'province' in body:
+            company.province = body['province']
+        if 'province_code' in body:
+            company.province_code = body['province_code']
+        if 'city' in body:
+            company.city = body['city']
+        if 'city_code' in body:
+            company.city_code = body['city_code']
+        if 'district' in body:
+            company.district = body['district']
+        if 'district_code' in body:
+            company.district_code = body['district_code']
+        if 'company_address' in body:
+            company.company_address = body['company_address']
+        if 'responsible_person' in body:
+            company.responsible_person = body['responsible_person']
+        if 'company_type' in body:
+            company.company_type = body['company_type']
+        if 'phone' in body:
+            company.phone = body['phone']
+        company.update_by = user_id
+
+        # 更新到数据库会话并提交
+        db.commit()
+        db.refresh(company)  # 可选,如果需要刷新实例状态
+
+        # 返回创建成功的响应
+        return {
+            "code": 200,
+            "msg": "成功",
+            "data": None
+        }
+    except Exception as e:
+        # 处理异常
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=str(e))
+
+@router.delete('/company/delete')
+async def delete_companys(
+        companyIds: list,
+        db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        # 提取请求数据
+        query = db.query(CompanyManagementBaseInfo)
+        query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
+        query = query.filter(CompanyManagementBaseInfo.id.in_(companyIds))
+        companys = query.all()
+        if not companys:
+            return JSONResponse(status_code=404, content={"code": 404, "msg": "数据不存在"})
+        for company in companys:
+            company.del_flag = '2'
+            company.update_by=user_id
+        # 更新到数据库会话并提交
+        db.commit()
+
+        # 返回创建成功的响应
+        return {
+            "code": 200,
+            "msg": "删除成功",
+            "data": None
+        }
+    except Exception as e:
+        # 处理异常
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=str(e))
+
+@router.delete('/company/delete/{companyId}')
+async def delete_company(
+        companyId: str,
+        db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        # 提取请求数据
+        query = db.query(CompanyManagementBaseInfo)
+        query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
+        query = query.filter(CompanyManagementBaseInfo.id==companyId)
+        company = query.first()
+        if not company:
+            return JSONResponse(status_code=404, content={"code": 404, "msg": "数据不存在"})
+
+        company.del_flag = '2'
+        company.update_by = user_id
+        # 更新到数据库会话并提交
+        db.commit()
+        db.refresh(company)  # 可选,如果需要刷新实例状态
+
+        # 返回创建成功的响应
+        return {
+            "code": 200,
+            "msg": "删除成功",
+            "data": None
+        }
+    except Exception as e:
+        # 处理异常
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=str(e))

+ 1 - 1
routers/api/riskManagement/rescue_resources.py

@@ -72,7 +72,7 @@ async def get_inspection_task_list(
                 "task_range": task.task_range,
                 "task_range": task.task_range,
                 "task_status": task_status,
                 "task_status": task_status,
                 "create_by":create_by.nick_name,
                 "create_by":create_by.nick_name,
-                "create_time": task.create_time#.strftime('%Y-%m-%d')
+                "create_time": task.create_time.strftime('%Y-%m-%d %H:%M:%S')
             }
             }
             RiskTasks_list.append(task_info)
             RiskTasks_list.append(task_info)
         # 返回结果
         # 返回结果

+ 31 - 0
routers/prod_api/system/user/__init__.py

@@ -4,6 +4,7 @@
 from fastapi import APIRouter, Request, Depends,Query,HTTPException
 from fastapi import APIRouter, Request, Depends,Query,HTTPException
 from database import get_db
 from database import get_db
 from sqlalchemy.orm import Session
 from sqlalchemy.orm import Session
+from fastapi.responses import JSONResponse
 from models import *
 from models import *
 from utils import *
 from utils import *
 from utils.ry_system_util import *
 from utils.ry_system_util import *
@@ -57,7 +58,15 @@ async def usercreate(
             sex = body['sex']
             sex = body['sex']
         else:
         else:
             sex = None
             sex = None
+
         userName = body['userName']
         userName = body['userName']
+        user = user_name_get_user_info(db,userName)
+        if user:
+            return JSONResponse(status_code=404, content={"code": 404, "msg": "用户名称已存在"})
+        pattern = r'^[a-zA-Z0-9_]+$'
+        if re.match(pattern, userName) == False:
+            return JSONResponse(status_code=404, content={"code": 404, "msg": "用户名称又字母大小写、阿拉伯数字和下划线组成"})
+
         nickName = body['nickName']
         nickName = body['nickName']
         roleIds = body['roleIds']
         roleIds = body['roleIds']
         postIds = body['postIds']
         postIds = body['postIds']
@@ -148,6 +157,28 @@ async def userupdate(
         traceback.print_exc()
         traceback.print_exc()
         raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
         raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
 
 
+@router.put('/resetPwd')
+async def userupdate(
+                    db: Session = Depends(get_db),
+                    user_id: int = Depends(valid_access_token),
+                    body = Depends(remove_xss_json)
+):
+    try:
+        user_id_1 = body['userId']
+        user = user_id_get_user_info(db,user_id_1)
+        password = body['password']
+
+        user.password='$2a$10$b8yUzN0C71sbz.PhNOCgJe.Tu1yWC3RNrTyjSQ8p1W0.aaUXUJ.Ne'
+        user.update_by=user_id
+
+        db.commit()
+        return {"code": 200, "msg": "更新成功", "data": None}
+
+
+    except Exception as e:
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
+
 
 
 
 
 
 

+ 7 - 0
utils/ry_system_util.py

@@ -32,6 +32,13 @@ def user_id_get_user_info(db,user_id):
     query = query.filter(SysUser.user_id == user_id)
     query = query.filter(SysUser.user_id == user_id)
     return query.first()
     return query.first()
 
 
+def user_name_get_user_info(db,user_name):
+    # 用户id获取用户信息
+    query = db.query(SysUser)
+    query = query.filter(SysUser.del_flag != '2')
+    query = query.filter(SysUser.user_name == user_name)
+    return query.first()
+
 def user_id_get_user_roleIds(db,user_id):
 def user_id_get_user_roleIds(db,user_id):
     query = db.query(SysUserRole)
     query = db.query(SysUserRole)
     # query = query.filter(SysUserRole.del_flag != '2')
     # query = query.filter(SysUserRole.del_flag != '2')