mns-scheduler 1.0.4.7__tar.gz → 1.0.4.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mns-scheduler might be problematic. Click here for more details.

Files changed (83) hide show
  1. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/PKG-INFO +1 -1
  2. mns-scheduler-1.0.4.7/mns_scheduler/finance/em_financial_sync_service_api.py → mns-scheduler-1.0.4.8/mns_scheduler/finance/em_financial_asset_liability_sync_service_api.py +27 -269
  3. mns-scheduler-1.0.4.8/mns_scheduler/finance/em_financial_profit_sync_service_api.py +340 -0
  4. mns-scheduler-1.0.4.8/mns_scheduler/finance/finance_common_api.py +35 -0
  5. mns-scheduler-1.0.4.8/mns_scheduler/finance/financial_high_risk_stock_clean_service_api.py +168 -0
  6. mns-scheduler-1.0.4.8/mns_scheduler/finance/sync_financial_report_service_api.py +127 -0
  7. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/risk/register_and_investigate_stock_sync_api.py +2 -1
  8. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler.egg-info/PKG-INFO +1 -1
  9. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler.egg-info/SOURCES.txt +5 -1
  10. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/setup.py +1 -1
  11. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/README.md +0 -0
  12. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/__init__.py +0 -0
  13. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/backup/__init__.py +0 -0
  14. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/backup/app/__init__.py +0 -0
  15. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -0
  16. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/backup/em/__init__.py +0 -0
  17. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -0
  18. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -0
  19. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -0
  20. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/backup/wen_cai/__init__.py +0 -0
  21. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -0
  22. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/big_deal/__init__.py +0 -0
  23. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -0
  24. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/company_info/__init__.py +0 -0
  25. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/company_info/company_constant_data.py +0 -0
  26. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/company_info/company_info_sync_api.py +0 -0
  27. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/__init__.py +0 -0
  28. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/clean/__init__.py +0 -0
  29. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
  30. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/clean/ths_concept_clean_api.py +0 -0
  31. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/ths/__init__.py +0 -0
  32. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/ths/common/__init__.py +0 -0
  33. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
  34. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
  35. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
  36. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_by_ak_api.py +0 -0
  37. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/ths/sync_new_index/sync_ths_new_concept_by_web_api.py +0 -0
  38. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
  39. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
  40. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
  41. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/db/__init__.py +0 -0
  42. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/db/col_move_service.py +0 -0
  43. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/db/db_status.py +0 -0
  44. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/dt/__init__.py +0 -0
  45. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
  46. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/finance/__init__.py +0 -0
  47. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/k_line/__init__.py +0 -0
  48. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/k_line/clean/__init__.py +0 -0
  49. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
  50. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/k_line/clean/k_line_info_clean_service.py +0 -0
  51. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/k_line/sync/__init__.py +0 -0
  52. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/k_line/sync/daily_week_month_line_sync.py +0 -0
  53. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/kpl/__init__.py +0 -0
  54. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/kpl/selection/__init__.py +0 -0
  55. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
  56. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
  57. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
  58. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
  59. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
  60. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
  61. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
  62. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/real_time/__init__.py +0 -0
  63. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -0
  64. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -0
  65. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/risk/__init__.py +0 -0
  66. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/trade/__init__.py +0 -0
  67. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
  68. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
  69. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/trade/sync_position_api.py +0 -0
  70. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zb/__init__.py +0 -0
  71. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
  72. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zt/__init__.py +0 -0
  73. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zt/export_open_data_to_excel.py +0 -0
  74. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zt/realtime_quotes_now_zt_kc_sync.py +0 -0
  75. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zt/today_high_chg_pool_sync_api.py +0 -0
  76. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zt/zt_five_boards_sync_api.py +0 -0
  77. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zt/zt_pool_sync_api.py +0 -0
  78. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zz_task/__init__.py +0 -0
  79. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zz_task/data_sync_task.py +0 -0
  80. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -0
  81. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler.egg-info/dependency_links.txt +0 -0
  82. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/mns_scheduler.egg-info/top_level.txt +0 -0
  83. {mns-scheduler-1.0.4.7 → mns-scheduler-1.0.4.8}/setup.cfg +0 -0
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.0.4.7
3
+ Version: 1.0.4.8
@@ -7,8 +7,11 @@ project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
  import akshare as ak
9
9
  from mns_common.db.MongodbUtil import MongodbUtil
10
-
10
+ import mns_scheduler.finance.finance_common_api as finance_common_api
11
+ import mns_common.constant.db_name_constant as db_name_constant
11
12
  mongodb_util = MongodbUtil('27017')
13
+ from loguru import logger
14
+ import mns_common.utils.data_frame_util as data_frame_util
12
15
 
13
16
 
14
17
  #
@@ -337,8 +340,15 @@ mongodb_util = MongodbUtil('27017')
337
340
 
338
341
  # 资产负债表
339
342
  # https://emweb.securities.eastmoney.com/PC_HSF10/NewFinanceAnalysis/Index?type=web&code=sh600519#zcfzb-0
340
- def get_em_debt_api(symbol):
341
- stock_balance_sheet_by_report_em_df = ak.stock_balance_sheet_by_report_em(symbol)
343
+ def get_em_asset_liability_api(symbol):
344
+ sec_code = finance_common_api.get_sec_code(symbol)
345
+ try:
346
+ stock_balance_sheet_by_report_em_df = ak.stock_balance_sheet_by_report_em(sec_code)
347
+ except Exception as e:
348
+ logger.error("同步利润表异常:{},{}", symbol, e)
349
+ return None
350
+ if data_frame_util.is_empty(stock_balance_sheet_by_report_em_df):
351
+ return None
342
352
  stock_balance_sheet_by_report_em_df = stock_balance_sheet_by_report_em_df[[
343
353
  'SECUCODE',
344
354
  'SECURITY_CODE',
@@ -403,276 +413,24 @@ def get_em_debt_api(symbol):
403
413
  'USERIGHT_ASSET',
404
414
  'OPINION_TYPE'
405
415
  ]]
406
- print(stock_balance_sheet_by_report_em_df)
407
- mongodb_util.insert_mongo(stock_balance_sheet_by_report_em_df, 'stock_balance_sheet_by_report_em_df')
408
-
416
+ stock_balance_sheet_by_report_em_df['_id'] = (stock_balance_sheet_by_report_em_df['SECURITY_CODE']
417
+ + "_" + stock_balance_sheet_by_report_em_df['REPORT_DATE'])
409
418
 
410
- # 利润表
411
- # "_id" : ObjectId("6644085f608b7737dee21a3a"),
412
- # "SECUCODE" : "600519.SH",
413
- # "SECURITY_CODE" : "600519",
414
- # "SECURITY_NAME_ABBR" : "贵州茅台",
415
- # "ORG_CODE" : "10002602",
416
- # "ORG_TYPE" : "通用",
417
- # "REPORT_DATE" : "2023-12-31 00:00:00",
418
- # "REPORT_TYPE" : "年报",
419
- # "REPORT_DATE_NAME" : "2023年报",
420
- # "SECURITY_TYPE_CODE" : "058001001",
421
- # "NOTICE_DATE" : "2024-04-03 00:00:00",
422
- # "UPDATE_DATE" : "2024-04-03 00:00:00",
423
- # "CURRENCY" : "CNY",
424
- # "TOTAL_OPERATE_INCOME" : 150560330316.45, 营业总收入
425
- # "TOTAL_OPERATE_INCOME_YOY" : 18.0365792459, 总运营收入修正
426
- # "OPERATE_INCOME" : 147693604994.14, 营业收入
427
- # "OPERATE_INCOME_YOY" : 19.0119185529, 营业收入修正
428
- # "INTEREST_INCOME" : 2866725322.31, 利息收入
429
- # "INTEREST_INCOME_YOY" : 利息收入修正
430
- # "EARNED_PREMIUM" : NaN,
431
- # "EARNED_PREMIUM_YOY" : NaN,
432
- # "FEE_COMMISSION_INCOME" : NaN,
433
- # "FEE_COMMISSION_INCOME_YOY" : NaN,
434
- # "OTHER_BUSINESS_INCOME" : NaN,
435
- # "OTHER_BUSINESS_INCOME_YOY" : NaN,
436
- # "TOI_OTHER" : NaN,
437
- # "TOI_OTHER_YOY" : NaN,
438
- # "TOTAL_OPERATE_COST" : 46960889468.54, 营业总成本
439
- # "TOTAL_OPERATE_COST_YOY" : 18.1456266222,
440
- # "OPERATE_COST" : 11867273851.78, 营业成本
441
- # "OPERATE_COST_YOY" : 17.5737925437,
442
- # "INTEREST_EXPENSE" : 113500129.93, 利息支出
443
- # "INTEREST_EXPENSE_YOY" : 7.4972611642,
444
- # "FEE_COMMISSION_EXPENSE" : 68578.57, 手续费及佣金支出
445
- # "FEE_COMMISSION_EXPENSE_YOY" : -52.0903684752,
446
- # "RESEARCH_EXPENSE" : 157371873.01, 研发费用
447
- # "RESEARCH_EXPENSE_YOY" : 16.4116440028,
448
- # "SURRENDER_VALUE" : NaN,
449
- # "SURRENDER_VALUE_YOY" : NaN,
450
- # "NET_COMPENSATE_EXPENSE" : NaN,
451
- # "NET_COMPENSATE_EXPENSE_YOY" : NaN,
452
- # "NET_CONTRACT_RESERVE" : NaN,
453
- # "NET_CONTRACT_RESERVE_YOY" : NaN,
454
- # "POLICY_BONUS_EXPENSE" : NaN,
455
- # "POLICY_BONUS_EXPENSE_YOY" : NaN,
456
- # "REINSURE_EXPENSE" : NaN,
457
- # "REINSURE_EXPENSE_YOY" : NaN,
458
- # "OTHER_BUSINESS_COST" : NaN,
459
- # "OTHER_BUSINESS_COST_YOY" : NaN,
460
- # "OPERATE_TAX_ADD" : 22234175898.6, 税金及附加
461
- # "OPERATE_TAX_ADD_YOY" : 20.2119055043,
462
- # "SALE_EXPENSE" : 4648613585.82, 销售费用
463
- # "SALE_EXPENSE_YOY" : 40.9642928475,
464
- # "MANAGE_EXPENSE" : 9729389252.31, 管理费用
465
- # "MANAGE_EXPENSE_YOY" : 7.9580889133,
466
- # "ME_RESEARCH_EXPENSE" : NaN,
467
- # "ME_RESEARCH_EXPENSE_YOY" : NaN,
468
- # "FINANCE_EXPENSE" : -1789503701.48, 财务费用
469
- # "FINANCE_EXPENSE_YOY" : -28.5742355094,
470
- # "FE_INTEREST_EXPENSE" : 12624628.35, 利息费用
471
- # "FE_INTEREST_EXPENSE_YOY" : 5.0021902771,
472
- # "FE_INTEREST_INCOME" : 1942301920.98, 利息收入
473
- # "FE_INTEREST_INCOME_YOY" : 31.6437955552,
474
- # "ASSET_IMPAIRMENT_LOSS" : NaN,
475
- # "ASSET_IMPAIRMENT_LOSS_YOY" : NaN,
476
- # "CREDIT_IMPAIRMENT_LOSS" : NaN,
477
- # "CREDIT_IMPAIRMENT_LOSS_YOY" : NaN,
478
- # "TOC_OTHER" : NaN,
479
- # "TOC_OTHER_YOY" : NaN,
480
- # "FAIRVALUE_CHANGE_INCOME" : 3151962.5, :公允价值变动收益
481
- # "FAIRVALUE_CHANGE_INCOME_YOY" : NaN,
482
- # "INVEST_INCOME" : 34025967.82, 投资收益
483
- # "INVEST_INCOME_YOY" : -46.7011782268,
484
- # "INVEST_JOINT_INCOME" : NaN,
485
- # "INVEST_JOINT_INCOME_YOY" : NaN,
486
- # "NET_EXPOSURE_INCOME" : NaN,
487
- # "NET_EXPOSURE_INCOME_YOY" : NaN,
488
- # "EXCHANGE_INCOME" : NaN,
489
- # "EXCHANGE_INCOME_YOY" : NaN,
490
- # "ASSET_DISPOSAL_INCOME" : -479736.97, 资产处置收益
491
- # "ASSET_DISPOSAL_INCOME_YOY" : -324.9796785895,
492
- # "ASSET_IMPAIRMENT_INCOME" : NaN,
493
- # "ASSET_IMPAIRMENT_INCOME_YOY" : NaN,
494
- # "CREDIT_IMPAIRMENT_INCOME" : 37871293.26, 信用减值损失(新)
495
- # "CREDIT_IMPAIRMENT_INCOME_YOY" : 357.8638477375,
496
- # "OTHER_INCOME" : 34644873.86, 其他收益
497
- # "OTHER_INCOME_YOY" : 41.3767542405,
498
- # "OPERATE_PROFIT_OTHER" : NaN,
499
- # "OPERATE_PROFIT_OTHER_YOY" : NaN,
500
- # "OPERATE_PROFIT_BALANCE" : 0.0,
501
- # "OPERATE_PROFIT_BALANCE_YOY" : NaN,
502
- # "OPERATE_PROFIT" : 103708655208.38, 营业利润
503
- # "OPERATE_PROFIT_YOY" : 18.0123117479,
504
- # "NONBUSINESS_INCOME" : 86779655.95, 加:营业外收入
505
- # "NONBUSINESS_INCOME_YOY" : 22.4796849672,
506
- # "NONCURRENT_DISPOSAL_INCOME" : NaN,
507
- # "NONCURRENT_DISPOSAL_INCOME_YOY" : NaN,
508
- # "NONBUSINESS_EXPENSE" : 132881174.52, 减:营业外支出
509
- # "NONBUSINESS_EXPENSE_YOY" : -46.6092621953,
510
- # "NONCURRENT_DISPOSAL_LOSS" : NaN,
511
- # "NONCURRENT_DISPOSAL_LOSS_YOY" : NaN,
512
- # "EFFECT_TP_OTHER" : NaN,
513
- # "EFFECT_TP_OTHER_YOY" : NaN,
514
- # "TOTAL_PROFIT_BALANCE" : 0.0,
515
- # "TOTAL_PROFIT_BALANCE_YOY" : NaN,
516
- # "TOTAL_PROFIT" : 103662553689.81, 利润总额
517
- # "TOTAL_PROFIT_YOY" : 18.1993076599,
518
- # "INCOME_TAX" : 26141077412.01, 减:所得税
519
- # "INCOME_TAX_YOY" : 17.0909328034,
520
- # "EFFECT_NETPROFIT_OTHER" : NaN,
521
- # "EFFECT_NETPROFIT_OTHER_YOY" : NaN,
522
- # "EFFECT_NETPROFIT_BALANCE" : NaN,
523
- # "EFFECT_NETPROFIT_BALANCE_YOY" : NaN,
524
- # "UNCONFIRM_INVEST_LOSS" : NaN,
525
- # "UNCONFIRM_INVEST_LOSS_YOY" : NaN,
526
- # "NETPROFIT" : 77521476277.8, 净利润
527
- # "NETPROFIT_YOY" : 18.5778097415,
528
- # "PRECOMBINE_PROFIT" : NaN,
529
- # "PRECOMBINE_PROFIT_YOY" : NaN,
530
- # "CONTINUED_NETPROFIT" : 77521476277.8, 持续经营净利润
531
- # "CONTINUED_NETPROFIT_YOY" : 18.5778097415,
532
- # "DISCONTINUED_NETPROFIT" : NaN,
533
- # "DISCONTINUED_NETPROFIT_YOY" : NaN,
534
- # "PARENT_NETPROFIT" : 74734071550.75, 归属于母公司股东的净利润
535
- # "PARENT_NETPROFIT_YOY" : 19.1598992892,
536
- # "MINORITY_INTEREST" : 2787404727.05, 少数股东损益
537
- # "MINORITY_INTEREST_YOY" : 4.8459336455,
538
- # "DEDUCT_PARENT_NETPROFIT" : 74752564425.52, 扣除非经常性损益后的净利润
539
- # "DEDUCT_PARENT_NETPROFIT_YOY" : 19.0462109566,
540
- # "NETPROFIT_OTHER" : NaN,
541
- # "NETPROFIT_OTHER_YOY" : NaN,
542
- # "NETPROFIT_BALANCE" : NaN,
543
- # "NETPROFIT_BALANCE_YOY" : NaN,
544
- # "BASIC_EPS" : 59.49, 基本每股收益
545
- # "BASIC_EPS_YOY" : 19.1468055277,
546
- # "DILUTED_EPS" : 59.49, 稀释每股收益
547
- # "DILUTED_EPS_YOY" : 19.1468055277,
548
- # "OTHER_COMPRE_INCOME" : 4715179.82, 其他综合收益
549
- # "OTHER_COMPRE_INCOME_YOY" : 110.40766101,
550
- # "PARENT_OCI" : 4715179.82, 归属于母公司股东的其他综合收益
551
- # "PARENT_OCI_YOY" : 110.40766101,
552
- # "MINORITY_OCI" : NaN,
553
- # "MINORITY_OCI_YOY" : NaN,
554
- # "PARENT_OCI_OTHER" : NaN,
555
- # "PARENT_OCI_OTHER_YOY" : NaN,
556
- # "PARENT_OCI_BALANCE" : NaN,
557
- # "PARENT_OCI_BALANCE_YOY" : NaN,
558
- # "UNABLE_OCI" : NaN,
559
- # "UNABLE_OCI_YOY" : NaN,
560
- # "CREDITRISK_FAIRVALUE_CHANGE" : NaN,
561
- # "CREDITRISK_FAIRVALUE_CHANGE_YOY" : NaN,
562
- # "OTHERRIGHT_FAIRVALUE_CHANGE" : NaN,
563
- # "OTHERRIGHT_FAIRVALUE_CHANGE_YOY" : NaN,
564
- # "SETUP_PROFIT_CHANGE" : NaN,
565
- # "SETUP_PROFIT_CHANGE_YOY" : NaN,
566
- # "RIGHTLAW_UNABLE_OCI" : NaN,
567
- # "RIGHTLAW_UNABLE_OCI_YOY" : NaN,
568
- # "UNABLE_OCI_OTHER" : NaN,
569
- # "UNABLE_OCI_OTHER_YOY" : NaN,
570
- # "UNABLE_OCI_BALANCE" : NaN,
571
- # "UNABLE_OCI_BALANCE_YOY" : NaN,
572
- # "ABLE_OCI" : 4715179.82,
573
- # "ABLE_OCI_YOY" : 110.40766101,
574
- # "RIGHTLAW_ABLE_OCI" : NaN,
575
- # "RIGHTLAW_ABLE_OCI_YOY" : NaN,
576
- # "AFA_FAIRVALUE_CHANGE" : NaN,
577
- # "AFA_FAIRVALUE_CHANGE_YOY" : NaN,
578
- # "HMI_AFA" : NaN,
579
- # "HMI_AFA_YOY" : NaN,
580
- # "CASHFLOW_HEDGE_VALID" : NaN,
581
- # "CASHFLOW_HEDGE_VALID_YOY" : NaN,
582
- # "CREDITOR_FAIRVALUE_CHANGE" : NaN,
583
- # "CREDITOR_FAIRVALUE_CHANGE_YOY" : NaN,
584
- # "CREDITOR_IMPAIRMENT_RESERVE" : NaN,
585
- # "CREDITOR_IMPAIRMENT_RESERVE_YOY" : NaN,
586
- # "FINANCE_OCI_AMT" : NaN,
587
- # "FINANCE_OCI_AMT_YOY" : NaN,
588
- # "CONVERT_DIFF" : 4715179.82,
589
- # "CONVERT_DIFF_YOY" : 110.40766101,
590
- # "ABLE_OCI_OTHER" : NaN,
591
- # "ABLE_OCI_OTHER_YOY" : NaN,
592
- # "ABLE_OCI_BALANCE" : NaN,
593
- # "ABLE_OCI_BALANCE_YOY" : NaN,
594
- # "OCI_OTHER" : NaN,
595
- # "OCI_OTHER_YOY" : NaN,
596
- # "OCI_BALANCE" : NaN,
597
- # "OCI_BALANCE_YOY" : NaN,
598
- # "TOTAL_COMPRE_INCOME" : 77526191457.62, 综合收益总额
599
- # "TOTAL_COMPRE_INCOME_YOY" : 18.5809573963,
600
- # "PARENT_TCI" : 74738786730.57, 归属于母公司股东的综合收益总额
601
- # "PARENT_TCI_YOY" : 19.1631595692,
602
- # "MINORITY_TCI" : 2787404727.05, 归属于少数股东的综合收益总额
603
- # "MINORITY_TCI_YOY" : 4.8459336455,
604
- # "PRECOMBINE_TCI" : NaN,
605
- # "PRECOMBINE_TCI_YOY" : NaN,
606
- # "EFFECT_TCI_BALANCE" : NaN,
607
- # "EFFECT_TCI_BALANCE_YOY" : NaN,
608
- # "TCI_OTHER" : NaN,
609
- # "TCI_OTHER_YOY" : NaN,
610
- # "TCI_BALANCE" : NaN,
611
- # "TCI_BALANCE_YOY" : NaN,
612
- # "ACF_END_INCOME" : NaN,
613
- # "ACF_END_INCOME_YOY" : NaN,
614
- # "OPINION_TYPE" : "标准无保留意见" 审计意见(境内)
615
- # https://emweb.securities.eastmoney.com/PC_HSF10/NewFinanceAnalysis/Index?type=web&code=sh600519#lrb-0
616
- def get_em_benefit_api(symbol):
617
- stock_financial_benefit_ths_df = ak.stock_profit_sheet_by_report_em(symbol)
618
- stock_financial_benefit_ths_df = stock_financial_benefit_ths_df[[
619
- "SECUCODE",
620
- "SECURITY_CODE",
621
- "SECURITY_NAME_ABBR",
622
- "ORG_CODE",
623
- "ORG_TYPE",
624
- "REPORT_DATE",
625
- "REPORT_TYPE",
626
- "REPORT_DATE_NAME",
627
- "SECURITY_TYPE_CODE",
628
- "NOTICE_DATE",
629
- "UPDATE_DATE",
630
- "CURRENCY",
631
- "TOTAL_OPERATE_INCOME",
632
- "OPERATE_INCOME",
633
- "INTEREST_INCOME",
634
- "TOTAL_OPERATE_COST",
635
- "OPERATE_COST",
636
- "INTEREST_EXPENSE",
637
- "FEE_COMMISSION_EXPENSE",
638
- "RESEARCH_EXPENSE",
639
- "OPERATE_TAX_ADD",
640
- "SALE_EXPENSE",
641
- "MANAGE_EXPENSE",
642
- "FINANCE_EXPENSE",
643
- "FE_INTEREST_EXPENSE",
644
- "FE_INTEREST_INCOME",
645
- "FAIRVALUE_CHANGE_INCOME",
646
- "INVEST_INCOME",
647
- "ASSET_DISPOSAL_INCOME",
648
- "CREDIT_IMPAIRMENT_INCOME",
649
- "OTHER_INCOME",
650
- "OPERATE_PROFIT",
651
- "NONBUSINESS_INCOME",
652
- "NONBUSINESS_EXPENSE",
653
- "TOTAL_PROFIT",
654
- "INCOME_TAX",
655
- "NETPROFIT",
656
- "CONTINUED_NETPROFIT",
657
- "PARENT_NETPROFIT",
658
- 'MINORITY_INTEREST',
659
- 'DEDUCT_PARENT_NETPROFIT',
660
- 'BASIC_EPS',
661
- 'DILUTED_EPS',
662
- 'OTHER_COMPRE_INCOME',
663
- 'PARENT_OCI',
664
- 'TOTAL_COMPRE_INCOME',
665
- 'PARENT_TCI',
666
- 'MINORITY_TCI',
667
- 'OPINION_TYPE'
668
- ]]
669
- mongodb_util.insert_mongo(stock_financial_benefit_ths_df, 'stock_financial_benefit_ths_df')
670
- return stock_financial_benefit_ths_df
419
+ query = {'SECURITY_CODE': symbol}
420
+ exist_asset_em_df = mongodb_util.find_query_data(db_name_constant.EM_STOCK_ASSET_LIABILITY, query)
421
+ if data_frame_util.is_not_empty(exist_asset_em_df):
422
+ new_asset_df = stock_balance_sheet_by_report_em_df.loc[
423
+ ~(stock_balance_sheet_by_report_em_df['SECURITY_CODE'].isin(list(exist_asset_em_df['SECURITY_CODE'])))]
424
+ else:
425
+ new_asset_df = stock_balance_sheet_by_report_em_df
426
+ if data_frame_util.is_empty(new_asset_df):
427
+ return None
428
+ new_asset_df.fillna(0, inplace=True)
429
+ mongodb_util.insert_mongo(new_asset_df, db_name_constant.EM_STOCK_ASSET_LIABILITY)
671
430
 
672
431
 
673
432
  if __name__ == '__main__':
674
- get_em_benefit_api('SH600519')
675
- get_em_debt_api('SH600519')
433
+ get_em_asset_liability_api('832876')
676
434
 
677
435
  stock_cash_flow_sheet_by_report_em_df = ak.stock_cash_flow_sheet_by_report_em(symbol="SH600519")
678
436
  print(stock_cash_flow_sheet_by_report_em_df)
@@ -0,0 +1,340 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+
9
+ import akshare as ak
10
+ from mns_common.db.MongodbUtil import MongodbUtil
11
+ import mns_common.utils.data_frame_util as data_frame_util
12
+
13
+ mongodb_util = MongodbUtil('27017')
14
+ import mns_common.constant.db_name_constant as db_name_constant
15
+ import mns_scheduler.finance.finance_common_api as finance_common_api
16
+ from loguru import logger
17
+
18
+
19
+ # 利润表
20
+ # "_id" : ObjectId("6644085f608b7737dee21a3a"),
21
+ # "SECUCODE" : "600519.SH",
22
+ # "SECURITY_CODE" : "600519",
23
+ # "SECURITY_NAME_ABBR" : "贵州茅台",
24
+ # "ORG_CODE" : "10002602",
25
+ # "ORG_TYPE" : "通用",
26
+ # "REPORT_DATE" : "2023-12-31 00:00:00",
27
+ # "REPORT_TYPE" : "年报",
28
+ # "REPORT_DATE_NAME" : "2023年报",
29
+ # "SECURITY_TYPE_CODE" : "058001001",
30
+ # "NOTICE_DATE" : "2024-04-03 00:00:00",
31
+ # "UPDATE_DATE" : "2024-04-03 00:00:00",
32
+ # "CURRENCY" : "CNY",
33
+ # "TOTAL_OPERATE_INCOME" : 150560330316.45, 营业总收入
34
+ # "TOTAL_OPERATE_INCOME_YOY" : 18.0365792459, 总运营收入修正
35
+ # "OPERATE_INCOME" : 147693604994.14, 营业收入
36
+ # "OPERATE_INCOME_YOY" : 19.0119185529, 营业收入修正
37
+ # "INTEREST_INCOME" : 2866725322.31, 利息收入
38
+ # "INTEREST_INCOME_YOY" : 利息收入修正
39
+ # "EARNED_PREMIUM" : NaN,
40
+ # "EARNED_PREMIUM_YOY" : NaN,
41
+ # "FEE_COMMISSION_INCOME" : NaN,
42
+ # "FEE_COMMISSION_INCOME_YOY" : NaN,
43
+ # "OTHER_BUSINESS_INCOME" : NaN,
44
+ # "OTHER_BUSINESS_INCOME_YOY" : NaN,
45
+ # "TOI_OTHER" : NaN,
46
+ # "TOI_OTHER_YOY" : NaN,
47
+ # "TOTAL_OPERATE_COST" : 46960889468.54, 营业总成本
48
+ # "TOTAL_OPERATE_COST_YOY" : 18.1456266222,
49
+ # "OPERATE_COST" : 11867273851.78, 营业成本
50
+ # "OPERATE_COST_YOY" : 17.5737925437,
51
+ # "INTEREST_EXPENSE" : 113500129.93, 利息支出
52
+ # "INTEREST_EXPENSE_YOY" : 7.4972611642,
53
+ # "FEE_COMMISSION_EXPENSE" : 68578.57, 手续费及佣金支出
54
+ # "FEE_COMMISSION_EXPENSE_YOY" : -52.0903684752,
55
+ # "RESEARCH_EXPENSE" : 157371873.01, 研发费用
56
+ # "RESEARCH_EXPENSE_YOY" : 16.4116440028,
57
+ # "SURRENDER_VALUE" : NaN,
58
+ # "SURRENDER_VALUE_YOY" : NaN,
59
+ # "NET_COMPENSATE_EXPENSE" : NaN,
60
+ # "NET_COMPENSATE_EXPENSE_YOY" : NaN,
61
+ # "NET_CONTRACT_RESERVE" : NaN,
62
+ # "NET_CONTRACT_RESERVE_YOY" : NaN,
63
+ # "POLICY_BONUS_EXPENSE" : NaN,
64
+ # "POLICY_BONUS_EXPENSE_YOY" : NaN,
65
+ # "REINSURE_EXPENSE" : NaN,
66
+ # "REINSURE_EXPENSE_YOY" : NaN,
67
+ # "OTHER_BUSINESS_COST" : NaN,
68
+ # "OTHER_BUSINESS_COST_YOY" : NaN,
69
+ # "OPERATE_TAX_ADD" : 22234175898.6, 税金及附加
70
+ # "OPERATE_TAX_ADD_YOY" : 20.2119055043,
71
+ # "SALE_EXPENSE" : 4648613585.82, 销售费用
72
+ # "SALE_EXPENSE_YOY" : 40.9642928475,
73
+ # "MANAGE_EXPENSE" : 9729389252.31, 管理费用
74
+ # "MANAGE_EXPENSE_YOY" : 7.9580889133,
75
+ # "ME_RESEARCH_EXPENSE" : NaN,
76
+ # "ME_RESEARCH_EXPENSE_YOY" : NaN,
77
+ # "FINANCE_EXPENSE" : -1789503701.48, 财务费用
78
+ # "FINANCE_EXPENSE_YOY" : -28.5742355094,
79
+ # "FE_INTEREST_EXPENSE" : 12624628.35, 利息费用
80
+ # "FE_INTEREST_EXPENSE_YOY" : 5.0021902771,
81
+ # "FE_INTEREST_INCOME" : 1942301920.98, 利息收入
82
+ # "FE_INTEREST_INCOME_YOY" : 31.6437955552,
83
+ # "ASSET_IMPAIRMENT_LOSS" : NaN,
84
+ # "ASSET_IMPAIRMENT_LOSS_YOY" : NaN,
85
+ # "CREDIT_IMPAIRMENT_LOSS" : NaN,
86
+ # "CREDIT_IMPAIRMENT_LOSS_YOY" : NaN,
87
+ # "TOC_OTHER" : NaN,
88
+ # "TOC_OTHER_YOY" : NaN,
89
+ # "FAIRVALUE_CHANGE_INCOME" : 3151962.5, :公允价值变动收益
90
+ # "FAIRVALUE_CHANGE_INCOME_YOY" : NaN,
91
+ # "INVEST_INCOME" : 34025967.82, 投资收益
92
+ # "INVEST_INCOME_YOY" : -46.7011782268,
93
+ # "INVEST_JOINT_INCOME" : NaN,
94
+ # "INVEST_JOINT_INCOME_YOY" : NaN,
95
+ # "NET_EXPOSURE_INCOME" : NaN,
96
+ # "NET_EXPOSURE_INCOME_YOY" : NaN,
97
+ # "EXCHANGE_INCOME" : NaN,
98
+ # "EXCHANGE_INCOME_YOY" : NaN,
99
+ # "ASSET_DISPOSAL_INCOME" : -479736.97, 资产处置收益
100
+ # "ASSET_DISPOSAL_INCOME_YOY" : -324.9796785895,
101
+ # "ASSET_IMPAIRMENT_INCOME" : NaN,
102
+ # "ASSET_IMPAIRMENT_INCOME_YOY" : NaN,
103
+ # "CREDIT_IMPAIRMENT_INCOME" : 37871293.26, 信用减值损失(新)
104
+ # "CREDIT_IMPAIRMENT_INCOME_YOY" : 357.8638477375,
105
+ # "OTHER_INCOME" : 34644873.86, 其他收益
106
+ # "OTHER_INCOME_YOY" : 41.3767542405,
107
+ # "OPERATE_PROFIT_OTHER" : NaN,
108
+ # "OPERATE_PROFIT_OTHER_YOY" : NaN,
109
+ # "OPERATE_PROFIT_BALANCE" : 0.0,
110
+ # "OPERATE_PROFIT_BALANCE_YOY" : NaN,
111
+ # "OPERATE_PROFIT" : 103708655208.38, 营业利润
112
+ # "OPERATE_PROFIT_YOY" : 18.0123117479,
113
+ # "NONBUSINESS_INCOME" : 86779655.95, 加:营业外收入
114
+ # "NONBUSINESS_INCOME_YOY" : 22.4796849672,
115
+ # "NONCURRENT_DISPOSAL_INCOME" : NaN,
116
+ # "NONCURRENT_DISPOSAL_INCOME_YOY" : NaN,
117
+ # "NONBUSINESS_EXPENSE" : 132881174.52, 减:营业外支出
118
+ # "NONBUSINESS_EXPENSE_YOY" : -46.6092621953,
119
+ # "NONCURRENT_DISPOSAL_LOSS" : NaN,
120
+ # "NONCURRENT_DISPOSAL_LOSS_YOY" : NaN,
121
+ # "EFFECT_TP_OTHER" : NaN,
122
+ # "EFFECT_TP_OTHER_YOY" : NaN,
123
+ # "TOTAL_PROFIT_BALANCE" : 0.0,
124
+ # "TOTAL_PROFIT_BALANCE_YOY" : NaN,
125
+ # "TOTAL_PROFIT" : 103662553689.81, 利润总额
126
+ # "TOTAL_PROFIT_YOY" : 18.1993076599,
127
+ # "INCOME_TAX" : 26141077412.01, 减:所得税
128
+ # "INCOME_TAX_YOY" : 17.0909328034,
129
+ # "EFFECT_NETPROFIT_OTHER" : NaN,
130
+ # "EFFECT_NETPROFIT_OTHER_YOY" : NaN,
131
+ # "EFFECT_NETPROFIT_BALANCE" : NaN,
132
+ # "EFFECT_NETPROFIT_BALANCE_YOY" : NaN,
133
+ # "UNCONFIRM_INVEST_LOSS" : NaN,
134
+ # "UNCONFIRM_INVEST_LOSS_YOY" : NaN,
135
+ # "NETPROFIT" : 77521476277.8, 净利润
136
+ # "NETPROFIT_YOY" : 18.5778097415,
137
+ # "PRECOMBINE_PROFIT" : NaN,
138
+ # "PRECOMBINE_PROFIT_YOY" : NaN,
139
+ # "CONTINUED_NETPROFIT" : 77521476277.8, 持续经营净利润
140
+ # "CONTINUED_NETPROFIT_YOY" : 18.5778097415,
141
+ # "DISCONTINUED_NETPROFIT" : NaN,
142
+ # "DISCONTINUED_NETPROFIT_YOY" : NaN,
143
+ # "PARENT_NETPROFIT" : 74734071550.75, 归属于母公司股东的净利润
144
+ # "PARENT_NETPROFIT_YOY" : 19.1598992892,
145
+ # "MINORITY_INTEREST" : 2787404727.05, 少数股东损益
146
+ # "MINORITY_INTEREST_YOY" : 4.8459336455,
147
+ # "DEDUCT_PARENT_NETPROFIT" : 74752564425.52, 扣除非经常性损益后的净利润
148
+ # "DEDUCT_PARENT_NETPROFIT_YOY" : 19.0462109566,
149
+ # "NETPROFIT_OTHER" : NaN,
150
+ # "NETPROFIT_OTHER_YOY" : NaN,
151
+ # "NETPROFIT_BALANCE" : NaN,
152
+ # "NETPROFIT_BALANCE_YOY" : NaN,
153
+ # "BASIC_EPS" : 59.49, 基本每股收益
154
+ # "BASIC_EPS_YOY" : 19.1468055277,
155
+ # "DILUTED_EPS" : 59.49, 稀释每股收益
156
+ # "DILUTED_EPS_YOY" : 19.1468055277,
157
+ # "OTHER_COMPRE_INCOME" : 4715179.82, 其他综合收益
158
+ # "OTHER_COMPRE_INCOME_YOY" : 110.40766101,
159
+ # "PARENT_OCI" : 4715179.82, 归属于母公司股东的其他综合收益
160
+ # "PARENT_OCI_YOY" : 110.40766101,
161
+ # "MINORITY_OCI" : NaN,
162
+ # "MINORITY_OCI_YOY" : NaN,
163
+ # "PARENT_OCI_OTHER" : NaN,
164
+ # "PARENT_OCI_OTHER_YOY" : NaN,
165
+ # "PARENT_OCI_BALANCE" : NaN,
166
+ # "PARENT_OCI_BALANCE_YOY" : NaN,
167
+ # "UNABLE_OCI" : NaN,
168
+ # "UNABLE_OCI_YOY" : NaN,
169
+ # "CREDITRISK_FAIRVALUE_CHANGE" : NaN,
170
+ # "CREDITRISK_FAIRVALUE_CHANGE_YOY" : NaN,
171
+ # "OTHERRIGHT_FAIRVALUE_CHANGE" : NaN,
172
+ # "OTHERRIGHT_FAIRVALUE_CHANGE_YOY" : NaN,
173
+ # "SETUP_PROFIT_CHANGE" : NaN,
174
+ # "SETUP_PROFIT_CHANGE_YOY" : NaN,
175
+ # "RIGHTLAW_UNABLE_OCI" : NaN,
176
+ # "RIGHTLAW_UNABLE_OCI_YOY" : NaN,
177
+ # "UNABLE_OCI_OTHER" : NaN,
178
+ # "UNABLE_OCI_OTHER_YOY" : NaN,
179
+ # "UNABLE_OCI_BALANCE" : NaN,
180
+ # "UNABLE_OCI_BALANCE_YOY" : NaN,
181
+ # "ABLE_OCI" : 4715179.82,
182
+ # "ABLE_OCI_YOY" : 110.40766101,
183
+ # "RIGHTLAW_ABLE_OCI" : NaN,
184
+ # "RIGHTLAW_ABLE_OCI_YOY" : NaN,
185
+ # "AFA_FAIRVALUE_CHANGE" : NaN,
186
+ # "AFA_FAIRVALUE_CHANGE_YOY" : NaN,
187
+ # "HMI_AFA" : NaN,
188
+ # "HMI_AFA_YOY" : NaN,
189
+ # "CASHFLOW_HEDGE_VALID" : NaN,
190
+ # "CASHFLOW_HEDGE_VALID_YOY" : NaN,
191
+ # "CREDITOR_FAIRVALUE_CHANGE" : NaN,
192
+ # "CREDITOR_FAIRVALUE_CHANGE_YOY" : NaN,
193
+ # "CREDITOR_IMPAIRMENT_RESERVE" : NaN,
194
+ # "CREDITOR_IMPAIRMENT_RESERVE_YOY" : NaN,
195
+ # "FINANCE_OCI_AMT" : NaN,
196
+ # "FINANCE_OCI_AMT_YOY" : NaN,
197
+ # "CONVERT_DIFF" : 4715179.82,
198
+ # "CONVERT_DIFF_YOY" : 110.40766101,
199
+ # "ABLE_OCI_OTHER" : NaN,
200
+ # "ABLE_OCI_OTHER_YOY" : NaN,
201
+ # "ABLE_OCI_BALANCE" : NaN,
202
+ # "ABLE_OCI_BALANCE_YOY" : NaN,
203
+ # "OCI_OTHER" : NaN,
204
+ # "OCI_OTHER_YOY" : NaN,
205
+ # "OCI_BALANCE" : NaN,
206
+ # "OCI_BALANCE_YOY" : NaN,
207
+ # "TOTAL_COMPRE_INCOME" : 77526191457.62, 综合收益总额
208
+ # "TOTAL_COMPRE_INCOME_YOY" : 18.5809573963,
209
+ # "PARENT_TCI" : 74738786730.57, 归属于母公司股东的综合收益总额
210
+ # "PARENT_TCI_YOY" : 19.1631595692,
211
+ # "MINORITY_TCI" : 2787404727.05, 归属于少数股东的综合收益总额
212
+ # "MINORITY_TCI_YOY" : 4.8459336455,
213
+ # "PRECOMBINE_TCI" : NaN,
214
+ # "PRECOMBINE_TCI_YOY" : NaN,
215
+ # "EFFECT_TCI_BALANCE" : NaN,
216
+ # "EFFECT_TCI_BALANCE_YOY" : NaN,
217
+ # "TCI_OTHER" : NaN,
218
+ # "TCI_OTHER_YOY" : NaN,
219
+ # "TCI_BALANCE" : NaN,
220
+ # "TCI_BALANCE_YOY" : NaN,
221
+ # "ACF_END_INCOME" : NaN,
222
+ # "ACF_END_INCOME_YOY" : NaN,
223
+ # "OPINION_TYPE" : "标准无保留意见" 审计意见(境内)
224
+ # https://emweb.securities.eastmoney.com/PC_HSF10/NewFinanceAnalysis/Index?type=web&code=sh600519#lrb-0
225
+ def get_em_profit_api(symbol):
226
+ sec_code = finance_common_api.get_sec_code(symbol)
227
+ try:
228
+ stock_profit_sheet_by_report_em = ak.stock_profit_sheet_by_report_em(sec_code)
229
+ except Exception as e:
230
+ logger.error("同步利润表异常:{},{}", symbol, e)
231
+ if data_frame_util.is_empty(stock_profit_sheet_by_report_em):
232
+ return None
233
+ stock_profit_sheet_by_report_em = check_columns(stock_profit_sheet_by_report_em)
234
+ stock_profit_sheet_by_report_em = stock_profit_sheet_by_report_em[[
235
+ "SECUCODE",
236
+ "SECURITY_CODE",
237
+ "SECURITY_NAME_ABBR",
238
+ "ORG_CODE",
239
+ "ORG_TYPE",
240
+ "REPORT_DATE",
241
+ "REPORT_TYPE",
242
+ "REPORT_DATE_NAME",
243
+ "SECURITY_TYPE_CODE",
244
+ "NOTICE_DATE",
245
+ "UPDATE_DATE",
246
+ "CURRENCY",
247
+ "TOTAL_OPERATE_INCOME",
248
+ "OPERATE_INCOME",
249
+ "INTEREST_INCOME",
250
+ "TOTAL_OPERATE_COST",
251
+ "OPERATE_COST",
252
+ "INTEREST_EXPENSE",
253
+ "FEE_COMMISSION_EXPENSE",
254
+ "RESEARCH_EXPENSE",
255
+ "OPERATE_TAX_ADD",
256
+ "SALE_EXPENSE",
257
+ "MANAGE_EXPENSE",
258
+ "FINANCE_EXPENSE",
259
+ "FE_INTEREST_EXPENSE",
260
+ "FE_INTEREST_INCOME",
261
+ "FAIRVALUE_CHANGE_INCOME",
262
+ "INVEST_INCOME",
263
+ "ASSET_DISPOSAL_INCOME",
264
+ "CREDIT_IMPAIRMENT_INCOME",
265
+ "OTHER_INCOME",
266
+ "OPERATE_PROFIT",
267
+ "NONBUSINESS_INCOME",
268
+ "NONBUSINESS_EXPENSE",
269
+ "TOTAL_PROFIT",
270
+ "INCOME_TAX",
271
+ "NETPROFIT",
272
+ "CONTINUED_NETPROFIT",
273
+ "PARENT_NETPROFIT",
274
+ 'MINORITY_INTEREST',
275
+ 'DEDUCT_PARENT_NETPROFIT',
276
+ 'BASIC_EPS',
277
+ 'DILUTED_EPS',
278
+ 'OTHER_COMPRE_INCOME',
279
+ 'PARENT_OCI',
280
+ 'TOTAL_COMPRE_INCOME',
281
+ 'PARENT_TCI',
282
+ 'MINORITY_TCI',
283
+ 'OPINION_TYPE'
284
+ ]]
285
+ stock_profit_sheet_by_report_em['_id'] = (stock_profit_sheet_by_report_em['SECURITY_CODE']
286
+ + "_" + stock_profit_sheet_by_report_em['REPORT_DATE'])
287
+
288
+ query = {'SECURITY_CODE': symbol}
289
+ exist_profit_em_df = mongodb_util.find_query_data(db_name_constant.EM_STOCK_PROFIT, query)
290
+ if data_frame_util.is_not_empty(exist_profit_em_df):
291
+ new_profit_df = stock_profit_sheet_by_report_em.loc[
292
+ ~(stock_profit_sheet_by_report_em['SECURITY_CODE'].isin(list(exist_profit_em_df['SECURITY_CODE'])))]
293
+ else:
294
+ new_profit_df = stock_profit_sheet_by_report_em
295
+ if data_frame_util.is_empty(new_profit_df):
296
+ return None
297
+ new_profit_df.fillna(0, inplace=True)
298
+ return new_profit_df
299
+
300
+
301
+ def check_columns(profit_df):
302
+ if 'TOTAL_OPERATE_INCOME' not in profit_df.columns:
303
+ profit_df['TOTAL_OPERATE_INCOME'] = 0
304
+
305
+ if 'INTEREST_INCOME' not in profit_df.columns:
306
+ profit_df['INTEREST_INCOME'] = 0
307
+ if 'TOTAL_OPERATE_COST' not in profit_df.columns:
308
+ profit_df['TOTAL_OPERATE_COST'] = 0
309
+ if 'OPERATE_COST' not in profit_df.columns:
310
+ profit_df['OPERATE_COST'] = 0
311
+ if 'INTEREST_EXPENSE' not in profit_df.columns:
312
+ profit_df['INTEREST_EXPENSE'] = 0
313
+ if 'FEE_COMMISSION_EXPENSE' not in profit_df.columns:
314
+ profit_df['FEE_COMMISSION_EXPENSE'] = 0
315
+ if 'RESEARCH_EXPENSE' not in profit_df.columns:
316
+ profit_df['RESEARCH_EXPENSE'] = 0
317
+ if 'SALE_EXPENSE' not in profit_df.columns:
318
+ profit_df['SALE_EXPENSE'] = 0
319
+ if 'MANAGE_EXPENSE' not in profit_df.columns:
320
+ profit_df['MANAGE_EXPENSE'] = 0
321
+ if 'FINANCE_EXPENSE' not in profit_df.columns:
322
+ profit_df['FINANCE_EXPENSE'] = 0
323
+ if 'FE_INTEREST_EXPENSE' not in profit_df.columns:
324
+ profit_df['FE_INTEREST_EXPENSE'] = 0
325
+ if 'FE_INTEREST_INCOME' not in profit_df.columns:
326
+ profit_df['FE_INTEREST_INCOME'] = 0
327
+ if 'CREDIT_IMPAIRMENT_INCOME' not in profit_df.columns:
328
+ profit_df['CREDIT_IMPAIRMENT_INCOME'] = 0
329
+ return profit_df
330
+
331
+
332
+ import mns_common.api.em.east_money_stock_api as east_money_stock_api
333
+
334
+ if __name__ == '__main__':
335
+ em_df = east_money_stock_api.get_real_time_quotes_all_stocks()
336
+ for em_one in em_df.itertuples():
337
+ try:
338
+ get_em_profit_api(em_one.symbol)
339
+ except Exception as e:
340
+ logger.error("同步利润表异常:{},{}", em_one.symbol, e)