longzhong.go 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package data_source
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/models/data_manage"
  5. "eta_gn/eta_api/utils"
  6. "time"
  7. )
  8. type Longzhonginfo struct {
  9. LongzhonginfoId int `gorm:"primaryKey;column:longzhonginfo_id;type:int(11);not null"`
  10. TradeCode string `gorm:"unique;column:trade_code;type:varchar(32);default:''"` // 指标唯一编码
  11. SecName string `gorm:"unique;column:sec_name;type:varchar(180);default:''"` // 指标名称
  12. Unit string `gorm:"column:unit;type:varchar(100);default:''"` // 单位
  13. Frequency string `gorm:"column:frequency;type:varchar(20);default:''"` // 频度
  14. LastModifyDate string `gorm:"column:last_modify_date;type:date"` // 最后更新时间
  15. }
  16. func GetLongzhonginfoByClassifyId(classifyId int) (items []*Longzhonginfo, err error) {
  17. sql := `SELECT * FROM longzhonginfo WHERE classify_id=? ORDER BY longzhonginfo_id ASC `
  18. err = global.DmSQL["edb"].Raw(sql, classifyId).Find(&items).Error
  19. return
  20. }
  21. func GetLongzhongDataMaxCount(classifyId int) (count int, err error) {
  22. sql := `SELECT MAX(t.num) AS count FROM (
  23. SELECT COUNT(1) AS num FROM longzhonginfo AS a
  24. INNER JOIN longzhongdata AS b ON a.longzhonginfo_id=b.longzhonginfo_id
  25. WHERE a.classify_id=?
  26. GROUP BY a.longzhonginfo_id
  27. )AS t `
  28. err = global.DmSQL["edb"].Raw(sql, classifyId).Scan(&count).Error
  29. return
  30. }
  31. type Longzhongdata struct {
  32. LongzhongdataId int `gorm:"primaryKey;column:longzhongdata_id;type:int(11);not null"`
  33. LongzhonginfoId int `gorm:"uniqueIndex:idx_longzhonginfo_id;column:longzhonginfo_id;type:int(11);default:0"`
  34. TradeCode string `gorm:"uniqueIndex:idx_trade_code_dt;column:trade_code;type:varchar(32);default:''"`
  35. Dt string `gorm:"uniqueIndex:idx_trade_code_dt;uniqueIndex:idx_longzhonginfo_id;column:dt;type:date"`
  36. Close float64 `gorm:"column:close;type:double"`
  37. CreateTime time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP"`
  38. ModifyTime time.Time `gorm:"column:modify_time;type:datetime;default:CURRENT_TIMESTAMP"`
  39. UnitDesc string `gorm:"column:unit_desc;type:varchar(255);default:''"` // 描述
  40. UpdTime string `gorm:"column:upd_time;type:varchar(20);default:''"` // 更新时间
  41. DisplayTime string `gorm:"column:display_time;type:varchar(30);default:''"`
  42. }
  43. func GetLongzhongDataById(lzInfoId int) (items []*Longzhongdata, err error) {
  44. sql := `SELECT * FROM longzhongdata WHERE longzhonginfo_id=? ORDER BY dt DESC `
  45. err = global.DmSQL["edb"].Raw(sql, lzInfoId).Find(&items).Error
  46. return
  47. }
  48. func GetLongzhongSurveyDataMaxCount(classifyName string) (count int, err error) {
  49. sql := `SELECT MAX(t.num) AS count FROM (
  50. SELECT COUNT(1) AS num FROM longzhong_survey_product AS a
  51. INNER JOIN longzhong_survey_data AS b ON a.survey_product_id=b.survey_product_id
  52. WHERE a.breed_name=?
  53. GROUP BY a.survey_product_id
  54. )AS t `
  55. err = global.DmSQL["edb"].Raw(sql, classifyName).Scan(&count).Error
  56. return
  57. }
  58. func GetLongzhongSurveyDataMaxCountByFrequency(classifyName string, frequency int) (count int, err error) {
  59. sql := `SELECT MAX(t.num) AS count FROM (
  60. SELECT COUNT(1) AS num FROM longzhong_survey_product AS a
  61. INNER JOIN longzhong_survey_data AS b ON a.survey_product_id=b.survey_product_id
  62. WHERE a.breed_name=? AND a.frequency=?
  63. GROUP BY a.survey_product_id
  64. )AS t `
  65. err = global.DmSQL["edb"].Raw(sql, classifyName, frequency).Scan(&count).Error
  66. return
  67. }
  68. type ExportLzSurveyDataMaxCount struct {
  69. Count int `description:"最大数据量" gorm:"column:count"`
  70. BreedId int `description:"品种ID" gorm:"column:breed_id"`
  71. }
  72. func GetExportLzSurveyDataMaxCount(breedIds []string) (items []ExportLzSurveyDataMaxCount, err error) {
  73. if len(breedIds) == 0 {
  74. return
  75. }
  76. sql := ` SELECT
  77. MAX(t.num) AS count,
  78. t.breed_id
  79. FROM
  80. (
  81. SELECT
  82. COUNT(1) AS num,
  83. a.breed_id AS breed_id
  84. FROM
  85. longzhong_survey_product AS a
  86. INNER JOIN longzhong_survey_data AS b ON a.survey_product_id = b.survey_product_id
  87. WHERE
  88. a.breed_id IN (` + utils.GetOrmInReplace(len(breedIds)) + `)
  89. GROUP BY
  90. a.survey_product_id
  91. ) AS t
  92. GROUP BY
  93. t.breed_id `
  94. err = global.DmSQL["edb"].Raw(sql, breedIds).Find(&items).Error
  95. return
  96. }
  97. func GetExportLzSurveyDataByBreedIds(breedIds []string) (items []*LongzhongSurveyData, err error) {
  98. if len(breedIds) == 0 {
  99. return
  100. }
  101. fields := ` survey_product_id, breed_id, input_value, data_time `
  102. sql := `SELECT ` + fields + ` FROM longzhong_survey_data WHERE breed_id IN (` + utils.GetOrmInReplace(len(breedIds)) + `) ORDER BY breed_id ASC, survey_product_id ASC, data_time DESC `
  103. err = global.DmSQL["edb"].Raw(sql, breedIds).Find(&items).Error
  104. return
  105. }
  106. type LongzhongSurveyData struct {
  107. SurveyDataId int `gorm:"primaryKey;column:survey_data_id;type:int(11);not null"`
  108. SurveyProductId int `gorm:"column:survey_product_id;type:int(11)"` // 本地指标id
  109. ProjectQuotaId int64 `gorm:"column:project_quota_id;type:int(11)"` // 调研指标id
  110. BreedId string `gorm:"column:breed_id;type:varchar(20);default:''"` // 品种id
  111. BreedName string `gorm:"column:breed_name;type:varchar(100);default:''"` // 品种名称
  112. QuotaId string `gorm:"column:quota_id;type:varchar(20);default:''"` // 指标id
  113. QuotaName string `gorm:"column:quota_name;type:varchar(255);default:''"` // 指标名称
  114. UnitId string `gorm:"column:unit_id;type:varchar(20);default:''"` // 单位id
  115. UnitName string `gorm:"column:unit_name;type:varchar(100);default:''"` // 单位(例如:吨)
  116. SampleType int64 `gorm:"column:sample_type;type:int(11);default:0"` // 样本类型 0-空 1-企业 2-港口 3-运距 4-区域/国家 99-不确定
  117. SampleId string `gorm:"column:sample_id;type:varchar(50);default:''"` // 样本id
  118. SampleName string `gorm:"column:sample_name;type:varchar(100);default:''"` // 样本名称
  119. DeviceId string `gorm:"column:device_id;type:varchar(50);default:''"` // 设备id
  120. Device string `gorm:"column:device;type:varchar(100);default:''"` // 设备
  121. ProductCraftId string `gorm:"column:product_craft_id;type:varchar(50);default:''"` // 工艺id
  122. ProductCraft string `gorm:"column:product_craft;type:varchar(100);default:''"` // 工艺
  123. ProductLine string `gorm:"column:product_line;type:varchar(100);default:''"` // 产线
  124. InputMode int64 `gorm:"column:input_mode;type:int(11);default:0"` // 录入方式 1-采集 2-计算 99-行业求和
  125. Frequency int64 `gorm:"column:frequency;type:int(11);default:0"` // 频率1-日度 2-周度 3-月度 4-季度 5-年度 99-无固定频率
  126. InputValue float64 `gorm:"column:input_value;type:double"` // 调研结果
  127. TaskShouldFinishTime int64 `gorm:"column:task_should_finish_time;type:bigint(11);default:0"` // 调研数据完成时间
  128. CustomId int64 `gorm:"column:custom_id;type:int(11);default:0"` // 扩展属性id
  129. CustomType int64 `gorm:"column:custom_type;type:int(11);default:0"` // 扩展属性类型0未设置,1规格,2标准,3用户,4包装,5生产工艺6装置,8行业,9企业分类,10企业隶属关系
  130. Custom string `gorm:"column:custom;type:varchar(200);default:''"` // 扩展属性内容
  131. QuotaSampleId int64 `gorm:"column:quota_sample_id;type:int(11)"` // 调研指标配置样本id
  132. TaskActualFinishTime int64 `gorm:"column:task_actual_finish_time;type:bigint(11)"` // 调研数据实际完成时间
  133. AreaName string `gorm:"column:area_name;type:varchar(100);default:''"` // 区域名称
  134. ProvinceName string `gorm:"column:province_name;type:varchar(100);default:''"` // 省份名称
  135. ResearchStartData int64 `gorm:"column:research_start_data;type:int(11)"` // 调研开始日期
  136. ResearchStopData int64 `gorm:"column:research_stop_data;type:int(11)"` // 调研截止日期
  137. DataTime string `gorm:"column:data_time;type:date"` // 调研数据实际完成日期
  138. }
  139. func GetLongzhongSurveyDataById(lzInfoId int) (items []*LongzhongSurveyData, err error) {
  140. sql := `SELECT * FROM longzhong_survey_data WHERE survey_product_id=? ORDER BY data_time DESC `
  141. err = global.DmSQL["edb"].Raw(sql, lzInfoId).Find(&items).Error
  142. return
  143. }
  144. // GetLzItemList 模糊查询隆众数据库指标列表
  145. func GetLzItemList(keyword string) (items []*data_manage.LongzhongSurveyProduct, err error) {
  146. sql := "SELECT * FROM longzhong_survey_product WHERE CONCAT(sample_name,breed_name,custom,quota_name,lz_code) LIKE ? "
  147. err = global.DmSQL["edb"].Raw(sql, utils.GetLikeKeyword(keyword)).Find(&items).Error
  148. return
  149. }
  150. // GetLzProductIdByCode 根据code查询隆众数据列表
  151. func GetLzProductIdByCode(lzCode string) (productId int, err error) {
  152. sql := "SELECT survey_product_id FROM longzhong_survey_product WHERE lz_code=?"
  153. err = global.DmSQL["edb"].Raw(sql, lzCode).Scan(&productId).Error
  154. return
  155. }
  156. // GetLzSurveyDataMaxCountByProductId 根据code查询隆众数据列表
  157. func GetLzSurveyDataMaxCountByProductId(surveyProductId int) (productId int, err error) {
  158. sql := "SELECT COUNT(1) FROM longzhong_survey_data WHERE survey_product_id=?"
  159. err = global.DmSQL["edb"].Raw(sql, surveyProductId).Scan(&productId).Error
  160. return
  161. }