|
@@ -161,34 +161,26 @@ func (s *StoreEntry) PregnantCheckList(ctx context.Context, req *pasturePb.Searc
|
|
|
}
|
|
|
|
|
|
func (s *StoreEntry) PregnantCheckCreate(ctx context.Context, req *pasturePb.EventPregnantCheck) error {
|
|
|
- if len(req.CowId) <= 0 {
|
|
|
- return xerr.Custom("请选择相关牛只")
|
|
|
- }
|
|
|
- cowList, err := s.ParseCowIds(ctx, req.CowId)
|
|
|
+ eventCheckModel, err := s.PregnantCheckCreateCheck(ctx, req)
|
|
|
if err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
- systemUser, _ := s.GetSystemUserById(ctx, int64(req.OperationId))
|
|
|
|
|
|
- pregnantCheckDay := time.Unix(int64(req.PregnantCheckAt), 0).Format(model.LayoutTime)
|
|
|
// 更新怀孕牛只
|
|
|
updatePregnantCowIds := make([]int64, 0)
|
|
|
// 更新流产牛只
|
|
|
updateAbortCowIds := make([]int64, 0)
|
|
|
// 更新空怀牛只
|
|
|
updateEmptyCowIds := make([]int64, 0)
|
|
|
- cowIds := make([]int64, 0)
|
|
|
- for _, cow := range cowList {
|
|
|
- // 过滤掉没有配种状态的牛只
|
|
|
- if cow.BreedStatus != pasturePb.BreedStatus_Breeding {
|
|
|
- continue
|
|
|
- }
|
|
|
|
|
|
+ cowIds := make([]int64, 0)
|
|
|
+ for _, cow := range eventCheckModel.CowList {
|
|
|
itemEventPregnantCheck := &model.EventPregnantCheck{}
|
|
|
if err = s.DB.Model(new(model.EventPregnantCheck)).
|
|
|
Where("lact = ?", cow.Lact).
|
|
|
Where("cow_id = ?", cow.Id).
|
|
|
- Order("id desc").First(itemEventPregnantCheck).Error; err != nil {
|
|
|
+ Order("id desc").
|
|
|
+ First(itemEventPregnantCheck).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
|
|
@@ -212,11 +204,13 @@ func (s *StoreEntry) PregnantCheckCreate(ctx context.Context, req *pasturePb.Eve
|
|
|
if err = tx.Model(new(model.EventPregnantCheck)).
|
|
|
Where("id IN ?", cowIds).
|
|
|
Updates(map[string]interface{}{
|
|
|
- "reality_day": pregnantCheckDay,
|
|
|
+ "reality_day": req.PregnantCheckAt,
|
|
|
"pregnant_check_result": req.PregnantCheckResult,
|
|
|
"pregnant_check_method": req.PregnantCheckMethod,
|
|
|
- "operation_id": systemUser.Id,
|
|
|
- "operation_name": systemUser.Name,
|
|
|
+ "operation_id": eventCheckModel.OperationUser.Id,
|
|
|
+ "operation_name": eventCheckModel.OperationUser.Name,
|
|
|
+ "message_id": eventCheckModel.CurrentUser.Id,
|
|
|
+ "message_name": eventCheckModel.CurrentUser.Name,
|
|
|
"remarks": req.Remarks,
|
|
|
"is_pregnant": req.PregnantCheckResult,
|
|
|
}).Error; err != nil {
|
|
@@ -224,10 +218,11 @@ func (s *StoreEntry) PregnantCheckCreate(ctx context.Context, req *pasturePb.Eve
|
|
|
}
|
|
|
// 更新牛只信息和配种事件表怀孕状态
|
|
|
if len(updatePregnantCowIds) > 0 {
|
|
|
- if err = tx.Model(&model.Cow{}).Where("cow_id IN ?", updatePregnantCowIds).
|
|
|
+ if err = tx.Model(&model.Cow{}).
|
|
|
+ Where("cow_id IN ?", updatePregnantCowIds).
|
|
|
Updates(map[string]interface{}{
|
|
|
"breed_status": pasturePb.BreedStatus_Pregnant,
|
|
|
- "last_pregnant_check_at": pregnantCheckDay,
|
|
|
+ "last_pregnant_check_at": req.PregnantCheckAt,
|
|
|
"is_pregnant": pasturePb.IsShow_Ok,
|
|
|
}).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
@@ -247,7 +242,7 @@ func (s *StoreEntry) PregnantCheckCreate(ctx context.Context, req *pasturePb.Eve
|
|
|
if err = tx.Model(&model.Cow{}).Where("cow_id IN ?", updateAbortCowIds).
|
|
|
Updates(map[string]interface{}{
|
|
|
"breed_status": pasturePb.BreedStatus_Abort,
|
|
|
- "last_pregnant_check_at": pregnantCheckDay,
|
|
|
+ "last_pregnant_check_at": req.PregnantCheckAt,
|
|
|
"is_pregnant": pasturePb.IsShow_Ok,
|
|
|
}).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
@@ -267,7 +262,7 @@ func (s *StoreEntry) PregnantCheckCreate(ctx context.Context, req *pasturePb.Eve
|
|
|
if err = tx.Model(&model.Cow{}).Where("cow_id IN ?", updateEmptyCowIds).
|
|
|
Updates(map[string]interface{}{
|
|
|
"breed_status": pasturePb.BreedStatus_Empty,
|
|
|
- "last_pregnant_check_at": pregnantCheckDay,
|
|
|
+ "last_pregnant_check_at": req.PregnantCheckAt,
|
|
|
"is_pregnant": pasturePb.IsShow_Ok,
|
|
|
}).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|