feat: add backend autocomplete for suppliers and users in inbound
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
This commit is contained in:
@ -111,3 +111,25 @@ def get_history(id):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return jsonify({"code": 500, "msg": str(e)}), 500
|
return jsonify({"code": 500, "msg": str(e)}), 500
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 6. 供应商建议
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
@inbound_buy_bp.route('/suggestions/suppliers', methods=['GET'])
|
||||||
|
def get_supplier_suggestions():
|
||||||
|
base_id = request.args.get('base_id', type=int)
|
||||||
|
if not base_id:
|
||||||
|
return jsonify({"code": 400, "msg": "base_id required"}), 400
|
||||||
|
data = BuyInboundService.get_history_suppliers(base_id)
|
||||||
|
return jsonify({"code": 200, "msg": "success", "data": data})
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 7. 系统用户建议
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
@inbound_buy_bp.route('/suggestions/users', methods=['GET'])
|
||||||
|
def get_user_suggestions():
|
||||||
|
keyword = request.args.get('keyword', '')
|
||||||
|
data = BuyInboundService.search_system_users(keyword)
|
||||||
|
return jsonify({"code": 200, "msg": "success", "data": data})
|
||||||
|
|||||||
@ -104,3 +104,13 @@ def get_history(id):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return jsonify({"code": 500, "msg": str(e)}), 500
|
return jsonify({"code": 500, "msg": str(e)}), 500
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 6. 系统用户建议
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
@inbound_product_bp.route('/suggestions/users', methods=['GET'])
|
||||||
|
def get_user_suggestions():
|
||||||
|
keyword = request.args.get('keyword', '')
|
||||||
|
data = ProductInboundService.search_system_users(keyword)
|
||||||
|
return jsonify({"code": 200, "msg": "success", "data": data})
|
||||||
|
|||||||
@ -118,3 +118,13 @@ def get_history(id):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return jsonify({"code": 500, "msg": str(e)}), 500
|
return jsonify({"code": 500, "msg": str(e)}), 500
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 6. 系统用户建议
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
@inbound_semi_bp.route('/suggestions/users', methods=['GET'])
|
||||||
|
def get_user_suggestions():
|
||||||
|
keyword = request.args.get('keyword', '')
|
||||||
|
data = SemiInboundService.search_system_users(keyword)
|
||||||
|
return jsonify({"code": 200, "msg": "success", "data": data})
|
||||||
|
|||||||
@ -138,3 +138,27 @@ def delete_service(service_id):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
current_app.logger.error(f'删除服务权益失败: {str(e)}')
|
current_app.logger.error(f'删除服务权益失败: {str(e)}')
|
||||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 供应商建议
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
@inbound_bp.route('/service/suggestions/providers', methods=['GET'])
|
||||||
|
@jwt_required()
|
||||||
|
def get_provider_suggestions():
|
||||||
|
base_id = request.args.get('base_id', type=int)
|
||||||
|
if not base_id:
|
||||||
|
return jsonify({'code': 400, 'msg': 'base_id required'}), 400
|
||||||
|
data = ServiceService.get_history_providers(base_id)
|
||||||
|
return jsonify({'code': 200, 'msg': 'success', 'data': data})
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 系统用户建议
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
@inbound_bp.route('/service/suggestions/users', methods=['GET'])
|
||||||
|
@jwt_required()
|
||||||
|
def get_user_suggestions():
|
||||||
|
keyword = request.args.get('keyword', '')
|
||||||
|
data = ServiceService.search_system_users(keyword)
|
||||||
|
return jsonify({'code': 200, 'msg': 'success', 'data': data})
|
||||||
|
|||||||
@ -352,3 +352,45 @@ class BuyInboundService:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return {"total": 0, "items": []}
|
return {"total": 0, "items": []}
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# 6. 供应商历史查询
|
||||||
|
# ============================================================
|
||||||
|
@staticmethod
|
||||||
|
def get_history_suppliers(base_id):
|
||||||
|
"""返回该物料关联的供应商列表(去重)"""
|
||||||
|
try:
|
||||||
|
query = db.session.query(StockBuy.supplier_name).filter(
|
||||||
|
StockBuy.base_id == base_id,
|
||||||
|
StockBuy.supplier_name.isnot(None)
|
||||||
|
).distinct().order_by(StockBuy.supplier_name)
|
||||||
|
suppliers = [row[0] for row in query.all()]
|
||||||
|
return suppliers
|
||||||
|
except Exception:
|
||||||
|
return []
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# 7. 系统用户搜索
|
||||||
|
# ============================================================
|
||||||
|
@staticmethod
|
||||||
|
def search_system_users(keyword):
|
||||||
|
"""搜索系统用户(活跃状态)"""
|
||||||
|
from app.models.system import SysUser
|
||||||
|
try:
|
||||||
|
query = SysUser.query.filter(SysUser.status == 'active')
|
||||||
|
if keyword:
|
||||||
|
kw = f'%{keyword}%'
|
||||||
|
query = query.filter(db.or_(
|
||||||
|
SysUser.username.ilike(kw),
|
||||||
|
SysUser.email.ilike(kw)
|
||||||
|
))
|
||||||
|
query = query.order_by(SysUser.username)
|
||||||
|
users = []
|
||||||
|
for u in query.limit(20).all():
|
||||||
|
users.append({
|
||||||
|
'value': u.username,
|
||||||
|
'email': u.email
|
||||||
|
})
|
||||||
|
return users
|
||||||
|
except Exception:
|
||||||
|
return []
|
||||||
|
|||||||
@ -351,3 +351,29 @@ class ProductInboundService:
|
|||||||
except:
|
except:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return {"total": 0, "items": []}
|
return {"total": 0, "items": []}
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# 7. 系统用户搜索
|
||||||
|
# ============================================================
|
||||||
|
@staticmethod
|
||||||
|
def search_system_users(keyword):
|
||||||
|
"""搜索系统用户(活跃状态)"""
|
||||||
|
from app.models.system import SysUser
|
||||||
|
try:
|
||||||
|
query = SysUser.query.filter(SysUser.status == 'active')
|
||||||
|
if keyword:
|
||||||
|
kw = f'%{keyword}%'
|
||||||
|
query = query.filter(db.or_(
|
||||||
|
SysUser.username.ilike(kw),
|
||||||
|
SysUser.email.ilike(kw)
|
||||||
|
))
|
||||||
|
query = query.order_by(SysUser.username)
|
||||||
|
users = []
|
||||||
|
for u in query.limit(20).all():
|
||||||
|
users.append({
|
||||||
|
'value': u.username,
|
||||||
|
'email': u.email
|
||||||
|
})
|
||||||
|
return users
|
||||||
|
except Exception:
|
||||||
|
return []
|
||||||
|
|||||||
@ -453,3 +453,29 @@ class SemiInboundService:
|
|||||||
print(f"List Error: {e}")
|
print(f"List Error: {e}")
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return {"total": 0, "items": []}
|
return {"total": 0, "items": []}
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# 7. 系统用户搜索
|
||||||
|
# ============================================================
|
||||||
|
@staticmethod
|
||||||
|
def search_system_users(keyword):
|
||||||
|
"""搜索系统用户(活跃状态)"""
|
||||||
|
from app.models.system import SysUser
|
||||||
|
try:
|
||||||
|
query = SysUser.query.filter(SysUser.status == 'active')
|
||||||
|
if keyword:
|
||||||
|
kw = f'%{keyword}%'
|
||||||
|
query = query.filter(db.or_(
|
||||||
|
SysUser.username.ilike(kw),
|
||||||
|
SysUser.email.ilike(kw)
|
||||||
|
))
|
||||||
|
query = query.order_by(SysUser.username)
|
||||||
|
users = []
|
||||||
|
for u in query.limit(20).all():
|
||||||
|
users.append({
|
||||||
|
'value': u.username,
|
||||||
|
'email': u.email
|
||||||
|
})
|
||||||
|
return users
|
||||||
|
except Exception:
|
||||||
|
return []
|
||||||
|
|||||||
@ -162,3 +162,45 @@ class ServiceService:
|
|||||||
'page': page,
|
'page': page,
|
||||||
'per_page': per_page
|
'per_page': per_page
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# 供应商历史查询
|
||||||
|
# ============================================================
|
||||||
|
@classmethod
|
||||||
|
def get_history_providers(cls, base_id):
|
||||||
|
"""返回该物料关联的服务商列表(去重)"""
|
||||||
|
try:
|
||||||
|
query = db.session.query(StockService.provider_name).filter(
|
||||||
|
StockService.base_id == base_id,
|
||||||
|
StockService.provider_name.isnot(None)
|
||||||
|
).distinct().order_by(StockService.provider_name)
|
||||||
|
providers = [row[0] for row in query.all()]
|
||||||
|
return providers
|
||||||
|
except Exception:
|
||||||
|
return []
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# 系统用户搜索
|
||||||
|
# ============================================================
|
||||||
|
@classmethod
|
||||||
|
def search_system_users(cls, keyword):
|
||||||
|
"""搜索系统用户(活跃状态)"""
|
||||||
|
from app.models.system import SysUser
|
||||||
|
try:
|
||||||
|
query = SysUser.query.filter(SysUser.status == 'active')
|
||||||
|
if keyword:
|
||||||
|
kw = f'%{keyword}%'
|
||||||
|
query = query.filter(db.or_(
|
||||||
|
SysUser.username.ilike(kw),
|
||||||
|
SysUser.email.ilike(kw)
|
||||||
|
))
|
||||||
|
query = query.order_by(SysUser.username)
|
||||||
|
users = []
|
||||||
|
for u in query.limit(20).all():
|
||||||
|
users.append({
|
||||||
|
'value': u.username,
|
||||||
|
'email': u.email
|
||||||
|
})
|
||||||
|
return users
|
||||||
|
except Exception:
|
||||||
|
return []
|
||||||
|
|||||||
Reference in New Issue
Block a user