image_service_register.py 2.5 KB
# coding=utf-8
#author:        4N
#createtime:    2021/7/19
#email:         nheweijun@sina.com

from app.modules.image.models import ImageService,Image
from app.models import db
from app.util.component.ApiTemplate import ApiTemplate
import uuid
from app.util.component.SliceScheme import SliceScheme
from app.util.component.FileProcess import FileProcess
import os
import json
class Api(ApiTemplate):

    api_name = "注册影像服务"

    def process(self):



        # 返回结果
        res = {}

        try:
            guids = self.para.get("guids").split(",")
            name = self.para.get("name")
            service_guid = uuid.uuid1().__str__()


            parent = os.path.dirname(os.path.realpath(__file__))
            dir_path, store_file = FileProcess.save(parent)
            scheme = SliceScheme(store_file).parameter

            service = ImageService(guid=service_guid, name=name, slice_scheme=json.dumps(scheme))
            service_exetent = []

            for g in guids:
                image = Image.query.filter_by(guid=g).one_or_none()
                if image:
                    image_extent = json.loads(image.extent)
                    if not service_exetent:
                        service_exetent = image_extent
                    else:
                        service_exetent[0] = min(image_extent[0],service_exetent[0])
                        service_exetent[1] = min(image_extent[1], service_exetent[1])
                        service_exetent[2] = max(image_extent[2], service_exetent[2])
                        service_exetent[3] = max(image_extent[3], service_exetent[3])
                    service.images.append(image)
            service.extent = json.dumps(service_exetent)
            db.session.add(service)
            db.session.commit()
            res["data"] = service_guid
            res["result"] = True
        except Exception as e:
            raise e

        return res

    api_doc = {
        "tags": ["影像接口"],
        "parameters": [
            {"name": "guids",
             "in": "formData",
             "type": "string",
             "description": "影像guids,以英文逗号相隔"},
            {"name": "file",
             "in": "formData",
             "type": "file",
             "description": "切片方案"},
        ],
        "responses": {
            200: {
                "schema": {
                    "properties": {
                    }
                }
            }
        }
    }