|
|
@@ -0,0 +1,634 @@
|
|
|
+// 业务逻辑服务基类,提供基本的添删改查功能
|
|
|
+//
|
|
|
+// 修改纪录
|
|
|
+// 2016.06.06 版本:1.0 yy 新建账户分表结构的处理
|
|
|
+
|
|
|
+package mydb
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "fmt"
|
|
|
+ "reflect"
|
|
|
+ "strconv"
|
|
|
+
|
|
|
+ . "dashoo.cn/utils/db"
|
|
|
+ // "github.com/go-xorm/xorm"
|
|
|
+)
|
|
|
+
|
|
|
+type MySessionBase struct {
|
|
|
+ SessionBase
|
|
|
+}
|
|
|
+
|
|
|
+//
|
|
|
+func (s *MySessionBase) GetPagingEntitiesWithOrderBytbl(AccCode string, pageIndex, itemsPerPage int64, order string, asc bool, entitiesPtr interface{}, where ...string) (total int64) {
|
|
|
+ var err error
|
|
|
+ var resultsSlice []map[string][]byte
|
|
|
+ //获取表名
|
|
|
+ tableName := AccCode + GetTableName(entitiesPtr)
|
|
|
+ if len(where) == 0 {
|
|
|
+ if asc {
|
|
|
+ err = s.Session.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
|
|
|
+ } else {
|
|
|
+ err = s.Session.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
|
|
|
+ }
|
|
|
+ //获取总记录数
|
|
|
+ sql := "SELECT COUNT(*) AS total FROM " + tableName
|
|
|
+ resultsSlice, err = s.Session.Query(sql)
|
|
|
+ LogError(err)
|
|
|
+
|
|
|
+ } else {
|
|
|
+ if asc {
|
|
|
+ err = s.Session.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
|
|
|
+ } else {
|
|
|
+ err = s.Session.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
|
|
|
+ }
|
|
|
+ sql := "SELECT COUNT(*) AS total FROM " + tableName + " where " + where[0]
|
|
|
+ resultsSlice, err = s.Session.Query(sql)
|
|
|
+ }
|
|
|
+ LogError(err)
|
|
|
+ if len(resultsSlice) > 0 {
|
|
|
+ results := resultsSlice[0]
|
|
|
+ for _, value := range results {
|
|
|
+ total, err = strconv.ParseInt(string(value), 10, 64)
|
|
|
+ LogError(err)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return total
|
|
|
+}
|
|
|
+
|
|
|
+//样本库分表
|
|
|
+func (s *MySessionBase) InsertEntityBytbl(tablename string, entity interface{}) (affected int64, err error) {
|
|
|
+ affected, err = s.Session.Table(tablename).Insert(entity)
|
|
|
+ LogError(err)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (s *MySessionBase) GetEntityByIdBytbl(tablename string, id interface{}, entityPtr interface{}) (has bool) {
|
|
|
+ has, err := s.Session.Table(tablename).Id(id).Get(entityPtr)
|
|
|
+ LogError(err)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (s *MySessionBase) GetEntityByWhere(tablename string, where string, entityPtr interface{}) (has bool) {
|
|
|
+ has, err := s.Session.Table(tablename).Where(where).Get(entityPtr)
|
|
|
+ LogError(err)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (s *MySessionBase) GetEntitysByWhere(tablename string, where string, entityPtr interface{}) {
|
|
|
+ err := s.Session.Table(tablename).Where(where).Find(entityPtr)
|
|
|
+ LogError(err)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (s *MySessionBase) GetEntitysByOrderbyWhere(tablename, where, orderby string, entityPtr interface{}) {
|
|
|
+ err := s.Session.Table(tablename).Where(where).OrderBy(orderby).Find(entityPtr)
|
|
|
+ LogError(err)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//更新实体写入日志,会自动备份数据
|
|
|
+func (s *MySessionBase) UpdateEntityBytbl(tablename string, id interface{}, entity interface{}, cols []string) (err error) {
|
|
|
+ //session := s.DBE.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //s.Session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ _, err = s.Session.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //s.Session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ //err = s.Session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//根据条件修改数据,不记录日志
|
|
|
+func (s *MySessionBase) UpdateEntityBywheretbl(tablename string, entity interface{}, cols []string, where string) (err error) {
|
|
|
+ _, err = s.Session.Table(tablename).Where(where).Cols(cols...).Update(entity) //执行更新
|
|
|
+ return err
|
|
|
+}
|
|
|
+
|
|
|
+//更新实体写入日志,会自动备份数据
|
|
|
+func (s *MySessionBase) UpdateDonorAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, cols []string, userid, username, opdesc, acccode, sourcename string) (err error) {
|
|
|
+ s.GetEntityByIdBytbl(tablename, id, entityEmpty)
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+ json, err := json.Marshal(entityEmpty)
|
|
|
+ LogError(err)
|
|
|
+ updatem := new(DonorsLog)
|
|
|
+ //获取表名
|
|
|
+ objT := reflect.TypeOf(entity)
|
|
|
+ objT = objT.Elem()
|
|
|
+ tableName := objT.Name()
|
|
|
+ updatem.TableName = tableName
|
|
|
+ updatem.AccCode = acccode
|
|
|
+ updatem.OpDesc = opdesc
|
|
|
+ updatem.OpType = 1
|
|
|
+ updatem.SourceName = sourcename
|
|
|
+ updatem.RecordId = fmt.Sprintf("%v", id)
|
|
|
+ updatem.RecordData = string(json)
|
|
|
+ updatem.CreateUserId = userid
|
|
|
+ updatem.CreateBy = username
|
|
|
+ _, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
|
|
|
+
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //s.Session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ _, err = s.Session.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //s.Session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ err = s.Session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//删除实体并写入日志,会自动备份数据,entity为空的表结构
|
|
|
+func (s *MySessionBase) DeleteDonorAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, userid, username, opdesc, acccode, sourcename string) (err error) {
|
|
|
+ has := s.GetEntityByIdBytbl(tablename, id, entity)
|
|
|
+ if has {
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err := session.Begin()
|
|
|
+ json, err := json.Marshal(entity)
|
|
|
+ LogError(err)
|
|
|
+ deleted := new(DonorsLog)
|
|
|
+ //获取表名
|
|
|
+ objT := reflect.TypeOf(entity)
|
|
|
+ objT = objT.Elem()
|
|
|
+ tableName := objT.Name()
|
|
|
+
|
|
|
+ deleted.TableName = tableName
|
|
|
+ deleted.AccCode = acccode
|
|
|
+ deleted.OpDesc = opdesc
|
|
|
+ deleted.OpType = 2
|
|
|
+ deleted.SourceName = sourcename
|
|
|
+ deleted.RecordId = fmt.Sprintf("%v", id)
|
|
|
+ deleted.RecordData = string(json)
|
|
|
+ deleted.CreateUserId = userid
|
|
|
+ deleted.CreateBy = username
|
|
|
+
|
|
|
+ _, err = s.Session.Table(tablelogname).Insert(deleted) //保存到更新历史表
|
|
|
+
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ _, err = s.Session.Table(tablename).Id(id).Delete(entityEmpty) //执行删除
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//主信息不存在,首次添加样本
|
|
|
+func (s *MySessionBase) InsertSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{}) (affected int64, err error) {
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+ affected, err = s.Session.Table(tblmain).Insert(entitymain)
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ affected, err = s.Session.Table(tbldetail).Insert(entitydetail)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ affected, err = s.Session.Table(tblbuss).Insert(entitybuss)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//主信息已存在,添加分管信息
|
|
|
+func (s *MySessionBase) InsertOtherSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{},
|
|
|
+ cols []string, id interface{}, mainentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string, sampletype int) (affected int64, err error) {
|
|
|
+ s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+
|
|
|
+ json, err := json.Marshal(mainentityEmpty)
|
|
|
+ LogError(err)
|
|
|
+ updatem := new(SamplesLog)
|
|
|
+ //获取表名
|
|
|
+ objT := reflect.TypeOf(entitymain)
|
|
|
+ objT = objT.Elem()
|
|
|
+ tableName := objT.Name()
|
|
|
+ updatem.TableName = tableName
|
|
|
+ updatem.AccCode = acccode
|
|
|
+ updatem.OpType = 3
|
|
|
+ updatem.SampleCode = samplecode
|
|
|
+ updatem.SampleType = sampletype
|
|
|
+ updatem.MId = fmt.Sprintf("%v", id)
|
|
|
+ updatem.RecordData = string(json)
|
|
|
+ updatem.CreateUserId = userid
|
|
|
+ updatem.CreateBy = username
|
|
|
+ _, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
|
|
|
+
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+
|
|
|
+ _, err = s.Session.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ affected, err = s.Session.Table(tbldetail).Insert(entitydetail)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ affected, err = s.Session.Table(tblbuss).Insert(entitybuss)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//主信息不存在,首次添加样本 预录入新增,不写入buss
|
|
|
+func (s *MySessionBase) InsertSamplePre(tblmain, tbldetail string, entitymain, entitydetail interface{}) (affected int64, err error) {
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+ affected, err = s.Session.Table(tblmain).Insert(entitymain)
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ affected, err = s.Session.Table(tbldetail).Insert(entitydetail)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//主信息已存在,添加分管信息 预录入新增,不写入buss
|
|
|
+func (s *MySessionBase) InsertOtherSamplePre(tblmain, tbldetail string, entitymain, entitydetail interface{},
|
|
|
+ cols []string, id interface{}, mainentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string, sampletype int) (affected int64, err error) {
|
|
|
+ s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+
|
|
|
+ json, err := json.Marshal(mainentityEmpty)
|
|
|
+ LogError(err)
|
|
|
+ updatem := new(SamplesLog)
|
|
|
+ //获取表名
|
|
|
+ objT := reflect.TypeOf(entitymain)
|
|
|
+ objT = objT.Elem()
|
|
|
+ tableName := objT.Name()
|
|
|
+ updatem.TableName = tableName
|
|
|
+ updatem.AccCode = acccode
|
|
|
+ updatem.OpType = 3
|
|
|
+ updatem.SampleCode = samplecode
|
|
|
+ updatem.SampleType = sampletype
|
|
|
+ updatem.MId = fmt.Sprintf("%v", id)
|
|
|
+ updatem.RecordData = string(json)
|
|
|
+ updatem.CreateUserId = userid
|
|
|
+ updatem.CreateBy = username
|
|
|
+ _, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
|
|
|
+
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+
|
|
|
+ _, err = s.Session.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ affected, err = s.Session.Table(tbldetail).Insert(entitydetail)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//出入库信息。修改主表和从表,添加buss表
|
|
|
+func (s *MySessionBase) UpdateOtherSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{},
|
|
|
+ cols, colsdetail []string, id interface{}, mainentityEmpty, detailentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string) (affected int64, err error) {
|
|
|
+ s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+
|
|
|
+ json, err := json.Marshal(mainentityEmpty)
|
|
|
+ LogError(err)
|
|
|
+ updatem := new(SamplesLog)
|
|
|
+ //获取表名
|
|
|
+ objT := reflect.TypeOf(entitymain)
|
|
|
+ objT = objT.Elem()
|
|
|
+ tableName := objT.Name()
|
|
|
+ updatem.TableName = tableName
|
|
|
+ updatem.AccCode = acccode
|
|
|
+ updatem.OpType = 1
|
|
|
+ updatem.SampleCode = samplecode
|
|
|
+ updatem.BarCode = samplecode
|
|
|
+ updatem.RecordId = fmt.Sprintf("%v", id)
|
|
|
+ updatem.RecordData = string(json)
|
|
|
+ updatem.CreateUserId = userid
|
|
|
+ updatem.CreateBy = username
|
|
|
+ _, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
|
|
|
+
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+
|
|
|
+ _, err = s.Session.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+
|
|
|
+ s.GetEntityByIdBytbl(tbldetail, id, detailentityEmpty)
|
|
|
+
|
|
|
+ affected, err = s.Session.Table(tbldetail).Insert(entitydetail)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ affected, err = s.Session.Table(tblbuss).Insert(entitybuss)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return 0, err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//更改样本表
|
|
|
+func (s *MySessionBase) UpdateSample(tablename string, id interface{}, entity interface{}, cols []string) (err error) {
|
|
|
+ // fmt.Println("=====")
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+ _, err = s.Session.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//复苏分装提取信息。修改从表,添加buss表
|
|
|
+func (s *MySessionBase) UpdateDetailAndBuss(tbldetail, tblbuss string, id interface{}, entitydetail, entitybuss interface{}, colsdetail []string) (err error) {
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+ _, err = s.Session.Table(tbldetail).Id(id).Cols(colsdetail...).Update(entitydetail) //执行更新
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ _, err = s.Session.Table(tblbuss).Insert(entitybuss)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//更改样本表并写入日志
|
|
|
+func (s *MySessionBase) WriteSampleLog(tablelogname string, id interface{}, mid interface{}, entity interface{}, userid, username, acccode, samplecode, barcode string, sampletype int) (err error) {
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+ json, err := json.Marshal(entity)
|
|
|
+ LogError(err)
|
|
|
+ updatem := new(SamplesLog)
|
|
|
+ //获取表名
|
|
|
+ updatem.TableName = "SamplesInfoShow"
|
|
|
+ updatem.AccCode = acccode
|
|
|
+ updatem.OpType = 1
|
|
|
+ updatem.SampleCode = samplecode
|
|
|
+ updatem.BarCode = barcode
|
|
|
+ updatem.RecordId = fmt.Sprintf("%v", id)
|
|
|
+ updatem.MId = fmt.Sprintf("%v", mid)
|
|
|
+ updatem.RecordData = string(json)
|
|
|
+ updatem.CreateUserId = userid
|
|
|
+ updatem.CreateBy = username
|
|
|
+ updatem.SampleType = sampletype
|
|
|
+ _, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
|
|
|
+
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//写入样本删除日志
|
|
|
+func (s *MySessionBase) WriteDeleteSampleLog(tablelogname string, id interface{}, mid interface{}, entity interface{}, userid, username, acccode, samplecode, barcode string, sampletype int) (err error) {
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+ json, err := json.Marshal(entity)
|
|
|
+ LogError(err)
|
|
|
+ updatem := new(SamplesLog)
|
|
|
+ //获取表名
|
|
|
+ updatem.TableName = "SamplesInfoShow"
|
|
|
+ updatem.AccCode = acccode
|
|
|
+ updatem.OpType = 2
|
|
|
+ updatem.SampleCode = samplecode
|
|
|
+ updatem.BarCode = barcode
|
|
|
+ updatem.RecordId = fmt.Sprintf("%v", id)
|
|
|
+ updatem.MId = fmt.Sprintf("%v", mid)
|
|
|
+ updatem.RecordData = string(json)
|
|
|
+ updatem.CreateUserId = userid
|
|
|
+ updatem.CreateBy = username
|
|
|
+ updatem.SampleType = sampletype
|
|
|
+ _, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
|
|
|
+
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//更新实体写入日志,会自动备份数据
|
|
|
+func (s *MySessionBase) UpdateOperationAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, cols []string, userid, username, opdesc, acccode, tabledesc string) (err error) {
|
|
|
+ s.GetEntityByIdBytbl(tablename, id, entityEmpty)
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err = session.Begin()
|
|
|
+ json, err := json.Marshal(entityEmpty)
|
|
|
+ LogError(err)
|
|
|
+ updatem := new(Base_OperationLog)
|
|
|
+ //获取表名
|
|
|
+ objT := reflect.TypeOf(entity)
|
|
|
+ objT = objT.Elem()
|
|
|
+ tableName := objT.Name()
|
|
|
+ updatem.TableName = tableName
|
|
|
+ updatem.AccCode = acccode
|
|
|
+ updatem.OpDesc = opdesc
|
|
|
+ updatem.OpTage = 1
|
|
|
+ updatem.TableDesc = tabledesc
|
|
|
+ updatem.RecordId = fmt.Sprintf("%v", id)
|
|
|
+ updatem.RecordData = string(json)
|
|
|
+ updatem.Createuserid = userid
|
|
|
+ updatem.Createby = username
|
|
|
+ _, err = s.Session.Table(tablelogname).Insert(updatem) //保存到更新历史表
|
|
|
+
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ _, err = s.Session.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//删除实体并写入日志,会自动备份数据,entity为空的表结构
|
|
|
+func (s *MySessionBase) DeleteOperationAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, userid, username, opdesc, acccode, tabledesc string) (err error) {
|
|
|
+ has := s.GetEntityByIdBytbl(tablename, id, entity)
|
|
|
+ if has {
|
|
|
+ //session := s.Session.NewSession()
|
|
|
+ //defer session.Close()
|
|
|
+ //err := session.Begin()
|
|
|
+ json, err := json.Marshal(entity)
|
|
|
+ LogError(err)
|
|
|
+ deleted := new(Base_OperationLog)
|
|
|
+ //获取表名
|
|
|
+ objT := reflect.TypeOf(entity)
|
|
|
+ objT = objT.Elem()
|
|
|
+ tableName := objT.Name()
|
|
|
+
|
|
|
+ deleted.TableName = tableName
|
|
|
+ deleted.AccCode = acccode
|
|
|
+ deleted.OpDesc = opdesc
|
|
|
+ deleted.OpTage = 2
|
|
|
+ deleted.TableDesc = tabledesc
|
|
|
+ deleted.RecordId = fmt.Sprintf("%v", id)
|
|
|
+ deleted.RecordData = string(json)
|
|
|
+ deleted.Createuserid = userid
|
|
|
+ deleted.Createby = username
|
|
|
+
|
|
|
+ _, err = s.Session.Table(tablelogname).Insert(deleted) //保存到更新历史表
|
|
|
+
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ _, err = s.Session.Table(tablename).Id(id).Delete(entityEmpty) //执行删除
|
|
|
+ LogError(err)
|
|
|
+ if err != nil {
|
|
|
+ //session.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ //err = session.Commit()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//根据条件删除数据,不记录日志
|
|
|
+func (s *MySessionBase) DeleteEntityBytbl(tablename string, where string) (err error) {
|
|
|
+ if where == "" {
|
|
|
+ where = "1=2"
|
|
|
+ }
|
|
|
+ sql := `delete from ` + tablename + ` where ` + where
|
|
|
+ _, err = s.Session.Exec(sql)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (s *MySessionBase) GetTopNEntities(tablename string, topN int, where string, entitiesPtr interface{}) {
|
|
|
+ err := s.Session.Table(tablename).Where(where).Limit(topN, 0).Find(entitiesPtr)
|
|
|
+ LogError(err)
|
|
|
+ return
|
|
|
+}
|