|
@@ -7,7 +7,13 @@ 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 models import RecordUpdate
|
|
|
-
|
|
|
|
|
|
|
+from service.run_main import RunMain
|
|
|
|
|
+from utils.utils_func import check_path
|
|
|
|
|
+import time, shutil, os
|
|
|
|
|
+from service.base import check_move_goods_art_no_folder
|
|
|
|
|
+from service.deal_image import DealImage
|
|
|
|
|
+import settings
|
|
|
|
|
+from middleware import UnicornException
|
|
|
|
|
|
|
|
# socket消息发送逻辑处理方法
|
|
# socket消息发送逻辑处理方法
|
|
|
async def handlerSend(
|
|
async def handlerSend(
|
|
@@ -310,7 +316,8 @@ async def handlerSend(
|
|
|
goods_art_no=goods_art_no,
|
|
goods_art_no=goods_art_no,
|
|
|
is_af=is_af,
|
|
is_af=is_af,
|
|
|
),
|
|
),
|
|
|
- name="smart_shooter_photo_take",)
|
|
|
|
|
|
|
+ name="smart_shooter_photo_take",
|
|
|
|
|
+ )
|
|
|
await asyncio.sleep(2.5)
|
|
await asyncio.sleep(2.5)
|
|
|
await device_ctrl.controlDevice("laser_position", 1)
|
|
await device_ctrl.controlDevice("laser_position", 1)
|
|
|
case "digicam_take_picture":
|
|
case "digicam_take_picture":
|
|
@@ -339,6 +346,112 @@ async def handlerSend(
|
|
|
),
|
|
),
|
|
|
name="sendCommand",
|
|
name="sendCommand",
|
|
|
)
|
|
)
|
|
|
|
|
+ case "segment_progress":
|
|
|
|
|
+ msg_type = "segment_progress"
|
|
|
|
|
+ obj = None
|
|
|
|
|
+ token = data.get("token", "")
|
|
|
|
|
+ token = "Bearer " + token
|
|
|
|
|
+ uuid = data.get("uuid", "")
|
|
|
|
|
+ run_main = RunMain(obj, token, uuid)
|
|
|
|
|
+ goods_art_no_arrays = data.get("goods_art_no", [])
|
|
|
|
|
+ limit_path = "output/{}".format(
|
|
|
|
|
+ time.strftime("%Y-%m-%d", time.localtime(time.time()))
|
|
|
|
|
+ )
|
|
|
|
|
+ check_path(limit_path)
|
|
|
|
|
+ # 该数组表示是否需要后面的移动文件夹操作,减少重复抠图,提升抠图时间和速度
|
|
|
|
|
+ move_folder_array = check_move_goods_art_no_folder(
|
|
|
|
|
+ "output", goods_art_no_arrays, limit_path
|
|
|
|
|
+ )
|
|
|
|
|
+ for goods_art_no in goods_art_no_arrays:
|
|
|
|
|
+ session = SqlQuery()
|
|
|
|
|
+ pr = CRUD(PhotoRecord)
|
|
|
|
|
+ images = pr.read_all(session, conditions={"goods_art_no": goods_art_no})
|
|
|
|
|
+ if not images:
|
|
|
|
|
+ data = manager.jsonMessage(
|
|
|
|
|
+ code=1,
|
|
|
|
|
+ msg=f"没有可用货号数据",
|
|
|
|
|
+ msg_type=msg_type,
|
|
|
|
|
+ )
|
|
|
|
|
+ await manager.send_personal_message(data, websocket)
|
|
|
|
|
+ return
|
|
|
|
|
+ if move_folder_array.get(goods_art_no) == None:
|
|
|
|
|
+ image_dir = "{}/data/".format(os.getcwd()).replace("\\", "/")
|
|
|
|
|
+ check_path(image_dir)
|
|
|
|
|
+ for idx, itemImg in enumerate(images):
|
|
|
|
|
+ if itemImg.image_path == "" or itemImg.image_path == None:
|
|
|
|
|
+ data = manager.jsonMessage(
|
|
|
|
|
+ code=1,
|
|
|
|
|
+ msg=f"货号【{goods_art_no}】存在没有拍摄完成的图片,请重拍或删除后重试",
|
|
|
|
|
+ msg_type=msg_type,
|
|
|
|
|
+ )
|
|
|
|
|
+ await manager.send_personal_message(data, websocket)
|
|
|
|
|
+ return
|
|
|
|
|
+ new_file_name = (
|
|
|
|
|
+ str(itemImg.goods_art_no) + "_" + str(idx) + ".jpg"
|
|
|
|
|
+ )
|
|
|
|
|
+ if not os.path.exists(
|
|
|
|
|
+ image_dir + "/" + os.path.basename(new_file_name)
|
|
|
|
|
+ ):
|
|
|
|
|
+ shutil.copy(itemImg.image_path, image_dir + new_file_name)
|
|
|
|
|
+ dealImage = DealImage(image_dir)
|
|
|
|
|
+ resFlag, path = dealImage.dealMoveImage(
|
|
|
|
|
+ image_dir=image_dir,
|
|
|
|
|
+ callback_func=None,
|
|
|
|
|
+ goods_art_no=goods_art_no,
|
|
|
|
|
+ )
|
|
|
|
|
+ if not resFlag:
|
|
|
|
|
+ # path
|
|
|
|
|
+ data = manager.jsonMessage(
|
|
|
|
|
+ code=1,
|
|
|
|
|
+ msg=f"抠图操作异常,请检查目录是否存在,或者权限不足",
|
|
|
|
|
+ msg_type=msg_type,
|
|
|
|
|
+ )
|
|
|
|
|
+ await manager.send_personal_message(data, websocket)
|
|
|
|
|
+ return
|
|
|
|
|
+ # try:
|
|
|
|
|
+ cutOutMode = (
|
|
|
|
|
+ "1"
|
|
|
|
|
+ if settings.getSysConfigs("other_configs", "cutout_mode", "普通抠图")
|
|
|
|
|
+ == "普通抠图"
|
|
|
|
|
+ else "2"
|
|
|
|
|
+ )
|
|
|
|
|
+ config_data = {
|
|
|
|
|
+ "image_dir": limit_path,
|
|
|
|
|
+ "image_order": ("俯视,侧视,后跟,鞋底,内里"),
|
|
|
|
|
+ "goods_art_no": "",
|
|
|
|
|
+ "goods_art_nos": goods_art_no_arrays,
|
|
|
|
|
+ "is_check_number": False,
|
|
|
|
|
+ "resize_image_view": "后跟",
|
|
|
|
|
+ "cutout_mode": cutOutMode,
|
|
|
|
|
+ "logo_path": "",
|
|
|
|
|
+ "special_goods_art_no_folder_line": "",
|
|
|
|
|
+ "is_use_excel": False, # 是否使用excel
|
|
|
|
|
+ "excel_path": "", # excel路径
|
|
|
|
|
+ "is_check_color_is_all": False,
|
|
|
|
|
+ "cutout_is_pass": True,
|
|
|
|
|
+ "assigned_page_dict": {},
|
|
|
|
|
+ "detail_is_pass": True,
|
|
|
|
|
+ "upload_is_pass": False,
|
|
|
|
|
+ "upload_is_enable": settings.IS_UPLOAD_HLM, # 是否上传到惠利玛商品库,通过config.ini得is_upload开启
|
|
|
|
|
+ "is_filter": False,
|
|
|
|
|
+ "temp_class": {},
|
|
|
|
|
+ "temp_name": "",
|
|
|
|
|
+ "temp_name_list": [],
|
|
|
|
|
+ "target_error_folder": f"{limit_path}/软件-生成详情错误",
|
|
|
|
|
+ "success_handler": [],
|
|
|
|
|
+ }
|
|
|
|
|
+ return_data = run_main.check_before_cutout(config_data)
|
|
|
|
|
+ loop = asyncio.get_event_loop()
|
|
|
|
|
+ try:
|
|
|
|
|
+ await run_main.check_for_cutout_image_first_call_back(return_data)
|
|
|
|
|
+ except UnicornException as e:
|
|
|
|
|
+ data = manager.jsonMessage(
|
|
|
|
|
+ code=1,
|
|
|
|
|
+ msg=e.msg,
|
|
|
|
|
+ msg_type=msg_type,
|
|
|
|
|
+ )
|
|
|
|
|
+ await manager.send_personal_message(data, websocket)
|
|
|
|
|
+ return
|
|
|
case _:
|
|
case _:
|
|
|
data = manager.jsonMessage(code=1, msg="未知消息")
|
|
data = manager.jsonMessage(code=1, msg="未知消息")
|
|
|
await manager.send_personal_message(data, websocket)
|
|
await manager.send_personal_message(data, websocket)
|