|
@@ -2,12 +2,13 @@ from wsgiref import headers
|
|
|
from dotenv import load_dotenv, find_dotenv
|
|
from dotenv import load_dotenv, find_dotenv
|
|
|
from pathlib import Path # Python 3.6+ only
|
|
from pathlib import Path # Python 3.6+ only
|
|
|
import configparser, json, pytz
|
|
import configparser, json, pytz
|
|
|
-import requests,os
|
|
|
|
|
|
|
+import requests, os
|
|
|
import pillow_avif
|
|
import pillow_avif
|
|
|
from utils.common import message_queue
|
|
from utils.common import message_queue
|
|
|
import hashlib
|
|
import hashlib
|
|
|
from pathlib import Path
|
|
from pathlib import Path
|
|
|
-import os,stat
|
|
|
|
|
|
|
+import os, stat
|
|
|
|
|
+
|
|
|
TIME_ZONE = pytz.timezone("Asia/Shanghai")
|
|
TIME_ZONE = pytz.timezone("Asia/Shanghai")
|
|
|
from numpy import true_divide
|
|
from numpy import true_divide
|
|
|
from databases import (
|
|
from databases import (
|
|
@@ -20,6 +21,7 @@ from databases import (
|
|
|
batch_insert_device_configs,
|
|
batch_insert_device_configs,
|
|
|
batch_insert_device_configsNew,
|
|
batch_insert_device_configsNew,
|
|
|
)
|
|
)
|
|
|
|
|
+
|
|
|
USER_TOKEN = None # 可以通过外部设置或从配置文件中加载
|
|
USER_TOKEN = None # 可以通过外部设置或从配置文件中加载
|
|
|
USER_ENV = None # 可以通过外部设置或从配置文件中加载
|
|
USER_ENV = None # 可以通过外部设置或从配置文件中加载
|
|
|
USER_CAMERAS = False # 可以通过外部设置或从配置文件中加载
|
|
USER_CAMERAS = False # 可以通过外部设置或从配置文件中加载
|
|
@@ -52,6 +54,8 @@ else:
|
|
|
session.add(config)
|
|
session.add(config)
|
|
|
session.commit() # 合并事务提交
|
|
session.commit() # 合并事务提交
|
|
|
session.close()
|
|
session.close()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
# 初始化数据表---结束
|
|
# 初始化数据表---结束
|
|
|
|
|
|
|
|
|
|
|
|
@@ -99,6 +103,8 @@ def getSysConfigs(key, item, default=None):
|
|
|
if default_format == "" or default_format == None:
|
|
if default_format == "" or default_format == None:
|
|
|
return "png"
|
|
return "png"
|
|
|
return config.get(item, default)
|
|
return config.get(item, default)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def updateSysConfigs(params):
|
|
def updateSysConfigs(params):
|
|
|
session = SqlQuery()
|
|
session = SqlQuery()
|
|
|
sysConfig = CRUD(SysConfigs)
|
|
sysConfig = CRUD(SysConfigs)
|
|
@@ -110,16 +116,19 @@ def updateSysConfigs(params):
|
|
|
sysConfig.updateConditions(session, conditions={"key": params["key"]}, **params)
|
|
sysConfig.updateConditions(session, conditions={"key": params["key"]}, **params)
|
|
|
session.close()
|
|
session.close()
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def get_dict_value(_dict, key, default=None):
|
|
def get_dict_value(_dict, key, default=None):
|
|
|
if key in _dict:
|
|
if key in _dict:
|
|
|
return _dict[key]
|
|
return _dict[key]
|
|
|
else:
|
|
else:
|
|
|
return default
|
|
return default
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
# 鞋设备为1 服装设备为5
|
|
# 鞋设备为1 服装设备为5
|
|
|
MCU_CODE = 1
|
|
MCU_CODE = 1
|
|
|
MACHINE_LEVEL = (
|
|
MACHINE_LEVEL = (
|
|
|
"二档"
|
|
"二档"
|
|
|
- if getSysConfigs("other_configs", "device_speed", "二档") == ""
|
|
|
|
|
|
|
+ if not getSysConfigs("other_configs", "device_speed", "二档")
|
|
|
else getSysConfigs("other_configs", "device_speed", "二档")
|
|
else getSysConfigs("other_configs", "device_speed", "二档")
|
|
|
)
|
|
)
|
|
|
IS_TEST = False
|
|
IS_TEST = False
|
|
@@ -127,11 +136,12 @@ IS_MCU = True
|
|
|
IS_LIN_SHI_TEST = False
|
|
IS_LIN_SHI_TEST = False
|
|
|
PhotographSeconds = float(
|
|
PhotographSeconds = float(
|
|
|
0.5
|
|
0.5
|
|
|
- if getSysConfigs("take_photo_configs", "camera_delay", "0.5") == ""
|
|
|
|
|
|
|
+ if not getSysConfigs("take_photo_configs", "camera_delay", "0.5")
|
|
|
else getSysConfigs("take_photo_configs", "camera_delay", "0.5")
|
|
else getSysConfigs("take_photo_configs", "camera_delay", "0.5")
|
|
|
) # 拍照停留时间
|
|
) # 拍照停留时间
|
|
|
MAX_PIXIAN_SIZE = 12000000
|
|
MAX_PIXIAN_SIZE = 12000000
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def moveSpeed(level: str = None):
|
|
def moveSpeed(level: str = None):
|
|
|
config = {
|
|
config = {
|
|
|
"一档": {
|
|
"一档": {
|
|
@@ -209,7 +219,6 @@ HLM_HOST = config.get("log", "hlm_host")
|
|
|
|
|
|
|
|
PROJECT = config.get("app", "project")
|
|
PROJECT = config.get("app", "project")
|
|
|
|
|
|
|
|
-
|
|
|
|
|
# ----------------------------------
|
|
# ----------------------------------
|
|
|
mcu_config_dict = config.items("mcu_config")
|
|
mcu_config_dict = config.items("mcu_config")
|
|
|
_mcu_config_dict = {}
|
|
_mcu_config_dict = {}
|
|
@@ -232,7 +241,6 @@ MOVE_UP = _mcu_config_dict["move_up"]
|
|
|
MOVE_DOWN = _mcu_config_dict["move_down"]
|
|
MOVE_DOWN = _mcu_config_dict["move_down"]
|
|
|
STOP = _mcu_config_dict["stop"]
|
|
STOP = _mcu_config_dict["stop"]
|
|
|
|
|
|
|
|
-
|
|
|
|
|
# camera_config_dict = config.items("camera_config")
|
|
# camera_config_dict = config.items("camera_config")
|
|
|
# _camera_config_dict = {}
|
|
# _camera_config_dict = {}
|
|
|
# for i, k in mcu_config_dict:
|
|
# for i, k in mcu_config_dict:
|
|
@@ -246,14 +254,16 @@ DOMAIN = (
|
|
|
if config.get("app", "env") != "dev"
|
|
if config.get("app", "env") != "dev"
|
|
|
else "https://dev2.pubdata.cn"
|
|
else "https://dev2.pubdata.cn"
|
|
|
)
|
|
)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def getDoman(env):
|
|
def getDoman(env):
|
|
|
return "https://dev2.valimart.net" if env != "dev" else "https://dev2.pubdata.cn"
|
|
return "https://dev2.valimart.net" if env != "dev" else "https://dev2.pubdata.cn"
|
|
|
|
|
|
|
|
|
|
+
|
|
|
Company = "惠利玛"
|
|
Company = "惠利玛"
|
|
|
|
|
|
|
|
is_test_plugins = true_divide
|
|
is_test_plugins = true_divide
|
|
|
|
|
|
|
|
-
|
|
|
|
|
OUT_PIC_MODE = "." + getSysConfigs("basic_configs", "image_out_format", "png") # ".png"
|
|
OUT_PIC_MODE = "." + getSysConfigs("basic_configs", "image_out_format", "png") # ".png"
|
|
|
|
|
|
|
|
OUT_PIC_SIZE = (
|
|
OUT_PIC_SIZE = (
|
|
@@ -262,7 +272,6 @@ OUT_PIC_SIZE = (
|
|
|
else getSysConfigs("basic_configs", "main_image_size", [1600])
|
|
else getSysConfigs("basic_configs", "main_image_size", [1600])
|
|
|
) # 主图大小
|
|
) # 主图大小
|
|
|
|
|
|
|
|
-
|
|
|
|
|
Mode = getSysConfigs("other_configs", "product_type", "鞋类") # 程序执行类
|
|
Mode = getSysConfigs("other_configs", "product_type", "鞋类") # 程序执行类
|
|
|
OUT_PIC_FACTOR = float(
|
|
OUT_PIC_FACTOR = float(
|
|
|
1
|
|
1
|
|
@@ -270,17 +279,14 @@ OUT_PIC_FACTOR = float(
|
|
|
else getSysConfigs("basic_configs", "image_sharpening", "1")
|
|
else getSysConfigs("basic_configs", "image_sharpening", "1")
|
|
|
) # 图片锐化
|
|
) # 图片锐化
|
|
|
|
|
|
|
|
-
|
|
|
|
|
RESIZE_IMAGE_MODE = 1
|
|
RESIZE_IMAGE_MODE = 1
|
|
|
|
|
|
|
|
GRENERATE_MAIN_PIC_BRIGHTNESS = 254 # 色阶是否调整到位判断
|
|
GRENERATE_MAIN_PIC_BRIGHTNESS = 254 # 色阶是否调整到位判断
|
|
|
|
|
|
|
|
RUNNING_MODE = getSysConfigs("other_configs", "running_mode", "普通模式")
|
|
RUNNING_MODE = getSysConfigs("other_configs", "running_mode", "普通模式")
|
|
|
|
|
|
|
|
-
|
|
|
|
|
DEFAULT_CUTOUT_MODE = getSysConfigs("other_configs", "cutout_mode", "普通抠图")
|
|
DEFAULT_CUTOUT_MODE = getSysConfigs("other_configs", "cutout_mode", "普通抠图")
|
|
|
|
|
|
|
|
-
|
|
|
|
|
CUTOUT_MODE = (
|
|
CUTOUT_MODE = (
|
|
|
0 if getSysConfigs("other_configs", "cutout_mode", "普通抠图") == "普通抠图" else 1
|
|
0 if getSysConfigs("other_configs", "cutout_mode", "普通抠图") == "普通抠图" else 1
|
|
|
)
|
|
)
|
|
@@ -308,6 +314,8 @@ IMAGE_SAVE_MAX_WORKERS = int(
|
|
|
COLOR_GRADATION_CYCLES = int(
|
|
COLOR_GRADATION_CYCLES = int(
|
|
|
getSysConfigs("other_configs", "color_gradation_cycles", 23)
|
|
getSysConfigs("other_configs", "color_gradation_cycles", 23)
|
|
|
) # 色阶处理循环次数
|
|
) # 色阶处理循环次数
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
# grenerate_main_pic_brightness 亮度范围 默认值254 范围 200 -255 步长 1
|
|
# grenerate_main_pic_brightness 亮度范围 默认值254 范围 200 -255 步长 1
|
|
|
# opacity 透明度 默认值 0.5 范围 0.5-1 步长 0.1
|
|
# opacity 透明度 默认值 0.5 范围 0.5-1 步长 0.1
|
|
|
# IMAGE_MASK_CONFIG = int(
|
|
# IMAGE_MASK_CONFIG = int(
|
|
@@ -336,7 +344,9 @@ def recordDataPoint(token=None, page="", uuid=None, data=""):
|
|
|
return requests.post(
|
|
return requests.post(
|
|
|
headers=headers, data=json.dumps(params), url=DOMAIN + "/api/record/point"
|
|
headers=headers, data=json.dumps(params), url=DOMAIN + "/api/record/point"
|
|
|
)
|
|
)
|
|
|
-def syncPhotoRecord(data,action_type=0):
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def syncPhotoRecord(data, action_type=0):
|
|
|
"""同步图片记录"""
|
|
"""同步图片记录"""
|
|
|
headers = {
|
|
headers = {
|
|
|
"Authorization": f"Bearer {USER_TOKEN}",
|
|
"Authorization": f"Bearer {USER_TOKEN}",
|
|
@@ -344,9 +354,9 @@ def syncPhotoRecord(data,action_type=0):
|
|
|
}
|
|
}
|
|
|
machine_type = MACHINE_TYPE
|
|
machine_type = MACHINE_TYPE
|
|
|
url = getDoman(USER_ENV) + f"/api/ai_image/camera_machine/photo_records_handler"
|
|
url = getDoman(USER_ENV) + f"/api/ai_image/camera_machine/photo_records_handler"
|
|
|
- postData = {"data":data,"machine_type":machine_type,'action_type':action_type}
|
|
|
|
|
- response = requests.post(url=url,data=json.dumps(postData, ensure_ascii=False, default=str), headers=headers)
|
|
|
|
|
- print("用户token",response.content)
|
|
|
|
|
|
|
+ postData = {"data": data, "machine_type": machine_type, 'action_type': action_type}
|
|
|
|
|
+ response = requests.post(url=url, data=json.dumps(postData, ensure_ascii=False, default=str), headers=headers)
|
|
|
|
|
+ print("用户token", response.content)
|
|
|
|
|
|
|
|
|
|
|
|
|
def syncBatchPhotoRecordDelete():
|
|
def syncBatchPhotoRecordDelete():
|
|
@@ -376,12 +386,13 @@ def checkRecordSyncStatus():
|
|
|
url = getDoman(USER_ENV) + f"/api/ai_image/camera_machine/photo_records_handler?machine_type={machine_type}"
|
|
url = getDoman(USER_ENV) + f"/api/ai_image/camera_machine/photo_records_handler?machine_type={machine_type}"
|
|
|
try:
|
|
try:
|
|
|
response = requests.get(url=url, headers=headers).json()
|
|
response = requests.get(url=url, headers=headers).json()
|
|
|
- return response.get("data").get('status',True)
|
|
|
|
|
|
|
+ return response.get("data").get('status', True)
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
return True
|
|
return True
|
|
|
|
|
|
|
|
|
|
+
|
|
|
async def sendSocketMessage(
|
|
async def sendSocketMessage(
|
|
|
- code=0, msg="", data=None, device_status=2, msg_type=""
|
|
|
|
|
|
|
+ code=0, msg="", data=None, device_status=2, msg_type=""
|
|
|
):
|
|
):
|
|
|
data = {
|
|
data = {
|
|
|
"code": code,
|
|
"code": code,
|
|
@@ -403,14 +414,19 @@ def calculate_md5(filepath):
|
|
|
md5hash.update(chunk)
|
|
md5hash.update(chunk)
|
|
|
# 返回MD5哈希的十六进制表示
|
|
# 返回MD5哈希的十六进制表示
|
|
|
return md5hash.hexdigest()
|
|
return md5hash.hexdigest()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
__output_dir = config.get("output_config", "output_dir")
|
|
__output_dir = config.get("output_config", "output_dir")
|
|
|
path_obj = Path(os.path.abspath(__output_dir))
|
|
path_obj = Path(os.path.abspath(__output_dir))
|
|
|
OUTPUT_DIR = path_obj.absolute()
|
|
OUTPUT_DIR = path_obj.absolute()
|
|
|
-print("OUTPUT_DIR",__output_dir,OUTPUT_DIR)
|
|
|
|
|
|
|
+print("OUTPUT_DIR", __output_dir, OUTPUT_DIR)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def handle_remove_readonly(func, path, exc):
|
|
def handle_remove_readonly(func, path, exc):
|
|
|
os.chmod(path, stat.S_IWRITE)
|
|
os.chmod(path, stat.S_IWRITE)
|
|
|
func(path)
|
|
func(path)
|
|
|
|
|
|
|
|
|
|
+
|
|
|
try:
|
|
try:
|
|
|
__scan_dir = config.get("scan_config", "scan_dir")
|
|
__scan_dir = config.get("scan_config", "scan_dir")
|
|
|
if __scan_dir == "" or __scan_dir is None:
|
|
if __scan_dir == "" or __scan_dir is None:
|
|
@@ -424,7 +440,7 @@ try:
|
|
|
except:
|
|
except:
|
|
|
SCAN_DIR = None
|
|
SCAN_DIR = None
|
|
|
print('扫码配置不存在')
|
|
print('扫码配置不存在')
|
|
|
-print("SCAN_DIR",SCAN_DIR)
|
|
|
|
|
|
|
+print("SCAN_DIR", SCAN_DIR)
|
|
|
CUSTOMER_TEMPLATE_URL = config.get("customer_template", "template_url")
|
|
CUSTOMER_TEMPLATE_URL = config.get("customer_template", "template_url")
|
|
|
|
|
|
|
|
|
|
|
|
@@ -436,11 +452,11 @@ def hex_to_rgb(hex_color):
|
|
|
"""
|
|
"""
|
|
|
# 移除可能存在的 # 符号
|
|
# 移除可能存在的 # 符号
|
|
|
hex_color = hex_color.lstrip('#')
|
|
hex_color = hex_color.lstrip('#')
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
# 确保是有效的十六进制字符串
|
|
# 确保是有效的十六进制字符串
|
|
|
if len(hex_color) != 6:
|
|
if len(hex_color) != 6:
|
|
|
raise ValueError("十六进制颜色值格式不正确,应为6位十六进制数")
|
|
raise ValueError("十六进制颜色值格式不正确,应为6位十六进制数")
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
# 将十六进制字符串转换为RGB值
|
|
# 将十六进制字符串转换为RGB值
|
|
|
try:
|
|
try:
|
|
|
r = int(hex_color[0:2], 16)
|
|
r = int(hex_color[0:2], 16)
|
|
@@ -462,5 +478,5 @@ def rgb_to_hex(r, g, b):
|
|
|
# 验证RGB值在有效范围内
|
|
# 验证RGB值在有效范围内
|
|
|
if not all(0 <= val <= 255 for val in [r, g, b]):
|
|
if not all(0 <= val <= 255 for val in [r, g, b]):
|
|
|
return "#FFFFFF"
|
|
return "#FFFFFF"
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
return "#{:02X}{:02X}{:02X}".format(r, g, b)
|
|
return "#{:02X}{:02X}{:02X}".format(r, g, b)
|