GAAS GFrame项目web后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

333 lines
11 KiB

3 years ago
  1. // Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
  2. package implments
  3. import (
  4. "LAPP_GAAS_GFrame_BACKEND/grmi"
  5. meta "LAPP_GAAS_GFrame_BACKEND/meta/base"
  6. model "LAPP_GAAS_GFrame_BACKEND/models/base"
  7. "fmt"
  8. "github.com/go-xorm/xorm"
  9. "xorm.io/core"
  10. )
  11. /******************************************************************************
  12. *
  13. * @Struct Name : ArticleDAOImplement
  14. *-----------------------------------------------------------------------------
  15. *
  16. * @Description : Article的数据访问对象实现
  17. *
  18. * @Author : 代码生成器创建
  19. *
  20. * @Date : 2021-04-19 12:11:47
  21. *
  22. ******************************************************************************/
  23. type ArticleDAOImplement struct {
  24. session *xorm.Session
  25. meta *grmi.Entity
  26. plantNr int
  27. userid string
  28. }
  29. /******************************************************************************
  30. *
  31. * @Function Name : NewArticleDAOImplement
  32. *-----------------------------------------------------------------------------
  33. *
  34. * @Description : 创建一个ArticleDAOImplement实例
  35. *
  36. * @Function Parameters : xorm会话
  37. *
  38. * @Function Parameters : 基本主键
  39. *
  40. * @Return Value : ArticleDAOImplement实例
  41. *
  42. * @Author : 代码生成器创建
  43. *
  44. * @Date : 2021-04-19 12:11:47
  45. *
  46. ******************************************************************************/
  47. func NewArticleDAOImplement(session *xorm.Session, plantNr int, userid string) *ArticleDAOImplement {
  48. return &ArticleDAOImplement{session, &meta.Article, plantNr, userid}
  49. }
  50. /******************************************************************************
  51. *
  52. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.InsertOne
  53. *
  54. ******************************************************************************/
  55. func (impl *ArticleDAOImplement) InsertOne(entity *model.Article) error {
  56. entity.PlantNr = impl.plantNr
  57. entity.LastUser = impl.userid
  58. _, err := impl.session.Table(impl.meta.TableName).Insert(entity)
  59. if err != nil {
  60. return grmi.NewDataBaseError(err)
  61. }
  62. return nil
  63. }
  64. /******************************************************************************
  65. *
  66. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.DeleteOne
  67. *
  68. ******************************************************************************/
  69. func (impl *ArticleDAOImplement) DeleteOne(artId string) error {
  70. _, err := impl.session.Table(impl.meta.TableName).ID(core.PK{impl.plantNr, artId}).Delete(impl.meta.Indicator)
  71. if err != nil {
  72. return grmi.NewDataBaseError(err)
  73. }
  74. return nil
  75. }
  76. /******************************************************************************
  77. *
  78. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.SelectWhere
  79. *
  80. ******************************************************************************/
  81. func (impl *ArticleDAOImplement) SelectWhere(articleId []string)([]model.Article, error) {
  82. var data []model.Article
  83. err := impl.session.Table(impl.meta.TableName).In(meta.Article_ArtId.Name, articleId).Find(&data)
  84. return data,err
  85. }
  86. /******************************************************************************
  87. *
  88. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.SelectOne
  89. *
  90. ******************************************************************************/
  91. func (impl *ArticleDAOImplement) SelectOne(artId string) (*model.Article, error) {
  92. var data model.Article
  93. ok, err := impl.session.Table(impl.meta.TableName).ID(core.PK{impl.plantNr, artId}).Get(&data)
  94. if err != nil {
  95. return nil, grmi.NewDataBaseError(err)
  96. }
  97. if !ok {
  98. return nil, nil
  99. }
  100. return &data, nil
  101. }
  102. /******************************************************************************
  103. *
  104. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.UpdateOne
  105. *
  106. ******************************************************************************/
  107. func (impl *ArticleDAOImplement) UpdateOne(entity *model.Article) error {
  108. entity.PlantNr = impl.plantNr
  109. entity.LastUser = impl.userid
  110. _, err := impl.session.Table(impl.meta.TableName).Cols(impl.meta.UpdatingMembers...).ID(entity.GetKey()).Update(entity)
  111. if err != nil {
  112. return grmi.NewDataBaseError(err)
  113. }
  114. return nil
  115. }
  116. /******************************************************************************
  117. *
  118. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.Insert
  119. *
  120. ******************************************************************************/
  121. func (impl *ArticleDAOImplement) Insert(entities *[]model.Article) error {
  122. for i := 0; i < len(*entities); i++ {
  123. entity := &(*entities)[i]
  124. entity.PlantNr = impl.plantNr
  125. entity.LastUser = impl.userid
  126. }
  127. _, err := impl.session.Table(impl.meta.TableName).Insert(entities)
  128. if err != nil {
  129. return grmi.NewDataBaseError(err)
  130. }
  131. return nil
  132. }
  133. /******************************************************************************
  134. *
  135. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.Delete
  136. *
  137. ******************************************************************************/
  138. func (impl *ArticleDAOImplement) Delete(entities *[]model.Article) error {
  139. for _, entity := range *entities {
  140. entity.PlantNr = impl.plantNr
  141. _, err := impl.session.Table(impl.meta.TableName).ID(entity.GetKey()).Delete(impl.meta.Indicator)
  142. if err != nil {
  143. return grmi.NewDataBaseError(err)
  144. }
  145. }
  146. return nil
  147. }
  148. /******************************************************************************
  149. *
  150. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.DeleteWhere
  151. *
  152. ******************************************************************************/
  153. func (impl *ArticleDAOImplement) DeleteWhere(predicates []grmi.Predicate) error {
  154. parameters := []interface{}{impl.plantNr}
  155. where := fmt.Sprintf("%s = ?", meta.Article_PlantNr.ColumnName)
  156. session := impl.session.Table(impl.meta.TableName)
  157. if predicates != nil {
  158. for _, predicate := range predicates {
  159. where += predicate.Build()
  160. parameters = append(parameters, predicate.Values...)
  161. }
  162. session = session.Where(where, parameters...)
  163. } else {
  164. session = session.Where(where, parameters...)
  165. }
  166. _, err := session.Delete(impl.meta.Indicator)
  167. if err != nil {
  168. return grmi.NewDataBaseError(err)
  169. }
  170. return nil
  171. }
  172. /******************************************************************************
  173. *
  174. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.Select
  175. *
  176. ******************************************************************************/
  177. func (impl *ArticleDAOImplement) Select(predicates []grmi.Predicate, orderByFields []grmi.Field) ([]model.Article, error) {
  178. parameters := []interface{}{impl.plantNr}
  179. where := fmt.Sprintf("%s = ?", meta.Article_PlantNr.ColumnName)
  180. session := impl.session.Table(impl.meta.TableName)
  181. if predicates != nil {
  182. for _, predicate := range predicates {
  183. where += predicate.Build()
  184. parameters = append(parameters, predicate.Values...)
  185. }
  186. session = session.Where(where, parameters...)
  187. } else {
  188. session = session.Where(where, parameters...)
  189. }
  190. session = session.OrderBy(meta.Article_PlantNr.ColumnName)
  191. if orderByFields != nil {
  192. for _, field := range orderByFields {
  193. session = session.OrderBy(field.ColumnName)
  194. }
  195. }
  196. data := make([]model.Article, 0, 10)
  197. err := session.Find(&data)
  198. if err != nil {
  199. return nil, grmi.NewDataBaseError(err)
  200. }
  201. return data, nil
  202. }
  203. /******************************************************************************
  204. *
  205. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.SelectAndPaging
  206. *
  207. ******************************************************************************/
  208. func (impl *ArticleDAOImplement) SelectAndPaging(paging *grmi.Paging, predicates []grmi.Predicate, orderByFields []grmi.Field) (grmi.PagingResult, error) {
  209. parameters := []interface{}{impl.plantNr}
  210. where := fmt.Sprintf("%s = ?", meta.Article_PlantNr.ColumnName)
  211. session := impl.session.Table(impl.meta.TableName)
  212. if predicates != nil {
  213. for _, predicate := range predicates {
  214. where += predicate.Build()
  215. parameters = append(parameters, predicate.Values...)
  216. }
  217. session = session.Where(where, parameters...)
  218. } else {
  219. session = session.Where(where, parameters...)
  220. }
  221. count, err := session.Count(impl.meta.Indicator)
  222. if err != nil {
  223. return grmi.EmptyPagingResult, err
  224. }
  225. orderBy := " order by " + meta.Article_PlantNr.ColumnName
  226. if orderByFields != nil {
  227. for _, field := range orderByFields {
  228. orderBy += ", " + field.ColumnName
  229. }
  230. }
  231. parameters = append(parameters, paging.Offset(), paging.Size)
  232. data := make([]model.Article, 0, 10)
  233. if where != "" {
  234. where = " where " + where
  235. }
  236. err = impl.session.Table(impl.meta.TableName).SQL("select * from "+impl.meta.TableName+where+orderBy+" offset ? row fetch next ? row only", parameters...).Find(&data)
  237. if err != nil {
  238. return grmi.EmptyPagingResult, err
  239. }
  240. return grmi.PagingResult{Records: data, Count: count, PageNumber: paging.Number, PageSize: paging.Size}, nil
  241. }
  242. /******************************************************************************
  243. *
  244. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.Update
  245. *
  246. ******************************************************************************/
  247. func (impl *ArticleDAOImplement) Update(entities *[]model.Article) error {
  248. for i := 0; i < len(*entities); i++ {
  249. entity := &(*entities)[i]
  250. entity.PlantNr = impl.plantNr
  251. entity.LastUser = impl.userid
  252. _, err := impl.session.Table(impl.meta.TableName).Cols(impl.meta.UpdatingMembers...).ID(entity.GetKey()).Update(entity)
  253. if err != nil {
  254. return grmi.NewDataBaseError(err)
  255. }
  256. }
  257. return nil
  258. }
  259. /******************************************************************************
  260. *
  261. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.UpdateWhere
  262. *
  263. ******************************************************************************/
  264. func (impl *ArticleDAOImplement) UpdateWhere(predicates []grmi.Predicate, entity *model.Article, columns ...string) error {
  265. parameters := []interface{}{impl.plantNr}
  266. where := fmt.Sprintf("%s = ?", meta.Article_PlantNr.ColumnName)
  267. session := impl.session.Table(impl.meta.TableName)
  268. if predicates != nil {
  269. for _, predicate := range predicates {
  270. where += predicate.Build()
  271. parameters = append(parameters, predicate.Values...)
  272. }
  273. session = session.Where(where, parameters...)
  274. } else {
  275. session = session.Where(where, parameters...)
  276. }
  277. columns = append(columns, meta.Article_LastUser.ColumnName)
  278. entity.LastUser = impl.userid
  279. _, err := impl.session.Table(impl.meta.TableName).Cols(columns...).Update(entity)
  280. if err != nil {
  281. return grmi.NewDataBaseError(err)
  282. }
  283. return nil
  284. }
  285. /******************************************************************************
  286. *
  287. * @Reference LAPP_GAAS_GFrame_BACKEND/dao/base/ArticleDAO.SelectAllCarModel
  288. *
  289. ******************************************************************************/
  290. func (impl *ArticleDAOImplement) SelectAllCarModel() (result []string, err error) {
  291. data := make([]interface{}, 0)
  292. err = impl.session.Table(impl.meta.TableName).Cols(meta.Article_CarModel.ColumnName).Distinct(meta.Article_CarModel.ColumnName).Asc(meta.Article_CarModel.ColumnName).Find(&data)
  293. if err != nil {
  294. return nil, err
  295. }
  296. result = make([]string, 0)
  297. for _, item := range data {
  298. carModel, ok := item.(string)
  299. if ok {
  300. result = append(result, carModel)
  301. }
  302. }
  303. return result, err
  304. }