GAAS 广汽安道拓GFrame金属件MOM项目
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.

123 lines
3.9 KiB

  1. package implments
  2. import (
  3. "github.com/go-xorm/xorm"
  4. "leit.com/LAPP_GAAS_GFrame/grmi"
  5. meta "leit.com/LAPP_GAAS_GFrame/meta/qm"
  6. model "leit.com/LAPP_GAAS_GFrame/models/qm"
  7. "xorm.io/core"
  8. )
  9. type ArtViewDAOImplement struct {
  10. session *xorm.Session
  11. plantNr int
  12. userid string
  13. }
  14. func NewArtViewDAOImplement(session *xorm.Session, plantNr int, userid string) *ArtViewDAOImplement {
  15. return &ArtViewDAOImplement{session, plantNr, userid}
  16. }
  17. //插入ArtView
  18. func (self *ArtViewDAOImplement) InsertOne(entity *model.ArtView) error {
  19. _, err := self.session.Table(meta.ArtView.TableName).Insert(entity)
  20. if err != nil {
  21. return grmi.NewDataBaseError(err)
  22. }
  23. return nil
  24. }
  25. //删除指定键的ArtView
  26. func (self *ArtViewDAOImplement) DeleteOne(artId string, viewId string) error {
  27. _, err := self.session.Table(meta.ArtView.TableName).ID(core.PK{self.plantNr, artId, viewId}).Delete(meta.ArtView.Indicator)
  28. if err != nil {
  29. return grmi.NewDataBaseError(err)
  30. }
  31. return nil
  32. }
  33. //查找指定键的ArtView
  34. func (self *ArtViewDAOImplement) SelectOne(artId string, viewId string) (*model.ArtView, error) {
  35. var data model.ArtView
  36. ok, err := self.session.Table(meta.ArtView.TableName).ID(core.PK{self.plantNr, artId, viewId}).Get(&data)
  37. if err != nil {
  38. return nil, grmi.NewDataBaseError(err)
  39. }
  40. if !ok {
  41. return nil, nil
  42. }
  43. return &data, nil
  44. }
  45. //修改ArtView
  46. func (self *ArtViewDAOImplement) UpdateOne(entity *model.ArtView) error {
  47. _, err := self.session.Table(meta.ArtView.TableName).Cols(meta.ArtView_Pos.ColumnName, meta.ArtView_Descr.ColumnName, meta.ArtView_ViewPicture.ColumnName, meta.ArtView_LastUser.ColumnName).ID(entity.GetKey()).Update(entity)
  48. if err != nil {
  49. return grmi.NewDataBaseError(err)
  50. }
  51. return nil
  52. }
  53. //批量检查ArtView
  54. func (self *ArtViewDAOImplement) checkArtViewRecords(records *[]model.ArtView) error {
  55. for _, record := range *records {
  56. if self.plantNr != record.PlantNr {
  57. return grmi.NewBusinessError("记录不在范围内!")
  58. }
  59. }
  60. return nil
  61. }
  62. //按条件查询ArtView
  63. func (self *ArtViewDAOImplement) Select(predicates []grmi.Predicate, orderByFields []grmi.Field) ([]model.ArtView, error) {
  64. parameters := make([]interface{}, 0, 10)
  65. parameters = append(parameters, self.plantNr)
  66. where := ""
  67. if predicates != nil {
  68. for _, predicate := range predicates {
  69. where += predicate.Build()
  70. parameters = append(parameters, predicate.Value)
  71. }
  72. }
  73. data := make([]model.ArtView, 0, 10)
  74. session := self.session.Table(meta.ArtView.TableName).Where("PlantNr = ?"+where, parameters...).OrderBy("PlantNr")
  75. for _, field := range orderByFields {
  76. session = session.OrderBy(field.ColumnName)
  77. }
  78. err := session.Find(&data)
  79. if err != nil {
  80. return nil, grmi.NewDataBaseError(err)
  81. }
  82. return data, nil
  83. }
  84. //按条件查询ArtView并分页
  85. func (self *ArtViewDAOImplement) SelectAndPaging(paging *grmi.Paging, predicates []grmi.Predicate, orderByFields []grmi.Field) (grmi.PagingResult, error) {
  86. parameters := make([]interface{}, 0, 10)
  87. parameters = append(parameters, self.plantNr)
  88. where := ""
  89. if predicates != nil {
  90. for _, predicate := range predicates {
  91. where += predicate.Build()
  92. parameters = append(parameters, predicate.Value)
  93. }
  94. }
  95. orderBy := " order by PlantNr"
  96. for _, field := range orderByFields {
  97. orderBy += ", " + field.ColumnName
  98. }
  99. count, err := self.session.Table(meta.ArtView.TableName).Where("PlantNr = ? "+where, parameters...).Count(meta.ArtView.Indicator)
  100. if err != nil {
  101. return grmi.EmptyPagingResult, err
  102. }
  103. parameters = append(parameters, paging.Offset(), paging.Size)
  104. data := make([]model.ArtView, 0, 10)
  105. err = self.session.Table(meta.ArtView.TableName).SQL("select * from QM_ArtView where PlantNr = ?"+where+orderBy+" offset ? row fetch next ? row only", parameters...).Find(&data)
  106. if err != nil {
  107. return grmi.EmptyPagingResult, err
  108. }
  109. return grmi.PagingResult{Records: data, Count: count, PageNumber: paging.Number, PageSize: paging.Size}, nil
  110. }