guarantee-admin-api-v0.2/Modules/Company/CompanyUtils.py

195 lines
6.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import json
import random
from datetime import datetime, timedelta
from DBHelper.MongoHelperInstance import DB_GUA
from Modules.Common.CommonUtils import CommonUtils
class CompanyUtils(object):
# 生成新的企业ID如果该ID存在则重新生成
@staticmethod
def make_new_cid():
new_cid = CommonUtils.random_code(8)
case = DB_GUA.find_single_column(
"管理端",
"企业数据",
{"企业ID": new_cid},
"企业ID"
) is not None
while case:
new_cid = CommonUtils.random_code(8)
return new_cid
class ExcelParserUtil(object):
# 转换excel日期
@staticmethod
def trans_date_fmt_1(days):
if type(days) == str: # 特殊情况:比如某些高管信息出生日期只有年份,则返回年份
return days
else:
try:
delta = timedelta(days=days) # 将1899-12-30转化为可以计算的时间格式并加上要转化的日期戳
_date = datetime.strptime('1899/12/30', '%Y/%m/%d') + delta
return datetime.strftime(_date, '%Y年%m月%d')
except TypeError:
return '-'
# 转换excel日期
@staticmethod
def trans_date_fmt_2(days):
delta = timedelta(days=days)
# 将1899-12-30转化为可以计算的时间格式并加上要转化的日期戳
_date = datetime.strptime('1899/12/30', '%Y/%m/%d') + delta
return datetime.strftime(_date, '%Y-%m-%d')
# 转换excel日期
@staticmethod
def trans_date_fmt_3(_date):
""""""
# 删除列表中所有''
@staticmethod
def list_remove_blank(_list):
while '' in _list:
_list.remove('')
return _list
# 列表中的''转换为None
@staticmethod
def list_to_none(_list):
return list(map(lambda x: None if x == '' else x, _list))
# 列表中的float类型数据都保留2位小数
@staticmethod
def list_decimal(_list):
return list(map(lambda _v: round(_v, 2) if isinstance(_v, float) else _v, _list))
# 列表中的float类型数据都转为为int类型
@staticmethod
def list_to_int(_list):
return list(map(lambda _v: int(_v) if isinstance(_v, float) else _v, _list))
class ExcelSheetParser(object):
def __init__(self, sheet):
self._sheet = sheet
# 解析企业信息
def parse_sheet1(self):
# 表头
cols_tag = self._sheet.col_values(1)
cols_tag.pop(0)
cols_tag = [x.strip() for x in cols_tag]
# 表值
cols_val = self._sheet.col_values(2)
cols_val.pop(0)
# 拼接
data = json.loads(json.dumps(dict(zip(cols_tag, cols_val))))
return data
# 解析资产负债表
def parse_sheet2(self):
return_data = []
for i in range(2, 6):
insert_dict = dict()
insert_dict['报告期'] = self._sheet.col_values(i)[1]
current_assets_tag = self._sheet.col_values(1)[3:20]
current_assets = ExcelParserUtil.list_to_none(self._sheet.col_values(i)[3:20])
insert_dict['流动资产'] = json.loads(json.dumps(dict(zip(current_assets_tag, current_assets))))
non_current_assets_tag = self._sheet.col_values(1)[21:39]
non_current_assets = ExcelParserUtil.list_to_none(self._sheet.col_values(i)[21:39])
insert_dict['非流动资产'] = json.loads(json.dumps(dict(zip(non_current_assets_tag, non_current_assets))))
current_liabilitiess_tag = self._sheet.col_values(1)[40:54]
current_liabilities = ExcelParserUtil.list_to_none(self._sheet.col_values(i)[40:54])
insert_dict['流动负债'] = json.loads(json.dumps(dict(zip(current_liabilitiess_tag, current_liabilities))))
non_current_liabilities_tag = self._sheet.col_values(1)[55:68]
non_current_liabilities = ExcelParserUtil.list_to_none(self._sheet.col_values(i)[55:68])
insert_dict['非流动负债'] = json.loads(json.dumps(dict(zip(non_current_liabilities_tag, non_current_liabilities))))
owners_equity_tag = self._sheet.col_values(1)[69:]
owners_equity = ExcelParserUtil.list_to_none(self._sheet.col_values(i)[69:])
insert_dict['所有者权益'] = json.loads(json.dumps(dict(zip(owners_equity_tag, owners_equity))))
return_data.append(insert_dict)
return return_data
# 解析利润表
def parse_sheet3(self):
cols_tag = list(map(lambda x: x.strip().replace('减:', '').replace('加:', ''), self._sheet.col_values(1)))
cols_tag = cols_tag[2:]
return_data = []
for i in range(2, 6):
list_0 = ExcelParserUtil.list_to_none(self._sheet.col_values(i)[2:])
list_1 = ExcelParserUtil.list_decimal(list_0)
data = json.loads(json.dumps(dict(zip(cols_tag, list_1))))
data['报告期'] = self._sheet.col_values(i)[1]
return_data.append(data)
return return_data
# 解析补充数据表
def parse_sheet4(self):
cols_tag = self._sheet.col_values(1)
cols_tag = cols_tag[2:]
return_data = []
for i in range(2, 6):
list_0 = ExcelParserUtil.list_to_none(self._sheet.col_values(i)[2:])
list_1 = ExcelParserUtil.list_decimal(list_0)
data = json.loads(json.dumps(dict(zip(cols_tag, list_1))))
data['报告期'] = self._sheet.col_values(i)[1]
return_data.append(data)
return return_data
# 解析担保信息
def parse_sheet5(self):
# 表头
rows_tag = self._sheet.row_values(1)
rows_tag.pop(0)
length = len(self._sheet.col_values(1)[2:])
return_data = []
for i in range(length):
row_val = self._sheet.row_values(i+2)
row_val.pop(0)
data = json.loads(json.dumps(dict(zip(rows_tag, row_val))))
return_data.append(data)
return return_data
# 解析代偿信息
def parse_sheet6(self):
# 表头
rows_tag = self._sheet.row_values(1)
rows_tag.pop(0)
length = len(self._sheet.col_values(1)[2:])
return_data = []
for i in range(length):
row_val = self._sheet.row_values(i + 2)
row_val.pop(0)
data = json.loads(json.dumps(dict(zip(rows_tag, row_val))))
return_data.append(data)
return return_data
# 解析银行授信
def parse_sheet7(self):
# 表头
rows_tag = self._sheet.row_values(1)
rows_tag.pop(0)
length = len(self._sheet.col_values(1)[2:])
return_data = []
for i in range(length):
row_val = self._sheet.row_values(i + 2)
row_val.pop(0)
data = json.loads(json.dumps(dict(zip(rows_tag[:4], row_val[:4]))))
return_data.append(data)
return return_data