From 8d3f2400195b0ae746e51ed4871e2b0ab621c928 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 06 五月 2024 17:24:11 +0800
Subject: [PATCH] 增加月度统计手动执行接口

---
 constvar/const.go                      |    2 
 task/month_stats.go                    |   24 ++++--
 request/report_forms_request.go        |    4 +
 service/alarm.go                       |    5 
 controllers/report_forms_controller.go |   24 ++++++
 docs/swagger.yaml                      |   36 +++++++++
 docs/docs.go                           |   60 +++++++++++++++
 docs/swagger.json                      |   60 +++++++++++++++
 router/router.go                       |    1 
 9 files changed, 205 insertions(+), 11 deletions(-)

diff --git a/constvar/const.go b/constvar/const.go
index cf6367a..e2dc960 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -312,3 +312,5 @@
 	OperationSourceOutsourcingApply OperationSource = 5 //濮斿棰嗘枡
 	OperationSourceSaleDelivery     OperationSource = 6 //閿�鍞彂璐�
 )
+
+const DoMonthStatsToken = "Eoh2ZAUJjtbmu0TBkc3dq7MPCpL4riw5NVxOfgXYlKvHF6sR"
diff --git a/controllers/report_forms_controller.go b/controllers/report_forms_controller.go
index 6870409..7c48974 100644
--- a/controllers/report_forms_controller.go
+++ b/controllers/report_forms_controller.go
@@ -11,6 +11,7 @@
 	"wms/request"
 	"wms/response"
 	"wms/service"
+	"wms/task"
 )
 
 type ReportFormsController struct {
@@ -394,3 +395,26 @@
 
 	util.ResponseFormatList(c, code.Success, list, int(total))
 }
+
+// DoMonthStats
+// @Tags      鎶ヨ〃
+// @Summary   鎵嬪姩璺戞湀搴︾粺璁″簱瀛樻姤琛�
+// @Produce   application/json
+// @Param     object  body  request.DoMonthStats true  "鏌ヨ鍙傛暟"
+// @Param     Authorization	header string true "token"
+// @Success   200 {object} util.ResponseList{data=[]models.MonthStats}	"鎴愬姛"
+// @Router    /api-wms/v1/forms/doMonthStats [post]
+func (slf ReportFormsController) DoMonthStats(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.MonthStats()
+	util.ResponseFormat(c, code.Success, nil)
+}
diff --git a/docs/docs.go b/docs/docs.go
index 7366ea9..16ef563 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -416,6 +416,58 @@
                 }
             }
         },
+        "/api-wms/v1/forms/doMonthStats": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "鎶ヨ〃"
+                ],
+                "summary": "鎵嬪姩璺戞湀搴︾粺璁″簱瀛樻姤琛�",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.DoMonthStats"
+                        }
+                    },
+                    {
+                        "type": "string",
+                        "description": "token",
+                        "name": "Authorization",
+                        "in": "header",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/util.ResponseList"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "type": "array",
+                                            "items": {
+                                                "$ref": "#/definitions/models.MonthStats"
+                                            }
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "/api-wms/v1/forms/getHistory": {
             "post": {
                 "produces": [
@@ -4546,6 +4598,14 @@
                 }
             }
         },
+        "request.DoMonthStats": {
+            "type": "object",
+            "properties": {
+                "token": {
+                    "type": "string"
+                }
+            }
+        },
         "request.FinishLocationProductAmount": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index 30a33fd..bfed35b 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -404,6 +404,58 @@
                 }
             }
         },
+        "/api-wms/v1/forms/doMonthStats": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "鎶ヨ〃"
+                ],
+                "summary": "鎵嬪姩璺戞湀搴︾粺璁″簱瀛樻姤琛�",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.DoMonthStats"
+                        }
+                    },
+                    {
+                        "type": "string",
+                        "description": "token",
+                        "name": "Authorization",
+                        "in": "header",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/util.ResponseList"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "type": "array",
+                                            "items": {
+                                                "$ref": "#/definitions/models.MonthStats"
+                                            }
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "/api-wms/v1/forms/getHistory": {
             "post": {
                 "produces": [
@@ -4534,6 +4586,14 @@
                 }
             }
         },
+        "request.DoMonthStats": {
+            "type": "object",
+            "properties": {
+                "token": {
+                    "type": "string"
+                }
+            }
+        },
         "request.FinishLocationProductAmount": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 2f659b0..4d081f3 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -1271,6 +1271,11 @@
     required:
     - code
     type: object
+  request.DoMonthStats:
+    properties:
+      token:
+        type: string
+    type: object
   request.FinishLocationProductAmount:
     properties:
       locationProductAmountId:
@@ -2184,6 +2189,37 @@
       summary: 缂栬緫鍏徃
       tags:
       - 鍏徃
+  /api-wms/v1/forms/doMonthStats:
+    post:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.DoMonthStats'
+      - description: token
+        in: header
+        name: Authorization
+        required: true
+        type: string
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            allOf:
+            - $ref: '#/definitions/util.ResponseList'
+            - properties:
+                data:
+                  items:
+                    $ref: '#/definitions/models.MonthStats'
+                  type: array
+              type: object
+      summary: 鎵嬪姩璺戞湀搴︾粺璁″簱瀛樻姤琛�
+      tags:
+      - 鎶ヨ〃
   /api-wms/v1/forms/getHistory:
     post:
       parameters:
diff --git a/request/report_forms_request.go b/request/report_forms_request.go
index 7c50d03..71b4c81 100644
--- a/request/report_forms_request.go
+++ b/request/report_forms_request.go
@@ -31,3 +31,7 @@
 	Keyword string `json:"keyword"`
 	Date    string `json:"date"`
 }
+
+type DoMonthStats struct {
+	Token string `json:"token"`
+}
diff --git a/router/router.go b/router/router.go
index 5a37434..4ed0a82 100644
--- a/router/router.go
+++ b/router/router.go
@@ -157,6 +157,7 @@
 		reportFormsAPI.POST("getHistory", reportFormsController.GetHistory)               //鑾峰彇搴撳瓨鍘嗗彶
 		reportFormsAPI.POST("getLocationForms", reportFormsController.GetLocationForms)   //鑾峰彇浣嶇疆鎶ヨ〃
 		reportFormsAPI.POST("monthStats", reportFormsController.MonthStats)               //鑾峰彇鏈堝害缁熻鎶ヨ〃
+		reportFormsAPI.POST("doMonthStats", reportFormsController.DoMonthStats)           //鑾峰彇鏈堝害缁熻鎶ヨ〃
 	}
 
 	//閲嶈璐ц鍒�
diff --git a/service/alarm.go b/service/alarm.go
index 9a4bff6..8e2f9c6 100644
--- a/service/alarm.go
+++ b/service/alarm.go
@@ -6,7 +6,6 @@
 )
 
 func SendAlarm(title, content string) {
-	title = "WMS鎶ヨ"
-	content = "-鏍囬锛�" + title + "\n- 鍏徃锛�" + conf.WebConf.CompanyName + "\n - 鎶ヨ鍐呭锛�" + content
-	dingtalkrobot.Robot.Alarm(title, content)
+	content = "- 鏍囬锛�" + title + "\n- 鍏徃锛�" + conf.WebConf.CompanyName + "\n - 鎶ヨ鍐呭锛�" + content
+	dingtalkrobot.Robot.Alarm("WMS鎶ヨ", content)
 }
diff --git a/task/month_stats.go b/task/month_stats.go
index b89aa88..a7985ad 100644
--- a/task/month_stats.go
+++ b/task/month_stats.go
@@ -12,21 +12,25 @@
 	"wms/service"
 )
 
-func MonthStats() {
+func MonthStats() (err error) {
 	//鍔犻攣锛屽彧闇�瑕佷竴涓繘绋嬭繍琛屾浠诲姟
 	var (
 		lockName  = "monthStats"
 		serviceID = "wms"
 	)
-	err := models.NewLockSearch().AcquireLock(lockName, serviceID)
+	err = models.NewLockSearch().AcquireLock(lockName, serviceID)
 	if err != nil {
 		logx.Errorf("MonthStats AcquireLock err:%v", err)
 		return
 	}
 	defer func() {
-		err := models.NewLockSearch().ReleaseLock(lockName, serviceID)
+		if err != nil {
+			service.SendAlarm("鏈堝害缁熻鎵ц澶辫触", "鎶ラ敊: "+err.Error())
+		}
+		err = models.NewLockSearch().ReleaseLock(lockName, serviceID)
 		if err != nil {
 			logx.Errorf("MonthStats ReleaseLock err:%v", err)
+			service.SendAlarm("鏈堝害缁熻鎵ц鎴愬姛瑙i攣澶辫触", err.Error())
 		}
 	}()
 
@@ -68,6 +72,12 @@
 		return
 	}
 	var record models.MonthStats
+
+	err = models.NewMonthStatsSearch().SetDate(date).Delete()
+	if err != nil {
+		return
+	}
+
 	for _, groupSum := range groupSumList {
 		productId := groupSum.Class
 		if productMap[productId] == nil {
@@ -126,11 +136,6 @@
 			}
 		}
 
-		err = models.NewMonthStatsSearch().SetDate(date).Delete()
-		if err != nil {
-			return
-		}
-
 		record.BeginMoreUnits = moreUnits
 		err = models.WithTransaction(func(db *gorm.DB) error {
 			err = models.NewMonthStatsSearch().SetOrm(db).Create(&record)
@@ -161,6 +166,9 @@
 			return nil
 		})
 	}
+	if err == nil {
+		service.SendAlarm("鏈堝害缁熻鎵ц鎴愬姛", "")
+	}
 	return
 }
 

--
Gitblit v1.8.0