from Module.File2Text import getText
from Module.AnalyzePdf import Analyzer
from Module.GetCompany import getCompany
from Module.GetTotalMoney import getTotalMoney
import pdfplumber
import os
import re
import json
import pandas as pd
curPath = os.path.abspath(__file__)#当前路径
baseDir = os.path.dirname(curPath)#根目录
staticDir = os.path.join(baseDir,'Static')#静态文件目录


def getMoneyMatter(pdfPath):
    '''
    获得pdf的所有理财信息
    :param pdfPath: pdf路径
    :return:
    '''
    company = getCompany(getText(pdfPath))#公司名
    #各页文本
    with pdfplumber.open(pdfPath) as pdf:
        pages = [page.extract_text() for page in pdf.pages]
    capitals = list()
    try:
        for index in range(len(pages)):
            pageIndex = index + 1#页码
            page = pages[index]#该页内容
            capitalInfo = getTotalMoney(page)
            if not capitalInfo:
                continue
            capitalInfo['page'] = pageIndex
            capitals.append(capitalInfo)
        #公司名和资金信息是必要的
        if (not company) or (not capitals):
            return None
        pdfAnalyze = Analyzer(pdfPath)
        matters = pdfAnalyze.matters#理财信息表
        #在理财信息表中添加公司名和资金总额
        for index in range(len(matters)):
            #表格所在页
            matterPage = json.loads(matters[index].index.name)['page']
            matterCapital = capitals[0]
            #优先离表格最近页码在表格前面的
            for capital in capitals:
                if capital['page']<=matterPage:
                    matterCapital = capital
            matters[index]['公司简称'] = company
            matters[index]['投资总额度'] = capital['capital']
    except:
        matters = []
    if matters:
        capitalMatter = pd.concat(matters)#合并理财信息
        capitalMatter['文件'] = os.path.split(pdfPath)[-1]
        return capitalMatter
    else:
        return pd.DataFrame({'公司简称':[None], '投资总额度':[None], "投资金额":[None], 
            "投资产品名称":[None], "投资产品发行机构":[None], "投资产品开始日":[None], "投资产品结束日":[None],
             "投资天数":[None], "年化收益率":[None],'文件':[os.path.split(pdfPath)[-1]]})

if __name__ == "__main__":
    testPath = os.path.join(staticDir,'test.txt')
    with open(testPath,'r') as f:
        content = f.read()
    files = re.findall('\d+',content)
    files = [os.path.join(staticDir,'2019.1.1_pdf/%s'%file) for file in os.listdir(staticDir+'/2019.1.1_pdf')]
    #files = list(set(files))
    
    #读取
    try:
        finish = set(pd.read_excel('result.xlsx')['文件'].values.tolist())
        matters = [pd.read_excel('result.xlsx'),]
    except:
        finish = []
        matters = []
    print(finish)
    for file in files:
        #file = "/home/rabbit/桌面/FinanceDetect/Static/2019.1.1_pdf/1205725839.pdf"
        #file = "/home/liuchen/桌面/WorkProject/FinanceDetect/Static/2019.1.1_pdf/1205703835.pdf"
        print((files.index(file)+1)/len(files))
        print(file)
        if os.path.split(file)[-1] in finish:
            print("跳过")
            continue
        capitalMatter = getMoneyMatter(file)
        if capitalMatter is not None:
            matters.append(capitalMatter)
        if not matters:
            continue
        save = pd.concat(matters)
        columns = ['公司简称', '投资总额度', "投资金额", "投资产品名称", "投资产品发行机构", "投资产品开始日", "投资产品结束日", "投资天数", "年化收益率","文件"]
        save.to_excel('result.xlsx',columns=columns,index=False)

