work.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package backend
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "kpt-pasture/model"
  7. "net/http"
  8. "gorm.io/gorm"
  9. "gitee.com/xuyiping_admin/pkg/xerr"
  10. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  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. return &pasturePb.SearchWorkOrderResponse{
  42. Code: http.StatusOK,
  43. Message: "ok",
  44. Data: &pasturePb.SearchWorkOrderData{
  45. List: model.WorkOrderSlice(workOrderList).ToPB(priorityMap, frequencyMap, subscribeUnitMap),
  46. Total: int32(count),
  47. PageSize: pagination.PageSize,
  48. Page: pagination.Page,
  49. },
  50. }, nil
  51. }
  52. func (s *StoreEntry) OrderCreateOrUpdate(ctx context.Context, req *pasturePb.WorkOrderList) error {
  53. currentUser, _ := s.GetCurrentSystemUser(ctx)
  54. workOrderCategoryMap := s.WorkOrderCategoryMap()
  55. systemUserList, _ := s.SystemUserList(ctx)
  56. deptList, _ := s.SystemDeptList(ctx)
  57. newWorkOrder := model.NewWorkOrder(req, currentUser, systemUserList, deptList, workOrderCategoryMap)
  58. if req.Id <= 0 {
  59. if err := s.DB.Create(newWorkOrder).Error; err != nil {
  60. return xerr.WithStack(err)
  61. }
  62. } else {
  63. if err := s.DB.Where("id = ?", req.Id).Updates(newWorkOrder).Error; err != nil {
  64. return xerr.WithStack(err)
  65. }
  66. }
  67. return nil
  68. }
  69. func (s *StoreEntry) OrderIsShow(ctx context.Context, id int64) error {
  70. workOrder := &model.WorkOrder{
  71. Id: id,
  72. }
  73. if err := s.DB.First(workOrder).Error; err != nil {
  74. if errors.Is(err, gorm.ErrRecordNotFound) {
  75. return xerr.Custom("该工单不存在")
  76. }
  77. return xerr.WithStack(err)
  78. }
  79. isShow := pasturePb.IsShow_No
  80. if workOrder.IsShow == pasturePb.IsShow_No {
  81. isShow = pasturePb.IsShow_Ok
  82. }
  83. if err := s.DB.Model(workOrder).Update("is_show", isShow).Error; err != nil {
  84. return xerr.WithStack(err)
  85. }
  86. return nil
  87. }