|
@@ -6,6 +6,26 @@ from mcu.BlueToothMode import BlueToothMode
|
|
|
from databases import DeviceConfig, SqlQuery, CRUD, PhotoRecord, SysConfigs
|
|
from databases import DeviceConfig, SqlQuery, CRUD, PhotoRecord, SysConfigs
|
|
|
from mcu.capture.module_digicam import DigiCam
|
|
from mcu.capture.module_digicam import DigiCam
|
|
|
from mcu.capture.smart_shooter_class import SmartShooter
|
|
from mcu.capture.smart_shooter_class import SmartShooter
|
|
|
|
|
+from models import RecordUpdate
|
|
|
|
|
+from sqlalchemy.exc import NoResultFound
|
|
|
|
|
+import os, datetime
|
|
|
|
|
+
|
|
|
|
|
+async def updateDataRecord(PhotoFilename, id):
|
|
|
|
|
+ await asyncio.sleep(0.01)
|
|
|
|
|
+ create_time = datetime.datetime.fromtimestamp(os.path.getctime(PhotoFilename))
|
|
|
|
|
+ data = {"id": id, "image_path": PhotoFilename, "photo_create_time": create_time}
|
|
|
|
|
+ # record_model = PhotoRecord(**data)
|
|
|
|
|
+ session = SqlQuery()
|
|
|
|
|
+ record_model = CRUD(PhotoRecord)
|
|
|
|
|
+ model = record_model.read(session, conditions={"id": id})
|
|
|
|
|
+ if model == None:
|
|
|
|
|
+ print(f"smart shooter 拍照记录更新失败,记录id:{id},不存在")
|
|
|
|
|
+ else:
|
|
|
|
|
+ # 走编辑逻辑
|
|
|
|
|
+ record_model.updateConditions(session, conditions={"id": id}, **data)
|
|
|
|
|
+ print(f"smart shooter 拍照记录更新成功,记录id:{id}")
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
# socket消息发送逻辑处理方法
|
|
# socket消息发送逻辑处理方法
|
|
|
async def handlerSend(
|
|
async def handlerSend(
|
|
|
manager: ConnectionManager,
|
|
manager: ConnectionManager,
|
|
@@ -21,17 +41,25 @@ async def handlerSend(
|
|
|
code = receiveData.get("code")
|
|
code = receiveData.get("code")
|
|
|
msg = receiveData.get("msg")
|
|
msg = receiveData.get("msg")
|
|
|
data = receiveData.get("data")
|
|
data = receiveData.get("data")
|
|
|
|
|
+
|
|
|
async def MsgCallback(msg):
|
|
async def MsgCallback(msg):
|
|
|
msg_id = msg.get("msg_id")
|
|
msg_id = msg.get("msg_id")
|
|
|
match msg_id:
|
|
match msg_id:
|
|
|
case "PhotoUpdated":
|
|
case "PhotoUpdated":
|
|
|
PhotoFilename = msg.get("PhotoFilename")
|
|
PhotoFilename = msg.get("PhotoFilename")
|
|
|
PhotoLocation = msg.get("PhotoLocation")
|
|
PhotoLocation = msg.get("PhotoLocation")
|
|
|
|
|
+ PhotoOrigin = msg.get("PhotoOrigin")
|
|
|
if (PhotoFilename != "" and PhotoFilename != None) and (
|
|
if (PhotoFilename != "" and PhotoFilename != None) and (
|
|
|
PhotoLocation == "Local Disk"
|
|
PhotoLocation == "Local Disk"
|
|
|
):
|
|
):
|
|
|
- # print("PhotoFilename", temp_photo_name, PhotoFilename)
|
|
|
|
|
# temp_photo_name = PhotoFilename
|
|
# temp_photo_name = PhotoFilename
|
|
|
|
|
+ # 更新拍照记录
|
|
|
|
|
+ print("PhotoFilename", PhotoFilename, PhotoOrigin)
|
|
|
|
|
+ if PhotoOrigin != "":
|
|
|
|
|
+ goods_art_no, id = PhotoOrigin.split(",")
|
|
|
|
|
+ loop.create_task(
|
|
|
|
|
+ updateDataRecord(PhotoFilename, id), name="PhotoFilename"
|
|
|
|
|
+ )
|
|
|
data = manager.jsonMessage(
|
|
data = manager.jsonMessage(
|
|
|
code=1,
|
|
code=1,
|
|
|
msg=f"照片获取成功",
|
|
msg=f"照片获取成功",
|
|
@@ -67,7 +95,7 @@ async def handlerSend(
|
|
|
pass
|
|
pass
|
|
|
case "forward_message":
|
|
case "forward_message":
|
|
|
data = receiveData.get("data")
|
|
data = receiveData.get("data")
|
|
|
- dictMsg = {"code":code,"msg":msg,"data":data}
|
|
|
|
|
|
|
+ dictMsg = {"code": code, "msg": msg, "data": data}
|
|
|
await manager.broadcast(dictMsg)
|
|
await manager.broadcast(dictMsg)
|
|
|
case "connect_mcu":
|
|
case "connect_mcu":
|
|
|
device_ctrl = DeviceControl(
|
|
device_ctrl = DeviceControl(
|
|
@@ -89,7 +117,7 @@ async def handlerSend(
|
|
|
websocket_manager=manager, smart_shooter=smart_shooter
|
|
websocket_manager=manager, smart_shooter=smart_shooter
|
|
|
)
|
|
)
|
|
|
# 是否强制初始化
|
|
# 是否强制初始化
|
|
|
- is_force_init = data.get("value",False)
|
|
|
|
|
|
|
+ is_force_init = data.get("value", False)
|
|
|
loop.create_task(device_ctrl.initDevice(is_force_init), name="init_mcu")
|
|
loop.create_task(device_ctrl.initDevice(is_force_init), name="init_mcu")
|
|
|
case "control_mcu":
|
|
case "control_mcu":
|
|
|
device_name = data.get("device_name")
|
|
device_name = data.get("device_name")
|
|
@@ -97,9 +125,7 @@ async def handlerSend(
|
|
|
if (device_name == "" or device_name == None) or (
|
|
if (device_name == "" or device_name == None) or (
|
|
|
value == "" or value == None
|
|
value == "" or value == None
|
|
|
):
|
|
):
|
|
|
- data = manager.jsonMessage(
|
|
|
|
|
- code=1, msg="参数错误", msg_type="mcu"
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ data = manager.jsonMessage(code=1, msg="参数错误", msg_type="mcu")
|
|
|
await manager.send_personal_message(data, websocket)
|
|
await manager.send_personal_message(data, websocket)
|
|
|
return
|
|
return
|
|
|
device_ctrl = DeviceControl(
|
|
device_ctrl = DeviceControl(
|
|
@@ -119,7 +145,7 @@ async def handlerSend(
|
|
|
msg_type = "run_mcu"
|
|
msg_type = "run_mcu"
|
|
|
action_info = data.get("action", "执行左脚程序")
|
|
action_info = data.get("action", "执行左脚程序")
|
|
|
goods_art_no = data.get("goods_art_no", None)
|
|
goods_art_no = data.get("goods_art_no", None)
|
|
|
- if goods_art_no == None or goods_art_no =="":
|
|
|
|
|
|
|
+ if goods_art_no == None or goods_art_no == "":
|
|
|
# 判断货号是否存在
|
|
# 判断货号是否存在
|
|
|
data = manager.jsonMessage(
|
|
data = manager.jsonMessage(
|
|
|
code=1, msg="goods_art_no不能为空", msg_type=msg_type
|
|
code=1, msg="goods_art_no不能为空", msg_type=msg_type
|
|
@@ -137,7 +163,9 @@ async def handlerSend(
|
|
|
action_flag = "right"
|
|
action_flag = "right"
|
|
|
tab_id = action_configs_json.get(action_flag)
|
|
tab_id = action_configs_json.get(action_flag)
|
|
|
photoRecord = CRUD(PhotoRecord)
|
|
photoRecord = CRUD(PhotoRecord)
|
|
|
- goods_art_record = photoRecord.read(session,conditions={"goods_art_no": goods_art_no})
|
|
|
|
|
|
|
+ goods_art_record = photoRecord.read(
|
|
|
|
|
+ session, conditions={"goods_art_no": goods_art_no}
|
|
|
|
|
+ )
|
|
|
if goods_art_record != None:
|
|
if goods_art_record != None:
|
|
|
data = manager.jsonMessage(
|
|
data = manager.jsonMessage(
|
|
|
code=1,
|
|
code=1,
|
|
@@ -185,7 +213,7 @@ async def handlerSend(
|
|
|
blue_tooth.remote_control_v2.handlerTakePhoto(smart_shooter),
|
|
blue_tooth.remote_control_v2.handlerTakePhoto(smart_shooter),
|
|
|
name="run_mcu_config",
|
|
name="run_mcu_config",
|
|
|
)
|
|
)
|
|
|
- case "re_take_picture":#重拍
|
|
|
|
|
|
|
+ case "re_take_picture": # 重拍
|
|
|
msg_type = "re_take_picture"
|
|
msg_type = "re_take_picture"
|
|
|
record_id = data.get("record_id")
|
|
record_id = data.get("record_id")
|
|
|
session = SqlQuery()
|
|
session = SqlQuery()
|
|
@@ -204,9 +232,7 @@ async def handlerSend(
|
|
|
image_index = goods_art_record.image_index
|
|
image_index = goods_art_record.image_index
|
|
|
crud = CRUD(DeviceConfig)
|
|
crud = CRUD(DeviceConfig)
|
|
|
condtions = {"id": action_id}
|
|
condtions = {"id": action_id}
|
|
|
- device_action = crud.read(
|
|
|
|
|
- session, conditions=condtions
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ device_action = crud.read(session, conditions=condtions)
|
|
|
if device_action == None:
|
|
if device_action == None:
|
|
|
# 判断是否有可用配置
|
|
# 判断是否有可用配置
|
|
|
data = manager.jsonMessage(code=1, msg="当前没有可用配置")
|
|
data = manager.jsonMessage(code=1, msg="当前没有可用配置")
|
|
@@ -282,9 +308,9 @@ async def handlerSend(
|
|
|
name="sendCommand",
|
|
name="sendCommand",
|
|
|
)
|
|
)
|
|
|
case "smart_shooter_getinfo":
|
|
case "smart_shooter_getinfo":
|
|
|
- '''
|
|
|
|
|
|
|
+ """
|
|
|
获取相机信息,是否连接
|
|
获取相机信息,是否连接
|
|
|
- '''
|
|
|
|
|
|
|
+ """
|
|
|
loop.create_task(
|
|
loop.create_task(
|
|
|
smart_shooter.GetCameraInfo(msg_type="smart_shooter_getinfo"),
|
|
smart_shooter.GetCameraInfo(msg_type="smart_shooter_getinfo"),
|
|
|
name="smart_shooter_getinfo",
|
|
name="smart_shooter_getinfo",
|