warehouse_process_classify.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. package trade_analysis
  2. import (
  3. "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/models/common"
  6. "eta/eta_api/utils"
  7. "fmt"
  8. "strings"
  9. "time"
  10. )
  11. // WareHouseProcessClassify 建仓过程分类表
  12. type WareHouseProcessClassify struct {
  13. WareHouseProcessClassifyId int `orm:"column(warehouse_process_classify_id);pk"`
  14. ClassifyName string `description:"分类名称"`
  15. ClassifyNameEn string `description:"英文分类名称"`
  16. ParentId int `description:"父级ID"`
  17. SysUserId int `description:"创建人ID"`
  18. SysUserRealName string `description:"创建人姓名"`
  19. Level int `description:"层级"`
  20. Sort int `description:"排序"`
  21. RootId int `description:"顶级分类ID"`
  22. LevelPath string `description:"层级路径"`
  23. UniqueCode string `description:"唯一编码"`
  24. CreateTime time.Time `description:"创建时间"`
  25. ModifyTime time.Time `description:"修改时间"`
  26. }
  27. func (m *WareHouseProcessClassify) TableName() string {
  28. return "warehouse_process_classify"
  29. }
  30. type WareHouseProcessClassifyCols struct {
  31. PrimaryId string
  32. ClassifyName string
  33. ClassifyNameEn string
  34. ParentId string
  35. SysUserId string
  36. SysUserRealName string
  37. Level string
  38. Sort string
  39. RootId string
  40. LevelPath string
  41. UniqueCode string
  42. CreateTime string
  43. ModifyTime string
  44. }
  45. func (m *WareHouseProcessClassify) Cols() WareHouseProcessClassifyCols {
  46. return WareHouseProcessClassifyCols{
  47. PrimaryId: "warehouse_process_classify_id",
  48. ClassifyName: "classify_name",
  49. ClassifyNameEn: "classify_name_en",
  50. ParentId: "parent_id",
  51. SysUserId: "sys_user_id",
  52. SysUserRealName: "sys_user_real_name",
  53. Level: "level",
  54. Sort: "sort",
  55. RootId: "root_id",
  56. LevelPath: "level_path",
  57. UniqueCode: "unique_code",
  58. CreateTime: "create_time",
  59. ModifyTime: "modify_time",
  60. }
  61. }
  62. func (m *WareHouseProcessClassify) Create() (err error) {
  63. err = global.DbMap[utils.DbNameIndex].Create(m).Error
  64. if err != nil {
  65. return
  66. }
  67. return
  68. }
  69. func (m *WareHouseProcessClassify) CreateMulti(items []*WareHouseProcessClassify) (err error) {
  70. if len(items) == 0 {
  71. return
  72. }
  73. err = global.DbMap[utils.DbNameIndex].CreateInBatches(items, len(items)).Error
  74. return
  75. }
  76. func (m *WareHouseProcessClassify) Update(cols []string) (err error) {
  77. err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(m).Error
  78. return
  79. }
  80. func (m *WareHouseProcessClassify) Remove() (err error) {
  81. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  82. err = global.DbMap[utils.DbNameIndex].Exec(sql, m.WareHouseProcessClassifyId).Error
  83. return
  84. }
  85. func (m *WareHouseProcessClassify) MultiRemove(ids []int) (err error) {
  86. if len(ids) == 0 {
  87. return
  88. }
  89. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
  90. err = global.DbMap[utils.DbNameIndex].Exec(sql, ids).Error
  91. return
  92. }
  93. func (m *WareHouseProcessClassify) RemoveByCondition(condition string, pars []interface{}) (err error) {
  94. if condition == "" {
  95. return
  96. }
  97. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
  98. err = global.DbMap[utils.DbNameIndex].Exec(sql, pars).Error
  99. return
  100. }
  101. func (m *WareHouseProcessClassify) GetItemById(id int) (item *WareHouseProcessClassify, err error) {
  102. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  103. err = global.DbMap[utils.DbNameIndex].Raw(sql, id).First(&item).Error
  104. return
  105. }
  106. func (m *WareHouseProcessClassify) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *WareHouseProcessClassify, err error) {
  107. order := ``
  108. if orderRule != "" {
  109. order = ` ORDER BY ` + orderRule
  110. }
  111. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
  112. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).First(&item).Error
  113. return
  114. }
  115. func (m *WareHouseProcessClassify) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  116. var totalNull sql.NullInt64
  117. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  118. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Scan(&count).Error
  119. if !totalNull.Valid {
  120. count = 0
  121. } else {
  122. count = int(totalNull.Int64)
  123. }
  124. return
  125. }
  126. func (m *WareHouseProcessClassify) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*WareHouseProcessClassify, err error) {
  127. fields := strings.Join(fieldArr, ",")
  128. if len(fieldArr) == 0 {
  129. fields = `*`
  130. }
  131. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  132. if orderRule != "" {
  133. order = ` ORDER BY ` + orderRule
  134. }
  135. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  136. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
  137. return
  138. }
  139. func (m *WareHouseProcessClassify) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*WareHouseProcessClassify, err error) {
  140. fields := strings.Join(fieldArr, ",")
  141. if len(fieldArr) == 0 {
  142. fields = `*`
  143. }
  144. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  145. if orderRule != "" {
  146. order = ` ORDER BY ` + orderRule
  147. }
  148. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  149. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars, startSize, pageSize).Find(&items).Error
  150. return
  151. }
  152. // WareHouseProcessClassifyItem 建仓过程分类信息
  153. type WareHouseProcessClassifyItem struct {
  154. ClassifyId int `description:"分类ID"`
  155. ClassifyName string `description:"分类名称"`
  156. ClassifyNameEn string `description:"英文分类名称"`
  157. ParentId int `description:"父级ID"`
  158. Level int `description:"层级"`
  159. Sort int `description:"排序"`
  160. LevelPath string `description:"层级路径"`
  161. UniqueCode string `description:"唯一编码"`
  162. Children []*WareHouseProcessClassifyItem `description:"子分类"`
  163. }
  164. func (m *WareHouseProcessClassify) Format2Item() (item *WareHouseProcessClassifyItem) {
  165. item = new(WareHouseProcessClassifyItem)
  166. item.ClassifyId = m.WareHouseProcessClassifyId
  167. item.ClassifyName = m.ClassifyName
  168. item.ClassifyNameEn = m.ClassifyNameEn
  169. item.ParentId = m.ParentId
  170. item.Level = m.Level
  171. item.Sort = m.Sort
  172. item.LevelPath = m.LevelPath
  173. item.UniqueCode = m.UniqueCode
  174. item.Children = make([]*WareHouseProcessClassifyItem, 0)
  175. return
  176. }
  177. // ------------------------------------------------ 通用分类 ------------------------------------------------
  178. // GetCommonClassifyCols 通用分类字段映射
  179. func (m *WareHouseProcessClassify) GetCommonClassifyCols() common.CommonClassifyCols {
  180. return common.CommonClassifyCols{
  181. ClassifyId: m.Cols().PrimaryId,
  182. ClassifyName: m.Cols().ClassifyName,
  183. ParentId: m.Cols().ParentId,
  184. Sort: m.Cols().ParentId,
  185. RootId: m.Cols().RootId,
  186. Level: m.Cols().Level,
  187. LevelPath: m.Cols().LevelPath,
  188. CreateTime: m.Cols().CreateTime,
  189. ModifyTime: m.Cols().ModifyTime,
  190. }
  191. }
  192. // GetCommonClassifyById 获取通用分类
  193. func (m *WareHouseProcessClassify) GetCommonClassifyById(classifyId int) (commonClassify *common.CommonClassify, err error) {
  194. item, e := m.GetItemById(classifyId)
  195. if e != nil {
  196. err = e
  197. return
  198. }
  199. commonClassify = new(common.CommonClassify)
  200. commonClassify.ClassifyId = item.WareHouseProcessClassifyId
  201. commonClassify.ClassifyName = item.ClassifyName
  202. commonClassify.ParentId = item.ParentId
  203. commonClassify.RootId = item.RootId
  204. commonClassify.Level = item.Level
  205. commonClassify.LevelPath = item.LevelPath
  206. commonClassify.Sort = item.Sort
  207. commonClassify.CreateTime = item.CreateTime
  208. commonClassify.ModifyTime = item.ModifyTime
  209. return
  210. }
  211. // GetClassifyByParentIdAndName 实现获取分类信息的方法
  212. func (m *WareHouseProcessClassify) GetClassifyByParentIdAndName(parentId int, name string, excludeId int) (*common.CommonClassify, error) {
  213. // 实现获取分类信息的逻辑
  214. return nil, nil
  215. }
  216. // UpdateCommonClassify 实现更新分类信息的方法
  217. func (m *WareHouseProcessClassify) UpdateCommonClassify(classify *common.CommonClassify, updateCols []string) (err error) {
  218. return
  219. }
  220. func (m *WareHouseProcessClassify) UpdateClassifyChildByParentId(classifyIds []int, rootId int, stepLevel int) (err error) {
  221. // o := orm.NewOrmUsingDB("data")
  222. // var pars []interface{}
  223. // pars = append(pars, rootId, levelStep)
  224. // pars = append(pars, classifyIds)
  225. // // 更新相关联的二级分类的parentId,和classify_name_second
  226. // sql := `update edb_classify
  227. //SET root_id = ?, level = level+?
  228. //where classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
  229. // _, err = o.Raw(sql, pars).Exec()
  230. // if err != nil {
  231. // return
  232. // }
  233. return
  234. }
  235. // GetClassifySortMaxByParentId 实现获取分类排序的方法
  236. func (m *WareHouseProcessClassify) GetClassifySortMaxByParentId(parentId int) (sortMax int, err error) {
  237. // o := orm.NewOrmUsingDB("data")
  238. // sql := `SELECT Max(sort) AS sort FROM edb_classify WHERE parent_id=? AND classify_type=? `
  239. // err = o.Raw(sql, parentId, classifyType).QueryRow(&sort)
  240. // return
  241. return
  242. }
  243. func (m *WareHouseProcessClassify) GetFirstClassifyByParentId(parentId int) (item *common.CommonClassify, err error) {
  244. //o := orm.NewOrmUsingDB("data")
  245. //sql := ` SELECT * FROM edb_classify WHERE parent_id=? order by sort asc,classify_id asc limit 1`
  246. //err = o.Raw(sql, parentId).QueryRow(&item)
  247. return
  248. }
  249. // SetClassifySortByParentId 实现设置分类排序的方法
  250. func (m *WareHouseProcessClassify) SetClassifySortByParentId(parentId, classifyId, sort int, sortUpdate string) (err error) {
  251. //o := orm.NewOrmUsingDB("data")
  252. //sql := ` update edb_classify set sort = ` + updateSort + ` WHERE parent_id=? AND sort > ? AND classify_type = ? `
  253. //if classifyId > 0 {
  254. // sql += ` or ( classify_id > ` + fmt.Sprint(classifyId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
  255. //}
  256. //_, err = o.Raw(sql, parentId, nowSort, classifyType).Exec()
  257. return
  258. }
  259. // GetCommonClassifyObjCols 通用分类对象字段映射
  260. func (m *WareHouseProcessClassify) GetCommonClassifyObjCols() common.CommonClassifyObjCols {
  261. // TODO: 完善
  262. return common.CommonClassifyObjCols{
  263. ObjectId: m.Cols().ClassifyName,
  264. ClassifyId: m.Cols().PrimaryId,
  265. Sort: m.Cols().ParentId,
  266. }
  267. }
  268. func (m *WareHouseProcessClassify) GetObjectById(objectId int) (*common.CommonClassifyObj, error) {
  269. // 实现获取分类信息的逻辑
  270. return nil, nil
  271. }
  272. // GetObjectSortMaxByClassifyId 获取分类下最大排序
  273. func (m *WareHouseProcessClassify) GetObjectSortMaxByClassifyId(classifyId int) (sortMax int, err error) {
  274. // o := orm.NewOrmUsingDB("data")
  275. // sql := `SELECT Max(sort) AS sort FROM edb_info WHERE classify_id=? `
  276. // err = o.Raw(sql, classifyId).QueryRow(&sort)
  277. // return
  278. return
  279. }
  280. func (m *WareHouseProcessClassify) GetFirstObjectByClassifyId(classifyId int) (item *common.CommonClassifyObj, err error) {
  281. //o := orm.NewOrmUsingDB("data")
  282. //sql := ` SELECT * FROM edb_info WHERE classify_id=? order by sort asc,edb_info_id asc limit 1`
  283. //err = o.Raw(sql, classifyId).QueryRow(&item)
  284. return
  285. }
  286. func (m *WareHouseProcessClassify) SetObjectSortByClassifyId(classifyId, sort, prevObjectId int, sortUpdate string) (err error) {
  287. //o := orm.NewOrmUsingDB("data")
  288. //sql := ` update edb_info set sort = ` + updateSort + ` WHERE classify_id=?`
  289. //if prevEdbInfoId > 0 {
  290. // sql += ` AND ( sort > ? or ( edb_info_id > ` + fmt.Sprint(prevEdbInfoId) + ` and sort=` + fmt.Sprint(nowSort) + ` )) `
  291. //} else {
  292. // sql += ` AND ( sort > ? )`
  293. //}
  294. //_, err = o.Raw(sql, classifyId, nowSort).Exec()
  295. return
  296. }
  297. // UpdateCommonClassifyObj 更新通用分类对象
  298. func (m *WareHouseProcessClassify) UpdateCommonClassifyObj(object *common.CommonClassifyObj, updateCols []string) (err error) {
  299. return
  300. }
  301. // ------------------------------------------------ 通用分类 ------------------------------------------------