drugs.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package model
  2. import pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  3. type Drugs struct {
  4. Id int64 `json:"id"`
  5. Name string `json:"name"`
  6. CategoryId pasturePb.DrugCategory_Kind `json:"category_id"`
  7. Producer string `json:"producer"`
  8. BatchNumber string `json:"batch_number"`
  9. ProductionAt int64 `json:"production_at"`
  10. ExpirationAt int64 `json:"expiration_at"`
  11. Unit pasturePb.Unit_Kind `json:"unit"`
  12. Specs string `json:"specs"`
  13. Inventory int32 `json:"inventory"`
  14. UsageMethod pasturePb.DrugUsage_Kind `json:"usage_method"`
  15. Price int32 `json:"price"`
  16. Remarks string `json:"remarks"`
  17. OperationId int32 `json:"operation_id"`
  18. CreatedAt int64 `json:"created_at"`
  19. UpdatedAt int64 `json:"updated_at"`
  20. }
  21. func (d *Drugs) TableName() string {
  22. return "drugs"
  23. }
  24. func NewDrugs(req *pasturePb.SearchDrugsList, currentUser *SystemUser) *Drugs {
  25. return &Drugs{
  26. Name: req.Name,
  27. CategoryId: req.CategoryId,
  28. Producer: req.Producer,
  29. BatchNumber: req.BatchNumber,
  30. ProductionAt: int64(req.ProductionAt),
  31. ExpirationAt: int64(req.ExpirationAt),
  32. Unit: req.Unit,
  33. Specs: req.Specs,
  34. Inventory: req.Inventory,
  35. UsageMethod: req.Usage,
  36. Price: int32(req.Price * 100),
  37. Remarks: req.Remarks,
  38. OperationId: int32(currentUser.Id),
  39. }
  40. }
  41. type DrugsSlice []*Drugs
  42. func (d DrugsSlice) ToPB(systemUserList []*SystemUser, drugsCategoryMap map[pasturePb.DrugCategory_Kind]string,
  43. unitMap map[pasturePb.Unit_Kind]string, drugUsageMap map[pasturePb.DrugUsage_Kind]string) []*pasturePb.SearchDrugsList {
  44. res := make([]*pasturePb.SearchDrugsList, len(d))
  45. for i, v := range d {
  46. operationName := ""
  47. for _, u := range systemUserList {
  48. if int64(v.OperationId) != u.Id {
  49. continue
  50. }
  51. operationName = u.Name
  52. }
  53. res[i] = &pasturePb.SearchDrugsList{
  54. Id: int32(v.Id),
  55. Name: v.Name,
  56. CategoryId: v.CategoryId,
  57. CategoryName: drugsCategoryMap[v.CategoryId],
  58. Producer: v.Producer,
  59. BatchNumber: v.BatchNumber,
  60. ProductionAt: int32(v.ProductionAt),
  61. ExpirationAt: int32(v.ExpirationAt),
  62. Unit: v.Unit,
  63. UnitName: unitMap[v.Unit],
  64. Specs: v.Specs,
  65. Inventory: v.Inventory,
  66. Usage: v.UsageMethod,
  67. UsageName: drugUsageMap[v.UsageMethod],
  68. Price: float32(v.Price) / 100,
  69. Remarks: v.Remarks,
  70. OperationId: v.OperationId,
  71. OperationName: operationName,
  72. CreatedAt: int32(v.CreatedAt),
  73. UpdatedAt: int32(v.UpdatedAt),
  74. }
  75. }
  76. return res
  77. }