From 84346bdafad764c8964256829dc7dc564fe95769 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 01 七月 2024 22:30:50 +0800 Subject: [PATCH] 月度统计出入库按类型汇总报表定时任务和手动跑任务接口 --- constvar/const.go | 16 ++++++++ request/report_forms_request.go | 5 ++ models/warehouse.go | 10 +++++ controllers/report_forms_controller.go | 23 +++++++++++ models/warehouse_month_stats.go | 29 ++++++++++++++ models/db.go | 2 + router/router.go | 3 + service/warehouse_month_forms.go | 3 + task/tasklist.go | 5 ++ 9 files changed, 94 insertions(+), 2 deletions(-) diff --git a/constvar/const.go b/constvar/const.go index f465a7e..82d7c47 100644 --- a/constvar/const.go +++ b/constvar/const.go @@ -339,3 +339,19 @@ } return true } + +// BoolType 甯冨皵绫诲瀷 +type BoolType int + +const ( + BoolTypeTrue BoolType = 1 // true + BoolTypeFalse BoolType = 2 // false +) + +func (slf BoolType) IsValid() bool { + return slf == BoolTypeTrue || slf == BoolTypeFalse +} + +func (slf BoolType) Bool() bool { + return slf == BoolTypeTrue +} diff --git a/controllers/report_forms_controller.go b/controllers/report_forms_controller.go index 49e8fca..230525c 100644 --- a/controllers/report_forms_controller.go +++ b/controllers/report_forms_controller.go @@ -505,3 +505,26 @@ util.ResponseFormatList(c, code.Success, result, int(total)) } + +// DoWareHouseMonthStats +// @Tags 鎶ヨ〃 +// @Summary 鎵嬪姩璺戞湀搴︾粺璁″簱瀛樻姤琛� +// @Produce application/json +// @Param object body request.DoWarehouseMonthStats true "鏌ヨ鍙傛暟" +// @Param Authorization header string true "token" +// @Success 200 {object} util.ResponseList{data=[]models.MonthStats} "鎴愬姛" +// @Router /api-wms/v1/forms/doWarehouseMonthStats [post] +func (slf ReportFormsController) DoWareHouseMonthStats(c *gin.Context) { + var params request.DoMonthStats + if err := c.BindJSON(¶ms); err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") + return + } + + if params.Token != constvar.DoMonthStatsToken { + return + } + + task.WarehouseMonthStats() + util.ResponseFormat(c, code.Success, nil) +} diff --git a/models/db.go b/models/db.go index 4708383..07c3fb9 100644 --- a/models/db.go +++ b/models/db.go @@ -123,6 +123,8 @@ Attribute{}, AttributeValue{}, SystemConfig{}, + WarehouseMonthStats{}, + WarehouseStatsItems{}, ) return err } diff --git a/models/warehouse.go b/models/warehouse.go index d6756af..e79397a 100644 --- a/models/warehouse.go +++ b/models/warehouse.go @@ -31,6 +31,7 @@ Contacts string `json:"contacts" gorm:"type:varchar(255);comment:鑱旂郴浜�"` //鑱旂郴浜� FileTemplateCategoryIn constvar.FileTemplateCategory `json:"fileTemplateCategoryIn" gorm:"type:int(11);comment:鍏ュ簱妯$増绉嶇被"` FileTemplateCategoryOut constvar.FileTemplateCategory `json:"fileTemplateCategoryOut" gorm:"type:int(11);comment:鍑哄簱妯$増绉嶇被"` + OpenMonthStats constvar.BoolType `gorm:"type:int(11);default:2;comment:鏄惁寮�鍚湀搴︾粺璁�" json:"openMonthStats"` //鏄惁寮�鍚湀搴︾粺璁� } WarehouseSearch struct { @@ -103,6 +104,11 @@ return slf } +func (slf *WarehouseSearch) SetOpenMonthStats(open constvar.BoolType) *WarehouseSearch { + slf.OpenMonthStats = open + return slf +} + func (slf *WarehouseSearch) build() *gorm.DB { var db = slf.Orm.Table(slf.TableName()) @@ -134,6 +140,10 @@ db = db.Where("code in ?", slf.Codes) } + if slf.OpenMonthStats != 0 { + db = db.Where("open_month_stats = ?", slf.OpenMonthStats) + } + return db } diff --git a/models/warehouse_month_stats.go b/models/warehouse_month_stats.go index 72f494c..658fab5 100644 --- a/models/warehouse_month_stats.go +++ b/models/warehouse_month_stats.go @@ -48,8 +48,12 @@ } ) +func (slf *WarehouseStatsItems) TableName() string { + return "wms_warehouse_month_stats_items" +} + func (slf *WarehouseMonthStats) TableName() string { - return "wms_month_stats" + return "wms_warehouse_month_stats" } func NewWarehouseMonthStatsSearch() *WarehouseMonthStatsSearch { @@ -96,6 +100,21 @@ return slf } +func (slf *WarehouseMonthStatsSearch) SetWarehouseId(id int) *WarehouseMonthStatsSearch { + slf.WarehouseId = id + return slf +} + +func (slf *WarehouseMonthStatsSearch) Save(record *WarehouseMonthStats) error { + var db = slf.build() + + if err := db.Omit("CreatedAt").Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + func (slf *WarehouseMonthStatsSearch) build() *gorm.DB { var db = slf.Orm.Model(&WarehouseMonthStats{}) @@ -120,6 +139,14 @@ db = db.Select(slf.Fields) } + if slf.WarehouseId != 0 { + db = db.Where("warehouse_id = ?", slf.WarehouseId) + } + + if slf.Preload { + db = db.Preload("InputItems").Preload("OutputItems") + } + return db } diff --git a/request/report_forms_request.go b/request/report_forms_request.go index ca92133..6540c8a 100644 --- a/request/report_forms_request.go +++ b/request/report_forms_request.go @@ -31,8 +31,13 @@ Keyword string `json:"keyword"` Date string `json:"date"` WarehouseID int `json:"warehouseID"` + Preload bool } type DoMonthStats struct { Token string `json:"token"` } + +type DoWarehouseMonthStats struct { + Token string `json:"token"` +} diff --git a/router/router.go b/router/router.go index f46070c..f9868b5 100644 --- a/router/router.go +++ b/router/router.go @@ -179,7 +179,8 @@ reportFormsAPI.POST("downloadMonthStats", reportFormsController.DownloadMonthStats) //涓嬭浇鏈堝害缁熻鎶ヨ〃 reportFormsAPI.POST("doMonthStats", reportFormsController.DoMonthStats) //鎵嬪姩璺戞湀搴︾粺璁″簱瀛樻姤琛� - reportFormsAPI.POST("warehouseMonthStats", reportFormsController.WarehouseMonthStats) //鎸変粨搴撹幏鍙栨湀搴︾粺璁℃姤琛� + reportFormsAPI.POST("warehouseMonthStats", reportFormsController.WarehouseMonthStats) //鎸変粨搴撹幏鍙栨湀搴︾粺璁℃姤琛� + reportFormsAPI.POST("doWarehouseMonthStats", reportFormsController.DoWareHouseMonthStats) //鎵嬪姩璺戞寜浠撳簱鑾峰彇鏈堝害缁熻鎶ヨ〃 } //閲嶈璐ц鍒� diff --git a/service/warehouse_month_forms.go b/service/warehouse_month_forms.go index 1885a16..c245dbd 100644 --- a/service/warehouse_month_forms.go +++ b/service/warehouse_month_forms.go @@ -24,6 +24,9 @@ func (slf *WarehouseMonthFormsService) BuildSearch(params request.GetMonthStats) (search *models.WarehouseMonthStatsSearch) { search = models.NewWarehouseMonthStatsSearch().SetKeyword(params.Keyword).SetDate(params.Date) + if params.Preload { + search = search.SetPreload(true) + } return search } diff --git a/task/tasklist.go b/task/tasklist.go index cdd479a..1a787a1 100644 --- a/task/tasklist.go +++ b/task/tasklist.go @@ -25,6 +25,11 @@ logx.Errorf("init task err:%v", err) return err } + _, err = dynamicScheduler.Every(1).Month(day).At(timeStr).Do(WarehouseMonthStats) //姣忔湀鍒濇墽琛屼竴娆� + if err != nil { + logx.Errorf("init task err:%v", err) + return err + } } if dynamicScheduler.Len() == 0 { return -- Gitblit v1.8.0