Browse Source

feedTemplateï: 配方模板同步

Yi 1 year ago
parent
commit
58440968ec

+ 1 - 2
go.mod

@@ -3,7 +3,7 @@ module tmr-watch
 go 1.17
 
 require (
-	gitee.com/xuyiping_admin/go_proto v0.0.0-20230802054950-77dee3d12065
+	gitee.com/xuyiping_admin/go_proto v0.0.0-20230814081651-e5b0cb4c72c8
 	gitee.com/xuyiping_admin/pkg v0.0.0-20230802061948-5b07cd8c16e6
 	github.com/360EntSecGroup-Skylar/excelize v1.4.1
 	github.com/Anderson-Lu/gofasion v0.0.0-20190530065914-6a05b679ee48
@@ -39,7 +39,6 @@ require (
 )
 
 require (
-	gitee.com/xuyiping_admin/go_proto v0.0.0-20230811090104-41d5081a918d // indirect
 	github.com/Chronokeeper/anyxml v0.0.0-20160530174208-54457d8e98c6 // indirect
 	github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 // indirect
 	github.com/CloudyKit/jet v2.1.2+incompatible // indirect

+ 2 - 2
go.sum

@@ -3,8 +3,8 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
 cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw=
 gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
 gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
-gitee.com/xuyiping_admin/go_proto v0.0.0-20230811090104-41d5081a918d h1:jNBG7Y91dojnjVGK+vT010fJ3JwtqddKXQI30807bT8=
-gitee.com/xuyiping_admin/go_proto v0.0.0-20230811090104-41d5081a918d/go.mod h1:x47UOU+lOkZnrtAENAsOGd7mZ5I8D2JRkMKMqLLRlVw=
+gitee.com/xuyiping_admin/go_proto v0.0.0-20230814081651-e5b0cb4c72c8 h1:p6Y97HJ0VYAU+hOWBeOFM7k8UUMi+PmPAkmkVoyg+Uk=
+gitee.com/xuyiping_admin/go_proto v0.0.0-20230814081651-e5b0cb4c72c8/go.mod h1:x47UOU+lOkZnrtAENAsOGd7mZ5I8D2JRkMKMqLLRlVw=
 gitee.com/xuyiping_admin/pkg v0.0.0-20230802061948-5b07cd8c16e6 h1:K4RrKDO1SG1NOCoqNO0jnlGKmY7AfOmuqzDIw94KCTk=
 gitee.com/xuyiping_admin/pkg v0.0.0-20230802061948-5b07cd8c16e6/go.mod h1:h3kdB9CyxmW6duxLLA6fJezVCHa0g5+erAQ60iv+S58=
 github.com/360EntSecGroup-Skylar/excelize v1.4.1 h1:l55mJb6rkkaUzOpSsgEeKYtS6/0gHwBYyfo5Jcjv/Ks=

+ 32 - 4
http/handle/api/new_api.go

@@ -3,8 +3,11 @@ package api
 import (
 	"net/http"
 	"strconv"
+	"tmr-watch/middleware"
 	"tmr-watch/service/group"
 
+	operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
+
 	feedPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/pasture"
 	"gitee.com/xuyiping_admin/pkg/apierr"
 	"gitee.com/xuyiping_admin/pkg/ginutil"
@@ -25,7 +28,12 @@ func SearchFeetTemplateList(c *gin.Context) {
 		return
 	}
 
-	// SearchFeedTemplateList
+	req.Pagination = &feedPb.PaginationModel{
+		Page:       int32(c.GetInt(middleware.Page)),
+		PageSize:   int32(c.GetInt(middleware.PageSize)),
+		PageOffset: int32(c.GetInt(middleware.PageOffset)),
+	}
+
 	list, err := group.SearchFeedTemplateList(c, &req)
 	if err != nil {
 		apierr.ClassifiedAbort(c, err)
@@ -34,7 +42,7 @@ func SearchFeetTemplateList(c *gin.Context) {
 	ginutil.JSONResp(c, list)
 }
 
-// GetFeetTemplateVersion 获取配方最新详情
+// GetFeetTemplateVersion 获取配方最新版本详情
 func GetFeetTemplateVersion(c *gin.Context) {
 	feetTemplateIdStr := c.Param("feet_template_id")
 	feetTemplateId, _ := strconv.Atoi(feetTemplateIdStr)
@@ -44,11 +52,31 @@ func GetFeetTemplateVersion(c *gin.Context) {
 		return
 	}
 
-	// SearchFeedTemplateList
-	list, err := group.GetFeetTemplateVersion(c, feetTemplateId)
+	list, err := group.GetFeetTemplateVersion(c, c.GetInt(middleware.PastureId), feetTemplateId)
 	if err != nil {
 		apierr.ClassifiedAbort(c, err)
 		return
 	}
 	ginutil.JSONResp(c, list)
 }
+
+// FeetTemplateUpgradeNewVersion 配方更新至最新版本
+func FeetTemplateUpgradeNewVersion(c *gin.Context) {
+	feetTemplateIdStr := c.Param("feet_template_id")
+	feetTemplateId, _ := strconv.Atoi(feetTemplateIdStr)
+
+	if err := valid.Validate(feetTemplateId, valid.Required, valid.Min(1)); err != nil {
+		apierr.ClassifiedAbort(c, err)
+		return
+	}
+
+	if err := group.FeetTemplateUpgradeNewVersion(c, c.GetInt(middleware.PastureId), feetTemplateId); err != nil {
+		apierr.ClassifiedAbort(c, err)
+		return
+	}
+	ginutil.JSONResp(c, &operationPb.CommonOK{
+		Code: http.StatusOK,
+		Msg:  "ok",
+		Data: &operationPb.Success{Success: true},
+	})
+}

+ 3 - 1
http/handle/group/feed_formula.go

@@ -2,6 +2,7 @@ package group
 
 import (
 	"net/http"
+	"tmr-watch/middleware"
 	"tmr-watch/models"
 	"tmr-watch/pkg/app"
 	"tmr-watch/pkg/e"
@@ -380,7 +381,8 @@ func FeedFormulaVersion(c *gin.Context) {
 		appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
 		return
 	}
-	if err := group.FeedFormulaVersionService(&req); err != nil {
+
+	if err := group.FeedFormulaVersionService(int64(c.GetInt(middleware.PastureId)), &req); err != nil {
 		appG.Response(http.StatusBadRequest, e.ERROR_GET_S_FAIL, map[string]interface{}{
 			"error": err,
 		})

+ 1 - 0
http/routers/new_api.go

@@ -14,5 +14,6 @@ func NewAPI(opts ...func(engine *gin.Engine)) func(s *gin.Engine) {
 		newApiGroup := s.Group("/new_api")
 		newApiGroup.POST("feet_template/list", api.SearchFeetTemplateList)
 		newApiGroup.POST("feet_template/version/:feet_template_id", api.GetFeetTemplateVersion)
+		newApiGroup.POST("feet_template/upgrade/:feet_template_id", api.FeetTemplateUpgradeNewVersion)
 	}
 }

+ 1 - 0
http/routers/root.go

@@ -18,6 +18,7 @@ func Root(opts ...func(engine *gin.Engine)) func(s *gin.Engine) {
 		s.Use(
 			middleware.CORS(),
 			gzip.Gzip(gzip.DefaultCompression),
+			middleware.Pagination(),
 			gin.Logger(),
 			gin.Recovery(),
 		)

+ 46 - 0
middleware/pagination.go

@@ -0,0 +1,46 @@
+package middleware
+
+import (
+	"fmt"
+	"strconv"
+
+	"github.com/gin-gonic/gin"
+)
+
+const (
+	Page       = "page"
+	PageSize   = "page_size"
+	PageOffset = "page_offset"
+	PastureId  = "pasture_id"
+)
+
+// Pagination sets page, pageSize and pageOffset to *gin.Context
+func Pagination() gin.HandlerFunc {
+	return func(c *gin.Context) {
+		page := getSetItem(c, Page, 1)
+		size := getSetItem(c, PageSize, 20)
+		c.Set(PageOffset, (page-1)*size)
+		c.Next()
+	}
+}
+
+func getSetItem(c *gin.Context, k string, d int) int {
+	var n int
+	if v := c.Query(k); v != "" {
+		if i, err := strconv.Atoi(v); err == nil {
+			if i > 0 {
+				n = i
+			}
+		}
+	}
+
+	if n == 0 {
+		n = d
+	}
+
+	c.Set(k, n)
+	c.Request.Header.Set(k, fmt.Sprintf("%d", n))
+	pastureId, _ := strconv.Atoi(c.Request.Header.Get(PastureId))
+	c.Set(PastureId, pastureId)
+	return n
+}

+ 25 - 0
migration/v0001_feedtemplet.sql

@@ -3,6 +3,28 @@ ALTER TABLE `feedtemplet`
     ADD COLUMN `group_data_id` bigint(11) unsigned NOT NULL DEFAULT '0' COMMENT '集体端数据ID',
     ADD COLUMN `group_version` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '集体端版本号';
 
+ALTER TABLE ftdetail ADD COLUMN `is_show` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否显示 0 无效 1 显示 2 隐藏';
+
+## SELECT * FROM `apisql` where sqlname = 'getFTdetailList'
+SELECT
+    TRIM(ftid)ftid,TRIM(fid)fid,
+    IFNULL((SELECT fname  FROM feed WHERE pastureid =ftdetail.pastureid AND id = ftdetail.fid),ftdetail. fname) fname,
+    fweight,islockcount,sort,feedgroup,TRIM(preftid)preftid,autosecond,TRIM(splitftpreid)splitftpreid,
+    TRIM(ftdetail.id) id,
+    TRIM(ftdetail.pastureid)pastureid,IFNULL(deviation,0) AS deviation
+FROM
+    ftdetail
+WHERE ftdetail.pastureid = ?   AND ( ftid=?) AND is_show = 1
+  AND ( fweight =? OR ? = '')
+  AND ( autosecondname =?  OR ? = '')
+  AND (islockcount =? OR ? = '')
+  AND (sort =? OR ? = '')
+  AND ( fname LIKE CONCAT('%',?,'%')  OR ? = '')
+  AND ( feedgroup LIKE CONCAT('%',?,'%')  OR ? = '')
+ORDER BY ftdetail.sort,ftdetail.id;
+
+
+
 update feedtemplet set group_version = version;
 
 ALTER TABLE `ftdetail`
@@ -213,6 +235,7 @@ WHERE pastureid = ?;
 ## 配方版本更新记录表
 CREATE TABLE `feed_detail_version` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+   `pasture_id` bigint(20) unsigned NOT NULL COMMENT '牧场id',
    `feed_template_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '配方id',
    `group_version` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '版本号',
    `belong` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '配方归属 0 无效 1 归属集团端 2 归属牧场端',
@@ -224,6 +247,8 @@ CREATE TABLE `feed_detail_version` (
 
 CREATE TABLE `feed_detail_version_log` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+   `pasture_id` bigint(20) unsigned NOT NULL COMMENT '牧场id',
+   `version_id` int(11) unsigned NOT NULL COMMENT 'feed_detail_version表id',
    `feed_formula_id` int(11) unsigned NOT NULL COMMENT '配方id',
    `forage_id` int(11) unsigned NOT NULL COMMENT '饲料id',
    `forage_name` varchar(255) NOT NULL DEFAULT '' COMMENT '饲料名称',

+ 1 - 0
models/feed_detail_version.go

@@ -2,6 +2,7 @@ package models
 
 type FeedDetailVersion struct {
 	Id             int64 `xorm:"id" json:"id,omitempty"`
+	PastureId      int64 `xorm:"pasture_id" json:"pasture_id"`
 	FeedTemplateId int64 `xorm:"feed_template_id" json:"feed_template_id"`
 	GroupVersion   int32 `xorm:"group_version" json:"group_version"`
 	Belong         int32 `xorm:"belong" json:"belong"`

+ 2 - 0
models/feed_detail_version_log.go

@@ -8,6 +8,8 @@ import (
 
 type FeedDetailVersionLog struct {
 	Id                  int64                   `xorm:"id" json:"id,omitempty"`
+	PastureId           int64                   `xorm:"pasture_id" json:"pasture_id"`
+	VersionId           int64                   `xorm:"version_id" json:"version_id"`
 	FeedTemplateId      int64                   `xorm:"feed_template_id" json:"feed_template_id"`
 	ForageId            int64                   `xorm:"forage_id" json:"forage_id"`
 	ForageName          string                  `xorm:"forage_name" json:"forage_name"`

+ 1 - 0
models/feed_template_detail.go

@@ -18,6 +18,7 @@ type FeedTemplateDetail struct {
 	SplitFtPreId   int64   `xorm:"splitftpreid" json:"split_ft_pre_id"`
 	Deviation      int32   `xorm:"deviation" json:"deviation"`
 	IsModify       int32   `xorm:"is_modify" json:"is_modify"`
+	IsShow         int32   `xorm:"is_show" json:"is_show"`
 }
 
 func (f *FeedTemplateDetail) TableName() string {

+ 106 - 46
module/group.go

@@ -10,16 +10,8 @@ import (
 	"tmr-watch/models"
 
 	operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
-
-	"github.com/xormplus/xorm"
-
 	pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/pasture"
-)
-
-const (
-	IsDefault = 0
-	IsOk      = 1
-	IsNo      = 2
+	"github.com/xormplus/xorm"
 )
 
 // DistributeFeedFormula 集团饲料配方下发
@@ -196,7 +188,7 @@ func SprinkleStatistics(req *models.SprinkleStatisticsRequest) ([]*models.Sprink
 func AccountDistribution(req *models.AccountDistributionRequest) error {
 	res := &models.User{}
 	_, err := restful.Engine.Select("pastureid,username,empname,password,phone").
-		Where("enable = ?", IsOk).And("isdelete = ?", IsNo).And("pastureid = ?", req.PastureId).
+		Where("enable = ?", operationPb.IsShow_OK).And("isdelete = ?", operationPb.IsShow_NO).And("pastureid = ?", req.PastureId).
 		And("username = ?", req.Account).Get(res)
 	if err != nil {
 		return err
@@ -498,7 +490,7 @@ func getSprinkleDetail(pastureId, feedFormulaId int32, startTime, endTime string
 	return dataList, nil
 }
 
-func FeedFormulaVersion(req *models.FeedFormulaUpdateVersionRequest) error {
+func FeedFormulaVersion(pastureId int64, req *models.FeedFormulaUpdateVersionRequest) error {
 	if req.Belong == 0 {
 		return nil
 	}
@@ -510,48 +502,25 @@ func FeedFormulaVersion(req *models.FeedFormulaUpdateVersionRequest) error {
 		return err
 	}
 
-	history := &models.FeedDetailVersion{}
-	if _, err := DbSession.Where("feed_template_id = ?", req.FeedTemplateId).
-		And("belong = ?", req.Belong).
-		Get(history); err != nil {
-		return err
+	feedDetailVersion := &models.FeedDetailVersion{
+		FeedTemplateId: req.FeedTemplateId,
+		PastureId:      pastureId,
+		GroupVersion:   req.Version,
+		Belong:         req.Belong,
+		CreatedAt:      time.Now().Unix(),
+		UpdatedAt:      time.Now().Unix(),
 	}
-
-	if history.Id > 0 {
-		history.GroupVersion = req.Version
-		history.UpdatedAt = time.Now().Unix()
-		if _, err := DbSession.Table(new(models.FeedDetailVersion).TableName()).
-			Where("id = ?", history.Id).Cols("group_version", "updated_at").
-			Update(history); err != nil {
-			DbSession.Rollback()
-			return err
-		}
-
-		if _, err := DbSession.Table(new(models.FeedDetailVersionLog).TableName()).
-			Where("feed_formula_id = ?", history.FeedTemplateId).
-			Update(map[string]interface{}{"is_show": operationPb.IsShow_NO}); err != nil {
-			DbSession.Rollback()
-			return err
-		}
-
-	} else {
-		feedDetailVersionLog := &models.FeedDetailVersion{
-			FeedTemplateId: req.FeedTemplateId,
-			GroupVersion:   req.Version,
-			Belong:         req.Belong,
-			CreatedAt:      time.Now().Unix(),
-			UpdatedAt:      time.Now().Unix(),
-		}
-		if _, err := DbSession.Insert(feedDetailVersionLog); err != nil {
-			DbSession.Rollback()
-			return err
-		}
+	if _, err := DbSession.Insert(feedDetailVersion); err != nil {
+		DbSession.Rollback()
+		return err
 	}
 
 	// FeedDetailVersionLog 更新
 	versionLogs := make([]*models.FeedDetailVersionLog, 0)
 	for _, v := range req.Data {
 		versionLogs = append(versionLogs, &models.FeedDetailVersionLog{
+			VersionId:           feedDetailVersion.Id,
+			PastureId:           pastureId,
 			FeedTemplateId:      req.FeedTemplateId,
 			ForageId:            int64(v.ForageId),
 			ForageName:          v.ForageName,
@@ -625,3 +594,94 @@ func FeedDetailVersionLogList(ctx context.Context) ([]*models.FeedDetailVersion,
 	}
 	return res, nil
 }
+
+// SearchFeedTemplateDetailListByFeedTemplateId 获取配方当前饲料列表详情
+func SearchFeedTemplateDetailListByFeedTemplateId(ctx context.Context, pastureId, feedTemplateId int64) ([]*models.FeedTemplateDetail, error) {
+	res := make([]*models.FeedTemplateDetail, 0)
+	if err := restful.Engine.Table(new(models.FeedTemplateDetail).TableName()).Where("pastureid = ?", pastureId).And("ftid = ?", feedTemplateId).Find(&res); err != nil {
+		return nil, err
+	}
+	return res, nil
+}
+
+// GetFeedDetailVersionByDesc 获取配方最新版本数据
+func GetFeedDetailVersionByDesc(ctx context.Context, pastureId, feedTemplateId int64) (*models.FeedDetailVersion, error) {
+	res := &models.FeedDetailVersion{}
+	if _, err := restful.Engine.Table(new(models.FeedDetailVersion).TableName()).
+		Where("pasture_id = ?", pastureId).
+		And("feed_template_id = ?", feedTemplateId).OrderBy("id desc").Get(res); err != nil {
+		return nil, err
+	}
+	return res, nil
+}
+
+// SearchFeedDetailVersionLogById 获取配方关联最新饲料信息
+func SearchFeedDetailVersionLogById(ctx context.Context, pastureId, feedTemplateId, versionId int64) ([]*models.FeedDetailVersionLog, error) {
+	res := make([]*models.FeedDetailVersionLog, 0)
+	if err := restful.Engine.NewSession().Table(new(models.FeedDetailVersionLog).TableName()).Where("pasture_id = ?", pastureId).
+		And("feed_formula_id = ?", feedTemplateId).And("version = ?", versionId).Find(&res); err != nil {
+		return nil, err
+	}
+	return res, nil
+}
+
+// FeetTemplateUpgradeNewVersion 配方更新至最新版本
+func FeetTemplateUpgradeNewVersion(ctx context.Context, pastureId, feedTemplateId int64) error {
+	newFeedDetailVersion, err := GetFeedDetailVersionByDesc(ctx, pastureId, feedTemplateId)
+	if err != nil {
+		return err
+	}
+
+	DBSession := restful.Engine.NewSession()
+	defer DBSession.Close()
+
+	if err = DBSession.Begin(); err != nil {
+		return err
+	}
+
+	if _, err = DBSession.Table(new(models.FeedTemplateDetail).TableName()).
+		Where("pasture_id = ?", pastureId).
+		And("feed_template_id = ?", feedTemplateId).Update("is_show", operationPb.IsShow_NO); err != nil {
+		DBSession.Rollback()
+		return err
+	}
+
+	res, err := SearchFeedDetailVersionLogById(ctx, pastureId, feedTemplateId, newFeedDetailVersion.Id)
+	if err != nil {
+		DBSession.Rollback()
+		return err
+	}
+
+	if len(res) <= 0 {
+		return DBSession.Commit()
+	}
+
+	newFtDetailList := make([]*models.FeedTemplateDetail, 0)
+	for _, v := range res {
+		newFtDetailList = append(newFtDetailList, &models.FeedTemplateDetail{
+			PastureId:      pastureId,
+			FtId:           feedTemplateId,
+			FId:            v.ForageId,
+			FName:          v.ForageName,
+			FWeight:        float64(v.Weight / 100),
+			IsLockCount:    int32(v.IsLockCowCountRatio),
+			IsFg:           0,
+			Sort:           v.Sort,
+			FeedGroup:      v.ForageGroupName,
+			PreFtId:        0,
+			AutoSecond:     v.StirDelay,
+			AutoSecondName: "",
+			SplitFtPreId:   0,
+			Deviation:      v.AllowError,
+			IsModify:       int32(v.IsModify),
+			IsShow:         int32(operationPb.IsShow_OK),
+		})
+	}
+
+	if _, err = DBSession.Table(new(models.FeedTemplateDetail).TableName()).Insert(newFtDetailList); err != nil {
+		DBSession.Rollback()
+		return err
+	}
+
+	return DBSession.Commit()
+}

+ 39 - 4
service/group/feed_template.go

@@ -32,14 +32,49 @@ func SearchFeedTemplateList(ctx context.Context, req *feedPb.SearchFeedTemplateR
 	return res, nil
 }
 
-func GetFeetTemplateVersion(ctx context.Context, feedTemplateId int) (*feedPb.GetFeetTemplateVersionResponse, error) {
+func GetFeetTemplateVersion(ctx context.Context, pastureId, feedTemplateId int) (*feedPb.GetFeetTemplateVersionResponse, error) {
+
+	historyFeedTemplateDetailList, err := module.SearchFeedTemplateDetailListByFeedTemplateId(ctx, int64(pastureId), int64(feedTemplateId))
+	if err != nil {
+		return nil, err
+	}
+	newFeedTemplateDetailVersion, err := module.GetFeedDetailVersionByDesc(ctx, int64(pastureId), int64(feedTemplateId))
+	if err != nil {
+		return nil, err
+	}
+	newFeedTemplateDetailVersionLogList, err := module.SearchFeedDetailVersionLogById(ctx, int64(pastureId), int64(feedTemplateId), newFeedTemplateDetailVersion.Id)
+	if err != nil {
+		return nil, err
+	}
+
 	res := &feedPb.GetFeetTemplateVersionResponse{
 		Code: http.StatusOK,
 		Msg:  "ok",
-		Data: nil,
+		Data: make([]*feedPb.FeetTemplateVersionData, 0),
+	}
+
+	// 比例两个配方饲料的不同
+	for _, n := range newFeedTemplateDetailVersionLogList {
+		for _, v := range historyFeedTemplateDetailList {
+			if v.FName == n.ForageName {
+				res.Data = append(res.Data, &feedPb.FeetTemplateVersionData{
+					ForageName:          v.FName,
+					ForageGroupName:     v.FeedGroup,
+					Weight:              float32(v.LWeight / 100),
+					StirDelay:           v.AutoSecond,
+					AllowError:          v.Deviation,
+					Sort:                v.Sort,
+					IsLockCowCountRatio: v.IsLockCount,
+					IsModify:            v.IsModify,
+					Status:              feedPb.VersionStatus_UPDATE,
+				})
+			}
+		}
 	}
 
-	list := make([]*feedPb.FeetTemplateVersionData, 0)
-	res.Data = list
 	return res, nil
 }
+
+func FeetTemplateUpgradeNewVersion(ctx context.Context, pastureId, feedTemplateId int) error {
+	return module.FeetTemplateUpgradeNewVersion(ctx, int64(pastureId), int64(feedTemplateId))
+}

+ 2 - 2
service/group/group.go

@@ -299,6 +299,6 @@ func FeedUsageService(req *models.FeedFormulaUsageRequest) (*models.FeedFormulaU
 	return module.FeedTemplateUsageDetail(req)
 }
 
-func FeedFormulaVersionService(req *models.FeedFormulaUpdateVersionRequest) error {
-	return module.FeedFormulaVersion(req)
+func FeedFormulaVersionService(pastureId int64, req *models.FeedFormulaUpdateVersionRequest) error {
+	return module.FeedFormulaVersion(pastureId, req)
 }