work.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package backend
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "kpt-pasture/model"
  7. "net/http"
  8. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  9. "gitee.com/xuyiping_admin/pkg/xerr"
  10. "gorm.io/gorm"
  11. )
  12. func (s *StoreEntry) OrderList(ctx context.Context, req *pasturePb.SearchWorkOrderRequest, pagination *pasturePb.PaginationModel) (*pasturePb.SearchWorkOrderResponse, error) {
  13. workOrderList := make([]*model.WorkOrder, 0)
  14. var count int64 = 0
  15. pref := s.DB.Model(new(model.WorkOrder))
  16. if req.Name != "" {
  17. pref.Where("name like ?", fmt.Sprintf("%s%s%s", "%", req.Name, "%"))
  18. }
  19. if req.Frequency > 0 {
  20. pref.Where("frequency = ?", req.Frequency)
  21. }
  22. if req.Priority > 0 {
  23. pref.Where("priority = ?", req.Priority)
  24. }
  25. if req.IsShow > 0 {
  26. pref.Where("is_show = ?", req.IsShow)
  27. }
  28. if req.SubscribeUnit > 0 {
  29. pref.Where("subscribe_unit = ?", req.SubscribeUnit)
  30. }
  31. if req.CategoryId > 0 {
  32. pref.Where("category_id = ?", req.CategoryId)
  33. }
  34. if err := pref.Order("id desc").Count(&count).Limit(int(pagination.PageSize)).Offset(int(pagination.PageOffset)).
  35. Find(&workOrderList).Error; err != nil {
  36. return nil, xerr.WithStack(err)
  37. }
  38. priorityMap := s.WorkOrderPriorityMap()
  39. frequencyMap := s.WorkOrderFrequencyMap()
  40. subscribeUnitMap := s.WorkOrderSubUnitMap()
  41. weekMap := s.WeekMap()
  42. monthMap := s.MonthMap()
  43. return &pasturePb.SearchWorkOrderResponse{
  44. Code: http.StatusOK,
  45. Message: "ok",
  46. Data: &pasturePb.SearchWorkOrderData{
  47. List: model.WorkOrderSlice(workOrderList).ToPB(priorityMap, frequencyMap, subscribeUnitMap, weekMap, monthMap),
  48. Total: int32(count),
  49. PageSize: pagination.PageSize,
  50. Page: pagination.Page,
  51. },
  52. }, nil
  53. }
  54. func (s *StoreEntry) OrderCreateOrUpdate(ctx context.Context, req *pasturePb.WorkOrderList) error {
  55. currentUser, _ := s.GetCurrentSystemUser(ctx)
  56. workOrderCategoryMap := s.WorkOrderCategoryMap()
  57. systemUserList, _ := s.SystemUserList(ctx)
  58. deptList, _ := s.SystemDeptList(ctx)
  59. newWorkOrder := model.NewWorkOrder(req, currentUser, systemUserList, deptList, workOrderCategoryMap)
  60. if req.Id <= 0 {
  61. if err := s.DB.Create(newWorkOrder).Error; err != nil {
  62. return xerr.WithStack(err)
  63. }
  64. } else {
  65. if err := s.DB.Where("id = ?", req.Id).Updates(newWorkOrder).Error; err != nil {
  66. return xerr.WithStack(err)
  67. }
  68. }
  69. return nil
  70. }
  71. func (s *StoreEntry) OrderIsShow(ctx context.Context, id int64) error {
  72. workOrder := &model.WorkOrder{
  73. Id: id,
  74. }
  75. if err := s.DB.First(workOrder).Error; err != nil {
  76. if errors.Is(err, gorm.ErrRecordNotFound) {
  77. return xerr.Custom("该工单不存在")
  78. }
  79. return xerr.WithStack(err)
  80. }
  81. isShow := pasturePb.IsShow_No
  82. if workOrder.IsShow == pasturePb.IsShow_No {
  83. isShow = pasturePb.IsShow_Ok
  84. }
  85. if err := s.DB.Model(workOrder).Update("is_show", isShow).Error; err != nil {
  86. return xerr.WithStack(err)
  87. }
  88. return nil
  89. }