|
@@ -93,7 +93,19 @@ func (s *StoreEntry) OrderCreateOrUpdate(ctx context.Context, req *pasturePb.Wor
|
|
|
}
|
|
|
} else {
|
|
|
if err := s.DB.Transaction(func(tx *gorm.DB) error {
|
|
|
- if err := tx.Model(newWorkOrderMaster).Where("id = ?", req.Id).Updates(newWorkOrderMaster).Error; err != nil {
|
|
|
+ if err := tx.Model(newWorkOrderMaster).Where("id = ?", req.Id).Updates(map[string]interface{}{
|
|
|
+ "name": newWorkOrderMaster.Name,
|
|
|
+ "frequency": newWorkOrderMaster.Frequency,
|
|
|
+ "priority": newWorkOrderMaster.Priority,
|
|
|
+ "subscribe_unit": newWorkOrderMaster.SubscribeUnit,
|
|
|
+ "category_id": newWorkOrderMaster.CategoryId,
|
|
|
+ "exec_time": newWorkOrderMaster.ExecTime,
|
|
|
+ "exec_persons": newWorkOrderMaster.ExecPersons,
|
|
|
+ "exec_person_names": newWorkOrderMaster.ExecPersonNames,
|
|
|
+ "week_month_value": newWorkOrderMaster.WeekMonthValue,
|
|
|
+ "remark": newWorkOrderMaster.Remarks,
|
|
|
+ "photos": newWorkOrderMaster.Photos,
|
|
|
+ }).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
|
|
@@ -119,17 +131,14 @@ func (s *StoreEntry) OrderIsShow(ctx context.Context, id int64) error {
|
|
|
}
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
-
|
|
|
isShow := pasturePb.IsShow_No
|
|
|
if workOrderMaster.IsShow == pasturePb.IsShow_No {
|
|
|
isShow = pasturePb.IsShow_Ok
|
|
|
}
|
|
|
-
|
|
|
if err := s.DB.Transaction(func(tx *gorm.DB) error {
|
|
|
if err := tx.Model(workOrderMaster).Where("id = ?", id).Update("is_show", isShow).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
-
|
|
|
workOrderMaster.IsShow = isShow
|
|
|
if err := s.WorkOrderSubUpdate(tx, workOrderMaster); err != nil {
|
|
|
return xerr.WithStack(err)
|
|
@@ -146,6 +155,10 @@ func (s *StoreEntry) OrderIsShow(ctx context.Context, id int64) error {
|
|
|
func (s *StoreEntry) WorkOrderSubUpdate(tx *gorm.DB, workOrderMaster *model.WorkOrderMaster) error {
|
|
|
if workOrderMaster.IsShow == pasturePb.IsShow_Ok {
|
|
|
newWorkOrderSubList := model.NewWorkOrderSub(workOrderMaster)
|
|
|
+ if len(newWorkOrderSubList) <= 0 {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+
|
|
|
if err := tx.Create(&newWorkOrderSubList).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
@@ -166,15 +179,16 @@ func (s *StoreEntry) WorkOrderSubUpdate(tx *gorm.DB, workOrderMaster *model.Work
|
|
|
if count <= 0 {
|
|
|
return nil
|
|
|
}
|
|
|
-
|
|
|
if err := tx.Model(new(model.WorkOrderSub)).
|
|
|
Where("work_order_master_id = ?", workOrderMaster.Id).
|
|
|
Where("is_show = ?", pasturePb.IsShow_Ok).
|
|
|
Where("exec_time > ?", zeroTime).
|
|
|
Where("status = ?", pasturePb.WorkOrderStatus_Distribute).
|
|
|
Update("status", pasturePb.WorkOrderStatus_Canceled).Error; err != nil {
|
|
|
+ fmt.Println("=====007==========", err)
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
+ fmt.Println("=====008==========")
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
@@ -223,8 +237,51 @@ func (s *StoreEntry) SendAsynqWorkOrder(ctx context.Context, workOrder *model.Wo
|
|
|
}
|
|
|
|
|
|
// UserWorkOrderList 用户工单列表
|
|
|
-func (s *StoreEntry) UserWorkOrderList(ctx context.Context, userId int64) error {
|
|
|
+func (s *StoreEntry) UserWorkOrderList(ctx context.Context, workOrderStatus pasturePb.WorkOrderStatus_Kind, pagination *pasturePb.PaginationModel) (*pasturePb.UserWorkOrderResponse, error) {
|
|
|
+ currUser, err := s.GetCurrentSystemUser(ctx)
|
|
|
+ if err != nil {
|
|
|
+ return nil, xerr.WithStack(err)
|
|
|
+ }
|
|
|
|
|
|
- // todo: 待完善
|
|
|
- return nil
|
|
|
+ var count int64 = 0
|
|
|
+ userWorkOrderList := make([]*model.WorkOrderSub, 0)
|
|
|
+ // SELECT * FROM `work_order_sub` WHERE is_show = 1 AND status = 2 And (exec_user_id = 2 OR FIND_IN_SET(2, set_user_ids) > 0) ORDER BY id desc LIMIT 20
|
|
|
+ pref := s.DB.Model(userWorkOrderList).
|
|
|
+ Where("is_show = ?", pasturePb.IsShow_Ok)
|
|
|
+
|
|
|
+ if workOrderStatus != pasturePb.WorkOrderStatus_Invalid {
|
|
|
+ pref.Where("status = ?", workOrderStatus)
|
|
|
+ }
|
|
|
+
|
|
|
+ if err := pref.Where(s.DB.Where("exec_user_id = ?", currUser.Id).Or("FIND_IN_SET(?, set_user_ids) > 0", currUser.Id)).
|
|
|
+ Order("id desc").
|
|
|
+ Count(&count).
|
|
|
+ Limit(int(pagination.PageSize)).
|
|
|
+ Offset(int(pagination.PageOffset)).
|
|
|
+ Find(&userWorkOrderList).Error; err != nil {
|
|
|
+ return nil, xerr.WithStack(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ mMap := make(map[int64]*model.WorkOrderMaster)
|
|
|
+ workOderMasterList := make([]*model.WorkOrderMaster, 0)
|
|
|
+ if err := s.DB.Model(&model.WorkOrderMaster{}).Find(&workOderMasterList).Error; err != nil {
|
|
|
+ return nil, xerr.WithStack(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, workOrderMaster := range workOderMasterList {
|
|
|
+ mMap[workOrderMaster.Id] = workOrderMaster
|
|
|
+ }
|
|
|
+
|
|
|
+ priorityMap := s.WorkOrderPriorityMap()
|
|
|
+
|
|
|
+ return &pasturePb.UserWorkOrderResponse{
|
|
|
+ Code: http.StatusOK,
|
|
|
+ Message: "ok",
|
|
|
+ Data: &pasturePb.UserWorkOrderData{
|
|
|
+ List: model.WorkOrderSubSlice(userWorkOrderList).ToPB(mMap, priorityMap),
|
|
|
+ Total: 0,
|
|
|
+ PageSize: pagination.PageSize,
|
|
|
+ Page: pagination.Page,
|
|
|
+ },
|
|
|
+ }, nil
|
|
|
}
|