outbound.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package model
  2. import (
  3. "fmt"
  4. "kpt-pasture/util"
  5. "time"
  6. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  7. )
  8. type Outbound struct {
  9. Id int32 `json:"id"`
  10. Number string `json:"number"`
  11. OutType pasturePb.OutType_Kind `json:"outType"`
  12. AuditStatus pasturePb.AuditStatus_Kind `json:"auditStatus"`
  13. ApplicantId int32 `json:"applicantId"`
  14. ApplicantName string `json:"applicantName"`
  15. ApplicantAt int64 `json:"applicantAt"`
  16. ApplicantRemarks string `json:"applicantRemarks"`
  17. ExamineId int32 `json:"examineId"`
  18. ExamineName string `json:"examineName"`
  19. ExamineAt int64 `json:"examineAt"`
  20. ExamineRemarks string `json:"examineRemarks"`
  21. CreatedAt int64 `json:"createdAt"`
  22. UpdatedAt int64 `json:"updatedAt"`
  23. }
  24. func (o *Outbound) TableName() string {
  25. return "outbound"
  26. }
  27. func NewOutbound(req *pasturePb.OutboundApplyItem, currentUser *SystemUser) *Outbound {
  28. return &Outbound{
  29. Number: fmt.Sprintf("%s%s", util.GenerateRandomNumberString(6), time.Now().Format(LayoutTime)),
  30. OutType: req.OutType,
  31. AuditStatus: pasturePb.AuditStatus_Pending,
  32. ApplicantId: int32(currentUser.Id),
  33. ApplicantName: currentUser.Name,
  34. ApplicantAt: time.Now().Unix(),
  35. ApplicantRemarks: req.ApplicantRemarks,
  36. }
  37. }
  38. type OutboundSlice []*Outbound
  39. func (o OutboundSlice) ToPB(outTypeMap map[pasturePb.OutType_Kind]string, auditStatusMap map[pasturePb.AuditStatus_Kind]string) []*pasturePb.OutboundApplyDetail {
  40. res := make([]*pasturePb.OutboundApplyDetail, len(o))
  41. for i, v := range o {
  42. applicantAtFormat, examineAtFormat, outTypeName, auditStatusName := "", "", "", ""
  43. if v.ApplicantAt > 0 {
  44. applicantAtFormat = time.Unix(v.ApplicantAt, 0).Format(LayoutTime)
  45. }
  46. if v.ExamineAt > 0 {
  47. examineAtFormat = time.Unix(v.ExamineAt, 0).Format(LayoutTime)
  48. }
  49. if outType, ok := outTypeMap[v.OutType]; ok {
  50. outTypeName = outType
  51. }
  52. if auditStatus, ok := auditStatusMap[v.AuditStatus]; ok {
  53. auditStatusName = auditStatus
  54. }
  55. res[i] = &pasturePb.OutboundApplyDetail{
  56. Id: v.Id,
  57. Number: v.Number,
  58. OutType: v.OutType,
  59. OutTypeName: outTypeName,
  60. AuditStatus: v.AuditStatus,
  61. AuditStatusName: auditStatusName,
  62. ApplicantName: v.ApplicantName,
  63. ApplicantRemarks: v.ApplicantRemarks,
  64. ExamineName: v.ExamineName,
  65. ExamineRemarks: v.ExamineRemarks,
  66. ApplicantAtFormat: applicantAtFormat,
  67. ExamineAtFormat: examineAtFormat,
  68. }
  69. }
  70. return res
  71. }