warehouse_process_classify.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  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. pars = append(pars, startSize, pageSize)
  150. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error
  151. return
  152. }
  153. // WareHouseProcessClassifyItem 建仓过程分类信息
  154. type WareHouseProcessClassifyItem struct {
  155. ClassifyId int `description:"分类ID"`
  156. ClassifyName string `description:"分类名称"`
  157. ClassifyNameEn string `description:"英文分类名称"`
  158. ParentId int `description:"父级ID"`
  159. Level int `description:"层级"`
  160. Sort int `description:"排序"`
  161. LevelPath string `description:"层级路径"`
  162. UniqueCode string `description:"唯一编码"`
  163. Children []*WareHouseProcessClassifyItem `description:"子分类"`
  164. }
  165. func (m *WareHouseProcessClassify) Format2Item() (item *WareHouseProcessClassifyItem) {
  166. item = new(WareHouseProcessClassifyItem)
  167. item.ClassifyId = m.WareHouseProcessClassifyId
  168. item.ClassifyName = m.ClassifyName
  169. item.ClassifyNameEn = m.ClassifyNameEn
  170. item.ParentId = m.ParentId
  171. item.Level = m.Level
  172. item.Sort = m.Sort
  173. item.LevelPath = m.LevelPath
  174. item.UniqueCode = m.UniqueCode
  175. item.Children = make([]*WareHouseProcessClassifyItem, 0)
  176. return
  177. }
  178. // ------------------------------------------------ 通用分类 ------------------------------------------------
  179. // GetCommonClassifyCols 通用分类字段映射
  180. func (m *WareHouseProcessClassify) GetCommonClassifyCols() common.CommonClassifyCols {
  181. return common.CommonClassifyCols{
  182. ClassifyId: m.Cols().PrimaryId,
  183. ClassifyName: m.Cols().ClassifyName,
  184. ParentId: m.Cols().ParentId,
  185. Sort: m.Cols().ParentId,
  186. RootId: m.Cols().RootId,
  187. Level: m.Cols().Level,
  188. LevelPath: m.Cols().LevelPath,
  189. CreateTime: m.Cols().CreateTime,
  190. ModifyTime: m.Cols().ModifyTime,
  191. }
  192. }
  193. // GetCommonClassifyById 获取通用分类
  194. func (m *WareHouseProcessClassify) GetCommonClassifyById(classifyId int) (commonClassify *common.CommonClassify, err error) {
  195. item, e := m.GetItemById(classifyId)
  196. if e != nil {
  197. err = e
  198. return
  199. }
  200. commonClassify = new(common.CommonClassify)
  201. commonClassify.ClassifyId = item.WareHouseProcessClassifyId
  202. commonClassify.ClassifyName = item.ClassifyName
  203. commonClassify.ParentId = item.ParentId
  204. commonClassify.RootId = item.RootId
  205. commonClassify.Level = item.Level
  206. commonClassify.LevelPath = item.LevelPath
  207. commonClassify.Sort = item.Sort
  208. commonClassify.CreateTime = item.CreateTime
  209. commonClassify.ModifyTime = item.ModifyTime
  210. return
  211. }
  212. // GetClassifyByParentIdAndName 实现获取分类信息的方法
  213. func (m *WareHouseProcessClassify) GetClassifyByParentIdAndName(parentId int, name string, excludeId int) (*common.CommonClassify, error) {
  214. // 实现获取分类信息的逻辑
  215. return nil, nil
  216. }
  217. // UpdateCommonClassify 实现更新分类信息的方法
  218. func (m *WareHouseProcessClassify) UpdateCommonClassify(classify *common.CommonClassify, updateCols []string) (err error) {
  219. return
  220. }
  221. func (m *WareHouseProcessClassify) UpdateClassifyChildByParentId(classifyIds []int, rootId int, stepLevel int) (err error) {
  222. // o := orm.NewOrmUsingDB("data")
  223. // var pars []interface{}
  224. // pars = append(pars, rootId, levelStep)
  225. // pars = append(pars, classifyIds)
  226. // // 更新相关联的二级分类的parentId,和classify_name_second
  227. // sql := `update edb_classify
  228. //SET root_id = ?, level = level+?
  229. //where classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
  230. // _, err = o.Raw(sql, pars).Exec()
  231. // if err != nil {
  232. // return
  233. // }
  234. return
  235. }
  236. // GetClassifySortMaxByParentId 实现获取分类排序的方法
  237. func (m *WareHouseProcessClassify) GetClassifySortMaxByParentId(parentId int) (sortMax int, err error) {
  238. // o := orm.NewOrmUsingDB("data")
  239. // sql := `SELECT Max(sort) AS sort FROM edb_classify WHERE parent_id=? AND classify_type=? `
  240. // err = o.Raw(sql, parentId, classifyType).QueryRow(&sort)
  241. // return
  242. return
  243. }
  244. func (m *WareHouseProcessClassify) GetFirstClassifyByParentId(parentId int) (item *common.CommonClassify, err error) {
  245. //o := orm.NewOrmUsingDB("data")
  246. //sql := ` SELECT * FROM edb_classify WHERE parent_id=? order by sort asc,classify_id asc limit 1`
  247. //err = o.Raw(sql, parentId).QueryRow(&item)
  248. return
  249. }
  250. // SetClassifySortByParentId 实现设置分类排序的方法
  251. func (m *WareHouseProcessClassify) SetClassifySortByParentId(parentId, classifyId, sort int, sortUpdate string) (err error) {
  252. //o := orm.NewOrmUsingDB("data")
  253. //sql := ` update edb_classify set sort = ` + updateSort + ` WHERE parent_id=? AND sort > ? AND classify_type = ? `
  254. //if classifyId > 0 {
  255. // sql += ` or ( classify_id > ` + fmt.Sprint(classifyId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
  256. //}
  257. //_, err = o.Raw(sql, parentId, nowSort, classifyType).Exec()
  258. return
  259. }
  260. // GetCommonClassifyObjCols 通用分类对象字段映射
  261. func (m *WareHouseProcessClassify) GetCommonClassifyObjCols() common.CommonClassifyObjCols {
  262. // TODO: 完善
  263. return common.CommonClassifyObjCols{
  264. ObjectId: m.Cols().ClassifyName,
  265. ClassifyId: m.Cols().PrimaryId,
  266. Sort: m.Cols().ParentId,
  267. }
  268. }
  269. func (m *WareHouseProcessClassify) GetObjectById(objectId int) (*common.CommonClassifyObj, error) {
  270. // 实现获取分类信息的逻辑
  271. return nil, nil
  272. }
  273. // GetObjectSortMaxByClassifyId 获取分类下最大排序
  274. func (m *WareHouseProcessClassify) GetObjectSortMaxByClassifyId(classifyId int) (sortMax int, err error) {
  275. // o := orm.NewOrmUsingDB("data")
  276. // sql := `SELECT Max(sort) AS sort FROM edb_info WHERE classify_id=? `
  277. // err = o.Raw(sql, classifyId).QueryRow(&sort)
  278. // return
  279. return
  280. }
  281. func (m *WareHouseProcessClassify) GetFirstObjectByClassifyId(classifyId int) (item *common.CommonClassifyObj, err error) {
  282. //o := orm.NewOrmUsingDB("data")
  283. //sql := ` SELECT * FROM edb_info WHERE classify_id=? order by sort asc,edb_info_id asc limit 1`
  284. //err = o.Raw(sql, classifyId).QueryRow(&item)
  285. return
  286. }
  287. func (m *WareHouseProcessClassify) SetObjectSortByClassifyId(classifyId, sort, prevObjectId int, sortUpdate string) (err error) {
  288. //o := orm.NewOrmUsingDB("data")
  289. //sql := ` update edb_info set sort = ` + updateSort + ` WHERE classify_id=?`
  290. //if prevEdbInfoId > 0 {
  291. // sql += ` AND ( sort > ? or ( edb_info_id > ` + fmt.Sprint(prevEdbInfoId) + ` and sort=` + fmt.Sprint(nowSort) + ` )) `
  292. //} else {
  293. // sql += ` AND ( sort > ? )`
  294. //}
  295. //_, err = o.Raw(sql, classifyId, nowSort).Exec()
  296. return
  297. }
  298. // UpdateCommonClassifyObj 更新通用分类对象
  299. func (m *WareHouseProcessClassify) UpdateCommonClassifyObj(object *common.CommonClassifyObj, updateCols []string) (err error) {
  300. return
  301. }
  302. // ------------------------------------------------ 通用分类 ------------------------------------------------