package implments import ( "github.com/go-xorm/xorm" "leit.com/LAPP_GAAS_GFrame/grmi" meta "leit.com/LAPP_GAAS_GFrame/meta/qm" model "leit.com/LAPP_GAAS_GFrame/models/qm" "xorm.io/core" ) type ArtViewDAOImplement struct { session *xorm.Session plantNr int userid string } func NewArtViewDAOImplement(session *xorm.Session, plantNr int, userid string) *ArtViewDAOImplement { return &ArtViewDAOImplement{session, plantNr, userid} } //插入ArtView func (self *ArtViewDAOImplement) InsertOne(entity *model.ArtView) error { _, err := self.session.Table(meta.ArtView.TableName).Insert(entity) if err != nil { return grmi.NewDataBaseError(err) } return nil } //删除指定键的ArtView func (self *ArtViewDAOImplement) DeleteOne(artId string, viewId string) error { _, err := self.session.Table(meta.ArtView.TableName).ID(core.PK{self.plantNr, artId, viewId}).Delete(meta.ArtView.Indicator) if err != nil { return grmi.NewDataBaseError(err) } return nil } //查找指定键的ArtView func (self *ArtViewDAOImplement) SelectOne(artId string, viewId string) (*model.ArtView, error) { var data model.ArtView ok, err := self.session.Table(meta.ArtView.TableName).ID(core.PK{self.plantNr, artId, viewId}).Get(&data) if err != nil { return nil, grmi.NewDataBaseError(err) } if !ok { return nil, nil } return &data, nil } //修改ArtView func (self *ArtViewDAOImplement) UpdateOne(entity *model.ArtView) error { _, 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) if err != nil { return grmi.NewDataBaseError(err) } return nil } //批量检查ArtView func (self *ArtViewDAOImplement) checkArtViewRecords(records *[]model.ArtView) error { for _, record := range *records { if self.plantNr != record.PlantNr { return grmi.NewBusinessError("记录不在范围内!") } } return nil } //按条件查询ArtView func (self *ArtViewDAOImplement) Select(predicates []grmi.Predicate, orderByFields []grmi.Field) ([]model.ArtView, error) { parameters := make([]interface{}, 0, 10) parameters = append(parameters, self.plantNr) where := "" if predicates != nil { for _, predicate := range predicates { where += predicate.Build() parameters = append(parameters, predicate.Value) } } data := make([]model.ArtView, 0, 10) session := self.session.Table(meta.ArtView.TableName).Where("PlantNr = ?"+where, parameters...).OrderBy("PlantNr") for _, field := range orderByFields { session = session.OrderBy(field.ColumnName) } err := session.Find(&data) if err != nil { return nil, grmi.NewDataBaseError(err) } return data, nil } //按条件查询ArtView并分页 func (self *ArtViewDAOImplement) SelectAndPaging(paging *grmi.Paging, predicates []grmi.Predicate, orderByFields []grmi.Field) (grmi.PagingResult, error) { parameters := make([]interface{}, 0, 10) parameters = append(parameters, self.plantNr) where := "" if predicates != nil { for _, predicate := range predicates { where += predicate.Build() parameters = append(parameters, predicate.Value) } } orderBy := " order by PlantNr" for _, field := range orderByFields { orderBy += ", " + field.ColumnName } count, err := self.session.Table(meta.ArtView.TableName).Where("PlantNr = ? "+where, parameters...).Count(meta.ArtView.Indicator) if err != nil { return grmi.EmptyPagingResult, err } parameters = append(parameters, paging.Offset(), paging.Size) data := make([]model.ArtView, 0, 10) 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) if err != nil { return grmi.EmptyPagingResult, err } return grmi.PagingResult{Records: data, Count: count, PageNumber: paging.Number, PageSize: paging.Size}, nil }