goods.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package backend
  2. import (
  3. "context"
  4. "fmt"
  5. "kpt-pasture/model"
  6. "net/http"
  7. "gitee.com/xuyiping_admin/pkg/xerr"
  8. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  9. )
  10. func (s *StoreEntry) DrugsList(ctx context.Context, req *pasturePb.SearchDrugsRequest, pagination *pasturePb.PaginationModel) (*pasturePb.SearchDrugsResponse, error) {
  11. drugsList := make([]*model.Drugs, 0)
  12. var count int64 = 0
  13. pref := s.DB.Model(new(model.Drugs))
  14. if req.Name != "" {
  15. pref.Where("name like ?", fmt.Sprintf("%s%s%s", "%", req.Name, "%"))
  16. }
  17. if req.Usage > 0 {
  18. pref.Where("usage_method = ?", req.Usage)
  19. }
  20. if req.CategoryId > 0 {
  21. pref.Where("category_id = ?", req.CategoryId)
  22. }
  23. if err := pref.Order("id desc").Count(&count).Limit(int(pagination.PageSize)).Offset(int(pagination.PageOffset)).
  24. Find(&drugsList).Error; err != nil {
  25. return nil, xerr.WithStack(err)
  26. }
  27. drugsCategoryMap := s.DrugCategoryMaps()
  28. unitMap := s.UnitMap()
  29. drugUsageMap := s.DrugUsageMaps()
  30. return &pasturePb.SearchDrugsResponse{
  31. Code: http.StatusOK,
  32. Message: "ok",
  33. Data: &pasturePb.SearchDrugsData{
  34. List: model.DrugsSlice(drugsList).ToPB(drugsCategoryMap, unitMap, drugUsageMap),
  35. Total: int32(count),
  36. PageSize: pagination.PageSize,
  37. Page: pagination.Page,
  38. },
  39. }, nil
  40. }
  41. func (s *StoreEntry) DrugsCreateOrUpdate(ctx context.Context, req *pasturePb.SearchDrugsList) error {
  42. currentUser, _ := s.GetCurrentSystemUser(ctx)
  43. newDrugs := model.NewDrugs(req, currentUser)
  44. if req.Id <= 0 {
  45. if err := s.DB.Create(newDrugs).Error; err != nil {
  46. return xerr.WithStack(err)
  47. }
  48. } else {
  49. if err := s.DB.Where("id = ?", req.Id).Updates(newDrugs).Error; err != nil {
  50. return xerr.WithStack(err)
  51. }
  52. }
  53. return nil
  54. }
  55. func (s *StoreEntry) MedicalEquipmentList(ctx context.Context, req *pasturePb.SearchMedicalEquipmentRequest, pagination *pasturePb.PaginationModel) (*pasturePb.SearchMedicalEquipmentResponse, error) {
  56. medicalEquipmentList := make([]*model.MedicalEquipment, 0)
  57. var count int64 = 0
  58. pref := s.DB.Model(new(model.MedicalEquipment))
  59. if req.Name != "" {
  60. pref.Where("name like ?", fmt.Sprintf("%s%s%s", "%", req.Name, "%"))
  61. }
  62. if err := pref.Order("id desc").Count(&count).Limit(int(pagination.PageSize)).Offset(int(pagination.PageOffset)).
  63. Find(&medicalEquipmentList).Error; err != nil {
  64. return nil, xerr.WithStack(err)
  65. }
  66. unitMap := s.UnitMap()
  67. return &pasturePb.SearchMedicalEquipmentResponse{
  68. Code: http.StatusOK,
  69. Message: "ok",
  70. Data: &pasturePb.SearchMedicalEquipmentData{
  71. List: model.MedicalEquipmentSlice(medicalEquipmentList).ToPB(unitMap),
  72. Total: int32(count),
  73. PageSize: pagination.PageSize,
  74. Page: pagination.Page,
  75. },
  76. }, nil
  77. }
  78. func (s *StoreEntry) MedicalEquipmentCreateOrUpdate(ctx context.Context, req *pasturePb.SearchMedicalEquipmentList) error {
  79. currentUser, _ := s.GetCurrentSystemUser(ctx)
  80. newDrugs := model.NewMedicalEquipment(req, currentUser)
  81. if req.Id <= 0 {
  82. if err := s.DB.Create(newDrugs).Error; err != nil {
  83. return xerr.WithStack(err)
  84. }
  85. } else {
  86. if err := s.DB.Where("id = ?", req.Id).Updates(newDrugs).Error; err != nil {
  87. return xerr.WithStack(err)
  88. }
  89. }
  90. return nil
  91. }