package backend import ( "context" "fmt" "kpt-pasture/model" "net/http" "gitee.com/xuyiping_admin/pkg/xerr" pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow" ) func (s *StoreEntry) OrderList(ctx context.Context, req *pasturePb.SearchWorkOrderRequest, pagination *pasturePb.PaginationModel) (*pasturePb.SearchWorkOrderResponse, error) { workOrderList := make([]*model.WorkOrder, 0) var count int64 = 0 pref := s.DB.Model(new(model.WorkOrder)) if req.Name != "" { pref.Where("name like ?", fmt.Sprintf("%s%s%s", "%", req.Name, "%")) } if req.Frequency > 0 { pref.Where("frequency = ?", req.Frequency) } if req.Priority > 0 { pref.Where("priority = ?", req.Priority) } if req.IsShow > 0 { pref.Where("is_show = ?", req.IsShow) } if req.SubscribeUnit > 0 { pref.Where("subscribe_unit = ?", req.SubscribeUnit) } if req.CategoryId > 0 { pref.Where("category_id = ?", req.CategoryId) } if err := pref.Order("id desc").Count(&count).Limit(int(pagination.PageSize)).Offset(int(pagination.PageOffset)). Find(&workOrderList).Error; err != nil { return nil, xerr.WithStack(err) } priorityMap := s.WorkOrderPriorityMap() frequencyMap := s.WorkOrderFrequencyMap() subscribeUnitMap := s.WorkOrderSubUnitMap() return &pasturePb.SearchWorkOrderResponse{ Code: http.StatusOK, Message: "ok", Data: &pasturePb.SearchWorkOrderData{ List: model.WorkOrderSlice(workOrderList).ToPB(priorityMap, frequencyMap, subscribeUnitMap), Total: int32(count), PageSize: pagination.PageSize, Page: pagination.Page, }, }, nil } func (s *StoreEntry) OrderCreateOrUpdate(ctx context.Context, req *pasturePb.WorkOrderList) error { currentUser, _ := s.GetCurrentSystemUser(ctx) workOrderCategoryMap := s.WorkOrderCategoryMap() systemUserList, _ := s.SystemUserList(ctx) deptList, _ := s.SystemDeptList(ctx) newWorkOrder := model.NewWorkOrder(req, currentUser, systemUserList, deptList, workOrderCategoryMap) if req.Id <= 0 { if err := s.DB.Create(newWorkOrder).Error; err != nil { return xerr.WithStack(err) } } else { if err := s.DB.Where("id = ?", req.Id).Updates(newWorkOrder).Error; err != nil { return xerr.WithStack(err) } } return nil }