validationTransfer.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package validationtool
  2. import (
  3. "ERP_storage/logs"
  4. "encoding/json"
  5. "fmt"
  6. "github.com/beego/beego/v2/adapter/orm"
  7. orm2 "github.com/beego/beego/v2/client/orm"
  8. "gogs.baozhida.cn/zoie/ERP_libs/lib"
  9. "time"
  10. )
  11. const (
  12. TransferPending = "pending" // 待确认
  13. TransferCompleted = "completed" // 已完成
  14. TransferCanceled = "canceled" // 已取消
  15. )
  16. // 验证工具转移记录
  17. type ValidationToolTransfer struct {
  18. Id int `orm:"column(id);size(11);auto;pk"`
  19. TransferSn string `orm:"type(text);null"` // 设备sn列表(JSON字符串)
  20. TransferUser string `orm:"size(256);null"` // 转移人
  21. AcceptedUser string `orm:"size(256);null"` // 接收人
  22. TransferUserUid string `orm:"size(256);null"` // 转移人uuid
  23. AcceptedUserUid string `orm:"size(256);null"` // 接收人uuid
  24. Status string `orm:"size(20);null"` // 状态:pending-待确认,completed-已完成,canceled-已取消
  25. AcceptedNumber int `orm:"size(11);null"` // 接收数量
  26. TransferRemark string `orm:"type(text);null"` // 转移备注
  27. AcceptedRemark string `orm:"type(text);null"` // 接收备注
  28. CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` // 创建时间
  29. UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` // 更新时间
  30. AcceptedSn string `orm:"type(text);null"` // 实际接收的SN列表(JSON字符串)
  31. AcceptedTime time.Time `orm:"column(accepted_time);type(timestamp);null"` // 创建时间
  32. }
  33. func (t *ValidationToolTransfer) TableName() string {
  34. return "validation_tool_transfer"
  35. }
  36. type ValidationToolTransfer_R struct {
  37. Id int
  38. TransferSn []string
  39. AcceptedSn []string
  40. TransferUser string
  41. AcceptedUser string
  42. Status string
  43. TransferRemark string
  44. AcceptedRemark string
  45. CreateTime string
  46. AcceptedTime string
  47. AcceptedNumber int
  48. TransferNumber int
  49. }
  50. func ValidationToolTransferTo_R(v ValidationToolTransfer) (r ValidationToolTransfer_R) {
  51. r.Id = v.Id
  52. var TransferSn, AcceptedSn []string
  53. err := json.Unmarshal([]byte(v.TransferSn), &TransferSn)
  54. fmt.Println(err)
  55. r.TransferSn = TransferSn
  56. _ = json.Unmarshal([]byte(v.AcceptedSn), &AcceptedSn)
  57. r.AcceptedSn = AcceptedSn
  58. r.TransferUser = v.TransferUser
  59. r.AcceptedUser = v.AcceptedUser
  60. r.TransferNumber = len(r.TransferSn)
  61. r.AcceptedNumber = v.AcceptedNumber
  62. r.Status = v.Status
  63. r.TransferRemark = v.TransferRemark
  64. r.AcceptedRemark = v.AcceptedRemark
  65. r.CreateTime = v.CreateTime.Format("2006-01-02 15:04")
  66. if v.AcceptedTime.IsZero() {
  67. r.AcceptedTime = "-"
  68. } else {
  69. r.AcceptedTime = v.AcceptedTime.Format("2006-01-02 15:04")
  70. }
  71. return
  72. }
  73. // 获取单条转移记录
  74. func (dao *ValidationToolTransferImpl) GetTransferRecordByID(id int) (transfer ValidationToolTransfer, err error) {
  75. transfer.Id = id
  76. err = dao.orm.Read(&transfer)
  77. return
  78. }
  79. // 确认转移,更新状态和接收的SN列表
  80. func (dao *ValidationToolTransferImpl) ConfirmTransfer(id int, acceptedSNsJSON string) (err error) {
  81. transfer := ValidationToolTransfer{Id: id}
  82. if err = dao.orm.Read(&transfer); err == nil {
  83. transfer.Status = "completed"
  84. transfer.AcceptedSn = acceptedSNsJSON
  85. _, err = dao.orm.Update(&transfer, "Status", "AcceptedSn", "UpdateTime")
  86. }
  87. return err
  88. }
  89. type ValidationToolTransferImpl struct {
  90. orm orm.Ormer
  91. }
  92. func NewValidationToolTransfer(orm orm.Ormer) *ValidationToolTransferImpl {
  93. return &ValidationToolTransferImpl{orm: orm}
  94. }
  95. func init() {
  96. //注册模型
  97. orm.RegisterModel(new(ValidationToolTransfer))
  98. }
  99. // 添加转移记录
  100. func (dao *ValidationToolTransferImpl) Add(transfer *ValidationToolTransfer) (id int64, err error) {
  101. id, err = dao.orm.Insert(transfer)
  102. if err != nil {
  103. logs.Error(lib.FuncName(), err)
  104. }
  105. return id, err
  106. }
  107. func (dao *ValidationToolTransferImpl) Update(r ValidationToolTransfer, cols ...string) (err error) {
  108. _, err = dao.orm.Update(&r, cols...)
  109. if err != nil {
  110. logs.Error(lib.FuncName(), err)
  111. }
  112. return err
  113. }
  114. // 获取接收人的待接收记录
  115. func (dao *ValidationToolTransferImpl) GetTransferRecordsByUser(userUUID, status string, page, page_z int) (list []ValidationToolTransfer_R, cnt int64) {
  116. qs := dao.orm.QueryTable(new(ValidationToolTransfer))
  117. var offset int64
  118. if page <= 1 {
  119. offset = 0
  120. } else {
  121. offset = int64((page - 1) * page_z)
  122. }
  123. // 过滤
  124. cond := orm.NewCondition()
  125. cond = cond.And("TransferUserUid", userUUID)
  126. if len(status) > 0 {
  127. cond = cond.And("Status", status)
  128. }
  129. // 查询
  130. var records []ValidationToolTransfer
  131. _, err := qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond)).OrderBy("-Id").All(&records)
  132. if err != nil {
  133. logs.Error(lib.FuncName(), err)
  134. return
  135. }
  136. cnt, err = qs.SetCond((*orm2.Condition)(cond)).Count()
  137. if err != nil {
  138. logs.Error(lib.FuncName(), err)
  139. return
  140. }
  141. for _, m := range records {
  142. list = append(list, ValidationToolTransferTo_R(m))
  143. }
  144. return list, cnt
  145. }
  146. func (dao *ValidationToolTransferImpl) GetAcceptedRecordsByUser(userUUID, status string, page, page_z int) (list []ValidationToolTransfer_R, cnt int64) {
  147. qs := dao.orm.QueryTable(new(ValidationToolTransfer))
  148. var offset int64
  149. if page <= 1 {
  150. offset = 0
  151. } else {
  152. offset = int64((page - 1) * page_z)
  153. }
  154. // 过滤
  155. cond := orm.NewCondition()
  156. cond = cond.And("AcceptedUserUid", userUUID).AndNot("Status", TransferCanceled)
  157. if len(status) > 0 {
  158. cond = cond.And("Status", status)
  159. }
  160. // 查询
  161. var records []ValidationToolTransfer
  162. _, err := qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond)).OrderBy("-Id").All(&records)
  163. if err != nil {
  164. logs.Error(lib.FuncName(), err)
  165. return
  166. }
  167. cnt, err = qs.SetCond((*orm2.Condition)(cond)).Count()
  168. if err != nil {
  169. logs.Error(lib.FuncName(), err)
  170. return
  171. }
  172. for _, m := range records {
  173. list = append(list, ValidationToolTransferTo_R(m))
  174. }
  175. return list, cnt
  176. }
  177. // 根据设备SN获取未完成的转移记录
  178. func (dao *ValidationToolTransferImpl) GetPendingTransferById(TransferId int) (transfer ValidationToolTransfer, err error) {
  179. sql := "SELECT * FROM validation_tool_transfer WHERE id = ? AND status = 'pending' ORDER BY create_time DESC LIMIT 1"
  180. err = dao.orm.Raw(sql, TransferId).QueryRow(&transfer)
  181. return transfer, err
  182. }