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