浏览代码

pregnant: 孕检列表数据

Yi 7 月之前
父节点
当前提交
da08038f19

+ 1 - 1
go.mod

@@ -3,7 +3,7 @@ module kpt-pasture
 go 1.17
 
 require (
-	gitee.com/xuyiping_admin/go_proto v0.0.0-20240920080429-e344d4c3c3b7
+	gitee.com/xuyiping_admin/go_proto v0.0.0-20240920091834-f963e67fe250
 	gitee.com/xuyiping_admin/pkg v0.0.0-20231218082641-aac597b8a015
 	github.com/dgrijalva/jwt-go v3.2.0+incompatible
 	github.com/eko/gocache v1.1.0

+ 2 - 0
go.sum

@@ -104,6 +104,8 @@ gitee.com/xuyiping_admin/go_proto v0.0.0-20240920075539-863a9a1eecfe h1:wccYtNFa
 gitee.com/xuyiping_admin/go_proto v0.0.0-20240920075539-863a9a1eecfe/go.mod h1:BKrFW6YLDectlQcQk3FYKBeXvjEiodAKJ5rq7O/QiPE=
 gitee.com/xuyiping_admin/go_proto v0.0.0-20240920080429-e344d4c3c3b7 h1:1U6uvVC4H14uqTc6NgtcPsDVH9XjmmMri3f4QcfFhJo=
 gitee.com/xuyiping_admin/go_proto v0.0.0-20240920080429-e344d4c3c3b7/go.mod h1:BKrFW6YLDectlQcQk3FYKBeXvjEiodAKJ5rq7O/QiPE=
+gitee.com/xuyiping_admin/go_proto v0.0.0-20240920091834-f963e67fe250 h1:w53i9vZcAYM41E1EYwBIXJ0eGUl5lHb7EC7d7lh1zDM=
+gitee.com/xuyiping_admin/go_proto v0.0.0-20240920091834-f963e67fe250/go.mod h1:BKrFW6YLDectlQcQk3FYKBeXvjEiodAKJ5rq7O/QiPE=
 gitee.com/xuyiping_admin/pkg v0.0.0-20231218082641-aac597b8a015 h1:dfb5dRd57L2HKjdwLT93UFmPYFPOmEl56gtZmqcNnaE=
 gitee.com/xuyiping_admin/pkg v0.0.0-20231218082641-aac597b8a015/go.mod h1:Fk4GYI/v0IK3XFrm1Gn+VkgCz5Y7mfswD5hsTJYOG6A=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=

+ 29 - 0
http/handler/work/calendar.go

@@ -62,3 +62,32 @@ func CalendarTableDetail(c *gin.Context) {
 	}
 	c.JSON(http.StatusOK, res)
 }
+
+func UserList(c *gin.Context) {
+	var req pasturePb.CalendarTableRequest
+	if err := ginutil.BindProto(c, &req); err != nil {
+		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
+		return
+	}
+
+	if err := valid.ValidateStruct(&req,
+		valid.Field(&req.CalendarType, valid.Required),
+		valid.Field(&req.Start, valid.Required),
+	); err != nil {
+		apierr.AbortBadRequest(c, http.StatusBadRequest, err)
+		return
+	}
+
+	pagination := &pasturePb.PaginationModel{
+		Page:       int32(c.GetInt(middleware.Page)),
+		PageSize:   int32(c.GetInt(middleware.PageSize)),
+		PageOffset: int32(c.GetInt(middleware.PageOffset)),
+	}
+
+	res, err := middleware.Dependency(c).StoreEventHub.OpsService.CalendarTableDetail(c, &req, pagination)
+	if err != nil {
+		apierr.ClassifiedAbort(c, err)
+		return
+	}
+	c.JSON(http.StatusOK, res)
+}

+ 1 - 0
http/route/work_order.go

@@ -20,6 +20,7 @@ func WorkOrderAPI(opts ...func(engine *gin.Engine)) func(s *gin.Engine) {
 
 		workRoute.POST("/calendar/list", work.CalendarList)
 		workRoute.POST("/calendar/detail", work.CalendarTableDetail)
+		workRoute.POST("/calendar/user/list", work.UserList)
 
 	}
 }

+ 39 - 0
model/event_pregnant_check.go

@@ -18,6 +18,7 @@ type EventPregnantCheck struct {
 	PregnantCheckName   string                             `json:"pregnantCheckName"`
 	PregnantCheckResult pasturePb.PregnantCheckResult_Kind `json:"pregnantCheckResult"`
 	PregnantCheckMethod pasturePb.PregnantCheckMethod_Kind `json:"pregnantCheckMethod"`
+	Status              pasturePb.IsShow_Kind              `json:"status"`
 	OperationId         int64                              `json:"operationId"`
 	OperationName       string                             `json:"operationName"`
 	Remarks             string                             `json:"remarks"`
@@ -37,6 +38,7 @@ func NewEventPregnantCheck(cow *Cow, pregnantCheckAt int64, pregnantCheckName st
 		PlanDay:           time.Unix(pregnantCheckAt, 0).Format(LayoutTime),
 		EndDay:            time.Unix(pregnantCheckAt, 0).Format(LayoutTime),
 		PregnantCheckName: pregnantCheckName,
+		Status:            pasturePb.IsShow_No,
 	}
 }
 
@@ -79,3 +81,40 @@ func (e EventPregnantCheckSlice) ToPB(
 	}
 	return result
 }
+
+type PregnantCheckHeader struct {
+	Id        string `json:"id"`
+	CowId     string `json:"cowId"`
+	CowType   string `json:"cowType"`
+	DayAge    string `json:"dayAge"`
+	Lact      string `json:"lact"`
+	PlanDay   string `json:"planDay"`
+	PenName   string `json:"penName"`
+	CheckName string `json:"checkName"`
+}
+
+type PregnantCheckBody struct {
+	Id        int64                  `json:"id"`
+	CowId     int64                  `json:"cowId"`
+	CowType   pasturePb.CowType_Kind `json:"cowType"`
+	DayAge    int64                  `json:"dayAge"`
+	Lact      int32                  `json:"lact"`
+	PlanDay   string                 `json:"planDay"`
+	PenName   string                 `json:"penName"`
+	CheckName string                 `json:"checkName"`
+}
+
+func (e EventPregnantCheckSlice) ToPB2() []*PregnantCheckBody {
+	res := make([]*PregnantCheckBody, len(e))
+	for i, v := range e {
+		res[i] = &PregnantCheckBody{
+			Id:        v.Id,
+			CowId:     v.CowId,
+			DayAge:    int64(v.DayAge),
+			Lact:      int32(v.Lact),
+			PlanDay:   v.PlanDay,
+			CheckName: PregnantCheckNameMap[v.PregnantCheckName],
+		}
+	}
+	return res
+}

+ 5 - 0
model/system_basic.go

@@ -14,6 +14,11 @@ const (
 	ValueTypeRange = 2 // 范围值
 )
 
+var PregnantCheckNameMap = map[string]string{
+	PregnantCheckForFirst:  "初检",
+	PregnantCheckForSecond: "复检",
+}
+
 type SystemBasic struct {
 	Id           int32                 `json:"id"`
 	Name         string                `json:"name"`

+ 32 - 1
module/backend/calendar.go

@@ -170,7 +170,38 @@ func (s *StoreEntry) SameTimeCowList(ctx context.Context, dateTime string, pagin
 }
 
 func (s *StoreEntry) PregnancyCheckCowList(ctx context.Context, dateTime string, pagination *pasturePb.PaginationModel) (*model.CalendarResponse, error) {
-	return nil, nil
+	newCowPregnancyCheckList := make([]*model.EventPregnantCheck, 0)
+	var count int64
+	if err := s.DB.Model(&model.EventPregnantCheck{}).
+		Where("plan_day <= ?", dateTime).
+		Where("status = ?", pasturePb.IsShow_No).
+		Order("id desc").Count(&count).
+		Limit(int(pagination.PageSize)).
+		Offset(int(pagination.PageOffset)).
+		Find(&newCowPregnancyCheckList).Error; err != nil {
+		return nil, xerr.WithStack(err)
+	}
+
+	return &model.CalendarResponse{
+		Code:    http.StatusOK,
+		Message: "ok",
+		Data: &model.CalendarData{
+			Total:    int32(count),
+			Page:     pagination.Page,
+			PageSize: pagination.PageSize,
+			Header: model.PregnantCheckHeader{
+				Id:        "编号",
+				CowId:     "牛号",
+				CowType:   "牛只类型",
+				PenName:   "栏舍",
+				Lact:      "胎次",
+				DayAge:    "日龄",
+				PlanDay:   "孕检日期",
+				CheckName: "孕检名称",
+			},
+			List: model.EventPregnantCheckSlice(newCowPregnancyCheckList).ToPB2(),
+		},
+	}, nil
 }
 
 func (s *StoreEntry) WorkOrderCowList(ctx context.Context, dateTime string, pagination *pasturePb.PaginationModel) (*model.CalendarResponse, error) {

+ 2 - 2
module/backend/config_data.go

@@ -551,8 +551,8 @@ func (s *StoreEntry) ExposeEstrusTypeEnumList() []*pasturePb.ConfigOptionsList {
 			Label:    "脚环揭发",
 			Disabled: true,
 		}, &pasturePb.ConfigOptionsList{
-			Value:    int32(pasturePb.ExposeEstrusType_Manual_Observation),
-			Label:    "人工揭发",
+			Value:    int32(pasturePb.ExposeEstrusType_Natural_Estrus),
+			Label:    "自然发情",
 			Disabled: true,
 		})
 	return configOptions

+ 1 - 1
module/backend/event_breed.go

@@ -20,7 +20,7 @@ func (s *StoreEntry) CalvingList(ctx context.Context, req *pasturePb.SearchEvent
 	pref := s.DB.Table(fmt.Sprintf("%s as a", new(model.EventCalving).TableName())).
 		Select(`a.*,b.name as pen_name,c.name as staff_member_name`).
 		Joins(fmt.Sprintf("JOIN %s AS b on a.pen_id = b.id", new(model.Pen).TableName())).
-		Joins(fmt.Sprintf("JOIN %s AS c on a.staff_member_id = c.id", new(model.SystemUser).TableName()))
+		Joins(fmt.Sprintf("JOIN %s AS c on a.operation_id = c.id", new(model.SystemUser).TableName()))
 	if len(req.CowId) > 0 {
 		cowIds := strings.Split(req.CowId, ",")
 		pref.Where("a.cow_id IN ?", cowIds)