Beispiel #1
0
def get_delete_single_step(request, step_name):
    """
    删除单个工步
    :param request: 请求
    :param step_name: 工步名
    :return: 全部工步列表
    """
    try:
        query = redis.Redis(connection_pool=api.pool)
    except Exception as e:
        return api.response_redis_error(request, detail=str(e))

    logic_step = query.get(settings.redis_global_config['工步逻辑代码'])
    if logic_step is None:
        data = {"main": None, "steps": {}}
        return api.response_ok(request, data=data)

    json_step = json.loads(logic_step)
    try:
        del json_step[step_name]
        query.set(settings.redis_global_config['工步逻辑代码'],
                  json.dumps(json_step, ensure_ascii=False))
    except Exception as e:
        pass

    data = {"main": "step1", "steps": json_step}

    return api.response_ok(request, data=data)
Beispiel #2
0
def post_save_single_step(request, step_name):
    """
    保存单个工步
    :param request: 请求
    :param step_name: 工步名
    :return: 全部工步列表
    """
    try:
        query = redis.Redis(connection_pool=api.pool)
    except Exception as e:
        return api.response_redis_error(request, detail=str(e))

    try:
        step = json.loads(request.body)
    except Exception as e:
        return api.response_error(request, "提交的数据格式错误(" + str(e) + ')')

    logic_step = query.get(settings.redis_global_config['工步逻辑代码'])
    if logic_step is None:
        logic_step = "{}"

    logic_json = json.loads(logic_step)
    new_logic_code = dict(logic_json, **{step_name: step})

    query.set(settings.redis_global_config['工步逻辑代码'],
              json.dumps(new_logic_code, ensure_ascii=False))

    data = {"main": "step1", "steps": new_logic_code}

    return api.response_ok(request, data=data)
Beispiel #3
0
def get_supported_conditions(request):
    """
    返回支持的比较条件列表
    :return:
    """
    try:
        query = redis.Redis(connection_pool=api.pool)
    except Exception as e:
        return api.response_redis_error(request, detail=str(e))

    bms_conditions = query.hget(settings.redis_global_config['支持的判定条件'], "bms")
    if bms_conditions is None:
        return api.response_backend_error(request, detail="bms后端服务未准备好数据.")

    newline_conditions = query.hget(settings.redis_global_config['支持的判定条件'],
                                    "newline")
    if newline_conditions is None:
        return api.response_backend_error(request, detail="newline后端服务未准备好数据.")

    step_conditions = query.hget(settings.redis_global_config['支持的判定条件'],
                                 "step")
    if step_conditions is None:
        return api.response_backend_error(request, detail="step后端服务未准备好数据.")

    try:
        bms_data = json.loads(bms_conditions)
        newline_data = json.loads(newline_conditions)
        step_data = json.loads(step_conditions)
        data = dict(bms_data, **dict(newline_data, **step_data))
    except Exception as e:
        return api.response_redis_error(request,
                                        detail="后端数据格式错误(" + str(e) + ')')

    return api.response_ok(request, data=data)
Beispiel #4
0
def get_basic_information(request):
    """
    获取系统的基本信息
    :param request:
    :return:
    """
    basic_list = ["bms", "newline", "step", "license", "entry"]
    r = redis.Redis(connection_pool=api.pool)

    basic_bms = r.hget(setttings.redis_global_config['基本信息哈希表'], "bms")
    basic_newline = r.hget(setttings.redis_global_config['基本信息哈希表'], "newline")
    basic_step = r.hget(setttings.redis_global_config['基本信息哈希表'], "step")
    be_evaluate(r)

    basic_license = r.hget(setttings.redis_global_config['基本信息哈希表'], "license")
    basic_entry = r.hget(setttings.redis_global_config['基本信息哈希表'], "entry")

    if None in [
            basic_bms, basic_newline, basic_step, basic_license, basic_entry
    ]:
        return api.response_error(request, reason="基本数据还未准备好")

    data = {
        "bms": json.loads(basic_bms),
        "newline": json.loads(basic_newline),
        "step": json.loads(basic_step),
        "license": json.loads(basic_license),
        "entry": basic_entry.decode()
    }

    return api.response_ok(request, data=data)
Beispiel #5
0
def get_fetch_step_status(request):
    """
    获取工步状态
    :param request: 请求
    :return: 工步状态
    """
    result = tasks.steps_status.delay()
    return api.response_ok(request, data=result.get())
Beispiel #6
0
def get_stop_step(request):
    """
    停止工步
    :param request: 请求
    :return:
    """
    result = tasks.stop_step.delay()
    return api.response_ok(request, data=result.get())
Beispiel #7
0
def get_start_step(request):
    """
    启动工步
    :param request: 请求
    :return: 成功返回...
    """
    result = tasks.start_step.delay(settings.redis_global_config['工步逻辑代码'])
    return api.response_ok(request, data=result.get())
Beispiel #8
0
def get_close_device(request):
    """
    关闭设备
    :param request:
    :return:
    """
    status = tasks.close_device.delay().get()
    return api.response_ok(request, data=status)
Beispiel #9
0
def get_open_device(request):
    """
    打开设备
    :param request:
    :return:
    """
    status = tasks.open_device.delay().get()
    return api.response_ok(request, data=status)
Beispiel #10
0
def get_check_steps(request):
    """
    对已有的工步进行语法检查
    :param request: 请求
    :return: 成功返回全部工步
    """
    try:
        query = redis.Redis(connection_pool=api.pool)
    except Exception as e:
        return api.response_redis_error(request, detail=str(e))

    logic_step = query.get(settings.redis_global_config['工步逻辑代码'])
    if logic_step is None:
        return api.response_error(request, reason="无法获取指定工步名,服务未就绪")

    steps = json.loads(logic_step)
    for name, step in steps.items():
        if step['true'] != '$auto' and step['true'] not in steps:
            return api.response_error(request,
                                      reason="".join([
                                          "工步=", name, "的 `匹配` 跳转目标:",
                                          step['true'], "不存在"
                                      ]))

        if step['false'] != '$auto' and step['false'] not in steps:
            return api.response_error(request,
                                      reason="".join([
                                          "工步=", name, "的 `不匹配` 跳转目标:",
                                          step['false'], "不存在"
                                      ]))

        if len(step['tiaojian']) not in {3, 7}:
            return api.response_error(request,
                                      reason="".join(
                                          ["工步=", name, "的判定条件个数错误!"]))

    data = {"main": "step1", "steps": steps}

    return api.response_ok(request, data=data)
Beispiel #11
0
def get_fetch_single_step(request, step_name):
    """
    获取单个工步对象
    :param request: 请求
    :param step_name: 工步名
    :return: 单个公布对象
    """
    try:
        query = redis.Redis(connection_pool=api.pool)
    except Exception as e:
        return api.response_redis_error(request, detail=str(e))

    logic_step = query.get(settings.redis_global_config['工步逻辑代码'])
    if logic_step is None:
        return api.response_error(request, reason="无法获取指定工步名,服务未就绪")

    json_step = json.loads(logic_step)
    try:
        obj = json_step[step_name]
    except Exception as e:
        return api.response_error(request, reason="无法获取指定工步名(" + str(e) + ')')

    return api.response_ok(request, data=obj)