assessment_form.go 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. package models
  2. import (
  3. sql2 "database/sql"
  4. "eta/eta_hub/global"
  5. "eta/eta_hub/utils"
  6. "fmt"
  7. "strings"
  8. "time"
  9. )
  10. type AssessmentForm struct {
  11. AssessmentFormId int `gorm:"column:assessment_form_id;primaryKey;autoIncrement"`
  12. FormCode string `description:"单号"`
  13. ResearcherId int `description:"研究员ID"`
  14. ResearcherAdminId int `description:"研究员用户ID"`
  15. ResearcherName string `description:"研究员姓名"`
  16. VarietyId int `description:"品种ID"`
  17. VarietyCode string `description:"品种编码"`
  18. VarietyName string `description:"品种名称"`
  19. WeekTime string `description:"周度(格式:202501,202502)"`
  20. WeekStart time.Time `description:"当周开始日期"`
  21. WeekEnd time.Time `description:"当周结束日期"`
  22. BaseDate time.Time `description:"价格基准日期"`
  23. MonthlyPriceForecast string `description:"月度涨跌:涨/跌/震荡"`
  24. WeeklyUpForecast string `description:"周度上行风险:是/否"`
  25. WeeklyDownForecast string `description:"周度下行风险:是/否"`
  26. Status int `description:"状态:0-草稿;1-已提交;"`
  27. OutNo string `description:"外部编码(客户内部系统编码)"`
  28. OutStatus int `description:"外部状态(象屿):0-未使用;1-已使用"`
  29. SubmitTime time.Time `description:"提交时间"`
  30. CreateTime time.Time `description:"创建时间"`
  31. ModifyTime time.Time `description:"修改时间"`
  32. }
  33. func (m *AssessmentForm) TableName() string {
  34. return "assessment_form"
  35. }
  36. type AssessmentFormCols struct {
  37. PrimaryId string
  38. FormCode string
  39. ResearcherId string
  40. ResearcherAdminId string
  41. ResearcherName string
  42. VarietyId string
  43. VarietyCode string
  44. VarietyName string
  45. WeekTime string
  46. WeekStart string
  47. WeekEnd string
  48. BaseDate string
  49. MonthlyPriceForecast string
  50. WeeklyUpForecast string
  51. WeeklyDownForecast string
  52. Status string
  53. OutNo string
  54. OutStatus string
  55. SubmitTime string
  56. CreateTime string
  57. ModifyTime string
  58. }
  59. func (m *AssessmentForm) Cols() AssessmentFormCols {
  60. return AssessmentFormCols{
  61. PrimaryId: "assessment_form_id",
  62. FormCode: "form_code",
  63. ResearcherId: "researcher_id",
  64. ResearcherAdminId: "researcher_admin_id",
  65. ResearcherName: "researcher_name",
  66. VarietyId: "variety_id",
  67. VarietyCode: "variety_code",
  68. VarietyName: "variety_name",
  69. WeekTime: "week_time",
  70. WeekStart: "week_start",
  71. WeekEnd: "week_end",
  72. BaseDate: "base_date",
  73. MonthlyPriceForecast: "monthly_price_forecast",
  74. WeeklyUpForecast: "weekly_up_forecast",
  75. WeeklyDownForecast: "weekly_down_forecast",
  76. Status: "status",
  77. OutNo: "out_no",
  78. OutStatus: "out_status",
  79. SubmitTime: "submit_time",
  80. CreateTime: "create_time",
  81. ModifyTime: "modify_time",
  82. }
  83. }
  84. func (m *AssessmentForm) Create() (err error) {
  85. err = global.DEFAULT_DB.Create(m).Error
  86. return
  87. }
  88. func (m *AssessmentForm) Update(cols []string) (err error) {
  89. err = global.DEFAULT_DB.Select(cols).Updates(m).Error
  90. return
  91. }
  92. func (m *AssessmentForm) Remove() (err error) {
  93. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  94. err = global.DEFAULT_DB.Exec(sql, m.AssessmentFormId).Error
  95. return
  96. }
  97. func (m *AssessmentForm) MultiRemove(ids []int) (err error) {
  98. if len(ids) == 0 {
  99. return
  100. }
  101. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
  102. err = global.DEFAULT_DB.Exec(sql, ids).Error
  103. return
  104. }
  105. func (m *AssessmentForm) RemoveByCondition(condition string, pars []interface{}) (err error) {
  106. if condition == "" {
  107. return
  108. }
  109. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
  110. err = global.DEFAULT_DB.Exec(sql, pars...).Error
  111. return
  112. }
  113. func (m *AssessmentForm) GetItemById(primaryId int) (item *AssessmentForm, err error) {
  114. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  115. err = global.DEFAULT_DB.Raw(sql, primaryId).First(&item).Error
  116. return
  117. }
  118. func (m *AssessmentForm) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *AssessmentForm, err error) {
  119. order := ``
  120. if orderRule != "" {
  121. order = ` ORDER BY ` + orderRule
  122. }
  123. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
  124. err = global.DEFAULT_DB.Raw(sql, pars...).First(&item).Error
  125. return
  126. }
  127. func (m *AssessmentForm) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  128. var totalNull sql2.NullInt64
  129. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  130. err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&totalNull).Error
  131. if err != nil {
  132. return
  133. }
  134. count = int(totalNull.Int64)
  135. return
  136. }
  137. func (m *AssessmentForm) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AssessmentForm, err error) {
  138. fields := strings.Join(fieldArr, ",")
  139. if len(fieldArr) == 0 {
  140. fields = `*`
  141. }
  142. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  143. if orderRule != "" {
  144. order = ` ORDER BY ` + orderRule
  145. }
  146. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  147. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
  148. return
  149. }
  150. func (m *AssessmentForm) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*AssessmentForm, err error) {
  151. fields := strings.Join(fieldArr, ",")
  152. if len(fieldArr) == 0 {
  153. fields = `*`
  154. }
  155. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  156. if orderRule != "" {
  157. order = ` ORDER BY ` + orderRule
  158. }
  159. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  160. pars = append(pars, startSize, pageSize)
  161. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
  162. return
  163. }
  164. // AssessmentFormDetail 填报单信息
  165. type AssessmentFormDetail struct {
  166. //AssessmentFormId int `description:"填报单ID"`
  167. //FormCode string `description:"单号"`
  168. //ResearcherId int `description:"研究员ID"`
  169. //ResearcherAdminId int `description:"研究员用户ID"`
  170. ResearcherName string `description:"研究员姓名" json:"researcherName"`
  171. //VarietyId int `description:"品种ID"`
  172. VarietyCode string `description:"品种编码" json:"varietyCode"`
  173. VarietyName string `description:"品种名称" json:"varietyName"`
  174. WeekTime string `description:"周度(格式:202501,202502)" json:"weekTime"`
  175. BaseDate string `description:"价格基准日期" json:"baseDate"`
  176. MonthlyPriceForecast string `description:"月度涨跌:涨/跌/震荡" json:"monthlyPriceForecast"`
  177. WeeklyUpForecast string `description:"周度上行风险:是/否" json:"weeklyUpForecast"`
  178. WeeklyDownForecast string `description:"周度下行风险:是/否" json:"weeklyDownForecast"`
  179. //Status int `description:"状态:0-草稿;1-已提交;"`
  180. SubmitTime string `description:"提交时间" json:"submitTime"`
  181. CreateTime string `description:"创建时间" json:"createTime"`
  182. ModifyTime string `description:"修改时间" json:"modifyTime"`
  183. //Button AssessmentFormButton `description:"按钮权限"`
  184. }
  185. type AssessmentFormButton struct {
  186. ViewButton bool `description:"查看按钮"`
  187. EditButton bool `description:"编辑按钮"`
  188. RemoveButton bool `description:"删除按钮"`
  189. SubmitButton bool `description:"提交按钮"`
  190. CancelButton bool `description:"撤销按钮"`
  191. }
  192. func (m *AssessmentForm) Format2Detail() (item *AssessmentFormDetail) {
  193. item = new(AssessmentFormDetail)
  194. //item.AssessmentFormId = m.AssessmentFormId
  195. //item.FormCode = m.FormCode
  196. //item.ResearcherId = m.ResearcherId
  197. //item.ResearcherAdminId = m.ResearcherAdminId
  198. item.ResearcherName = m.ResearcherName
  199. //item.VarietyId = m.VarietyId
  200. item.VarietyCode = m.VarietyCode
  201. item.VarietyName = m.VarietyName
  202. item.WeekTime = m.WeekTime
  203. item.BaseDate = utils.TimeTransferString(utils.FormatDate, m.BaseDate)
  204. item.MonthlyPriceForecast = m.MonthlyPriceForecast
  205. item.WeeklyUpForecast = m.WeeklyUpForecast
  206. item.WeeklyDownForecast = m.WeeklyDownForecast
  207. //item.Status = m.Status
  208. item.SubmitTime = utils.TimeTransferString(utils.FormatDate, m.SubmitTime)
  209. item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, m.CreateTime)
  210. item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, m.ModifyTime)
  211. return
  212. }
  213. // AssessmentFormViewResp 查看填报单
  214. type AssessmentFormViewResp struct {
  215. List []*AssessmentFormDetail `description:"填报单详情" json:"dataList"`
  216. Status int `description:"状态" json:"status"`
  217. OutStatus int `description:"外部状态" json:"outStatus"`
  218. OutNo string `description:"外部单号" json:"outNo"`
  219. DataId string `description:"单号" json:"dataId"`
  220. Head AssessmentFormDetail `description:"表头信息" json:"head"`
  221. }
  222. // UpdateOutStatusByFormCode
  223. // @Description: 根据填报单号更新外部单号和外部状态
  224. // @author: Roc
  225. // @receiver m
  226. // @datetime 2025-06-26 17:38:59
  227. // @param formCode string
  228. // @param outNo string
  229. // @param outStatus int
  230. // @return err error
  231. func (m *AssessmentForm) UpdateOutStatusByFormCode(formCode, outNo string, outStatus int) (err error) {
  232. sql := fmt.Sprintf(`UPDATE %s SET out_status = ?,out_no = ? WHERE %s = ? `, m.TableName(), m.Cols().FormCode)
  233. err = global.DEFAULT_DB.Exec(sql, outStatus, outNo, formCode).Error
  234. return
  235. }