import xml.etree.ElementTree as ET
from subdir import service
from bson.objectid import ObjectId

def getDingercj_(root, bh, bt, qdbm, debm):
    result = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地", 
    "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]]
    #result.append(["ming cheng", "jin e", "zan gu jia", "anquan wenming fei", "guifei"])
    item = None
    for child in root:
    
        if child.tag == "Dxgcxx":
            for child1 in child:
                Dwgcbh = child1.attrib["Dwgcbh"]
                if Dwgcbh == bh:
                    item = child1
                    break
            ##result.append([child.attrib["Dxgcmc"], child.attrib["Je"], child.attrib["Zgj"], child.attrib["Aqwmf"], child.attrib["Gf"]])
    Fywj = None
    for child in item:
        if child.tag == 'Qdxm':
            Fywj= child
            break
    Rcjhz = None
    for child in item:
        if child.tag == 'Rcjhz':
            Rcjhz = child
            break
    kv = {}
    for entry in Rcjhz:
        kv[entry.attrib["RcjId"]]=entry

    container = None
    for child in Fywj:
        ##child is mx
        if child.tag == "QdBt":
            if child.attrib["Mc"] == bt:
                container = child
                break
    if not container:
        container = Fywj
    zimu = None
    for child in container:
        if child.attrib["Qdbm"] == qdbm:
            zimu = child
            break
    box = None
    if not zimu:
        return result
    for child in zimu:
        if child.tag == "Qdxdezj":
            box = child
            break
    hlmx_parent = None
    for child in box:
        if child.attrib["Debm"] == debm:
            for grandchild in child:
                if grandchild.tag == "Qdxdercjhl":
                    hlmx_parent = grandchild
    for child in hlmx_parent:
        result.append([child.attrib["RcjId"], 
        kv[child.attrib["RcjId"]].attrib["RcjBm"], 
        kv[child.attrib["RcjId"]].attrib["Mc"], 
        kv[child.attrib["RcjId"]].attrib["Ggxh"], 
        kv[child.attrib["RcjId"]].attrib["Dw"], 
        kv[child.attrib["RcjId"]].attrib["Dj"], 
        kv[child.attrib["RcjId"]].attrib["Cd"], 
        kv[child.attrib["RcjId"]].attrib["Gycs"], 
        kv[child.attrib["RcjId"]].attrib["Rcjlb"], 
        kv[child.attrib["RcjId"]].attrib["Jgbz"], 
        child.attrib["Rcjhl"], child.attrib["Rcjhj"], "", 
             "", "", ""
        ])

    return result
def getQingdanrcj_(root, bh, bt, bm):
    result = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地", 
    "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]]
    #result.append(["ming cheng", "jin e", "zan gu jia", "anquan wenming fei", "guifei"])
    item = None
    for child in root:
    
        if child.tag == "Dxgcxx":
            for child1 in child:
                Dwgcbh = child1.attrib["Dwgcbh"]
                if Dwgcbh == bh:
                    item = child1
                    break
            ##result.append([child.attrib["Dxgcmc"], child.attrib["Je"], child.attrib["Zgj"], child.attrib["Aqwmf"], child.attrib["Gf"]])
    Fywj = None
    for child in item:
        if child.tag == 'Qdxm':
            Fywj= child
            break
    Rcjhz = None
    for child in item:
        if child.tag == 'Rcjhz':
            Rcjhz = child
            break
    kv = {}
    for entry in Rcjhz:
        kv[entry.attrib["RcjId"]]=entry

    container = None
    for child in Fywj:
        ##child is mx
        if child.tag == "QdBt":
            if child.attrib["Mc"] == bt:
                container = child
                break
    if not container:
        container = Fywj
    zimu = None
    for child in container:
        if child.attrib["Qdbm"] == bm:
            zimu = child
            break
    box = None
    if not zimu:
        return result
    for child in zimu:
        if child.tag == "Qdxrcjhl":
            box = child
            break
    for child in box:
        result.append([child.attrib["RcjId"], 
        kv[child.attrib["RcjId"]].attrib["RcjBm"], 
        kv[child.attrib["RcjId"]].attrib["Mc"], 
        kv[child.attrib["RcjId"]].attrib["Ggxh"], 
        kv[child.attrib["RcjId"]].attrib["Dw"], 
        kv[child.attrib["RcjId"]].attrib["Dj"], 
        kv[child.attrib["RcjId"]].attrib["Cd"], 
        kv[child.attrib["RcjId"]].attrib["Gycs"], 
        kv[child.attrib["RcjId"]].attrib["Rcjlb"], 
        kv[child.attrib["RcjId"]].attrib["Jgbz"], 
        child.attrib["Rcjhl"], child.attrib["Rcjhj"], child.attrib["Zgjbz"], 
        child.attrib["Zyclbz"], child.attrib["Zcbz"], child.attrib["Sbbz"]
        ])

    return result


def getDjcsDingercj_(root, bh, bt, qdbm, debm):
    result = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地", 
    "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]]
    #result.append(["ming cheng", "jin e", "zan gu jia", "anquan wenming fei", "guifei"])
    item = None
    for child in root:
    
        if child.tag == "Dxgcxx":
            for child1 in child:
                Dwgcbh = child1.attrib["Dwgcbh"]
                if Dwgcbh == bh:
                    item = child1
                    break
            ##result.append([child.attrib["Dxgcmc"], child.attrib["Je"], child.attrib["Zgj"], child.attrib["Aqwmf"], child.attrib["Gf"]])
    Fywj = None
    for child in item:
        if child.tag == 'Csxm':
            Fywj= child
            break
    Rcjhz = None
    for child in item:
        if child.tag == 'Rcjhz':
            Rcjhz = child
            break
    kv = {}
    for entry in Rcjhz:
        kv[entry.attrib["RcjId"]]=entry

    container = None
    for child in Fywj:
        if child.tag == "DjCs":
            container = child
            break
    zimu = None
    for child in container:
        if child.attrib["Bm"] == qdbm:
            zimu = child
            break
    box = None
    if not zimu:
        return result
    for child in zimu:
        if child.tag == "Csxdezj":
            box = child
            break
    hlmx_parent = None
    for child in box:
        if child.attrib["Debm"] == debm:
            for grandchild in child:
                if grandchild.tag == "Csxdercjhl":
                    hlmx_parent = grandchild
    for child in hlmx_parent:
        result.append([child.attrib["RcjId"], 
        kv[child.attrib["RcjId"]].attrib["RcjBm"], 
        kv[child.attrib["RcjId"]].attrib["Mc"], 
        kv[child.attrib["RcjId"]].attrib["Ggxh"], 
        kv[child.attrib["RcjId"]].attrib["Dw"], 
        kv[child.attrib["RcjId"]].attrib["Dj"], 
        kv[child.attrib["RcjId"]].attrib["Cd"], 
        kv[child.attrib["RcjId"]].attrib["Gycs"], 
        kv[child.attrib["RcjId"]].attrib["Rcjlb"], 
        kv[child.attrib["RcjId"]].attrib["Jgbz"], 
        child.attrib["Rcjhl"], child.attrib["Rcjhj"], "", 
             "", "", ""
        ])

    return result
def getDjcsQingdanrcj_(root, bh, bt, bm):
    result = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地", 
    "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]]
    #result.append(["ming cheng", "jin e", "zan gu jia", "anquan wenming fei", "guifei"])
    item = None
    for child in root:
    
        if child.tag == "Dxgcxx":
            for child1 in child:
                Dwgcbh = child1.attrib["Dwgcbh"]
                if Dwgcbh == bh:
                    item = child1
                    break
            ##result.append([child.attrib["Dxgcmc"], child.attrib["Je"], child.attrib["Zgj"], child.attrib["Aqwmf"], child.attrib["Gf"]])
    Fywj = None
    for child in item:
        if child.tag == 'Csxm':
            Fywj= child
            break
    hl_parent = None
    for child in Fywj:
        if child.tag == "DjCs":
            hl_parent = child
    Rcjhz = None
    for child in item:
        if child.tag == 'Rcjhz':
            Rcjhz = child
            break
    kv = {}
    for entry in Rcjhz:
        kv[entry.attrib["RcjId"]]=entry

    zimu = None
    for child in hl_parent:
        if child.attrib["Bm"] == bm:
            zimu = child
            break
    box = None
    if not zimu:
        return result
    for child in zimu:
        if child.tag == "Csxrcjhl":
            box = child
            break
    for child in box:
        result.append([child.attrib["RcjId"], 
        kv[child.attrib["RcjId"]].attrib["RcjBm"], 
        kv[child.attrib["RcjId"]].attrib["Mc"], 
        kv[child.attrib["RcjId"]].attrib["Ggxh"], 
        kv[child.attrib["RcjId"]].attrib["Dw"], 
        kv[child.attrib["RcjId"]].attrib["Dj"], 
        kv[child.attrib["RcjId"]].attrib["Cd"], 
        kv[child.attrib["RcjId"]].attrib["Gycs"], 
        kv[child.attrib["RcjId"]].attrib["Rcjlb"], 
        kv[child.attrib["RcjId"]].attrib["Jgbz"], 
        child.attrib["Rcjhl"], child.attrib["Rcjhj"], child.attrib["Zgjbz"], 
        child.attrib["Zyclbz"], child.attrib["Zcbz"], child.attrib["Sbbz"]
        ])

    return result


async def resolve(manager, websocket, data, client):
    tree = ET.parse("data/" + data)
    root = tree.getroot() 
    print(root)

    Dwgcbh = []
    jingjibiao = {}
    jingjibiao["BiaoDuanNO"] = root.attrib["BiaoDuanNO"]
    jingjibiao["Jsfs"] = root.attrib["Jsfs"]
    jingjibiao["Version"] = root.attrib["Version"]
    jingjibiao["Xmmc"] = root.attrib["Xmmc"]
    jingjibiao["Dxgcxx"] = []
    for child in root:
        if child.tag == "ZhaoBiaoXx":
            jingjibiao["ZhaoBiaoXx"] = {}
            jingjibiao["ZhaoBiaoXx"]["BzTime"] = child.attrib["BzTime"]
            jingjibiao["ZhaoBiaoXx"]["Bzr"] = child.attrib["Bzr"]
            jingjibiao["ZhaoBiaoXx"]["FhTime"] = child.attrib["FhTime"]
            jingjibiao["ZhaoBiaoXx"]["Fhr"] = child.attrib["Fhr"]
            jingjibiao["ZhaoBiaoXx"]["Zbr"] = child.attrib["Zbr"]
            jingjibiao["ZhaoBiaoXx"]["ZbrDb"] = child.attrib["ZbrDb"]
            jingjibiao["ZhaoBiaoXx"]["Zxr"] = child.attrib["Zxr"]
            jingjibiao["ZhaoBiaoXx"]["ZxrDb"] = child.attrib["ZxrDb"]
        elif child.tag == "TouBiaoXx":
            jingjibiao["TouBiaoXx"] = {}
            jingjibiao["TouBiaoXx"]["Zbr"] = child.attrib["Zbr"]
            jingjibiao["TouBiaoXx"]["Tbr"] = child.attrib["Tbr"]
            jingjibiao["TouBiaoXx"]["TbrDb"] = child.attrib["TbrDb"]
            jingjibiao["TouBiaoXx"]["Bzr"] = child.attrib["Bzr"]
            jingjibiao["TouBiaoXx"]["BzTime"] = child.attrib["BzTime"]
            jingjibiao["TouBiaoXx"]["Tbzj"] = child.attrib["Tbzj"]
            jingjibiao["TouBiaoXx"]["Zgj"] = child.attrib["Zgj"]
            jingjibiao["TouBiaoXx"]["Aqwmf"] = child.attrib["Aqwmf"]
            jingjibiao["TouBiaoXx"]["Gf"] = child.attrib["Gf"]
        elif child.tag == "Dxgcxx":
            Dxgcxx = {}
            Dxgcxx["Aqwmf"] = child.attrib["Aqwmf"]
            Dxgcxx["Dxgcbh"] = child.attrib["Dxgcbh"]
            Dxgcxx["Dxgcmc"] = child.attrib["Dxgcmc"]
            Dxgcxx["Gf"] = child.attrib["Gf"]
            Dxgcxx["Je"] = child.attrib["Je"]
            Dxgcxx["Zgj"] = child.attrib["Zgj"]
            Dxgcxx["Dwgc"] = []

            for grandchild in child:
                if grandchild.tag == "Dwgcxx":
                    Dwgcxx = {}
                    Dwgcxx["DogNum"] = grandchild.attrib["DogNum"]
                    Dwgcxx["Dwgcbh"] = grandchild.attrib["Dwgcbh"]
                    Dwgcbh.append({"bh": grandchild.attrib["Dwgcbh"], "num":  grandchild.attrib["DogNum"]})
                    Dwgcxx["Dwgcmc"] = grandchild.attrib["Dwgcmc"]
                    Dwgcxx["MachineKey"] = grandchild.attrib["MachineKey"]
                    Dwgcxx["SoftName"] = grandchild.attrib["SoftName"]
                    Dwgcxx["SoftNum"] = grandchild.attrib["SoftNum"]
                    Dwgcxx["Zylb"] = grandchild.attrib["Zylb"]
                    Dxgcxx["Dwgc"].append(Dwgcxx)
            jingjibiao["Dxgcxx"].append(Dxgcxx)


    db = client["baojia"]
    collection = db["jingjibiao"]
    biao_id = (await collection.insert_one(jingjibiao)).inserted_id
    biao_id = str(biao_id)

    collection = db["Dwgc"]
    for entry in Dwgcbh:
        bjhz = service.getBjhz(root, entry["bh"])###array which contains __children
        gfsj = service.getGfsj(root, entry["bh"])##array which contains __children
        qtxm = service.getQtxm(root, entry["bh"])##array which contains __children
        zlje = service.getZlje(root, entry["bh"])
        jrg = service.getJrg(root, entry["bh"])
        zcbfwf = service.getZcbfwf(root, entry["bh"])
        fbrgycl = service.getFbrgycl(root, entry["bh"])
        rcjhz = service.getRcjhz(root, entry["bh"])
        zjcs = service.getZjcs(root, entry["bh"])
        qdbt = service.getQdxm(root, entry["bh"])
        Dwgc = {}
        Dwgc["bjhz"] = bjhz
        Dwgc["gfsj"] = gfsj
        Dwgc["qtxm"] = qtxm
        Dwgc["zlje"] = zlje
        Dwgc["jrg"] = jrg
        Dwgc["zcbfwf"] = zcbfwf
        Dwgc["fbrgycl"] = fbrgycl
        Dwgc["rcjhz"] = rcjhz
        Dwgc["zjcs"] = zjcs
        Dwgc["qdbt"] = qdbt
        Dwgc["DogNum"] = entry["num"]
        Dwgc["Dwgcbh"] = entry["bh"]
        Dwgc["biao_id"] = biao_id
        await collection.insert_one(Dwgc)

    collection = db["Djcs"]
    for entry in Dwgcbh:
        
        djcs = service.getDjcs(root, entry["bh"])
        for cs in djcs:
            cs["DogNum"] = entry["num"]
            cs["Dwgcbh"] = entry["bh"]
            cs["biao_id"] = entry["biao_id"]
            rcj = getDjcsQingdanrcj_(root, entry["bh"], "", cs['清单编码'])
            cs["rcj"] = rcj
            if "__children" in cs:
                children = cs["__children"]
                for child in children:
                    dercj = getDjcsDingercj_(root, entry["bh"], "", cs["清单编码"], child["清单编码"])
                    child["dercj"] = dercj
            await collection.insert_one(cs)

    collection = db["qdxm"]
    for entry in Dwgcbh:
        
        bts = service.getQdxm(root, entry["bh"])
        for bt in bts:
            
            qdmx = service.getQdmx(root, entry["bh"], bt)
            for qd in qdmx:
                qd["DogNum"] = entry["num"]
                qd["Dwgcbh"] = entry["bh"]
                qd["biao_id"] = biao_id
                qd["bt"] = bt
                rcj = getQingdanrcj_(root, entry["bh"], bt, qd["清单编码"])
                qd["rcj"] = rcj
                if "__children" in qd:
                    children = qd["__children"]
                    for child in children:
                        dercj = getDingercj_(root, entry["bh"], bt, qd["清单编码"], child["清单编码"])
                        child["dercj"] = dercj
                        child['fuzhuEnable'] = False
                await collection.insert_one(qd)
            

    






    await manager.send_personal_message(f"You wrote: {data}", websocket)





async def list_files(client):
    db = client["baojia"]
    collection = db["jingjibiao"]
    result = []
    async for post in collection.find():
        result.append([str(post['_id']), post["Xmmc"]])
    return result

def getDwgc(id, Zylb):
    result = []
    #result.append(["ming cheng", "jin e", "zan gu jia", "anquan wenming fei", "guifei"])
    
    
            ##result.append([child.attrib["Dxgcmc"], child.attrib["Je"], child.attrib["Zgj"], child.attrib["Aqwmf"], child.attrib["Gf"]])
    id = id + "Zylb" + Zylb
    
    
    result.append({"id": id + "bao jia hui zong", "label": "报价汇总表"})
    
    result.append({"id": id + "gui fei shui jin", "label": "规费税金"})
    
    result.append({"id": id + "qing dan xiang mu", "label": "清单项目"})
    
    result.append({"id": id + "cuo shi xiang mu", "label": "措施项目"})
    
    result.append({"id": id +"qi ta xiang mu", "label": "其他项目"})
    
    result.append({"id": id +"zan lie jin e", "label": "暂列金额"})
    
    result.append({"id": id +"cai liao zan gu jia", "label": "材料暂估价"})
    
    result.append({"id": id + "zhuan ye gong cheng zan gu jia", "label": "专业工程暂估价"})
    
    result.append({"id": id + "ji ri gong", "label": "计日工"})
    
    result.append({"id": id + "zong cheng bao fu wu fei", "label": "总承包服务费"})
    
    result.append({"id": id + "zong jia xiang mu jin du kuan zhi fu fen jie", "label": "总价项目进度款支付分解"})
    
    result.append({"id": id + "fa bao ren gong ying cai liao", "label": "发包人供应材料"})
    
    result.append({"id": id + "cheng bao ren gong ying cai liao", "label": "承包人供应材料"})
    
    result.append({"id": id + "ren cai ji hui zong", "label": "人材机汇总"})
    
    return result


async def getOutline(client, id):


    db = client["baojia"]
    collection = db["jingjibiao"]
    document = await collection.find_one({'_id': ObjectId(id)})
    result = []
    if 'TouBiaoXx' in document:
        result.append({"id" : "TouBiaoXx", "label" : "投标信息" })
    if 'Dxgcxx' in document:
        Dxgcxx = document["Dxgcxx"]
        for dxgc in Dxgcxx:
            result2 = []
            Dwgc = dxgc["Dwgc"]
            for grandchild in Dwgc:
                result2.append({"id" : grandchild['Dwgcbh'], "Zylb":grandchild['Zylb'],  "label": grandchild["Dwgcmc"], "children" : getDwgc(grandchild['Dwgcbh'], grandchild['Zylb'])})
            result.append({"id" : dxgc['Dxgcbh'], "label" : dxgc['Dxgcmc'], "children" : result2})
    return result
        
async def getDetail(client, id):


    db = client["baojia"]
    collection = db["jingjibiao"]
    document = await collection.find_one({'_id': ObjectId(id)})
    result = []
    result.append(["名称", "金额", "暂估价", "安全文明施工费", "规费"])
    if 'TouBiaoXx' in document:
        toubiaoxx = document["TouBiaoXx"]
        result.append([toubiaoxx["Zbr"], toubiaoxx["Tbzj"], toubiaoxx["Zgj"], toubiaoxx["Aqwmf"], toubiaoxx["Gf"]])
        
    if 'Dxgcxx' in document:
        Dxgcxx = document["Dxgcxx"]
        for dxgc in Dxgcxx:
            
            result.append([dxgc["Dxgcmc"], dxgc["Je"], dxgc["Zgj"], dxgc["Aqwmf"], dxgc["Gf"]])
    return result

async def getBjhz(client, objectid, id):
    db = client["baojia"]


    collection = db["Dwgc"]
    document = await collection.find_one({ "Dwgcbh": id, "biao_id": objectid})


    return document['bjhz']




async def getGfsj(client, objectid, id):
    db = client["baojia"]


    collection = db["Dwgc"]
    document = await collection.find_one({ "Dwgcbh": id, "biao_id": objectid})


    return document['gfsj']


async def getQtxm(client, objectid, id):
    db = client["baojia"]


    collection = db["Dwgc"]
    document = await collection.find_one({ "Dwgcbh": id, "biao_id": objectid})


    return document['qtxm']

async def getZlje(client, objectid, id):
    db = client["baojia"]


    collection = db["Dwgc"]
    document = await collection.find_one({ "Dwgcbh": id, "biao_id": objectid})


    return document['zlje']

async def getJrg(client, objectid, id):
    db = client["baojia"]


    collection = db["Dwgc"]
    document = await collection.find_one({ "Dwgcbh": id, "biao_id": objectid})

    return document['jrg']

async def getZcbfwf(client, objectid, id):
    db = client["baojia"]


    collection = db["Dwgc"]
    document = await collection.find_one({"Dwgcbh": id, "biao_id": objectid})


    return document['zcbfwf']
    

async def getFbrgycl(client, objectid, id):
    db = client["baojia"]


    collection = db["Dwgc"]
    document = await collection.find_one({ "Dwgcbh": id, "biao_id": objectid})


    return document['fbrgycl']

async def getRcjhz(client, objectid, id):
    db = client["baojia"]


    collection = db["Dwgc"]
    document = await collection.find_one({ "Dwgcbh": id, "biao_id": objectid})

    return document['rcjhz']

async def getZjcs(client, objectid, id):
    db = client["baojia"]


    collection = db["Dwgc"]
    document = await collection.find_one({ "Dwgcbh": id, "biao_id": objectid})

    return document['zjcs']

async def getDjcs(client, objectid, id):
    db = client["baojia"]


    collection = db["Djcs"]
    result = []
    async for post in collection.find({"Dwgcbh": id, "biao_id": objectid}):
        ##post["ID"] = post["_id"]
        del post["_id"]
        del post["rcj"]
        del post["DogNum"]
        result.append(post)


    return result

async def getDjcsQingdanrcj(client, name, bh, bt, bm):
    db = client["baojia"]
   

    collection = db["Djcs"]
    document = await collection.find_one({ "Dwgcbh": bh, "清单编码": bm, "biao_id": name})
    result = document["rcj"]
    return result


async def getDjcsDingercj(client, name, bh, bt, qdbm, debm):
    db = client["baojia"]
    

    collection = db["Djcs"]
    document = await collection.find_one({"Dwgcbh": bh, "清单编码": qdbm, "biao_id": name})
    children = document["__children"]
    result = []
    for child in children:
        if child["清单编码"] == debm:
            result = child["dercj"]
    return result


async def getQdxm(client, name, bh):
    db = client["baojia"]
    collection = db["Dwgc"]
    document = await collection.find_one({'biao_id': name, "Dwgcbh": bh})
    if document:
        return  document['qdbt']
    else:
        return []
    
async def getQdmx(client, name, bh, bt):
    db = client["baojia"]
    collection = db["qdxm"]
    result = []
    async for post in collection.find({'biao_id': name, "Dwgcbh": bh, "bt": bt}):
        ##post["ID"] = post["_id"]
        del post["_id"]
        #del post["rcj"]
        #del post["DogNum"]
        result.append(post)
    return result



async def getQingdanrcj(client, name, bh, bt, bm):
    db = client["baojia"]
    collection = db["qdxm"]


    document = await collection.find_one({ "Dwgcbh": bh, "清单编码": bm, "biao_id": name, "bt": bt})
    result = document["rcj"]
    return result


async def getDingercj(client, name, bh, bt, qdbm, debm):
    db = client["baojia"]
    

    collection = db["qdxm"]
    document = await collection.find_one({"Dwgcbh": bh, "清单编码": qdbm, "biao_id": name, "bt": bt})
    result = []
    if "__children" in document:
        children = document["__children"]
        
        for child in children:
            if child["清单编码"] == debm:
                result = child["dercj"]
    return result


async def save(client, data):
    db = client["baojia"]
    collection = db["qdxm"]
    for entry in data:
        entry["__children"] = entry["children"]
        del entry["children"]
        await collection.replace_one({"biao_id": entry["biao_id"], "Dwgcbh": entry["Dwgcbh"], "bt": entry["bt"], "清单编码": entry["清单编码"]}, entry)

    return {"result": "ok"}
