cygx_research_summary.go 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895
  1. package services
  2. import (
  3. "context"
  4. "fmt"
  5. "hongze/hongze_task/models/data_manage"
  6. "hongze/hongze_task/services/alarm_msg"
  7. "hongze/hongze_task/utils"
  8. "regexp"
  9. "strconv"
  10. "strings"
  11. "time"
  12. )
  13. func CygxResearchSummary(cont context.Context) (err error) {
  14. defer func() {
  15. if err != nil {
  16. go alarm_msg.SendAlarmMsg("CygxResearchSummary-定时本周生成研究汇总失败, ErrMsg:\n"+err.Error(), 3)
  17. fmt.Println(err)
  18. }
  19. }()
  20. //content := "本周研究汇总"
  21. friday := utils.GetNowWeekFriday().Add(15 * time.Hour)
  22. lastfriday := utils.GetLastWeekFriday().Add(15 * time.Hour)
  23. lastMonth := int(lastfriday.Month())
  24. month := int(friday.Month())
  25. lastDay := lastfriday.Day()
  26. day := friday.Day()
  27. //friday, _ = time.Parse(utils.FormatDateTime, "2022-09-02 15:00:00")
  28. //lastfriday, _ = time.Parse(utils.FormatDateTime, "2022-08-26 15:00:00")
  29. itemCrs := new(data_manage.CygxResearchSummary)
  30. itemCrs.AdminId = 11
  31. itemCrs.AdminName = "admin"
  32. itemCrs.Title = fmt.Sprintf("本周研究汇总(%d月%d日至%d月%d日)", lastMonth, lastDay, month, day)
  33. itemCrs.Department = "弘则产品组"
  34. itemCrs.Abstract = ""
  35. itemCrs.PublishStatus = 0
  36. //itemCrs.Periods = strconv.Itoa(total + 1)
  37. itemCrs.CreateTime = time.Now()
  38. itemCrs.LastUpdatedTime = time.Now()
  39. itemCrs.PublishDate = time.Now()
  40. articleId, e := data_manage.AddCygxResearchSummaryOrm(itemCrs)
  41. if e != nil {
  42. err = e
  43. return
  44. }
  45. mappingList, err := data_manage.CygxReportMappingist()
  46. if err != nil {
  47. return
  48. }
  49. CategoryChartPermissionIdMap := make(map[int]int)
  50. for _, item := range mappingList {
  51. CategoryChartPermissionIdMap[item.CategoryId] = item.ChartPermissionId
  52. }
  53. yanxMappingList, err := data_manage.CygxArticleTypeMappingList()
  54. if err != nil {
  55. return
  56. }
  57. articleTypeChartPermissionIdMap := make(map[int]int)
  58. for _, item := range yanxMappingList {
  59. articleTypeChartPermissionIdMap[item.ArticleTypeId] = item.YanxPermissionId
  60. }
  61. //深度报告
  62. {
  63. var condition string
  64. var pars []interface{}
  65. condition += ` AND publish_date < ? AND publish_date >= ? `
  66. pars = append(pars, friday, lastfriday)
  67. sdbgList := make([]*data_manage.CygxArticle, 0)
  68. //医药
  69. {
  70. newCondition := condition + ` AND category_id_two IN(65,102)`
  71. list, e := data_manage.GetReportArticleList(newCondition, pars)
  72. if e != nil {
  73. err = e
  74. fmt.Println("GetReportArticleList err:", e)
  75. return
  76. }
  77. for _, article := range list {
  78. sdbgList = append(sdbgList, article)
  79. }
  80. }
  81. //消费
  82. {
  83. newCondition := condition + ` AND category_id_two IN(62,67,1008)`
  84. list, e := data_manage.GetReportArticleList(newCondition, pars)
  85. if e != nil {
  86. err = e
  87. fmt.Println("GetReportArticleList err:", e)
  88. return
  89. }
  90. for _, article := range list {
  91. sdbgList = append(sdbgList, article)
  92. }
  93. }
  94. //科技
  95. {
  96. newCondition := condition + ` AND category_id_two IN(57,69,1009)`
  97. list, e := data_manage.GetReportArticleList(newCondition, pars)
  98. if e != nil {
  99. err = e
  100. fmt.Println("GetReportArticleList err:", e)
  101. return
  102. }
  103. for _, article := range list {
  104. sdbgList = append(sdbgList, article)
  105. }
  106. }
  107. //智造
  108. {
  109. newCondition := condition + ` AND category_id_two IN(66,85)`
  110. list, e := data_manage.GetReportArticleList(newCondition, pars)
  111. if e != nil {
  112. err = e
  113. fmt.Println("GetReportArticleList err:", e)
  114. return
  115. }
  116. for _, article := range list {
  117. sdbgList = append(sdbgList, article)
  118. }
  119. }
  120. var logItems []*data_manage.CygxResearchSummaryLog
  121. for _, article := range sdbgList {
  122. head := "<div class=\"title-content\">\n 【" + article.Title + "】 "
  123. sliceSubjects := strings.Split(article.Stock, "/")
  124. var company string
  125. if sliceSubjects[0] != "" {
  126. for _, vSubject := range sliceSubjects {
  127. sliceKuohao := strings.Split(vSubject, "(") //过滤括号
  128. sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
  129. subject := sliceXiahuaxian[0]
  130. company += "#" + subject
  131. }
  132. company = " <span style=\"color: #ff1720\">" + company + "</span>"
  133. }
  134. annotation := strings.ReplaceAll(article.Annotation, "<strong>", "")
  135. annotation = strings.ReplaceAll(annotation, "</strong>", "")
  136. re, _ := regexp.Compile("<strong.*?>")
  137. annotation = re.ReplaceAllString(annotation, "")
  138. logItem := data_manage.CygxResearchSummaryLog{
  139. ArticleId: int(articleId),
  140. Type: "SDBG",
  141. ChartPermissionId: CategoryChartPermissionIdMap[article.CategoryIdTwo],
  142. CreateTime: time.Now(),
  143. Body: head + company + annotation,
  144. ReportLink: "https://vmp.hzinsights.com/v2/articles/" + strconv.Itoa(article.ArticleId),
  145. LinkArticleId: article.LinkArticleId,
  146. }
  147. logItems = append(logItems, &logItem)
  148. }
  149. if len(logItems) > 0 {
  150. _, e := data_manage.AddCygxResearchSummaryLogOrm(logItems)
  151. if e != nil {
  152. err = e
  153. return
  154. }
  155. }
  156. }
  157. //产业调研纪要
  158. {
  159. var condition string
  160. var pars []interface{}
  161. condition += ` AND publish_date < ? AND publish_date >= ? `
  162. pars = append(pars, friday, lastfriday)
  163. cydyjyList := make([]*data_manage.CygxArticle, 0)
  164. //医药
  165. {
  166. newCondition := condition + ` AND category_id_two IN(28,93,301,71)`
  167. list, e := data_manage.GetReportArticleList(newCondition, pars)
  168. if e != nil {
  169. err = e
  170. fmt.Println("GetReportArticleList err:", e)
  171. return
  172. }
  173. for _, article := range list {
  174. cydyjyList = append(cydyjyList, article)
  175. }
  176. }
  177. //消费
  178. {
  179. newCondition := condition + ` AND category_id_two IN(32,58)`
  180. list, e := data_manage.GetReportArticleList(newCondition, pars)
  181. if e != nil {
  182. err = e
  183. fmt.Println("GetReportArticleList err:", e)
  184. return
  185. }
  186. for _, article := range list {
  187. cydyjyList = append(cydyjyList, article)
  188. }
  189. }
  190. //科技
  191. {
  192. newCondition := condition + ` AND category_id_two IN(79)`
  193. list, e := data_manage.GetReportArticleList(newCondition, pars)
  194. if e != nil {
  195. err = e
  196. fmt.Println("GetReportArticleList err:", e)
  197. return
  198. }
  199. for _, article := range list {
  200. cydyjyList = append(cydyjyList, article)
  201. }
  202. }
  203. //智造
  204. {
  205. newCondition := condition + ` AND category_id_two IN(84)`
  206. list, e := data_manage.GetReportArticleList(newCondition, pars)
  207. if e != nil {
  208. err = e
  209. fmt.Println("GetReportArticleList err:", e)
  210. return
  211. }
  212. for _, article := range list {
  213. cydyjyList = append(cydyjyList, article)
  214. }
  215. }
  216. var logItems []*data_manage.CygxResearchSummaryLog
  217. for _, article := range cydyjyList {
  218. head := "<div class=\"title-content\">\n 【" + article.Title + "】 "
  219. sliceSubjects := strings.Split(article.Stock, "/")
  220. var company string
  221. if sliceSubjects[0] != "" {
  222. for _, vSubject := range sliceSubjects {
  223. sliceKuohao := strings.Split(vSubject, "(") //过滤括号
  224. sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
  225. subject := sliceXiahuaxian[0]
  226. company += "#" + subject
  227. }
  228. company = " <span style=\"color: #ff1720\">" + company + "</span>"
  229. }
  230. annotation := strings.ReplaceAll(article.Annotation, "<strong>", "")
  231. annotation = strings.ReplaceAll(annotation, "</strong>", "")
  232. re, _ := regexp.Compile("<strong.*?>")
  233. annotation = re.ReplaceAllString(annotation, "")
  234. logItem := data_manage.CygxResearchSummaryLog{
  235. ArticleId: int(articleId),
  236. Type: "CYDYJY",
  237. ChartPermissionId: CategoryChartPermissionIdMap[article.CategoryIdTwo],
  238. CreateTime: time.Now(),
  239. Body: head + company + annotation,
  240. ReportLink: "https://vmp.hzinsights.com/v2/articles/" + strconv.Itoa(article.ArticleId),
  241. LinkArticleId: article.LinkArticleId,
  242. }
  243. logItems = append(logItems, &logItem)
  244. }
  245. if len(logItems) > 0 {
  246. _, e := data_manage.AddCygxResearchSummaryLogOrm(logItems)
  247. if e != nil {
  248. err = e
  249. return
  250. }
  251. }
  252. }
  253. //上市公司调研纪要
  254. {
  255. var condition string
  256. var pars []interface{}
  257. condition += ` AND publish_date < ? AND publish_date >= ? `
  258. pars = append(pars, friday, lastfriday)
  259. ssgsdyjyList := make([]*data_manage.CygxArticle, 0)
  260. //医药
  261. {
  262. newCondition := condition + ` AND category_id_two IN(74,96)`
  263. list, e := data_manage.GetReportArticleList(newCondition, pars)
  264. if e != nil {
  265. err = e
  266. fmt.Println("GetReportArticleList err:", e)
  267. return
  268. }
  269. for _, article := range list {
  270. ssgsdyjyList = append(ssgsdyjyList, article)
  271. }
  272. }
  273. //消费
  274. {
  275. newCondition := condition + ` AND category_id_two IN(88)`
  276. list, e := data_manage.GetReportArticleList(newCondition, pars)
  277. if e != nil {
  278. err = e
  279. fmt.Println("GetReportArticleList err:", e)
  280. return
  281. }
  282. for _, article := range list {
  283. ssgsdyjyList = append(ssgsdyjyList, article)
  284. }
  285. }
  286. //科技
  287. {
  288. newCondition := condition + ` AND category_id_two IN(45)`
  289. list, e := data_manage.GetReportArticleList(newCondition, pars)
  290. if e != nil {
  291. err = e
  292. fmt.Println("GetReportArticleList err:", e)
  293. return
  294. }
  295. for _, article := range list {
  296. ssgsdyjyList = append(ssgsdyjyList, article)
  297. }
  298. }
  299. //智造
  300. {
  301. newCondition := condition + ` AND category_id_two IN(86)`
  302. list, e := data_manage.GetReportArticleList(newCondition, pars)
  303. if e != nil {
  304. err = e
  305. fmt.Println("GetReportArticleList err:", e)
  306. return
  307. }
  308. for _, article := range list {
  309. ssgsdyjyList = append(ssgsdyjyList, article)
  310. }
  311. }
  312. var logItems []*data_manage.CygxResearchSummaryLog
  313. for _, article := range ssgsdyjyList {
  314. head := "<div class=\"title-content\">\n 【" + article.Title + "】 "
  315. sliceSubjects := strings.Split(article.Stock, "/")
  316. var company string
  317. if sliceSubjects[0] != "" {
  318. for _, vSubject := range sliceSubjects {
  319. sliceKuohao := strings.Split(vSubject, "(") //过滤括号
  320. sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
  321. subject := sliceXiahuaxian[0]
  322. company += "#" + subject
  323. }
  324. company = " <span style=\"color: #ff1720\">" + company + "</span>"
  325. }
  326. annotation := strings.ReplaceAll(article.Annotation, "<strong>", "")
  327. annotation = strings.ReplaceAll(annotation, "</strong>", "")
  328. re, _ := regexp.Compile("<strong.*?>")
  329. annotation = re.ReplaceAllString(annotation, "")
  330. logItem := data_manage.CygxResearchSummaryLog{
  331. ArticleId: int(articleId),
  332. Type: "SSGS",
  333. ChartPermissionId: CategoryChartPermissionIdMap[article.CategoryIdTwo],
  334. CreateTime: time.Now(),
  335. Body: head + company + annotation,
  336. ReportLink: "https://vmp.hzinsights.com/v2/articles/" + strconv.Itoa(article.ArticleId),
  337. LinkArticleId: article.LinkArticleId,
  338. }
  339. logItems = append(logItems, &logItem)
  340. }
  341. if len(logItems) > 0 {
  342. _, e := data_manage.AddCygxResearchSummaryLogOrm(logItems)
  343. if e != nil {
  344. err = e
  345. return
  346. }
  347. }
  348. }
  349. //买方研选
  350. {
  351. var condition string
  352. var pars []interface{}
  353. condition += ` AND publish_date < ? AND publish_date >= ? `
  354. pars = append(pars, friday, lastfriday)
  355. mfyxList := make([]*data_manage.CygxArticle, 0)
  356. //纪要
  357. {
  358. newCondition := condition + ` AND article_type_id = 1 `
  359. list, e := data_manage.GetReportArticleList(newCondition, pars)
  360. if e != nil {
  361. err = e
  362. fmt.Println("GetReportArticleList err:", e)
  363. return
  364. }
  365. for _, article := range list {
  366. mfyxList = append(mfyxList, article)
  367. }
  368. }
  369. //观点
  370. {
  371. newCondition := condition + ` AND article_type_id = 2 `
  372. list, e := data_manage.GetReportArticleList(newCondition, pars)
  373. if e != nil {
  374. err = e
  375. fmt.Println("GetReportArticleList err:", e)
  376. return
  377. }
  378. for _, article := range list {
  379. mfyxList = append(mfyxList, article)
  380. }
  381. }
  382. //沙龙
  383. {
  384. newCondition := condition + ` AND article_type_id = 13 `
  385. list, e := data_manage.GetReportArticleList(newCondition, pars)
  386. if e != nil {
  387. err = e
  388. fmt.Println("GetReportArticleList err:", e)
  389. return
  390. }
  391. for _, article := range list {
  392. mfyxList = append(mfyxList, article)
  393. }
  394. }
  395. var articleIdStr string
  396. for _, v := range mfyxList {
  397. articleIdStr += strconv.Itoa(v.ArticleId) + ","
  398. }
  399. mapArticleSubject := make(map[int]string)
  400. articleIdStr = strings.TrimRight(articleIdStr, ",")
  401. listSubject, e := data_manage.GetArticleSubjectList(articleIdStr)
  402. if e != nil {
  403. err = e
  404. fmt.Println("GetArticleSubjectList err:", e)
  405. return
  406. }
  407. for _, v := range listSubject {
  408. mapArticleSubject[v.ArticleId] = v.SubjectName
  409. }
  410. var logItems []*data_manage.CygxResearchSummaryLog
  411. for _, article := range mfyxList {
  412. head := "<div class=\"title-content\">\n 【" + article.Title + "】 "
  413. body := strings.ReplaceAll(article.Body, "<strong>", "")
  414. body = strings.ReplaceAll(body, "</strong>", "")
  415. re, _ := regexp.Compile("<strong.*?>")
  416. body = re.ReplaceAllString(body, "")
  417. //研选的公司需要单独处理
  418. //sliceSubjects := strings.Split(article.Stock, "/")
  419. var company string
  420. //if sliceSubjects[0] != "" {
  421. // for _, vSubject := range sliceSubjects {
  422. // sliceKuohao := strings.Split(vSubject, "(") //过滤括号
  423. // sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
  424. // subject := sliceXiahuaxian[0]
  425. // company += "#" + subject
  426. // }
  427. // company = " <span style=\"color: #ff1720\">" + company + "</span>"
  428. //}
  429. if mapArticleSubject[article.ArticleId] != ""{
  430. company = " <span style=\"color: #ff1720\">"+"#"+mapArticleSubject[article.ArticleId]+"</span>"
  431. }
  432. var plus int
  433. coreIndex := strings.Index(body, "核心观点:")
  434. plus = 15
  435. if coreIndex == -1 {
  436. coreIndex = strings.Index(body, "核心观点:")
  437. plus = 13
  438. }
  439. if coreIndex == -1 {
  440. coreIndex = strings.Index(body, "核心观点")
  441. plus = 12
  442. }
  443. if coreIndex == -1 {
  444. coreIndex = strings.Index(body, "核心结论:")
  445. plus = 15
  446. }
  447. if coreIndex == -1 {
  448. coreIndex = strings.Index(body, "核心结论:")
  449. plus = 13
  450. }
  451. if coreIndex == -1 {
  452. coreIndex = strings.Index(body, "核心结论")
  453. plus = 12
  454. }
  455. endIndex := strings.Index(body, "<hr")
  456. fmt.Println("ID:",article.ArticleId)
  457. fmt.Println("coreIndex:", coreIndex, endIndex)
  458. if coreIndex != -1 && endIndex != -1 {
  459. body = body[coreIndex+plus : endIndex]
  460. logItem := data_manage.CygxResearchSummaryLog{
  461. ArticleId: int(articleId),
  462. Type: "YANX",
  463. ChartPermissionId: articleTypeChartPermissionIdMap[article.ArticleTypeId],
  464. CreateTime: time.Now(),
  465. Body: head + company + body,
  466. ReportLink: "https://details.hzinsights.com/cygx/report?id=" + article.ArticleIdMd5,
  467. LinkArticleId: article.LinkArticleId,
  468. }
  469. logItems = append(logItems, &logItem)
  470. }
  471. }
  472. if len(logItems) > 0 {
  473. _, e := data_manage.AddCygxResearchSummaryLogOrm(logItems)
  474. if e != nil {
  475. err = e
  476. return
  477. }
  478. }
  479. }
  480. return
  481. }
  482. func CygxLastWeekSummary(cont context.Context) (err error) {
  483. defer func() {
  484. if err != nil {
  485. go alarm_msg.SendAlarmMsg("CygxLastWeekSummary-定时生成上周纪要汇总失败, ErrMsg:\n"+err.Error(), 3)
  486. fmt.Println(err)
  487. }
  488. }()
  489. tuesday := utils.GetNowWeekTuesday().Add(8 * time.Hour)
  490. lastTuesday := utils.GetLastWeekTuesday().Add(8 * time.Hour)
  491. lastMonth := int(lastTuesday.Month())
  492. month := int(tuesday.Month())
  493. lastDay := lastTuesday.Day()
  494. day := tuesday.Day()
  495. itemCrs := new(data_manage.CygxMinutesSummary)
  496. itemCrs.AdminId = 11
  497. itemCrs.AdminName = "admin"
  498. itemCrs.Title = fmt.Sprintf("上周纪要汇总(%d月%d日至%d月%d日)", lastMonth, lastDay, month, day)
  499. itemCrs.Department = "弘则产品组"
  500. itemCrs.Abstract = ""
  501. itemCrs.PublishStatus = 0
  502. //itemCrs.Periods = strconv.Itoa(total + 1)
  503. itemCrs.CreateTime = time.Now()
  504. itemCrs.LastUpdatedTime = time.Now()
  505. itemCrs.PublishDate = time.Now()
  506. articleId, e := data_manage.AddCygxMinutesSummaryOrm(itemCrs)
  507. if e != nil {
  508. err = e
  509. return
  510. }
  511. mappingList, err := data_manage.CygxReportMappingist()
  512. if err != nil {
  513. return
  514. }
  515. CategoryChartPermissionIdMap := make(map[int]int)
  516. for _, item := range mappingList {
  517. CategoryChartPermissionIdMap[item.CategoryId] = item.ChartPermissionId
  518. }
  519. yanxMappingList, err := data_manage.CygxArticleTypeMappingList()
  520. if err != nil {
  521. return
  522. }
  523. articleTypeChartPermissionIdMap := make(map[int]int)
  524. for _, item := range yanxMappingList {
  525. articleTypeChartPermissionIdMap[item.ArticleTypeId] = item.YanxPermissionId
  526. }
  527. //产业调研纪要
  528. {
  529. var condition string
  530. var pars []interface{}
  531. condition += ` AND publish_date < ? AND publish_date >= ? `
  532. pars = append(pars, tuesday, lastTuesday)
  533. cydyjyList := make([]*data_manage.CygxArticle, 0)
  534. //医药
  535. {
  536. newCondition := condition + ` AND category_id_two IN(28,93,301,71)`
  537. list, e := data_manage.GetReportArticleList(newCondition, pars)
  538. if e != nil {
  539. err = e
  540. fmt.Println("GetReportArticleList err:", e)
  541. return
  542. }
  543. for _, article := range list {
  544. cydyjyList = append(cydyjyList, article)
  545. }
  546. }
  547. //消费
  548. {
  549. newCondition := condition + ` AND category_id_two IN(32,58)`
  550. list, e := data_manage.GetReportArticleList(newCondition, pars)
  551. if e != nil {
  552. err = e
  553. fmt.Println("GetReportArticleList err:", e)
  554. return
  555. }
  556. for _, article := range list {
  557. cydyjyList = append(cydyjyList, article)
  558. }
  559. }
  560. //科技
  561. {
  562. newCondition := condition + ` AND category_id_two IN(79)`
  563. list, e := data_manage.GetReportArticleList(newCondition, pars)
  564. if e != nil {
  565. err = e
  566. fmt.Println("GetReportArticleList err:", e)
  567. return
  568. }
  569. for _, article := range list {
  570. cydyjyList = append(cydyjyList, article)
  571. }
  572. }
  573. //智造
  574. {
  575. newCondition := condition + ` AND category_id_two IN(84)`
  576. list, e := data_manage.GetReportArticleList(newCondition, pars)
  577. if e != nil {
  578. err = e
  579. fmt.Println("GetReportArticleList err:", e)
  580. return
  581. }
  582. for _, article := range list {
  583. cydyjyList = append(cydyjyList, article)
  584. }
  585. }
  586. var logItems []*data_manage.CygxMinutesSummaryLog
  587. for _, article := range cydyjyList {
  588. head := "<div class=\"title-content\">\n 【" + article.Title + "】 "
  589. sliceSubjects := strings.Split(article.Stock, "/")
  590. var company string
  591. if sliceSubjects[0] != "" {
  592. for _, vSubject := range sliceSubjects {
  593. sliceKuohao := strings.Split(vSubject, "(") //过滤括号
  594. sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
  595. subject := sliceXiahuaxian[0]
  596. company += "#" + subject
  597. }
  598. company = " <span style=\"color: #ff1720\">" + company + "</span>"
  599. }
  600. annotation := strings.ReplaceAll(article.Annotation, "<strong>", "")
  601. annotation = strings.ReplaceAll(annotation, "</strong>", "")
  602. re, _ := regexp.Compile("<strong.*?>")
  603. annotation = re.ReplaceAllString(annotation, "")
  604. logItem := data_manage.CygxMinutesSummaryLog{
  605. ArticleId: int(articleId),
  606. Type: "CYDYJY",
  607. ChartPermissionId: CategoryChartPermissionIdMap[article.CategoryIdTwo],
  608. CreateTime: time.Now(),
  609. Body: head + company + annotation,
  610. ReportLink: "https://vmp.hzinsights.com/v2/articles/" + strconv.Itoa(article.ArticleId),
  611. LinkArticleId: article.LinkArticleId,
  612. }
  613. logItems = append(logItems, &logItem)
  614. }
  615. if len(logItems) > 0 {
  616. _, e := data_manage.AddCygxMinutesSummaryLogOrm(logItems)
  617. if e != nil {
  618. err = e
  619. return
  620. }
  621. }
  622. }
  623. //上市公司调研纪要
  624. {
  625. var condition string
  626. var pars []interface{}
  627. condition += ` AND publish_date < ? AND publish_date >= ? `
  628. pars = append(pars, tuesday, lastTuesday)
  629. ssgsdyjyList := make([]*data_manage.CygxArticle, 0)
  630. //医药
  631. {
  632. newCondition := condition + ` AND category_id_two IN(74,96)`
  633. list, e := data_manage.GetReportArticleList(newCondition, pars)
  634. if e != nil {
  635. err = e
  636. fmt.Println("GetReportArticleList err:", e)
  637. return
  638. }
  639. for _, article := range list {
  640. ssgsdyjyList = append(ssgsdyjyList, article)
  641. }
  642. }
  643. //消费
  644. {
  645. newCondition := condition + ` AND category_id_two IN(88)`
  646. list, e := data_manage.GetReportArticleList(newCondition, pars)
  647. if e != nil {
  648. err = e
  649. fmt.Println("GetReportArticleList err:", e)
  650. return
  651. }
  652. for _, article := range list {
  653. ssgsdyjyList = append(ssgsdyjyList, article)
  654. }
  655. }
  656. //科技
  657. {
  658. newCondition := condition + ` AND category_id_two IN(45)`
  659. list, e := data_manage.GetReportArticleList(newCondition, pars)
  660. if e != nil {
  661. err = e
  662. fmt.Println("GetReportArticleList err:", e)
  663. return
  664. }
  665. for _, article := range list {
  666. ssgsdyjyList = append(ssgsdyjyList, article)
  667. }
  668. }
  669. //智造
  670. {
  671. newCondition := condition + ` AND category_id_two IN(86)`
  672. list, e := data_manage.GetReportArticleList(newCondition, pars)
  673. if e != nil {
  674. err = e
  675. fmt.Println("GetReportArticleList err:", e)
  676. return
  677. }
  678. for _, article := range list {
  679. ssgsdyjyList = append(ssgsdyjyList, article)
  680. }
  681. }
  682. var logItems []*data_manage.CygxMinutesSummaryLog
  683. for _, article := range ssgsdyjyList {
  684. head := "<div class=\"title-content\">\n 【" + article.Title + "】 "
  685. sliceSubjects := strings.Split(article.Stock, "/")
  686. var company string
  687. if sliceSubjects[0] != "" {
  688. for _, vSubject := range sliceSubjects {
  689. sliceKuohao := strings.Split(vSubject, "(") //过滤括号
  690. sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
  691. subject := sliceXiahuaxian[0]
  692. company += "#" + subject
  693. }
  694. company = " <span style=\"color: #ff1720\">" + company + "</span>"
  695. }
  696. annotation := strings.ReplaceAll(article.Annotation, "<strong>", "")
  697. annotation = strings.ReplaceAll(annotation, "</strong>", "")
  698. re, _ := regexp.Compile("<strong.*?>")
  699. annotation = re.ReplaceAllString(annotation, "")
  700. logItem := data_manage.CygxMinutesSummaryLog{
  701. ArticleId: int(articleId),
  702. Type: "SSGS",
  703. ChartPermissionId: CategoryChartPermissionIdMap[article.CategoryIdTwo],
  704. CreateTime: time.Now(),
  705. Body: head + company + annotation,
  706. ReportLink: "https://vmp.hzinsights.com/v2/articles/" + strconv.Itoa(article.ArticleId),
  707. LinkArticleId: article.LinkArticleId,
  708. }
  709. logItems = append(logItems, &logItem)
  710. }
  711. if len(logItems) > 0 {
  712. _, e := data_manage.AddCygxMinutesSummaryLogOrm(logItems)
  713. if e != nil {
  714. err = e
  715. return
  716. }
  717. }
  718. }
  719. //买方研选
  720. {
  721. var condition string
  722. var pars []interface{}
  723. condition += ` AND publish_date < ? AND publish_date >= ? `
  724. pars = append(pars, tuesday, lastTuesday)
  725. mfyxList := make([]*data_manage.CygxArticle, 0)
  726. //纪要
  727. {
  728. newCondition := condition + ` AND article_type_id = 1 `
  729. list, e := data_manage.GetReportArticleList(newCondition, pars)
  730. if e != nil {
  731. err = e
  732. fmt.Println("GetReportArticleList err:", e)
  733. return
  734. }
  735. for _, article := range list {
  736. mfyxList = append(mfyxList, article)
  737. }
  738. }
  739. ////观点
  740. //{
  741. // newCondition := condition + ` AND article_type_id = 2 `
  742. // list ,e := data_manage.GetReportArticleList(newCondition, pars)
  743. // if e != nil {
  744. // err = e
  745. // fmt.Println("GetReportArticleList err:", e)
  746. // return
  747. // }
  748. // for _, article := range list {
  749. // mfyxList = append(mfyxList, article)
  750. // }
  751. //}
  752. ////沙龙
  753. //{
  754. // newCondition := condition + ` AND article_type_id = 13 `
  755. // list ,e := data_manage.GetReportArticleList(newCondition, pars)
  756. // if e != nil {
  757. // err = e
  758. // fmt.Println("GetReportArticleList err:", e)
  759. // return
  760. // }
  761. // for _, article := range list {
  762. // mfyxList = append(mfyxList, article)
  763. // }
  764. //}
  765. fmt.Println("mfyxList:", len(mfyxList))
  766. var articleIdStr string
  767. for _, v := range mfyxList {
  768. articleIdStr += strconv.Itoa(v.ArticleId) + ","
  769. }
  770. mapArticleSubject := make(map[int]string)
  771. articleIdStr = strings.TrimRight(articleIdStr, ",")
  772. listSubject, e := data_manage.GetArticleSubjectList(articleIdStr)
  773. if e != nil {
  774. err = e
  775. fmt.Println("GetArticleSubjectList err:", e)
  776. return
  777. }
  778. for _, v := range listSubject {
  779. mapArticleSubject[v.ArticleId] = v.SubjectName
  780. }
  781. var logItems []*data_manage.CygxMinutesSummaryLog
  782. for _, article := range mfyxList {
  783. head := "<div class=\"title-content\">\n 【" + article.Title + "】 "
  784. body := strings.ReplaceAll(article.Body, "<strong>", "")
  785. body = strings.ReplaceAll(body, "</strong>", "")
  786. re, _ := regexp.Compile("<strong.*?>")
  787. body = re.ReplaceAllString(body, "")
  788. //研选的公司需要单独处理
  789. //sliceSubjects := strings.Split(article.Stock, "/")
  790. var company string
  791. //if sliceSubjects[0] != "" {
  792. // for _, vSubject := range sliceSubjects {
  793. // sliceKuohao := strings.Split(vSubject, "(") //过滤括号
  794. // sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
  795. // subject := sliceXiahuaxian[0]
  796. // company += "#" + subject
  797. // }
  798. // company = " <span style=\"color: #ff1720\">" + company + "</span>"
  799. //}
  800. if mapArticleSubject[article.ArticleId] != ""{
  801. company = " <span style=\"color: #ff1720\">"+"#"+mapArticleSubject[article.ArticleId]+"</span>"
  802. }
  803. var plus int
  804. coreIndex := strings.Index(body, "核心观点:")
  805. plus = 15
  806. if coreIndex == -1 {
  807. coreIndex = strings.Index(body, "核心观点:")
  808. plus = 13
  809. }
  810. if coreIndex == -1 {
  811. coreIndex = strings.Index(body, "核心观点")
  812. plus = 12
  813. }
  814. if coreIndex == -1 {
  815. coreIndex = strings.Index(body, "核心结论:")
  816. plus = 15
  817. }
  818. if coreIndex == -1 {
  819. coreIndex = strings.Index(body, "核心结论:")
  820. plus = 13
  821. }
  822. if coreIndex == -1 {
  823. coreIndex = strings.Index(body, "核心结论")
  824. plus = 12
  825. }
  826. endIndex := strings.Index(body, "<hr")
  827. if coreIndex != -1 && endIndex != -1 {
  828. body = body[coreIndex+plus:endIndex]
  829. logItem := data_manage.CygxMinutesSummaryLog{
  830. ArticleId: int(articleId),
  831. Type: "YANX",
  832. ChartPermissionId: articleTypeChartPermissionIdMap[article.ArticleTypeId],
  833. CreateTime: time.Now(),
  834. Body: head + company + body,
  835. ReportLink: "https://details.hzinsights.com/cygx/report?id=" + article.ArticleIdMd5,
  836. LinkArticleId: article.LinkArticleId,
  837. }
  838. logItems = append(logItems, &logItem)
  839. }
  840. }
  841. if len(logItems) > 0 {
  842. _, e := data_manage.AddCygxMinutesSummaryLogOrm(logItems)
  843. if e != nil {
  844. err = e
  845. return
  846. }
  847. }
  848. }
  849. return
  850. }