package statistic import ( "fmt" "kpt-tmr-group/http/middleware" "kpt-tmr-group/pkg/apierr" "kpt-tmr-group/pkg/ginutil" "kpt-tmr-group/pkg/valid" operationPb "kpt-tmr-group/proto/go/backend/operation" "net/http" "time" "github.com/gin-gonic/gin" ) // SearchFormulaEstimateList 配方评估 func SearchFormulaEstimateList(c *gin.Context) { var req operationPb.SearchFormulaEstimateRequest if err := ginutil.BindProto(c, &req); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := valid.ValidateStruct(&req, valid.Field(&req.ApiName, valid.Required), valid.Field(&req.PastureId, valid.Required), valid.Field(&req.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } res, err := middleware.BackendOperation(c).OpsService.SearchFormulaEstimateList(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // SearchInventoryStatisticsExcelExport 库存管理-库存统计-报表导出 func SearchInventoryStatisticsExcelExport(c *gin.Context) { var req operationPb.SearchInventoryStatisticsRequest if err := ginutil.BindProto(c, &req); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := valid.ValidateStruct(&req, valid.Field(&req.ApiName, valid.Required), valid.Field(&req.PastureId, valid.Required), valid.Field(&req.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } buffer, err := middleware.BackendOperation(c).OpsService.InventoryStatisticsExcelExport(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.Header("Content-Type", "application/octet-stream") c.Header("Content-Disposition", "attachment; filename="+(fmt.Sprintf("库存统计-%s.xlsx", time.Now().Format("200601021504")))) if _, err = c.Writer.Write(buffer.Bytes()); err != nil { apierr.ClassifiedAbort(c, err) return } ginutil.JSONResp(c, &operationPb.CommonOK{ Code: http.StatusOK, Msg: "ok", Data: &operationPb.Success{Success: true}, }) } // SearchInventoryStatistics 库存管理-库存统计 func SearchInventoryStatistics(c *gin.Context) { var req operationPb.SearchInventoryStatisticsRequest if err := ginutil.BindProto(c, &req); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := valid.ValidateStruct(&req, valid.Field(&req.ApiName, valid.Required), valid.Field(&req.PastureId, valid.Required), valid.Field(&req.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } res, err := middleware.BackendOperation(c).OpsService.SearchInventoryStatistics(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // SearchUserMaterialsStatistics 库存管理-用料分析 func SearchUserMaterialsStatistics(c *gin.Context) { var req operationPb.SearchUserMaterialsStatisticsRequest if err := ginutil.BindProto(c, &req); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := valid.ValidateStruct(&req, valid.Field(&req.ApiName, valid.Required), valid.Field(&req.PastureId, valid.Required), valid.Field(&req.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } res, err := middleware.BackendOperation(c).OpsService.SearchUserMaterialsStatistics(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // SearchUserMaterialsStatisticsExcelExport 库存管理-用料分析-报表导出 func SearchUserMaterialsStatisticsExcelExport(c *gin.Context) { var req operationPb.SearchUserMaterialsStatisticsRequest if err := ginutil.BindProto(c, &req); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := valid.ValidateStruct(&req, valid.Field(&req.ApiName, valid.Required), valid.Field(&req.PastureId, valid.Required), valid.Field(&req.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } buffer, err := middleware.BackendOperation(c).OpsService.UserMaterialsStatisticsExcelExport(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.Header("Content-Type", "application/octet-stream") c.Header("Content-Disposition", "attachment; filename="+(fmt.Sprintf("用料分析-%s.xlsx", time.Now().Format("200601021504")))) if _, err = c.Writer.Write(buffer.Bytes()); err != nil { apierr.ClassifiedAbort(c, err) return } ginutil.JSONResp(c, &operationPb.CommonOK{ Code: http.StatusOK, Msg: "ok", Data: &operationPb.Success{Success: true}, }) } // SearchPriceStatistics 库存管理-价格分析 func SearchPriceStatistics(c *gin.Context) { var req operationPb.SearchPriceStatisticsRequest if err := ginutil.BindProto(c, &req); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := valid.ValidateStruct(&req, valid.Field(&req.ApiName, valid.Required), valid.Field(&req.PastureId, valid.Required), valid.Field(&req.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } res, err := middleware.BackendOperation(c).OpsService.SearchPriceStatistics(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // SearchFeedStatistics 饲喂效率-效率统计 func SearchFeedStatistics(c *gin.Context) { var req operationPb.SearchFeedStatisticsRequest if err := ginutil.BindProto(c, &req); err != nil { fmt.Println("=======001======") apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := valid.ValidateStruct(&req, valid.Field(&req.ApiName, valid.Required), valid.Field(&req.PastureId, valid.Required), valid.Field(&req.StartTime, valid.Required), ); err != nil { fmt.Println("=======002======") apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } res, err := middleware.BackendOperation(c).OpsService.SearchFeedStatistics(c, &req) if err != nil { fmt.Println("=======003======") apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // SearchCowsAnalysis 饲喂效率-牛群评估 func SearchCowsAnalysis(c *gin.Context) { var req operationPb.CowsAnalysisRequest 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.StartTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } res, err := middleware.BackendOperation(c).OpsService.CowsAnalysis(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // SearchFeedChartStatistics 饲喂效率-chart图表分析 func SearchFeedChartStatistics(c *gin.Context) { var req operationPb.FeedChartStatisticsRequest 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.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), valid.Field(&req.ApiType, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } res, err := middleware.BackendOperation(c).OpsService.FeedChartStatistics(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // SearchAccuracyAggStatistics 准确性分析-汇总统计 func SearchAccuracyAggStatistics(c *gin.Context) { var req operationPb.AccuracyAggStatisticsRequest 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.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } res, err := middleware.BackendOperation(c).OpsService.SearchAccuracyAggStatistics(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // SearchMixFeedStatistics 准确性分析-混料统计 func SearchMixFeedStatistics(c *gin.Context) { var req operationPb.MixFeedStatisticsRequest if err := ginutil.BindProto(c, &req); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := valid.ValidateStruct(&req, valid.Field(&req.ApiName, valid.Required), valid.Field(&req.PastureId, valid.Required), valid.Field(&req.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } res, err := middleware.BackendOperation(c).OpsService.SearchMixFeedStatistics(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // SearchSprinkleStatistics 准确性分析-撒料统计 func SearchSprinkleStatistics(c *gin.Context) { var req operationPb.SprinkleStatisticsRequest 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.ApiName, valid.Required), valid.Field(&req.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } res, err := middleware.BackendOperation(c).OpsService.SearchSprinkleStatistics(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // GetDataByName 共同接口 func GetDataByName(c *gin.Context) { var req operationPb.GetDataByNameRequest 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.ApiName, valid.Required), valid.Field(&req.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } res, err := middleware.BackendOperation(c).OpsService.GetDataByName(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // SearchProcessAnalysis 过程分析 func SearchProcessAnalysis(c *gin.Context) { var req operationPb.ProcessAnalysisRequest 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.ApiName, valid.Required), valid.Field(&req.StartTime, valid.Required), valid.Field(&req.EndTime, valid.Required), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } res, err := middleware.BackendOperation(c).OpsService.SearchProcessAnalysis(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } c.JSON(http.StatusOK, res) } // TrainNumber 班次 func TrainNumber(c *gin.Context) { var req operationPb.TrainNumberRequest if err := ginutil.BindProto(c, &req); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } if err := valid.ValidateStruct(&req, valid.Field(&req.ApiName, valid.Required, valid.Length(1, 100)), valid.Field(&req.PastureId, valid.Required), valid.Field(&req.InfoName, valid.Required, valid.Length(1, 30)), ); err != nil { apierr.AbortBadRequest(c, http.StatusBadRequest, err) return } req.Pagination = &operationPb.PaginationModel{ Page: int32(c.GetInt(middleware.Page)), PageSize: int32(c.GetInt(middleware.PageSize)), PageOffset: int32(c.GetInt(middleware.PageOffset)), } res, err := middleware.BackendOperation(c).OpsService.GetTrainNumber(c, &req) if err != nil { apierr.ClassifiedAbort(c, err) return } ginutil.JSONResp(c, res) }