sa_compare_doc.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package semantic_analysis
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "strings"
  7. )
  8. type SaCompareDoc struct {
  9. SaCompareDocId int `orm:"column(sa_compare_doc_id);pk" gorm:"primaryKey"`
  10. CompareId int `description:"比对ID"`
  11. DocId int `description:"文档ID"`
  12. }
  13. var SaCompareDocColumns = struct {
  14. SaCompareDocId string
  15. CompareId string
  16. DocId string
  17. }{
  18. SaCompareDocId: "sa_compare_doc_id",
  19. CompareId: "compare_id",
  20. DocId: "doc_id",
  21. }
  22. func (m *SaCompareDoc) TableName() string {
  23. return "sa_compare_doc"
  24. }
  25. func (m *SaCompareDoc) Create() (err error) {
  26. o := global.DbMap[utils.DbNameMaster]
  27. err = o.Create(m).Error
  28. return
  29. }
  30. func (m *SaCompareDoc) Update(cols []string) (err error) {
  31. o := global.DbMap[utils.DbNameMaster]
  32. err = o.Select(cols).Updates(m).Error
  33. return
  34. }
  35. func (m *SaCompareDoc) Del() (err error) {
  36. o := global.DbMap[utils.DbNameMaster]
  37. sql := `DELETE FROM sa_compare_doc WHERE sa_compare_doc_id = ? LIMIT 1`
  38. err = o.Exec(sql, m.SaCompareDocId).Error
  39. return
  40. }
  41. func (m *SaCompareDoc) GetItemById(id int) (err error) {
  42. o := global.DbMap[utils.DbNameMaster]
  43. sql := `SELECT * FROM sa_compare_doc WHERE sa_compare_doc_id = ? LIMIT 1`
  44. err = o.Raw(sql, id).First(&m).Error
  45. return
  46. }
  47. func (m *SaCompareDoc) GetItemByCondition(condition string, pars []interface{}) (err error) {
  48. o := global.DbMap[utils.DbNameMaster]
  49. sql := `SELECT * FROM sa_compare_doc WHERE 1=1 `
  50. sql += condition
  51. sql += ` LIMIT 1`
  52. err = o.Raw(sql, pars...).First(&m).Error
  53. return
  54. }
  55. func (m *SaCompareDoc) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  56. o := global.DbMap[utils.DbNameMaster]
  57. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  58. err = o.Raw(sql, pars...).Scan(&count).Error
  59. return
  60. }
  61. func (m *SaCompareDoc) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*SaCompareDoc, err error) {
  62. o := global.DbMap[utils.DbNameMaster]
  63. fields := strings.Join(fieldArr, ",")
  64. if len(fieldArr) == 0 {
  65. fields = `*`
  66. }
  67. order := ``
  68. if orderRule != "" {
  69. order = ` ORDER BY ` + orderRule
  70. }
  71. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  72. err = o.Raw(sql, pars...).Find(&items).Error
  73. return
  74. }
  75. func (m *SaCompareDoc) GetPageItemsByCondition(startSize, pageSize int, condition string, pars []interface{}, fieldArr []string, orderRule string) (total int, items []*SaCompareDoc, err error) {
  76. o := global.DbMap[utils.DbNameMaster]
  77. fields := strings.Join(fieldArr, ",")
  78. if len(fieldArr) == 0 {
  79. fields = `*`
  80. }
  81. order := ``
  82. if orderRule != "" {
  83. order = ` ORDER BY ` + orderRule
  84. }
  85. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  86. totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z`
  87. if err = o.Raw(totalSql, pars...).Scan(&total).Error; err != nil {
  88. return
  89. }
  90. sql += ` LIMIT ?,?`
  91. pars = append(pars, startSize, pageSize)
  92. err = o.Raw(sql, pars...).Find(&items).Error
  93. return
  94. }
  95. // SaCompareDocSection 比对文档段落信息
  96. type SaCompareDocSection struct {
  97. DocId int `description:"文档ID"`
  98. Title string `description:"文档标题"`
  99. Theme string `description:"文档主题"`
  100. ClassifyName string `description:"分类名称"`
  101. SectionId int `description:"段落ID"`
  102. Content string `description:"段落内容"`
  103. Sort int `description:"段落排序"`
  104. }
  105. // GetSaCompareDocAndSections 获取比对关联的文档段落
  106. func GetSaCompareDocAndSections(compareId int) (items []*SaCompareDocSection, err error) {
  107. o := global.DbMap[utils.DbNameMaster]
  108. sql := `SELECT
  109. a.doc_id,
  110. b.title,
  111. b.theme,
  112. b.classify_name,
  113. c.sa_doc_section_id AS section_id,
  114. c.content,
  115. c.sort
  116. FROM
  117. sa_compare_doc AS a
  118. JOIN sa_doc AS b ON a.doc_id = b.sa_doc_id
  119. JOIN sa_doc_section AS c ON a.doc_id = c.doc_id
  120. WHERE
  121. a.compare_id = ?
  122. ORDER BY
  123. a.doc_id,
  124. c.sort ASC`
  125. err = o.Raw(sql, compareId).Find(&items).Error
  126. return
  127. }