From c4e6bf4b1fdb872ba514ab03efa3c53333d1a120 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 18 三月 2024 10:11:03 +0800
Subject: [PATCH] 确认发货

---
 service/salesDetails.go        |    4 
 constvar/salesDetails.go       |    2 
 api/v1/salesDetails.go         |   31 +++
 model/request/salesDetails.go  |   12 +
 model/response/salesDetails.go |   26 +-
 router/salesDetails.go         |    1 
 docs/swagger.yaml              |  114 ++++++++++--
 docs/docs.go                   |  166 +++++++++++++++---
 docs/swagger.json              |  166 +++++++++++++++---
 9 files changed, 434 insertions(+), 88 deletions(-)

diff --git a/api/v1/salesDetails.go b/api/v1/salesDetails.go
index b57b78d..6d60f95 100644
--- a/api/v1/salesDetails.go
+++ b/api/v1/salesDetails.go
@@ -376,6 +376,37 @@
 	ctx.OkWithDetailed(storeList)
 }
 
+// ConfirmOutput
+// @Tags		SalesDetails
+// @Summary	纭鍙戣揣
+// @Produce	application/json
+// @Param		object 	body request.ConfirmOutput	true	"鏄庣粏缂栫爜"
+// @Success	200	{object}	response.ListResponse
+// @Router		/api/salesDetails/confirmOutput [post]
+func (s *SalesDetailsApi) ConfirmOutput(c *gin.Context) {
+	var params request.ConfirmOutput
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+	if len(params.Products) == 0 || params.SaleDetailNumber == "" {
+		ctx.FailWithMsg(ecode.ParamsErr, "鍙傛暟缂哄け")
+		return
+	}
+	var flag bool
+	for _, p := range params.Products {
+		if p.OutputAmount.GreaterThan(decimal.Zero) {
+			flag = true
+		}
+	}
+	if !flag {
+		ctx.FailWithMsg(ecode.ParamsErr, "鍙戣揣鏁伴噺缂哄け")
+		return
+	}
+
+	ctx.OkWithDetailed(nil)
+}
+
 // GetDeliveryList
 // @Tags		SalesDetails
 // @Summary	鍙戣揣鏄庣粏
diff --git a/constvar/salesDetails.go b/constvar/salesDetails.go
index 667a72d..0c2d613 100644
--- a/constvar/salesDetails.go
+++ b/constvar/salesDetails.go
@@ -22,5 +22,5 @@
 )
 
 func (s SalesDetailsStatus) Valid() bool {
-	return s == WaitConfirmed || s == WaitOutbound || s == OverOutbound || s == OverCLose
+	return s == WaitConfirmed || s == WaitOutbound || s == OverOutbound || s == OverCLose || s == WaitDecompose || s == InStock
 }
diff --git a/docs/docs.go b/docs/docs.go
index 35d02d0..e2c9bbf 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -7008,6 +7008,36 @@
                 }
             }
         },
+        "/api/salesDetails/confirmOutput": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesDetails"
+                ],
+                "summary": "纭鍙戣揣",
+                "parameters": [
+                    {
+                        "description": "鏄庣粏缂栫爜",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.ConfirmOutput"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/response.ListResponse"
+                        }
+                    }
+                }
+            }
+        },
         "/api/salesDetails/delete": {
             "delete": {
                 "produces": [
@@ -7154,34 +7184,6 @@
                     "SalesDetails"
                 ],
                 "summary": "鑾峰彇浜у搧鍙戣揣淇℃伅",
-                "parameters": [
-                    {
-                        "type": "string",
-                        "description": "鏄庣粏缂栫爜",
-                        "name": "number",
-                        "in": "path",
-                        "required": true
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "OK",
-                        "schema": {
-                            "$ref": "#/definitions/response.ListResponse"
-                        }
-                    }
-                }
-            }
-        },
-        "/api/salesDetails/getSalesDetailsProductInfo/{number}": {
-            "get": {
-                "produces": [
-                    "application/json"
-                ],
-                "tags": [
-                    "SalesDetails"
-                ],
-                "summary": "鑾峰彇閿�鍞槑缁嗕骇鍝佷俊鎭�",
                 "parameters": [
                     {
                         "type": "string",
@@ -15533,6 +15535,33 @@
                 }
             }
         },
+        "request.ConfirmOutput": {
+            "type": "object",
+            "properties": {
+                "products": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.ConfirmOutputProducts"
+                    }
+                },
+                "saleDetailNumber": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.ConfirmOutputProducts": {
+            "type": "object",
+            "properties": {
+                "number": {
+                    "description": "浜у搧缂栧彿",
+                    "type": "string"
+                },
+                "outputAmount": {
+                    "description": "鏈鍙戣揣鏁伴噺",
+                    "type": "number"
+                }
+            }
+        },
         "request.Contact": {
             "type": "object",
             "properties": {
@@ -19430,6 +19459,12 @@
                         "$ref": "#/definitions/response.OutsourcingInfo"
                     }
                 },
+                "productInfo": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/response.SalesDetailsProductInfo"
+                    }
+                },
                 "purchaseInfo": {
                     "type": "array",
                     "items": {
@@ -19785,6 +19820,81 @@
                 }
             }
         },
+        "response.SalesDetailsProductInfo": {
+            "type": "object",
+            "properties": {
+                "amount": {
+                    "description": "璁㈠崟鏁伴噺",
+                    "type": "number"
+                },
+                "cost": {
+                    "description": "浜у搧鎴愭湰",
+                    "type": "string"
+                },
+                "deliveryAmount": {
+                    "description": "鍙戣揣鏁伴噺",
+                    "type": "integer"
+                },
+                "finishAmount": {
+                    "description": "瀹屾垚鏁伴噺",
+                    "type": "integer"
+                },
+                "makeAmount": {
+                    "description": "鍒堕�犳暟閲�",
+                    "type": "integer"
+                },
+                "makeFinishAmount": {
+                    "description": "鍒堕�犲畬鎴愭暟閲�",
+                    "type": "integer"
+                },
+                "margin": {
+                    "description": "姣涘埄鐜�",
+                    "type": "string"
+                },
+                "outsourcingAmount": {
+                    "description": "濮斿鏁伴噺",
+                    "type": "integer"
+                },
+                "outsourcingFinishAmount": {
+                    "description": "濮斿瀹屾垚鏁伴噺",
+                    "type": "integer"
+                },
+                "price": {
+                    "description": "浜у搧浠锋牸",
+                    "type": "number"
+                },
+                "productId": {
+                    "type": "string"
+                },
+                "productName": {
+                    "type": "string"
+                },
+                "profit": {
+                    "description": "姣涘埄",
+                    "type": "string"
+                },
+                "purchaseAmount": {
+                    "description": "閲囪喘鏁伴噺",
+                    "type": "integer"
+                },
+                "purchaseFinishAmount": {
+                    "description": "閲囪喘瀹屾垚鏁伴噺",
+                    "type": "integer"
+                },
+                "specs": {
+                    "description": "鐗╂枡瑙勬牸",
+                    "type": "string"
+                },
+                "total": {
+                    "description": "浜у搧鎬讳环",
+                    "type": "number"
+                },
+                "unit": {
+                    "description": "鍗曚綅",
+                    "type": "string"
+                }
+            }
+        },
         "response.SalesDetailsResponse": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index 857484f..8309fa6 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -6996,6 +6996,36 @@
                 }
             }
         },
+        "/api/salesDetails/confirmOutput": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesDetails"
+                ],
+                "summary": "纭鍙戣揣",
+                "parameters": [
+                    {
+                        "description": "鏄庣粏缂栫爜",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.ConfirmOutput"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/response.ListResponse"
+                        }
+                    }
+                }
+            }
+        },
         "/api/salesDetails/delete": {
             "delete": {
                 "produces": [
@@ -7142,34 +7172,6 @@
                     "SalesDetails"
                 ],
                 "summary": "鑾峰彇浜у搧鍙戣揣淇℃伅",
-                "parameters": [
-                    {
-                        "type": "string",
-                        "description": "鏄庣粏缂栫爜",
-                        "name": "number",
-                        "in": "path",
-                        "required": true
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "OK",
-                        "schema": {
-                            "$ref": "#/definitions/response.ListResponse"
-                        }
-                    }
-                }
-            }
-        },
-        "/api/salesDetails/getSalesDetailsProductInfo/{number}": {
-            "get": {
-                "produces": [
-                    "application/json"
-                ],
-                "tags": [
-                    "SalesDetails"
-                ],
-                "summary": "鑾峰彇閿�鍞槑缁嗕骇鍝佷俊鎭�",
                 "parameters": [
                     {
                         "type": "string",
@@ -15521,6 +15523,33 @@
                 }
             }
         },
+        "request.ConfirmOutput": {
+            "type": "object",
+            "properties": {
+                "products": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.ConfirmOutputProducts"
+                    }
+                },
+                "saleDetailNumber": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.ConfirmOutputProducts": {
+            "type": "object",
+            "properties": {
+                "number": {
+                    "description": "浜у搧缂栧彿",
+                    "type": "string"
+                },
+                "outputAmount": {
+                    "description": "鏈鍙戣揣鏁伴噺",
+                    "type": "number"
+                }
+            }
+        },
         "request.Contact": {
             "type": "object",
             "properties": {
@@ -19418,6 +19447,12 @@
                         "$ref": "#/definitions/response.OutsourcingInfo"
                     }
                 },
+                "productInfo": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/response.SalesDetailsProductInfo"
+                    }
+                },
                 "purchaseInfo": {
                     "type": "array",
                     "items": {
@@ -19773,6 +19808,81 @@
                 }
             }
         },
+        "response.SalesDetailsProductInfo": {
+            "type": "object",
+            "properties": {
+                "amount": {
+                    "description": "璁㈠崟鏁伴噺",
+                    "type": "number"
+                },
+                "cost": {
+                    "description": "浜у搧鎴愭湰",
+                    "type": "string"
+                },
+                "deliveryAmount": {
+                    "description": "鍙戣揣鏁伴噺",
+                    "type": "integer"
+                },
+                "finishAmount": {
+                    "description": "瀹屾垚鏁伴噺",
+                    "type": "integer"
+                },
+                "makeAmount": {
+                    "description": "鍒堕�犳暟閲�",
+                    "type": "integer"
+                },
+                "makeFinishAmount": {
+                    "description": "鍒堕�犲畬鎴愭暟閲�",
+                    "type": "integer"
+                },
+                "margin": {
+                    "description": "姣涘埄鐜�",
+                    "type": "string"
+                },
+                "outsourcingAmount": {
+                    "description": "濮斿鏁伴噺",
+                    "type": "integer"
+                },
+                "outsourcingFinishAmount": {
+                    "description": "濮斿瀹屾垚鏁伴噺",
+                    "type": "integer"
+                },
+                "price": {
+                    "description": "浜у搧浠锋牸",
+                    "type": "number"
+                },
+                "productId": {
+                    "type": "string"
+                },
+                "productName": {
+                    "type": "string"
+                },
+                "profit": {
+                    "description": "姣涘埄",
+                    "type": "string"
+                },
+                "purchaseAmount": {
+                    "description": "閲囪喘鏁伴噺",
+                    "type": "integer"
+                },
+                "purchaseFinishAmount": {
+                    "description": "閲囪喘瀹屾垚鏁伴噺",
+                    "type": "integer"
+                },
+                "specs": {
+                    "description": "鐗╂枡瑙勬牸",
+                    "type": "string"
+                },
+                "total": {
+                    "description": "浜у搧鎬讳环",
+                    "type": "number"
+                },
+                "unit": {
+                    "description": "鍗曚綅",
+                    "type": "string"
+                }
+            }
+        },
         "response.SalesDetailsResponse": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 9f0261d..4980a47 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -3457,6 +3457,24 @@
     required:
     - ids
     type: object
+  request.ConfirmOutput:
+    properties:
+      products:
+        items:
+          $ref: '#/definitions/request.ConfirmOutputProducts'
+        type: array
+      saleDetailNumber:
+        type: string
+    type: object
+  request.ConfirmOutputProducts:
+    properties:
+      number:
+        description: 浜у搧缂栧彿
+        type: string
+      outputAmount:
+        description: 鏈鍙戣揣鏁伴噺
+        type: number
+    type: object
   request.Contact:
     properties:
       birthday:
@@ -6117,6 +6135,10 @@
         items:
           $ref: '#/definitions/response.OutsourcingInfo'
         type: array
+      productInfo:
+        items:
+          $ref: '#/definitions/response.SalesDetailsProductInfo'
+        type: array
       purchaseInfo:
         items:
           $ref: '#/definitions/response.Purchase'
@@ -6348,6 +6370,61 @@
         items:
           $ref: '#/definitions/model.SaleType'
         type: array
+    type: object
+  response.SalesDetailsProductInfo:
+    properties:
+      amount:
+        description: 璁㈠崟鏁伴噺
+        type: number
+      cost:
+        description: 浜у搧鎴愭湰
+        type: string
+      deliveryAmount:
+        description: 鍙戣揣鏁伴噺
+        type: integer
+      finishAmount:
+        description: 瀹屾垚鏁伴噺
+        type: integer
+      makeAmount:
+        description: 鍒堕�犳暟閲�
+        type: integer
+      makeFinishAmount:
+        description: 鍒堕�犲畬鎴愭暟閲�
+        type: integer
+      margin:
+        description: 姣涘埄鐜�
+        type: string
+      outsourcingAmount:
+        description: 濮斿鏁伴噺
+        type: integer
+      outsourcingFinishAmount:
+        description: 濮斿瀹屾垚鏁伴噺
+        type: integer
+      price:
+        description: 浜у搧浠锋牸
+        type: number
+      productId:
+        type: string
+      productName:
+        type: string
+      profit:
+        description: 姣涘埄
+        type: string
+      purchaseAmount:
+        description: 閲囪喘鏁伴噺
+        type: integer
+      purchaseFinishAmount:
+        description: 閲囪喘瀹屾垚鏁伴噺
+        type: integer
+      specs:
+        description: 鐗╂枡瑙勬牸
+        type: string
+      total:
+        description: 浜у搧鎬讳环
+        type: number
+      unit:
+        description: 鍗曚綅
+        type: string
     type: object
   response.SalesDetailsResponse:
     properties:
@@ -10808,6 +10885,25 @@
       summary: 娣诲姞閿�鍞槑缁�
       tags:
       - SalesDetails
+  /api/salesDetails/confirmOutput:
+    post:
+      parameters:
+      - description: 鏄庣粏缂栫爜
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.ConfirmOutput'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/response.ListResponse'
+      summary: 纭鍙戣揣
+      tags:
+      - SalesDetails
   /api/salesDetails/delete:
     delete:
       parameters:
@@ -10911,24 +11007,6 @@
           schema:
             $ref: '#/definitions/response.ListResponse'
       summary: 鑾峰彇浜у搧鍙戣揣淇℃伅
-      tags:
-      - SalesDetails
-  /api/salesDetails/getSalesDetailsProductInfo/{number}:
-    get:
-      parameters:
-      - description: 鏄庣粏缂栫爜
-        in: path
-        name: number
-        required: true
-        type: string
-      produces:
-      - application/json
-      responses:
-        "200":
-          description: OK
-          schema:
-            $ref: '#/definitions/response.ListResponse'
-      summary: 鑾峰彇閿�鍞槑缁嗕骇鍝佷俊鎭�
       tags:
       - SalesDetails
   /api/salesDetails/list:
diff --git a/model/request/salesDetails.go b/model/request/salesDetails.go
index ed2b4b6..29f6fb2 100644
--- a/model/request/salesDetails.go
+++ b/model/request/salesDetails.go
@@ -3,6 +3,7 @@
 import (
 	"aps_crm/constvar"
 	"aps_crm/model"
+	"github.com/shopspring/decimal"
 )
 
 type AddSalesDetails struct {
@@ -55,3 +56,14 @@
 	ClientId     int                              `json:"clientId"`     //瀹㈡埛id
 	Number       string                           `json:"number"`       //閿�鍞槑缁嗗崟鍙�
 }
+
+// ConfirmOutput 鍙戣揣
+type ConfirmOutput struct {
+	SaleDetailNumber string                  `json:"saleDetailNumber"`
+	Products         []ConfirmOutputProducts `json:"products"`
+}
+
+type ConfirmOutputProducts struct {
+	Number       string          `json:"number"`       //浜у搧缂栧彿
+	OutputAmount decimal.Decimal `json:"outputAmount"` //鏈鍙戣揣鏁伴噺
+}
diff --git a/model/response/salesDetails.go b/model/response/salesDetails.go
index 515af69..8644c04 100644
--- a/model/response/salesDetails.go
+++ b/model/response/salesDetails.go
@@ -69,20 +69,20 @@
 	AvailableNumber string `json:"availableNumber"` //鍙敤搴撳瓨
 }
 type OutputInfo struct {
-	Number      string `json:"number"`
-	Name        string `json:"name"`
+	Number      string `json:"number"`      //浜у搧缂栫爜
+	Name        string `json:"name"`        //浜у搧鍚嶇О
 	OrderAmount string `json:"orderAmount"` //璁㈠崟鏁伴噺
-	Unit        string `json:"unit"`
-	Invoice     string `json:"invoice"`   //鍙戣揣鍗�
-	Carrier     string `json:"carrier"`   //鎵胯繍鍟�
-	Waybill     string `json:"waybill"`   //杩愬崟鍙�
-	SalePrice   string `json:"salePrice"` //閿�鍞崟浠�
-	Valorem     string `json:"valorem"`   //浠风◣鍚堣
-	Warehouse   string `json:"warehouse"`
-	Amount      string `json:"amount"`     //鍦ㄥ簱鏁伴噺
-	Status      int    `json:"status"`     //0灏辩华 1瀹屾垚
-	Specs       string `json:"specs"`      //瑙勬牸
-	CreateTime  string `json:"createTime"` //鍒涘缓鏃堕棿
+	Unit        string `json:"unit"`        //鍗曚綅
+	Invoice     string `json:"invoice"`     //鍙戣揣鍗�
+	Carrier     string `json:"carrier"`     //鎵胯繍鍟�
+	Waybill     string `json:"waybill"`     //杩愬崟鍙�
+	SalePrice   string `json:"salePrice"`   //閿�鍞崟浠�
+	Valorem     string `json:"valorem"`     //浠风◣鍚堣
+	Warehouse   string `json:"warehouse"`   //浠撳簱鍚嶇О
+	Amount      string `json:"amount"`      //鍙戣揣鏁伴噺
+	Status      int    `json:"status"`      //0灏辩华 1瀹屾垚
+	Specs       string `json:"specs"`       //瑙勬牸
+	CreateTime  string `json:"createTime"`  //鍒涘缓鏃堕棿
 }
 
 type StoreInfo struct {
diff --git a/router/salesDetails.go b/router/salesDetails.go
index e50ac57..75e32aa 100644
--- a/router/salesDetails.go
+++ b/router/salesDetails.go
@@ -24,6 +24,7 @@
 
 		salesDetailsRouter.POST("getDeliveryPrepareInfo", salesDetailsApi.GetDeliveryPrepareInfo) // 鍙戣揣鍑嗗
 		salesDetailsRouter.POST("getDeliveryList", salesDetailsApi.GetDeliveryList)               // 鍙戣揣鏄庣粏
+		salesDetailsRouter.POST("confirmOutput", salesDetailsApi.ConfirmOutput)                   // 纭鍙戣揣
 
 	}
 }
diff --git a/service/salesDetails.go b/service/salesDetails.go
index eb7933f..d49170c 100644
--- a/service/salesDetails.go
+++ b/service/salesDetails.go
@@ -137,6 +137,10 @@
 	return model.NewSalesDetailsSearch().SetId(saleDetailID).SetPreload(true).First()
 }
 
+func (SalesDetailsService) GetSalesDetailsByNumber(number string) (*model.SalesDetails, error) {
+	return model.NewSalesDetailsSearch().SetNumber(number).SetPreload(true).First()
+}
+
 func (SalesDetailsService) GetDeliveryOrder(saleDetailID int) ([]*model.DeliveryOrder, error) {
 	// get contact list
 	orders, err := model.NewDeliveryOrderSearch().SetSalesDetailsID(saleDetailID).FindAll()

--
Gitblit v1.8.0