longzhong.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  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
  10. // TradeCode string
  11. // SecName string
  12. // Unit string
  13. // Frequency string
  14. // LastModifyDate string
  15. //}
  16. type Longzhonginfo struct {
  17. LongzhonginfoId int `gorm:"primaryKey;column:longzhonginfo_id;type:int(11);not null"`
  18. TradeCode string `gorm:"unique;column:trade_code;type:varchar(32);default:''"` // 指标唯一编码
  19. SecName string `gorm:"unique;column:sec_name;type:varchar(180);default:''"` // 指标名称
  20. Unit string `gorm:"column:unit;type:varchar(100);default:''"` // 单位
  21. Frequency string `gorm:"column:frequency;type:varchar(20);default:''"` // 频度
  22. //ClassifyId int `gorm:"index:idx_classify_id;column:classify_id;type:int(11);default:0"` // 分类id
  23. //ClassifyName string `gorm:"column:classify_name;type:varchar(20);default:''"`
  24. //CreateTime time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP"`
  25. //Remark string `gorm:"column:remark;type:varchar(100);default:''"`
  26. LastModifyDate string `gorm:"column:last_modify_date;type:date"` // 最后更新时间
  27. //Unitid int `gorm:"index:idx_unitid;column:unitid;type:bigint(20)"` // 隆众id
  28. //TempID int `gorm:"column:temp_id;type:bigint(20)"` // 隆众数据单元组id
  29. //TempName string `gorm:"column:temp_name;type:varchar(255)"` // 隆众数据单元组id
  30. //IsNormal string `gorm:"column:is_normal;type:varchar(10)"` // 是否正常更新,0:停更,1:更新
  31. //ModifyTime time.Time `gorm:"column:modify_time;type:datetime;default:CURRENT_TIMESTAMP"`
  32. }
  33. func GetLongzhonginfoByClassifyId(classifyId int) (items []*Longzhonginfo, err error) {
  34. sql := `SELECT * FROM longzhonginfo WHERE classify_id=? ORDER BY longzhonginfo_id ASC `
  35. //o := orm.NewOrmUsingDB("edb")
  36. //_, err = o.Raw(sql, classifyId).QueryRows(&items)
  37. err = global.DmSQL["edb"].Raw(sql, classifyId).Find(&items).Error
  38. return
  39. }
  40. func GetLongzhongDataMaxCount(classifyId int) (count int, err error) {
  41. //o := orm.NewOrmUsingDB("edb")
  42. sql := `SELECT MAX(t.num) AS count FROM (
  43. SELECT COUNT(1) AS num FROM longzhonginfo AS a
  44. INNER JOIN longzhongdata AS b ON a.longzhonginfo_id=b.longzhonginfo_id
  45. WHERE a.classify_id=?
  46. GROUP BY a.longzhonginfo_id
  47. )AS t `
  48. //err = o.Raw(sql, classifyId).QueryRow(&count)
  49. err = global.DmSQL["edb"].Raw(sql, classifyId).Scan(&count).Error
  50. return
  51. }
  52. //type Longzhongdata struct {
  53. // LongzhongdataId int `orm:"column(longzhongdata_id);pk"`
  54. // LongzhonginfoId int
  55. // TradeCode string
  56. // Dt string
  57. // Close float64
  58. // CreateTime time.Time
  59. // ModifyTime time.Time
  60. // UnitDesc string
  61. // UpdTime string
  62. // DisplayTime string
  63. //}
  64. type Longzhongdata struct {
  65. LongzhongdataId int `gorm:"primaryKey;column:longzhongdata_id;type:int(11);not null"`
  66. LongzhonginfoId int `gorm:"uniqueIndex:idx_longzhonginfo_id;column:longzhonginfo_id;type:int(11);default:0"`
  67. TradeCode string `gorm:"uniqueIndex:idx_trade_code_dt;column:trade_code;type:varchar(32);default:''"`
  68. Dt string `gorm:"uniqueIndex:idx_trade_code_dt;uniqueIndex:idx_longzhonginfo_id;column:dt;type:date"`
  69. Close float64 `gorm:"column:close;type:double"`
  70. CreateTime time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP"`
  71. ModifyTime time.Time `gorm:"column:modify_time;type:datetime;default:CURRENT_TIMESTAMP"`
  72. UnitDesc string `gorm:"column:unit_desc;type:varchar(255);default:''"` // 描述
  73. UpdTime string `gorm:"column:upd_time;type:varchar(20);default:''"` // 更新时间
  74. //AddTime string `gorm:"column:add_time;type:varchar(30);default:''"`
  75. DisplayTime string `gorm:"column:display_time;type:varchar(30);default:''"`
  76. }
  77. func GetLongzhongDataById(lzInfoId int) (items []*Longzhongdata, err error) {
  78. //o := orm.NewOrmUsingDB("edb")
  79. sql := `SELECT * FROM longzhongdata WHERE longzhonginfo_id=? ORDER BY dt DESC `
  80. //_, err = o.Raw(sql, lzInfoId).QueryRows(&items)
  81. err = global.DmSQL["edb"].Raw(sql, lzInfoId).Find(&items).Error
  82. return
  83. }
  84. func GetLongzhongSurveyDataMaxCount(classifyName string) (count int, err error) {
  85. //o := orm.NewOrmUsingDB("edb")
  86. sql := `SELECT MAX(t.num) AS count FROM (
  87. SELECT COUNT(1) AS num FROM longzhong_survey_product AS a
  88. INNER JOIN longzhong_survey_data AS b ON a.survey_product_id=b.survey_product_id
  89. WHERE a.breed_name=?
  90. GROUP BY a.survey_product_id
  91. )AS t `
  92. //err = o.Raw(sql, classifyName).QueryRow(&count)
  93. err = global.DmSQL["edb"].Raw(sql, classifyName).Scan(&count).Error
  94. return
  95. }
  96. func GetLongzhongSurveyDataMaxCountByFrequency(classifyName string, frequency int) (count int, err error) {
  97. //o := orm.NewOrmUsingDB("edb")
  98. sql := `SELECT MAX(t.num) AS count FROM (
  99. SELECT COUNT(1) AS num FROM longzhong_survey_product AS a
  100. INNER JOIN longzhong_survey_data AS b ON a.survey_product_id=b.survey_product_id
  101. WHERE a.breed_name=? AND a.frequency=?
  102. GROUP BY a.survey_product_id
  103. )AS t `
  104. //err = o.Raw(sql, classifyName, frequency).QueryRow(&count)
  105. err = global.DmSQL["edb"].Raw(sql, classifyName, frequency).Scan(&count).Error
  106. return
  107. }
  108. type ExportLzSurveyDataMaxCount struct {
  109. Count int `description:"最大数据量" gorm:"column:count"`
  110. BreedId int `description:"品种ID" gorm:"column:breed_id"`
  111. }
  112. func GetExportLzSurveyDataMaxCount(breedIds []string) (items []ExportLzSurveyDataMaxCount, err error) {
  113. if len(breedIds) == 0 {
  114. return
  115. }
  116. //o := orm.NewOrmUsingDB("edb")
  117. sql := ` SELECT
  118. MAX(t.num) AS count,
  119. t.breed_id
  120. FROM
  121. (
  122. SELECT
  123. COUNT(1) AS num,
  124. a.breed_id AS breed_id
  125. FROM
  126. longzhong_survey_product AS a
  127. INNER JOIN longzhong_survey_data AS b ON a.survey_product_id = b.survey_product_id
  128. WHERE
  129. a.breed_id IN (` + utils.GetOrmInReplace(len(breedIds)) + `)
  130. GROUP BY
  131. a.survey_product_id
  132. ) AS t
  133. GROUP BY
  134. t.breed_id `
  135. //_, err = o.Raw(sql, breedIds).QueryRows(&items)
  136. err = global.DmSQL["edb"].Raw(sql, breedIds).Find(&items).Error
  137. return
  138. }
  139. func GetExportLzSurveyDataByBreedIds(breedIds []string) (items []*LongzhongSurveyData, err error) {
  140. if len(breedIds) == 0 {
  141. return
  142. }
  143. //o := orm.NewOrmUsingDB("edb")
  144. fields := ` survey_product_id, breed_id, input_value, data_time `
  145. 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 `
  146. //_, err = o.Raw(sql, breedIds).QueryRows(&items)
  147. err = global.DmSQL["edb"].Raw(sql, breedIds).Find(&items).Error
  148. return
  149. }
  150. //type LongzhongSurveyData struct {
  151. // SurveyDataId int `orm:"column(survey_data_id);pk"`
  152. // SurveyProductId int
  153. // ProjectQuotaId int64
  154. // BreedId string
  155. // BreedName string
  156. // QuotaId string
  157. // QuotaName string
  158. // UnitId string
  159. // UnitName string
  160. // SampleType int64
  161. // SampleId string
  162. // SampleName string
  163. // DeviceId string
  164. // Device string
  165. // ProductCraftId string
  166. // ProductCraft string
  167. // ProductLine string
  168. // InputMode int64
  169. // Frequency int64
  170. // InputValue float64
  171. // TaskShouldFinishTime int64
  172. // CustomId string
  173. // CustomType int64
  174. // Custom string
  175. // QuotaSampleId int64
  176. // TaskActualFinishTime int64
  177. // AreaName string
  178. // ProvinceName string
  179. // ResearchStartData int64
  180. // ResearchStopData int64
  181. // DataTime string
  182. //}
  183. type LongzhongSurveyData struct {
  184. SurveyDataId int `gorm:"primaryKey;column:survey_data_id;type:int(11);not null"`
  185. SurveyProductId int `gorm:"column:survey_product_id;type:int(11)"` // 本地指标id
  186. ProjectQuotaId int64 `gorm:"column:project_quota_id;type:int(11)"` // 调研指标id
  187. BreedId string `gorm:"column:breed_id;type:varchar(20);default:''"` // 品种id
  188. BreedName string `gorm:"column:breed_name;type:varchar(100);default:''"` // 品种名称
  189. QuotaId string `gorm:"column:quota_id;type:varchar(20);default:''"` // 指标id
  190. QuotaName string `gorm:"column:quota_name;type:varchar(255);default:''"` // 指标名称
  191. UnitId string `gorm:"column:unit_id;type:varchar(20);default:''"` // 单位id
  192. UnitName string `gorm:"column:unit_name;type:varchar(100);default:''"` // 单位(例如:吨)
  193. SampleType int64 `gorm:"column:sample_type;type:int(11);default:0"` // 样本类型 0-空 1-企业 2-港口 3-运距 4-区域/国家 99-不确定
  194. SampleId string `gorm:"column:sample_id;type:varchar(50);default:''"` // 样本id
  195. SampleName string `gorm:"column:sample_name;type:varchar(100);default:''"` // 样本名称
  196. DeviceId string `gorm:"column:device_id;type:varchar(50);default:''"` // 设备id
  197. Device string `gorm:"column:device;type:varchar(100);default:''"` // 设备
  198. ProductCraftId string `gorm:"column:product_craft_id;type:varchar(50);default:''"` // 工艺id
  199. ProductCraft string `gorm:"column:product_craft;type:varchar(100);default:''"` // 工艺
  200. ProductLine string `gorm:"column:product_line;type:varchar(100);default:''"` // 产线
  201. InputMode int64 `gorm:"column:input_mode;type:int(11);default:0"` // 录入方式 1-采集 2-计算 99-行业求和
  202. Frequency int64 `gorm:"column:frequency;type:int(11);default:0"` // 频率1-日度 2-周度 3-月度 4-季度 5-年度 99-无固定频率
  203. InputValue float64 `gorm:"column:input_value;type:double"` // 调研结果
  204. TaskShouldFinishTime int64 `gorm:"column:task_should_finish_time;type:bigint(11);default:0"` // 调研数据完成时间
  205. CustomId int64 `gorm:"column:custom_id;type:int(11);default:0"` // 扩展属性id
  206. CustomType int64 `gorm:"column:custom_type;type:int(11);default:0"` // 扩展属性类型0未设置,1规格,2标准,3用户,4包装,5生产工艺6装置,8行业,9企业分类,10企业隶属关系
  207. Custom string `gorm:"column:custom;type:varchar(200);default:''"` // 扩展属性内容
  208. QuotaSampleId int64 `gorm:"column:quota_sample_id;type:int(11)"` // 调研指标配置样本id
  209. TaskActualFinishTime int64 `gorm:"column:task_actual_finish_time;type:bigint(11)"` // 调研数据实际完成时间
  210. AreaName string `gorm:"column:area_name;type:varchar(100);default:''"` // 区域名称
  211. ProvinceName string `gorm:"column:province_name;type:varchar(100);default:''"` // 省份名称
  212. ResearchStartData int64 `gorm:"column:research_start_data;type:int(11)"` // 调研开始日期
  213. ResearchStopData int64 `gorm:"column:research_stop_data;type:int(11)"` // 调研截止日期
  214. DataTime string `gorm:"column:data_time;type:date"` // 调研数据实际完成日期
  215. }
  216. func GetLongzhongSurveyDataById(lzInfoId int) (items []*LongzhongSurveyData, err error) {
  217. //o := orm.NewOrmUsingDB("edb")
  218. sql := `SELECT * FROM longzhong_survey_data WHERE survey_product_id=? ORDER BY data_time DESC `
  219. //_, err = o.Raw(sql, lzInfoId).QueryRows(&items)
  220. err = global.DmSQL["edb"].Raw(sql, lzInfoId).Find(&items).Error
  221. return
  222. }
  223. // GetLzItemList 模糊查询隆众数据库指标列表
  224. func GetLzItemList(keyword string) (items []*data_manage.LongzhongSurveyProduct, err error) {
  225. //o := orm.NewOrmUsingDB("edb")
  226. sql := "SELECT * FROM longzhong_survey_product WHERE CONCAT(sample_name,breed_name,custom,quota_name,lz_code) LIKE ? "
  227. //_, err = o.Raw(sql, utils.GetLikeKeyword(keyword)).QueryRows(&items)
  228. err = global.DmSQL["edb"].Raw(sql, utils.GetLikeKeyword(keyword)).Find(&items).Error
  229. return
  230. }
  231. //type lzSurveyData struct {
  232. // DataTime string `orm:"column(data_time)" description:"日期"`
  233. // InputValue string `orm:"column(input_value)" description:"值"`
  234. //}
  235. // GetLzItemListByCode 根据code查询隆众数据列表
  236. //func GetLzItemListByCode(lzCode string) (items []*lzSurveyData, err error) {
  237. // o := orm.NewOrmUsingDB("edb")
  238. //
  239. // sql := "SELECT * FROM longzhong_survey_data WHERE survey_product_id=? GROUP BY data_time DESC"
  240. // _, err = o.Raw(sql, lzCode).QueryRows(&items)
  241. // return
  242. //}
  243. // GetLzProductIdByCode 根据code查询隆众数据列表
  244. func GetLzProductIdByCode(lzCode string) (productId int, err error) {
  245. //o := orm.NewOrmUsingDB("edb")
  246. sql := "SELECT survey_product_id FROM longzhong_survey_product WHERE lz_code=?"
  247. //err = o.Raw(sql, lzCode).QueryRow(&productId)
  248. err = global.DmSQL["edb"].Raw(sql, lzCode).Scan(&productId).Error
  249. return
  250. }
  251. // GetLzSurveyDataMaxCountByProductId 根据code查询隆众数据列表
  252. func GetLzSurveyDataMaxCountByProductId(surveyProductId int) (productId int, err error) {
  253. //o := orm.NewOrmUsingDB("edb")
  254. sql := "SELECT COUNT(1) FROM longzhong_survey_data WHERE survey_product_id=?"
  255. //err = o.Raw(sql, surveyProductId).QueryRow(&productId)
  256. err = global.DmSQL["edb"].Raw(sql, surveyProductId).Scan(&productId).Error
  257. return
  258. }