mns-scheduler 1.1.0.2__py3-none-any.whl → 1.1.0.4__py3-none-any.whl

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.

@@ -110,7 +110,7 @@ def save_ths_concept_detail(new_concept_symbol_df, concept_name, str_day, str_no
110
110
  query_company_info = {'symbol': {'$in': new_concept_symbol_list}}
111
111
  query_field = {"first_industry": 1, "first_industry": 1, "industry": 1, "company_type": 1, "flow_mv_sp": 1,
112
112
  "total_mv_sp": 1}
113
- company_info = mongodb_util.find_query_data_choose_field('company_info', query_company_info, query_field)
113
+ company_info = mongodb_util.find_query_data_choose_field('base', query_company_info, query_field)
114
114
 
115
115
  company_info = company_info.set_index(['_id'], drop=True)
116
116
  new_concept_symbol_df = new_concept_symbol_df.set_index(['symbol'], drop=False)
@@ -0,0 +1,7 @@
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)
@@ -11,7 +11,7 @@ import pandas as pd
11
11
  from loguru import logger
12
12
  import mns_common.api.ths.concept.web.ths_company_info_web as ths_company_info_web
13
13
  import mns_common.api.em.east_money_stock_v2_api as east_money_stock_v2_api
14
- import mns_scheduler.company_info.company_constant_data as company_constant_data_api
14
+ import mns_scheduler.company_info.constant.company_constant_data as company_constant_data
15
15
  import mns_common.component.common_service_fun_api as common_service_fun_api
16
16
  import mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
17
17
  from mns_common.db.MongodbUtil import MongodbUtil
@@ -21,11 +21,10 @@ import mns_common.api.kpl.constant.kpl_constant as kpl_constant
21
21
  import mns_common.component.company.company_common_service_api as company_common_service_api
22
22
  import mns_common.component.k_line.common.k_line_common_service_api as k_line_common_service_api
23
23
  import mns_common.constant.db_name_constant as db_name_constant
24
- import mns_scheduler.concept.common.detaill.ths_concept_detail_api as ths_concept_detail_api
25
24
 
26
25
  mongodb_util = MongodbUtil('27017')
27
26
  # 分页大小
28
- MAX_PAGE_NUMBER = 6000
27
+ MAX_PAGE_NUMBER = 2000
29
28
  import threading
30
29
 
31
30
  # 定义一个全局锁,用于保护 result 变量的访问
@@ -58,60 +57,6 @@ def calculate_circu_ratio(symbol):
58
57
  return mv_circulation_ratio
59
58
 
60
59
 
61
- def filed_sort(company_info):
62
- return company_info[[
63
- "_id",
64
- "name",
65
- "industry",
66
- "first_sw_industry",
67
- "first_industry_code",
68
- "second_sw_industry",
69
- "second_industry_code",
70
- "third_sw_industry",
71
- "third_industry_code",
72
- "ths_concept_name",
73
- "ths_concept_code",
74
- "ths_concept_sync_day",
75
- "em_industry",
76
- "em_concept",
77
- "business_nature",
78
- "actual_controller_name",
79
- "actual_controller_rate",
80
- "final_controller_name",
81
- "final_controller_rate",
82
- "mv_circulation_ratio",
83
- "flow_mv_sp",
84
- "total_mv_sp",
85
- "now_price",
86
- "total_share",
87
- "flow_share",
88
- "total_mv",
89
- "flow_mv",
90
- "flow_mv_level",
91
- "holder_controller_name",
92
- "holder_controller_rate",
93
- "area",
94
- "list_date",
95
- "deal_days",
96
- "pe_ttm",
97
- "pb",
98
- "ROE",
99
- "classification",
100
- "base_business",
101
- "address",
102
- "market_id",
103
- "symbol",
104
- "amount",
105
- "sync_date",
106
- "ths_concept_list_info",
107
- "kpl_plate_name",
108
- "kpl_most_relative_name",
109
- "kpl_plate_list_info",
110
- 'operate_profit',
111
- 'total_operate_income'
112
- ]]
113
-
114
-
115
60
  def get_east_money_stock_info():
116
61
  all_real_time_quotes = east_money_stock_v2_api.get_all_real_time_quotes()
117
62
  all_real_time_quotes = all_real_time_quotes[['symbol',
@@ -147,81 +92,7 @@ def create_index():
147
92
  [("symbol", 1)])
148
93
 
149
94
 
150
- # 修改行业信息
151
- def fix_company_industry(symbol):
152
- if symbol is not None:
153
- query = {"symbol": symbol}
154
- company_info = mongodb_util.find_query_data('company_info_base', query)
155
- else:
156
- company_info = mongodb_util.find_all_data('company_info_base')
157
-
158
- company_info = company_info.set_index(['second_sw_industry'], drop=False)
159
- del company_info['industry']
160
- # fix industry name
161
- industry_final_fix_df = company_constant_data_api.get_industry_final_fix_df()
162
- industry_final_fix_df = industry_final_fix_df.set_index(['second_sw_industry'], drop=True)
163
- company_info = pd.merge(company_info, industry_final_fix_df, how='outer',
164
- left_index=True, right_index=True)
165
- # 将申万第三行业做为行业
166
- company_info = company_constant_data_api.fix_industry_use_sw_third(company_info.copy())
167
- company_info['industry'] = company_info['industry'].fillna('综合')
168
- company_info = filed_sort(company_info)
169
- company_info['company_type'] = company_info['business_nature']
170
-
171
- # 将list_date列中的所有NaN值设置为99990909
172
- company_info['list_date'].fillna(20990909.0, inplace=True)
173
-
174
- # 将日期数值转换为日期时间格式
175
- company_info['list_date_01'] = pd.to_datetime(company_info['list_date'], format='%Y%m%d')
176
-
177
- company_info['list_date'] = company_info['list_date'].apply(
178
- lambda x: pd.to_numeric(x, errors="coerce"))
179
-
180
- now_date = datetime.now()
181
-
182
- # 计算日期差值 距离现在上市时间
183
- company_info['diff_days'] = company_info.apply(
184
- lambda row: (now_date - row['list_date_01']).days, axis=1)
185
-
186
- str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
187
- company_info['sync_date'] = str_now_date
188
-
189
- try:
190
- # 次新股
191
- sub_stock = ths_concept_detail_api.get_ths_concept_detail('885598', None)
192
- sub_stock_symbol_list = list(sub_stock['symbol'])
193
- except BaseException as e:
194
- logger.error("出现异常:{},{}", symbol, e)
195
- query = {'concept_code': 885598}
196
- ths_stock_concept_detail = mongodb_util.find_query_data('ths_stock_concept_detail', query)
197
- sub_stock_symbol_list = list(ths_stock_concept_detail['symbol'])
198
- company_info.loc[:, 'sub_stock'] = False
199
- company_info.loc[company_info['symbol'].isin(sub_stock_symbol_list), 'sub_stock'] = True
200
-
201
- try:
202
- company_info.dropna(subset=['symbol'], axis=0, inplace=True)
203
- company_info.dropna(subset=['_id'], axis=0, inplace=True)
204
- mongodb_util.save_mongo(company_info, db_name_constant.COMPANY_INFO)
205
- # 保存历史数据
206
- save_company_info_his(company_info)
207
- except BaseException as e:
208
- logger.error("出现异常:{},{}", symbol, e)
209
-
210
- return company_info
211
-
212
-
213
- def save_company_info_his(company_info_df):
214
- now_date = datetime.now()
215
- str_day = now_date.strftime('%Y-%m-%d')
216
- company_info_df['symbol'] = company_info_df['_id']
217
- company_info_df['str_day'] = str_day
218
- company_info_df['_id'] = company_info_df['_id'] + "_" + str_day
219
- remove_query = {'str_day': str_day}
220
- tag = mongodb_util.remove_data(remove_query, db_name_constant.COMPANY_INFO_HIS)
221
- success = tag.acknowledged
222
- if success:
223
- mongodb_util.insert_mongo(company_info_df, db_name_constant.COMPANY_INFO_HIS)
224
-
95
+ # 同步公司基本信息
225
96
 
226
97
  def sync_company_base_info(symbol_list):
227
98
  global result
@@ -250,12 +121,16 @@ def sync_company_base_info(symbol_list):
250
121
  page_number = round(count / MAX_PAGE_NUMBER, 0) + 1
251
122
  page_number = int(page_number)
252
123
  threads = []
124
+
125
+ exist_company_df = mongodb_util.find_all_data(db_name_constant.COMPANY_INFO)
126
+
253
127
  # 创建多个线程来获取数据
254
128
  for page in range(page_number): # 0到100页
255
129
  end_count = (page + 1) * MAX_PAGE_NUMBER
256
130
  begin_count = page * MAX_PAGE_NUMBER
257
131
  page_df = east_money_stock_info.loc[begin_count:end_count]
258
- thread = threading.Thread(target=single_thread_sync_company_info, args=(page_df, kpl_real_time_quotes))
132
+ thread = threading.Thread(target=single_thread_sync_company_info,
133
+ args=(page_df, kpl_real_time_quotes, exist_company_df))
259
134
  threads.append(thread)
260
135
  thread.start()
261
136
 
@@ -264,11 +139,11 @@ def sync_company_base_info(symbol_list):
264
139
  thread.join()
265
140
 
266
141
  fail_df = east_money_stock_info.loc[east_money_stock_info['symbol'].isin(result)]
267
- single_thread_sync_company_info(fail_df, kpl_real_time_quotes)
142
+ single_thread_sync_company_info(fail_df, kpl_real_time_quotes, exist_company_df)
268
143
 
269
144
 
270
145
  def single_thread_sync_company_info(east_money_stock_info,
271
- kpl_real_time_quotes):
146
+ kpl_real_time_quotes, exist_company_df):
272
147
  global result
273
148
  fail_list = []
274
149
  for company_one in east_money_stock_info.itertuples():
@@ -318,10 +193,10 @@ def single_thread_sync_company_info(east_money_stock_info,
318
193
  now_date = datetime.now()
319
194
  str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
320
195
  company_info_type['sync_date'] = str_now_date
321
- fix_symbol_industry_df = company_constant_data_api.get_fix_symbol_industry()
196
+ fix_symbol_industry_df = company_constant_data.get_fix_symbol_industry()
322
197
  if company_one.symbol in list(fix_symbol_industry_df['symbol']):
323
198
  # fix sw_industry
324
- company_info_type = company_constant_data_api.fix_symbol_industry(company_info_type, company_one.symbol)
199
+ company_info_type = company_constant_data.fix_symbol_industry(company_info_type, company_one.symbol)
325
200
 
326
201
  # todo fix industry
327
202
  company_info_type['industry'] = company_info_type['second_sw_industry']
@@ -334,8 +209,9 @@ def single_thread_sync_company_info(east_money_stock_info,
334
209
  str_day = now_date.strftime('%Y-%m-%d')
335
210
  deal_days = k_line_common_service_api.get_deal_days(str_day, company_one.symbol)
336
211
  company_info_type['deal_days'] = deal_days
212
+
337
213
  # 设置年报信息
338
- company_info_type = get_recent_year_income(company_one.symbol, company_info_type)
214
+ company_info_type = get_recent_year_income(company_one.symbol, company_info_type, exist_company_df)
339
215
 
340
216
  try:
341
217
  if data_frame_util.is_not_empty(kpl_real_time_quotes):
@@ -356,7 +232,7 @@ def single_thread_sync_company_info(east_money_stock_info,
356
232
  except BaseException as e:
357
233
  logger.warning("设置开盘啦数据异常:{},{}", company_one.symbol, e)
358
234
 
359
- company_info_type = filed_sort(company_info_type)
235
+ company_info_type = company_constant_data.filed_sort(company_info_type)
360
236
  mongodb_util.save_mongo(company_info_type.copy(), 'company_info_base')
361
237
  logger.info("同步公司信息完成:{}", company_one.symbol + '-' + company_one.name)
362
238
  except BaseException as e:
@@ -395,22 +271,12 @@ def set_kpl_data(kpl_real_time_quotes_one, company_info_type, company_one):
395
271
  return company_info_type
396
272
 
397
273
 
398
- # 更新新上市公司信息
399
- def new_company_info_update():
400
- east_money_stock_info = get_east_money_stock_info()
401
- new_stock = common_service_fun_api.get_new_stock(east_money_stock_info)
402
- for company_one in new_stock.itertuples():
403
- try:
404
- sync_company_base_info([company_one.symbol])
405
- fix_company_industry(company_one.symbol)
406
-
407
- except BaseException as e:
408
- logger.error("出现异常:{}", e)
409
- company_common_service_api.company_info_industry_cache_clear
410
-
411
-
412
274
  # 保存申万行业分类
413
275
  def save_sw_data(company_info_type):
276
+ now_date = datetime.now()
277
+ hour = now_date.hour
278
+ if hour <= 15:
279
+ return company_info_type
414
280
  first_sw_info = company_info_type[[
415
281
  'first_sw_industry',
416
282
  'first_industry_code'
@@ -486,7 +352,18 @@ def save_sw_data(company_info_type):
486
352
 
487
353
 
488
354
  # 获取最近年报收入
489
- def get_recent_year_income(symbol, company_info_type):
355
+ def get_recent_year_income(symbol, company_info_type, exist_company_df):
356
+ now_date = datetime.now()
357
+ hour = now_date.hour
358
+ if hour <= 15:
359
+ exist_company_one_df = exist_company_df.loc[exist_company_df['_id'] == symbol]
360
+ if data_frame_util.is_not_empty(exist_company_one_df):
361
+ company_info_type['operate_profit'] = list(exist_company_one_df['operate_profit'])[0]
362
+ company_info_type['total_operate_income'] = list(exist_company_one_df['total_operate_income'])[0]
363
+ else:
364
+ company_info_type['operate_profit'] = 0
365
+ company_info_type['total_operate_income'] = 0
366
+ return company_info_type
490
367
  query = {'symbol': symbol, "REPORT_TYPE": "年报"}
491
368
  em_stock_profit = mongodb_util.descend_query(query, db_name_constant.EM_STOCK_PROFIT, 'REPORT_DATE', 1)
492
369
  if data_frame_util.is_not_empty(em_stock_profit):
@@ -511,5 +388,4 @@ if __name__ == '__main__':
511
388
  # sync_company_base_info(None)
512
389
  # new_company_info_update()
513
390
  sync_company_base_info(None)
514
- fix_company_industry(None)
515
391
  # group_by_industry()
@@ -0,0 +1,7 @@
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)
@@ -0,0 +1,112 @@
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
+ from mns_common.db.MongodbUtil import MongodbUtil
9
+ import pandas as pd
10
+ from datetime import datetime
11
+ from loguru import logger
12
+ import mns_scheduler.company_info.constant.company_constant_data as company_constant_data
13
+ import mns_common.constant.db_name_constant as db_name_constant
14
+ import mns_scheduler.concept.common.detaill.ths_concept_detail_api as ths_concept_detail_api
15
+ import mns_scheduler.company_info.base.sync_company_base_info_api as company_info_sync_api
16
+
17
+ mongodb_util = MongodbUtil('27017')
18
+ import mns_common.component.common_service_fun_api as common_service_fun_api
19
+ import mns_common.component.company.company_common_service_api as company_common_service_api
20
+
21
+
22
+
23
+
24
+
25
+ # 修改行业信息
26
+ def fix_company_industry(symbol):
27
+ if symbol is not None:
28
+ query = {"symbol": symbol}
29
+ company_info = mongodb_util.find_query_data('company_info_base', query)
30
+ else:
31
+ company_info = mongodb_util.find_all_data('company_info_base')
32
+
33
+ company_info = company_info.set_index(['second_sw_industry'], drop=False)
34
+ del company_info['industry']
35
+ # fix industry name
36
+ industry_final_fix_df = company_constant_data.get_industry_final_fix_df()
37
+ industry_final_fix_df = industry_final_fix_df.set_index(['second_sw_industry'], drop=True)
38
+ company_info = pd.merge(company_info, industry_final_fix_df, how='outer',
39
+ left_index=True, right_index=True)
40
+ # 将申万第三行业做为行业
41
+ company_info = company_constant_data.fix_industry_use_sw_third(company_info.copy())
42
+ company_info['industry'] = company_info['industry'].fillna('综合')
43
+ company_info = company_constant_data.filed_sort(company_info)
44
+ company_info['company_type'] = company_info['business_nature']
45
+
46
+ # 将list_date列中的所有NaN值设置为99990909
47
+ company_info['list_date'].fillna(20990909.0, inplace=True)
48
+
49
+ # 将日期数值转换为日期时间格式
50
+ company_info['list_date_01'] = pd.to_datetime(company_info['list_date'], format='%Y%m%d')
51
+
52
+ company_info['list_date'] = company_info['list_date'].apply(
53
+ lambda x: pd.to_numeric(x, errors="coerce"))
54
+
55
+ now_date = datetime.now()
56
+
57
+ # 计算日期差值 距离现在上市时间
58
+ company_info['diff_days'] = company_info.apply(
59
+ lambda row: (now_date - row['list_date_01']).days, axis=1)
60
+
61
+ str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
62
+ company_info['sync_date'] = str_now_date
63
+
64
+ try:
65
+ # 次新股
66
+ sub_stock = ths_concept_detail_api.get_ths_concept_detail('885598', None)
67
+ sub_stock_symbol_list = list(sub_stock['symbol'])
68
+ except BaseException as e:
69
+ logger.error("出现异常:{},{}", symbol, e)
70
+ query = {'concept_code': 885598}
71
+ ths_stock_concept_detail = mongodb_util.find_query_data('ths_stock_concept_detail', query)
72
+ sub_stock_symbol_list = list(ths_stock_concept_detail['symbol'])
73
+ company_info.loc[:, 'sub_stock'] = False
74
+ company_info.loc[company_info['symbol'].isin(sub_stock_symbol_list), 'sub_stock'] = True
75
+
76
+ try:
77
+ company_info.dropna(subset=['symbol'], axis=0, inplace=True)
78
+ company_info.dropna(subset=['_id'], axis=0, inplace=True)
79
+ mongodb_util.save_mongo(company_info, db_name_constant.COMPANY_INFO)
80
+ # 保存历史数据
81
+ save_company_info_his(company_info)
82
+ except BaseException as e:
83
+ logger.error("出现异常:{},{}", symbol, e)
84
+
85
+ return company_info
86
+
87
+
88
+ def save_company_info_his(company_info_df):
89
+ now_date = datetime.now()
90
+ str_day = now_date.strftime('%Y-%m-%d')
91
+ company_info_df['symbol'] = company_info_df['_id']
92
+ company_info_df['str_day'] = str_day
93
+ company_info_df['_id'] = company_info_df['_id'] + "_" + str_day
94
+ remove_query = {'str_day': str_day}
95
+ tag = mongodb_util.remove_data(remove_query, db_name_constant.COMPANY_INFO_HIS)
96
+ success = tag.acknowledged
97
+ if success:
98
+ mongodb_util.insert_mongo(company_info_df, db_name_constant.COMPANY_INFO_HIS)
99
+
100
+
101
+ # 更新新上市公司信息
102
+ def new_company_info_update():
103
+ east_money_stock_info = company_info_sync_api.get_east_money_stock_info()
104
+ new_stock = common_service_fun_api.get_new_stock(east_money_stock_info)
105
+ for company_one in new_stock.itertuples():
106
+ try:
107
+ company_info_sync_api.sync_company_base_info([company_one.symbol])
108
+ fix_company_industry(company_one.symbol)
109
+
110
+ except BaseException as e:
111
+ logger.error("出现异常:{}", e)
112
+ company_common_service_api.company_info_industry_cache_clear
@@ -0,0 +1,7 @@
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)
@@ -310,10 +310,64 @@ def fix_symbol_industry(company_info, symbol):
310
310
 
311
311
  def fix_one_symbol():
312
312
  symbol = '300483'
313
- company_info = mongodb_util.find_query_data('company_info', query={'_id': symbol})
313
+ company_info = mongodb_util.find_query_data('base', query={'_id': symbol})
314
314
  company_info = fix_symbol_industry(company_info, symbol)
315
315
  company_info['industry'] = company_info['second_sw_industry']
316
- mongodb_util.save_mongo(company_info, 'company_info')
316
+ mongodb_util.save_mongo(company_info, 'base')
317
+
318
+
319
+ def filed_sort(company_info):
320
+ return company_info[[
321
+ "_id",
322
+ "name",
323
+ "industry",
324
+ "first_sw_industry",
325
+ "first_industry_code",
326
+ "second_sw_industry",
327
+ "second_industry_code",
328
+ "third_sw_industry",
329
+ "third_industry_code",
330
+ "ths_concept_name",
331
+ "ths_concept_code",
332
+ "ths_concept_sync_day",
333
+ "em_industry",
334
+ "em_concept",
335
+ "business_nature",
336
+ "actual_controller_name",
337
+ "actual_controller_rate",
338
+ "final_controller_name",
339
+ "final_controller_rate",
340
+ "mv_circulation_ratio",
341
+ "flow_mv_sp",
342
+ "total_mv_sp",
343
+ "now_price",
344
+ "total_share",
345
+ "flow_share",
346
+ "total_mv",
347
+ "flow_mv",
348
+ "flow_mv_level",
349
+ "holder_controller_name",
350
+ "holder_controller_rate",
351
+ "area",
352
+ "list_date",
353
+ "deal_days",
354
+ "pe_ttm",
355
+ "pb",
356
+ "ROE",
357
+ "classification",
358
+ "base_business",
359
+ "address",
360
+ "market_id",
361
+ "symbol",
362
+ "amount",
363
+ "sync_date",
364
+ "ths_concept_list_info",
365
+ "kpl_plate_name",
366
+ "kpl_most_relative_name",
367
+ "kpl_plate_list_info",
368
+ 'operate_profit',
369
+ 'total_operate_income'
370
+ ]]
317
371
 
318
372
 
319
373
  if __name__ == '__main__':
@@ -0,0 +1,7 @@
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)
@@ -11,7 +11,8 @@ project_path = file_path[0:end]
11
11
  sys.path.append(project_path)
12
12
  mongodb_util = MongodbUtil('27017')
13
13
  import mns_common.api.msg.push_msg_api as push_msg_api
14
- import mns_scheduler.company_info.company_info_sync_api as company_info_sync_api
14
+ import mns_scheduler.company_info.base.sync_company_base_info_api as company_info_sync_api
15
+ import mns_scheduler.company_info.clean.company_info_clean_api as company_info_clean_api
15
16
  import mns_scheduler.concept.common.detaill.ths_concept_detail_api as ths_concept_detail_api
16
17
 
17
18
  max_concept_code = 886110
@@ -86,7 +87,7 @@ def save_ths_concept_detail(new_concept_symbol_df,
86
87
  query_field = {"first_industry": 1, "first_industry": 1, "industry": 1,
87
88
  "company_type": 1, "flow_mv_sp": 1,
88
89
  "total_mv_sp": 1}
89
- company_info = mongodb_util.find_query_data_choose_field('company_info',
90
+ company_info = mongodb_util.find_query_data_choose_field('base',
90
91
  query_company_info, query_field)
91
92
 
92
93
  company_info = company_info.set_index(['_id'], drop=True)
@@ -149,7 +150,7 @@ def update_company_info(new_concept_symbol_df):
149
150
  if new_concept_symbol_df.shape[0] > 0:
150
151
  symbol_list = list(new_concept_symbol_df['symbol'])
151
152
  company_info_sync_api.sync_company_base_info(symbol_list)
152
- company_info_sync_api.fix_company_industry(None)
153
+ company_info_clean_api.fix_company_industry(None)
153
154
  # 公司缓存信息清除
154
155
  company_common_service_api.company_info_industry_cache_clear()
155
156
 
@@ -17,7 +17,7 @@ mongodb_util = MongodbUtil('27017')
17
17
  # 通过概念指数同步所有概念下的股票组成
18
18
 
19
19
  # 同步概念下所有股票组成
20
- def update_concept_all_symbol_detail():
20
+ def update_concept_all_detail_info():
21
21
  query = {"symbol": {'$exists': True}}
22
22
  new_concept_list = mongodb_util.find_query_data("ths_concept_list", query)
23
23
  new_concept_list = new_concept_list.sort_values(by=['symbol'], ascending=False)
@@ -34,7 +34,7 @@ def update_concept_all_symbol_detail():
34
34
  time.sleep(1)
35
35
  new_concept_symbol_df.loc[:, 'way'] = 'index_sync'
36
36
  ths_concept_sync_common_api.save_ths_concept_detail(new_concept_symbol_df, one_concept.name,
37
- str_day, str_now_time, one_concept.symbol)
37
+ str_day, str_now_time, one_concept.symbol)
38
38
 
39
39
 
40
40
  if __name__ == '__main__':
@@ -86,8 +86,8 @@ def choose_type_new_concept(ths_concept_df):
86
86
  def update_symbol_new_concept(symbol_df, page_number):
87
87
  for stock_one in symbol_df.itertuples():
88
88
  try:
89
- symbol_ths_concept_all_df = ths_concept_detail_web.get_symbol_add_new_concept(stock_one.symbol)
90
- logger.info("同步symbol概念信息:{}", stock_one.symbol)
89
+ symbol_ths_concept_all_df = ths_concept_detail_web.get_one_symbol_all_ths_concepts(stock_one.symbol)
90
+ logger.info("同步代码{},所有概念信息", stock_one.symbol)
91
91
  if data_frame_util.is_empty(symbol_ths_concept_all_df):
92
92
  continue
93
93
 
@@ -178,4 +178,4 @@ def sync_symbol_all_concept(symbol):
178
178
 
179
179
 
180
180
  if __name__ == '__main__':
181
- sync_symbol_all_concept('300085')
181
+ sync_symbol_all_concept(None)
@@ -16,7 +16,7 @@ import mns_common.utils.ip_util as ip_util
16
16
  def db_status_check():
17
17
  try:
18
18
  query = {'symbol': '000001'}
19
- mongodb_util.find_query_data('company_info', query)
19
+ mongodb_util.find_query_data('base', query)
20
20
  except BaseException as e:
21
21
  ip = ip_util.get_host_ip()
22
22
  push_msg_api.push_msg_to_wechat("数据库挂了", "地址:" + ip + "-" + "数据库挂了")
@@ -32,13 +32,13 @@ import \
32
32
  import \
33
33
  mns_scheduler.concept.ths.update_concept_info.sync_one_symbol_all_concepts_api as sync_one_symbol_all_concepts_api
34
34
  import mns_scheduler.kpl.selection.total.sync_kpl_best_total_sync_api as sync_kpl_best_total_sync_api
35
- import mns_scheduler.company_info.company_info_sync_api as company_info_sync_api
35
+ import mns_scheduler.company_info.base.sync_company_base_info_api as company_info_sync_api
36
36
  import mns_scheduler.trade.auto_ipo_buy_api as auto_ipo_buy_api
37
37
  import mns_scheduler.kpl.selection.index.sync_best_choose_his_index as sync_best_choose_his_index
38
38
  import mns_scheduler.concept.ths.common.ths_concept_update_common_api as ths_concept_update_common_api
39
39
  import mns_scheduler.trade.sync_position_api as sync_position_api
40
40
  import mns_scheduler.concept.clean.kpl_concept_clean_api as kpl_concept_clean_api
41
- import mns_scheduler.company_info.de_list_stock_service as de_list_stock_service
41
+ import mns_scheduler.company_info.de_list_stock.de_list_stock_service as de_list_stock_service
42
42
  import mns_scheduler.irm.stock_irm_cninfo_service as stock_irm_cninfo_service
43
43
  import mns_scheduler.open.sync_one_day_open_data_to_db_service as sync_one_day_open_data_to_db_service
44
44
  import mns_scheduler.zt.high_chg.sync_high_chg_pool_service as sync_high_chg_pool_service
@@ -46,7 +46,7 @@ import mns_scheduler.zt.high_chg.sync_high_chg_real_time_quotes_service as sync_
46
46
  import mns_scheduler.risk.self.wei_pan_stock_api as wei_pan_stock_api
47
47
  import mns_scheduler.risk.transactions.transactions_check_api as transactions_check_api
48
48
  import mns_scheduler.concept.ths.sync_new_index.sync_ths_concept_new_index_api as sync_ths_concept_new_index_api
49
-
49
+ import mns_scheduler.company_info.clean.company_info_clean_api as company_info_clean_api
50
50
 
51
51
  # 同步交易日期任务完成
52
52
  def sync_trade_date():
@@ -234,9 +234,9 @@ def concept_info_clean():
234
234
 
235
235
 
236
236
  # 同步概念下所有股票组成 by 概念指数
237
- def update_one_concept_all_symbol_detail():
237
+ def update_concept_all_detail_info():
238
238
  logger.info('同步概念下所有股票组成')
239
- sync_one_concept_all_symbols_api.update_concept_all_symbol_detail()
239
+ sync_one_concept_all_symbols_api.update_concept_all_detail_info()
240
240
  ths_concept_update_common_api.update_ths_concept_choose_null_reason()
241
241
 
242
242
 
@@ -280,7 +280,7 @@ def sync_new_concept_index_task():
280
280
  # 清洗公司基本信息
281
281
  def update_company_base_info():
282
282
  company_info_sync_api.sync_company_base_info(None)
283
- company_info_sync_api.fix_company_industry(None)
283
+ company_info_clean_api.fix_company_industry(None)
284
284
  # 退市股票同步
285
285
  de_list_stock_service.sync_de_list_stock()
286
286
  logger.info('同步公司基本信息任务完成')
@@ -378,7 +378,7 @@ blockingScheduler.add_job(sync_stock_gdfx_free_top_10_one_day, 'cron', hour='08,
378
378
  blockingScheduler.add_job(concept_info_clean, 'cron', hour='9,12,20', minute='24')
379
379
 
380
380
  # 更新概念指数下所有股票组成 by 概念代码
381
- blockingScheduler.add_job(update_one_concept_all_symbol_detail, 'cron', hour='08,18,12', minute='30')
381
+ blockingScheduler.add_job(update_concept_all_detail_info, 'cron', hour='08,18,12', minute='30')
382
382
 
383
383
  # 同步单只股票下所有概念 by 股票代码
384
384
  blockingScheduler.add_job(update_one_symbol_all_concepts, 'cron', hour='09,18,12', minute='15')
@@ -393,7 +393,7 @@ blockingScheduler.add_job(sync_new_concept_index_task, 'interval', minutes=10, m
393
393
  blockingScheduler.add_job(sync_all_kpl_plate_info, 'interval', minutes=5, max_instances=4)
394
394
 
395
395
  # 同步公司基本信息
396
- blockingScheduler.add_job(update_company_base_info, 'cron', hour='08,19', minute='05')
396
+ blockingScheduler.add_job(update_company_base_info, 'cron', hour='18,22', minute='05')
397
397
  # 更新当天涨停股票池
398
398
  blockingScheduler.add_job(sync_stock_zt_pool, 'cron', hour='15,19,21,23', minute='42')
399
399
 
@@ -6,7 +6,7 @@ end = file_path.index('mns') + 17
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
  import mns_scheduler.real_time.realtime_quotes_now_sync as realtime_quotes_now_sync
9
- import mns_scheduler.company_info.company_info_sync_api as company_info_sync_api
9
+ import mns_scheduler.company_info.clean.company_info_clean_api as company_info_clean_api
10
10
  from loguru import logger
11
11
  from apscheduler.schedulers.blocking import BlockingScheduler
12
12
 
@@ -14,7 +14,7 @@ from apscheduler.schedulers.blocking import BlockingScheduler
14
14
  def sync_realtime_quotes():
15
15
  logger.error("同步实时数据开始")
16
16
  # 更新新股公司信息
17
- company_info_sync_api.new_company_info_update()
17
+ company_info_clean_api.new_company_info_update()
18
18
  realtime_quotes_now_sync.sync_realtime_quotes()
19
19
  logger.error("同步实时数据完成")
20
20
 
@@ -1,4 +1,4 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.1.0.2
3
+ Version: 1.1.0.4
4
4
 
@@ -2,7 +2,7 @@ mns_scheduler/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
2
2
  mns_scheduler/backup/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
3
3
  mns_scheduler/backup/em/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
4
4
  mns_scheduler/backup/em/em_new_concept_his_sync.py,sha256=Yqbuz9VE9433o0Z6BvDo5adhj3lK4vmN66XNQBIdC1k,4992
5
- mns_scheduler/backup/em/em_new_concept_sync_common_api.py,sha256=KnNCf0KXy31GFwF1-wbbkfDM-H7-cEtcVoCwl4QmoVs,7083
5
+ mns_scheduler/backup/em/em_new_concept_sync_common_api.py,sha256=358wt-U7-c0fe-6EPSFD24i0-ykunYnTXBerlXyPDIs,7075
6
6
  mns_scheduler/backup/em/em_new_concept_sync_web.py,sha256=wVS0yLyPYzpcxfWAuUqmqbYkjw9wjpo48CvLSZFckzw,2334
7
7
  mns_scheduler/backup/ths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  mns_scheduler/backup/ths/sync_ths_concept_by_ak_api.py,sha256=8QBiRKc0Q3ez-kBwvz7G8HrFDD_ANd8smOpQtGyvKIs,5371
@@ -10,9 +10,14 @@ mns_scheduler/backup/ths/sync_ths_new_concept_by_web_api.py,sha256=dLd2V67AFnE9x
10
10
  mns_scheduler/big_deal/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
11
11
  mns_scheduler/big_deal/ths_big_deal_sync.py,sha256=aMFj-_pLprh4vGjSSzmr_tlYoPA0L4Lm0SkLRkQwIiw,4564
12
12
  mns_scheduler/company_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
13
- mns_scheduler/company_info/company_constant_data.py,sha256=_JUan2ds_o4dMUwiPyKnF6oUQd8Nf2UqkHYhSv1FW08,14531
14
- mns_scheduler/company_info/company_info_sync_api.py,sha256=fCRHXGBx4ugJI3KydqhtjYAHXEmyTPIgr-NBhYPCOXM,22576
15
- mns_scheduler/company_info/de_list_stock_service.py,sha256=GCp6hlvO-SuH1oIpEsYZwEnGUOa6fXb2D7CqAUYXKQA,1993
13
+ mns_scheduler/company_info/base/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
14
+ mns_scheduler/company_info/base/sync_company_base_info_api.py,sha256=zI6CaQ7LuXeXjJMexb1i70dPyhZQB3LHbsbrRhJaVDc,18173
15
+ mns_scheduler/company_info/clean/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
16
+ mns_scheduler/company_info/clean/company_info_clean_api.py,sha256=zMPbIz91l8DpIGc7ljG6dEdD5QXjir2a0wWHGt2Ca78,4805
17
+ mns_scheduler/company_info/constant/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
18
+ mns_scheduler/company_info/constant/company_constant_data.py,sha256=emaRsH5y-d6IleEG2Od4zNvkL9_Yqg4PimbQVYOM7eM,15870
19
+ mns_scheduler/company_info/de_list_stock/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
20
+ mns_scheduler/company_info/de_list_stock/de_list_stock_service.py,sha256=GCp6hlvO-SuH1oIpEsYZwEnGUOa6fXb2D7CqAUYXKQA,1993
16
21
  mns_scheduler/concept/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
17
22
  mns_scheduler/concept/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
18
23
  mns_scheduler/concept/clean/kpl_concept_clean_api.py,sha256=xxIIgrXLI6xLf10t4unJa7aMB_QeKeki1HJVeXsntkY,4512
@@ -22,16 +27,16 @@ mns_scheduler/concept/common/detaill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
22
27
  mns_scheduler/concept/common/detaill/ths_concept_detail_api.py,sha256=tRuSkET-lw1M7rHDImrIM_1X-uMhxq_zF_d3FX1DoUc,9378
23
28
  mns_scheduler/concept/ths/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
24
29
  mns_scheduler/concept/ths/common/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
25
- mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=W-Bu2PVFOTh5h2h_27_RcszXLRLq6TU1hCg9y_FGVyw,6780
30
+ mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=zP7Hu97m0BwMs1M3F5TWiLCJ0g-wwFunQduoG189bhE,6873
26
31
  mns_scheduler/concept/ths/common/ths_concept_update_common_api.py,sha256=4BQT3A9t-nDIyCpILgRZF7ZOgK1oabp-gJl5nyWvKWc,4418
27
32
  mns_scheduler/concept/ths/sync_new_index/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
28
33
  mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py,sha256=9ol2cvxSO2Ot4Z5fmlo9tUPFe6WwsuVX_H9ogtv3QrI,7841
29
34
  mns_scheduler/concept/ths/update_concept_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
30
- mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py,sha256=ipRtiihpHlbxuces7YpHfvBtCDxgzrVXjcCKZiFBPaw,1928
31
- mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py,sha256=oPDi3h4BZWBUPnj3QeIvXhlqhL80_U6oiTuOEblSu54,8832
35
+ mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py,sha256=q3yVi_OtvM5ja-4cG_gkS8sJLhN8ylN6ZQcOU2SIODo,1922
36
+ mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py,sha256=HVqDSBruORebtiliKps2swJo_GNg_8mqT0r9cZX6sj8,8839
32
37
  mns_scheduler/db/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
33
38
  mns_scheduler/db/col_move_service.py,sha256=1XMuC9E9eif8eeLWqnby_c9uhuoZO0ZaMa5xssWe4Wg,4090
34
- mns_scheduler/db/db_status.py,sha256=K1jtYIGZzDV6knpoJLLnXEhN3tyziJp_zY2gSfguHCA,747
39
+ mns_scheduler/db/db_status.py,sha256=rxSvDHCwrqCHQFI6MnF6YBFo2F-baEMg6ShSOU35vVU,739
35
40
  mns_scheduler/dt/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
36
41
  mns_scheduler/dt/stock_dt_pool_sync.py,sha256=5ivRUOnFtOapZniwTbujf1lVq3y4btm2Cmd5R6JJAVo,3466
37
42
  mns_scheduler/finance/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
@@ -117,9 +122,9 @@ mns_scheduler/zt/script/sync_high_chg_pool_his_data.py,sha256=R0syG5gcXRlLxswbBl
117
122
  mns_scheduler/zt/zt_pool/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
118
123
  mns_scheduler/zt/zt_pool/zt_pool_sync_api.py,sha256=YusilleacIhhks1m7qkYHdBS16yvjai2avCSfrDpWAg,7607
119
124
  mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
120
- mns_scheduler/zz_task/data_sync_task.py,sha256=Nl-hSRxrgdQh57UubES_MtI0RBYDaZUnBb-M_Sr6Bd8,17319
121
- mns_scheduler/zz_task/sync_realtime_quotes_task.py,sha256=DN3bq2XCDZC-PHlbD2NTog48bR44EruIEc2QVGKg7Tk,932
122
- mns_scheduler-1.1.0.2.dist-info/METADATA,sha256=Es8f0EL6Evt89ypZrAYq1q2HFcg_Xr0v-5xamio_y50,64
123
- mns_scheduler-1.1.0.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
124
- mns_scheduler-1.1.0.2.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
125
- mns_scheduler-1.1.0.2.dist-info/RECORD,,
125
+ mns_scheduler/zz_task/data_sync_task.py,sha256=VSmcXpMrEZLQTolnh4YHWD0OFiVTYTrvDnkz3871gWE,17418
126
+ mns_scheduler/zz_task/sync_realtime_quotes_task.py,sha256=AMTdeyZ-eGaVpZjggKTPr818FFYkRihY3nAvH5Je2A0,941
127
+ mns_scheduler-1.1.0.4.dist-info/METADATA,sha256=yttamFeH_h_w26Rq69LlXQtCrCzJbZudZ8M_NTA8il8,64
128
+ mns_scheduler-1.1.0.4.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
129
+ mns_scheduler-1.1.0.4.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
130
+ mns_scheduler-1.1.0.4.dist-info/RECORD,,