From 5d5800211868fd916b278c2e927011245b489c8a Mon Sep 17 00:00:00 2001 From: "DESKTOP-1JS6RSM\\Admin" Date: Wed, 25 Feb 2026 09:54:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E9=97=B4=EF=BC=8C=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=EF=BC=8C=E9=87=87=E9=9B=86=E7=AB=AF=E6=B7=BB=E5=8A=A0=E7=BC=96?= =?UTF-8?q?=E5=8F=B7=E5=94=AF=E4=B8=80=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iti/applications/routes/iot/device_ctl.py | 22 +++++++++++++++++++ iti/applications/routes/iot/endpoint_ctl.py | 22 +++++++++++++++++++ iti/applications/routes/iot/workshop_ctl.py | 24 ++++++++++++++++++++- 3 files changed, 67 insertions(+), 1 deletion(-) diff --git a/iti/applications/routes/iot/device_ctl.py b/iti/applications/routes/iot/device_ctl.py index 6714f3b..d1c2ff9 100644 --- a/iti/applications/routes/iot/device_ctl.py +++ b/iti/applications/routes/iot/device_ctl.py @@ -59,6 +59,17 @@ def add_device(json_data: dict): 添加设备信息 """ + # 判断设备编号是否唯一 + if json_data.get("device_number") is not None: + if db.session.scalar( + select( + exists().where( + IotDevice.device_number == json_data.get("device_number") + ) + ) + ): + raise BizException("同编号设备已存在") + device = IotDevice(**json_data) device.status = 0 db.session.add(device) @@ -76,6 +87,17 @@ def update_device(id: int, json_data: dict): 更新设备信息 """ + # 判断设备编号是否唯一 + if json_data.get("device_number") is not None: + if db.session.scalar( + select( + exists().where( + IotDevice.device_number == json_data.get("device_number"), IotDevice.id != id + ) + ) + ): + raise BizException("同编号设备已存在") + device = db.session.scalar(select(IotDevice).filter_by(id=id)) if not device: raise BizException("设备信息不存在") diff --git a/iti/applications/routes/iot/endpoint_ctl.py b/iti/applications/routes/iot/endpoint_ctl.py index d04dd0b..2300954 100644 --- a/iti/applications/routes/iot/endpoint_ctl.py +++ b/iti/applications/routes/iot/endpoint_ctl.py @@ -60,6 +60,17 @@ def add_endpoint(json_data: dict): 添加采集端信息 """ + # 判断采集端编号是否唯一 + if json_data.get("endpoint_number") is not None: + if db.session.scalar( + select( + exists().where( + IotEndpoint.endpoint_number == json_data.get("endpoint_number") + ) + ) + ): + raise BizException("同编号采集端已存在") + endpoint = IotEndpoint(**json_data) device = db.session.scalar(select(IotDevice).options(noload(IotDevice.workshop)).filter_by(id = endpoint.device_id)) if not device: @@ -81,6 +92,17 @@ def update_endpoint(id: int, json_data: dict): 更新采集端信息 """ + # 判断采集端编号是否唯一 + if json_data.get("endpoint_number") is not None: + if db.session.scalar( + select( + exists().where( + IotEndpoint.endpoint_number == json_data.get("endpoint_number"), IotEndpoint.id != id + ) + ) + ): + raise BizException("同编号采集端已存在") + endpoint = db.session.scalar( select(IotEndpoint) .options(noload(IotEndpoint.workshop), noload(IotEndpoint.device)) diff --git a/iti/applications/routes/iot/workshop_ctl.py b/iti/applications/routes/iot/workshop_ctl.py index 67d156a..5507f5a 100644 --- a/iti/applications/routes/iot/workshop_ctl.py +++ b/iti/applications/routes/iot/workshop_ctl.py @@ -13,7 +13,7 @@ from .schemas.workshop import ( from iti.applications.common import ModelFilter from iti.applications.common.exceptions.biz_exp import BizException from flask_jwt_extended import jwt_required -from sqlalchemy import select +from sqlalchemy import select, delete, exists from sqlalchemy.sql.functions import func from iti.applications.common import permission @@ -58,6 +58,17 @@ def add_workshop(json_data: dict): 添加车间信息 """ + # 判断车间编号是否唯一 + if json_data.get("workshop_number") is not None: + if db.session.scalar( + select( + exists().where( + IotWorkshop.workshop_number == json_data.get("workshop_number") + ) + ) + ): + raise BizException("同编号车间已存在") + workshop = IotWorkshop(**json_data) workshop.status = 0 db.session.add(workshop) @@ -74,6 +85,17 @@ def update_workshop(id: int, json_data: dict): 更新车间信息 """ + # 判断车间编号是否唯一 + if json_data.get("workshop_number") is not None: + if db.session.scalar( + select( + exists().where( + IotWorkshop.workshop_number == json_data.get("workshop_number"), IotWorkshop.id != id + ) + ) + ): + raise BizException("同编号车间已存在") + workshop = db.session.scalar(select(IotWorkshop).filter_by(id=id)) if not workshop: raise BizException("车间信息不存在")