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(&params); 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