package group import ( "net/http" "tmr-watch/middleware" "tmr-watch/models" "tmr-watch/pkg/app" "tmr-watch/pkg/e" "tmr-watch/service/group" "gitee.com/xuyiping_admin/pkg/ginutil" operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation" "gitee.com/xuyiping_admin/pkg/apierr" "gitee.com/xuyiping_admin/pkg/valid" "github.com/gin-gonic/gin" ) const ( FeedCategoryDeleteKey = "feed_delete" CowCategoryDeleteKey = "cow_delete" ) func Handle404(c *gin.Context) { c.String(http.StatusNotFound, "404 NotFound") } // DistributeFeedFormula 接受集团饲料配方下发 func DistributeFeedFormula(c *gin.Context) { var req operationPb.DistributeDataRequest if err := ginutil.BindProto(c, &req); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := valid.ValidateStruct(&req, valid.Field(&req.PastureId, valid.Required), valid.Field(&req.FeedFormulaList, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := group.DistributeFeedFormulaService(&req); err != nil { apierr.ClassifiedAbort(c, err) return } ginutil.JSONResp(c, &operationPb.CommonOK{ Code: http.StatusOK, Msg: "ok", Data: &operationPb.Success{Success: true}, }) } // CancelDistributeFeedFormula 饲料取消配方下发 func CancelDistributeFeedFormula(c *gin.Context) { appG := app.Gin{C: c} var req models.CancelDistributeFeedFormulaRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if len(req.PastureDataId) <= 0 { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if err := group.CancelDistributeFeedFormulaService(&req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_ADD_FAIL, nil) return } appG.Response(http.StatusOK, e.SUCCESS, map[string]bool{ "success": true, }) } // EditRecodeFeedFormula 饲料配方修改记录 func EditRecodeFeedFormula(c *gin.Context) { appG := app.Gin{C: c} var req models.CancelDistributeFeedFormulaRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if len(req.PastureDataId) <= 0 { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if err := group.CancelDistributeFeedFormulaService(&req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_ADD_FAIL, nil) return } appG.Response(http.StatusOK, e.SUCCESS, map[string]bool{ "success": true, }) } func FeedFormulaIsModify(c *gin.Context) { appG := app.Gin{C: c} var req models.PastureFeedFormulaIsModifyRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if req.PastureId <= 0 { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if err := group.FeedFormulaIsModifyService(&req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_ADD_FAIL, nil) return } appG.Response(http.StatusOK, e.SUCCESS, map[string]bool{ "success": true, }) } // FeedFormulaAsyncList 获取配方列表 func FeedFormulaAsyncList(c *gin.Context) { appG := app.Gin{C: c} var req models.FeedListRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if req.PastureId <= 0 { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if req.Page <= 0 { req.Page = 1 } if req.PageSize <= 0 { req.PageSize = 50 } data, err := group.FeedFormulaList(&req) if err != nil { appG.Response(http.StatusBadRequest, e.ERROR_ADD_FAIL, nil) return } appG.Response(http.StatusOK, e.SUCCESS, data) } // FeedAsyncList 获取饲料 func FeedAsyncList(c *gin.Context) { appG := app.Gin{C: c} var req models.FeedListRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if req.PastureId <= 0 { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if req.Page <= 0 { req.Page = 1 } if req.PageSize <= 0 { req.PageSize = 50 } data, err := group.FeedList(&req) if err != nil { appG.Response(http.StatusBadRequest, e.ERROR_ADD_FAIL, nil) return } appG.Response(http.StatusOK, e.SUCCESS, data) } // FeedFormulaDetailList 饲料配方详情 func FeedFormulaDetailList(c *gin.Context) { appG := app.Gin{C: c} var req models.FeedListRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if req.PastureId <= 0 { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if req.Page <= 0 { req.Page = 1 } if req.PageSize <= 0 { req.PageSize = 50 } data, err := group.FeedTemplateDetailList(&req) if err != nil { appG.Response(http.StatusBadRequest, e.ERROR_ADD_FAIL, nil) return } appG.Response(http.StatusOK, e.SUCCESS, data) } // AnalysisAccuracy 准确性分析 func AnalysisAccuracy(c *gin.Context) { appG := app.Gin{C: c} var req models.AnalysisAccuracyRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if res, err := group.AnalysisAccuracyService(&req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_GET_S_FAIL, map[string]interface{}{ "error": err, }) } else { appG.Response(http.StatusOK, e.SUCCESS, res) } } // ProcessAnalysis 过程分析 func ProcessAnalysis(c *gin.Context) { appG := app.Gin{C: c} var req models.AnalysisAccuracyRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if res, err := group.ProcessAnalysisService(&req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_GET_S_FAIL, map[string]interface{}{ "error": err, }) } else { appG.Response(http.StatusOK, e.SUCCESS, res) } } // SprinkleStatistics 撒料统计 func SprinkleStatistics(c *gin.Context) { appG := app.Gin{C: c} var req models.SprinkleStatisticsRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if res, err := group.SprinkleStatisticsService(&req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_GET_S_FAIL, map[string]interface{}{ "error": err, }) return } else { appG.Response(http.StatusOK, e.SUCCESS, res) } } // DistributeAccount 账号下发 func DistributeAccount(c *gin.Context) { appG := app.Gin{C: c} var req models.AccountDistributionRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if err := group.AccountDistributionService(&req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_GET_S_FAIL, map[string]interface{}{ "error": err, }) } else { appG.Response(http.StatusOK, e.SUCCESS, map[string]bool{ "success": true, }) } } // ForageCategoryDistribute 饲料分类下发 func ForageCategoryDistribute(c *gin.Context) { appG := app.Gin{C: c} var req models.CategoryRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if err := group.ForageCategoryDistributeService(&req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_GET_S_FAIL, map[string]interface{}{ "error": err, }) } else { appG.Response(http.StatusOK, e.SUCCESS, map[string]bool{ "success": true, }) } } func ForageCategoryDelete(c *gin.Context) { appG := app.Gin{C: c} var req models.CategoryDeleteRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if err := group.CategoryDeleteService(FeedCategoryDeleteKey, &req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_GET_S_FAIL, map[string]interface{}{ "error": err, }) } else { appG.Response(http.StatusOK, e.SUCCESS, map[string]bool{ "success": true, }) } } func CowCategoryDistribute(c *gin.Context) { appG := app.Gin{C: c} var req models.CategoryRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if err := group.CattleCategoryDistributeService(&req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_GET_S_FAIL, map[string]interface{}{ "error": err, }) } else { appG.Response(http.StatusOK, e.SUCCESS, map[string]bool{ "success": true, }) } } func CowCategoryDelete(c *gin.Context) { appG := app.Gin{C: c} var req models.CategoryDeleteRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if err := group.CategoryDeleteService(CowCategoryDeleteKey, &req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_GET_S_FAIL, map[string]interface{}{ "error": err, }) } else { appG.Response(http.StatusOK, e.SUCCESS, map[string]bool{ "success": true, }) } } // FeedUsage 配方使用概况 func FeedUsage(c *gin.Context) { appG := app.Gin{C: c} var req models.FeedFormulaUsageRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if res, err := group.FeedUsageService(&req); err != nil { appG.Response(http.StatusBadRequest, e.ERROR_GET_S_FAIL, map[string]interface{}{ "error": err, }) return } else { appG.Response(http.StatusOK, e.SUCCESS, res) } } // FeedFormulaVersion 集团端配方信息更新同步 func FeedFormulaVersion(c *gin.Context) { appG := app.Gin{C: c} var req models.FeedFormulaUpdateVersionRequest if err := c.BindJSON(&req); err != nil { appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } 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, }) return } appG.Response(http.StatusOK, e.SUCCESS, map[string]bool{"success": true}) }