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("车间信息不存在")