from Company.Basic.Business.BusinessImpl import BusinessImpl from Company.Basic.Investment.InvestmentObj import InvestmentList from Company.Basic.Shareholder.ShareholderObj import ShareholderList from DBHelper.MongoHelperInstance import DB_TYC, DB_TEST from Utils.CommonUtil import CommonUtils class InvestmentImpl(object): """对外投资""" @staticmethod def auto_update(**kwargs): """新增/更新(自动)""" condition = kwargs['condition'] def save_data(**args): """查询保存数据""" def search_cid(name): """根据股东名称查询cid""" cid_record = DB_TEST.find_single_column( 'WR_DataBase_v2_test', 'C3.1_工商信息', {'企业名称': name}, '企业名称' ) if cid_record: return cid_record else: return None company_name = args['cname'] company_id = args['cid'] records = DB_TYC.find_single_column( '公司背景', '对外投资', {'企业名称': company_name}, '对外投资' ) if records: records = records['result'] data = dict() list_data = list() for record in records: dict_data = dict() dict_data['企业ID'] = search_cid(record['name']) dict_data['企业名称'] = record['name'] dict_data['法定代表人'] = record['legalPersonName'] dict_data['成立日期'] = CommonUtils.time_stamp(record['estiblishTime']) dict_data['企业状态'] = record['regStatus'] dict_data['投资金额'] = record['amount'] dict_data['投资比例'] = record['percent'] dict_data['控股情况'] = None dict_data['所属行业'] = record['category'] dict_data['所属省份'] = CommonUtils.province_conversion(record['base']) dict_data['所属地市'] = None list_data.append(dict_data) data['企业ID'] = company_id data['投资列表'] = list_data data['更新时间'] = CommonUtils.get_current_time() return data else: return False if len(condition['cid']): cid = condition['cid'] cname = DB_TEST.find_single_column( 'WR_DataBase_v2_test', 'C3.1_工商信息', {'企业ID': cid}, '企业名称' ) update = save_data(cname=cname, cid=cid) if update: DB_TEST.update_single_data( "WR_DataBase_v2_test", "C3.4_对外投资", {"企业ID": cid}, update ) return 'success' else: return 'update failed' elif len(condition['cname']): cname = condition['cname'] cid = DB_TEST.find_single_column( 'WR_DataBase_v2_test', 'C3.1_工商信息', {'企业名称': cname}, '企业ID' ) if not cid: cid = BusinessImpl.auto_update(condition={"cname": cname, "cid": ""}) insert = save_data(cname=cname, cid=cid) if insert: DB_TEST.upsert_single_data( "WR_DataBase_v2_test", "C3.4_对外投资", {"企业名称": cname}, insert ) return 'success' else: return 'new failed' else: return 'parameter exception' @staticmethod def delete(**kwargs): """删除""" param = kwargs['param'] cid = param['cid'] cname = param['cname'] res = DB_TEST.delete_single_data_in_array( "WR_DataBase_v2_test", "C3.4_对外投资", {"企业ID": cid}, {"投资列表": {"企业名称": cname}} ) if res: result = { "info": "success", } else: result = { "info": "no result" } return result @staticmethod def edit(**kwargs): """编辑""" param = kwargs['param'] cid = param['cid'] body = param['body'] name = param['cname'] try: investment = InvestmentList() investment.cname = body['企业名称'] investment.representative = body['法定代表人'] investment.establishment_date = body['成立日期'] investment.status = body['企业状态'] investment.investment_amount = body['投资金额'] investment.investment_percentage = body['投资比例'] investment.holdings = body['控股情况'] investment.industry = body['所属行业'] investment.province = body['所属省份'] investment.city = body['所属地市'] update_data = investment.fields_toggle() DB_TEST.update_single_data_in_array( "WR_DataBase_v2_test", "C3.4_对外投资", {"企业ID": cid}, {"投资列表": {"企业名称": name}}, update_data ) time_update = {"更新时间": CommonUtils.get_current_time()} DB_TEST.update_single_data( "WR_DataBase_v2_test", "C3.4_对外投资", {"企业ID": cid}, time_update ) return 'success' except Exception: return 'edit failed' @staticmethod def view(**kwargs): """查看""" query = kwargs['query'] cid = query['cid'] page_size = int(query['page_size']) page_num = page_size * (int(query['page_num']) - 1) res = DB_TEST.find_single_data( 'WR_DataBase_v2_test', 'C3.4_对外投资', {"企业ID": cid}, ['投资列表', '更新时间'] ) total = len(res['投资列表']) update_time = res['更新时间'] record = DB_TEST.find_data_with_aggregate( "WR_DataBase_v2_test", "C3.4_对外投资", [ {"$match": {"企业ID": cid}}, {"$project": {'_id': 0, '投资列表': {"$slice": ["${}".format('投资列表'), page_num, page_size]}}} ] ) if record: result = { "info": "success", "result": { "total": total, "update_time": update_time, "records": record[0]['投资列表'] } } else: result = { "info": "no result" } return result