From de4bcd1dead50b05f716bc5718be5540bdb96783 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期日, 28 四月 2024 17:23:29 +0800
Subject: [PATCH] fix
---
api/v1/outsourcing/outsourcing.go | 875 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 436 insertions(+), 439 deletions(-)
diff --git a/api/v1/outsourcing/outsourcing.go b/api/v1/outsourcing/outsourcing.go
index a7578d5..6d55dd8 100644
--- a/api/v1/outsourcing/outsourcing.go
+++ b/api/v1/outsourcing/outsourcing.go
@@ -4,14 +4,10 @@
"github.com/gin-gonic/gin"
"gorm.io/gorm"
"srm/constvar"
- "srm/model"
"srm/model/common/response"
models "srm/model/outsourcing"
outsourcingrequest "srm/model/outsourcing/request"
"srm/pkg/logx"
- "srm/proto/common"
- "srm/proto/inventory_order"
- "srm/proto/purchase_wms"
"srm/utils"
"srm/utils/code"
"srm/utils/structx"
@@ -141,438 +137,439 @@
utils.ResponseFormat(c, code.Success, resp)
}
-// OutsourcingOrderList
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 濮斿璁㈠崟鍒楄〃
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Param object query outsourcingrequest.OutsourcingOrderList true "鏌ヨ鍙傛暟"
-// @Success 200 {object} utils.ResponseList{data=[]models.OutsourcingOrder} "鎴愬姛"
-// @Router /outsourcing/order/list [get]
-func (slf *OutsourcingController) OutsourcingOrderList(c *gin.Context) {
- var params outsourcingrequest.OutsourcingOrderList
- if err := c.BindQuery(¶ms); err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
- return
- }
- list, total, err := models.NewOutsourcingOrderSearch().SetPage(params.Page, params.PageSize).SetKeyword(params.Keyword).SetOrder("id desc").Find()
- if err != nil {
- utils.ResponseFormat(c, code.InternalError, "鏌ヨ閿欒")
- return
- }
- utils.ResponseFormatList(c, code.Success, list, int(total))
-}
-
-// OrderOverview
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 璁㈠崟缁熻
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Success 200 {object} utils.ResponseList{data=outsourcingrequest.OutsourcingOrderOverview} "鎴愬姛"
-// @Router /outsourcing/order/overview [get]
-func (slf *OutsourcingController) OrderOverview(c *gin.Context) {
- result, err := models.NewOutsourcingOrderSearch().CountGroupByStatus()
- if err != nil {
- utils.ResponseFormat(c, code.InternalError, "鏌ヨ閿欒")
- return
- }
- resp := &outsourcingrequest.OutsourcingOrderOverview{}
- for _, v := range result {
- resp.Total += v.Total
- status := constvar.OutsourcingOrderStatus(v.Status)
- if status == constvar.OutsourcingOrderStatusCreate {
- resp.WaitAssigned += v.Total
- } else {
- resp.HasAssigned += v.Total
- }
- }
- utils.ResponseFormat(c, code.Success, resp)
-}
-
-// OutsourcingOrderProductList
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 濮斿璁㈠崟浜у搧鍒楄〃
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Param object query outsourcingrequest.OutsourcingOrderProductList true "鏌ヨ鍙傛暟"
-// @Success 200 {object} utils.ResponseList{data=[]models.OutsourcingOrderProduct} "鎴愬姛"
-// @Router /outsourcing/order/productList [get]
-func (slf *OutsourcingController) OutsourcingOrderProductList(c *gin.Context) {
- var params outsourcingrequest.OutsourcingOrderProductList
- if err := c.BindQuery(¶ms); err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
- return
- }
- if params.OutsourcingOrderId == 0 {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟缂哄け")
- return
- }
- list, total, err := models.NewOutsourcingOrderProductSearch().SetPage(params.Page, params.PageSize).SetOutsourcingOrderID(params.OutsourcingOrderId).SetOrder("id desc").Find()
- if err != nil {
- utils.ResponseFormat(c, code.InternalError, "鏌ヨ閿欒")
- return
- }
- utils.ResponseFormatList(c, code.Success, list, int(total))
-}
-
-// OutsourcingEnterpriseProductList
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 濮斿浼佷笟渚涜揣鍘嗗彶
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Param object query outsourcingrequest.OutsourcingEnterpriseProductList true "鏌ヨ鍙傛暟"
-// @Success 200 {object} utils.ResponseList{data=[]models.OutsourcingOrderProduct} "鎴愬姛"
-// @Router /outsourcing/enterprise/productList [get]
-func (slf *OutsourcingController) OutsourcingEnterpriseProductList(c *gin.Context) {
- var params outsourcingrequest.OutsourcingEnterpriseProductList
- if err := c.BindQuery(¶ms); err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
- return
- }
- if params.EnterpriseID == 0 {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟缂哄け")
- return
- }
- list, total, err := models.NewOutsourcingOrderProductSearch().SetPage(params.Page, params.PageSize).SetEnterpriseID(params.EnterpriseID).SetOrder("id desc").Find()
- if err != nil {
- utils.ResponseFormat(c, code.InternalError, "鏌ヨ閿欒")
- return
- }
- utils.ResponseFormatList(c, code.Success, list, int(total))
-}
-
-// OutsourcingOrderAssign
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 濮斿璁㈠崟鍒嗛厤浼佷笟
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Param object body outsourcingrequest.OutsourcingOrderAssign true "鏌ヨ鍙傛暟"
-// @Success 200 {object} contextx.Response{} "鎴愬姛"
-// @Router /outsourcing/order/assign [post]
-func (slf *OutsourcingController) OutsourcingOrderAssign(c *gin.Context) {
- var params outsourcingrequest.OutsourcingOrderAssign
- if err := c.BindJSON(¶ms); err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
- return
- }
- if params.EnterpriseID == 0 || params.OrderID == 0 && len(params.OrderIDs) == 0 {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟缂哄け")
- return
- }
- if params.OrderID != 0 && len(params.OrderIDs) != 0 {
- utils.ResponseFormat(c, code.RequestParamError, "涓嶈兘鍚屾椂浼爋rderID鍜宱rderIDs")
- return
- }
- enterprise, err := models.NewOutsourcingEnterpriseSearch().SetID(params.EnterpriseID).First()
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鏌ユ壘浼佷笟澶辫触")
- return
- }
- if params.OrderID != 0 {
- order, err := models.NewOutsourcingOrderSearch().SetID(params.OrderID).First()
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鏌ユ壘璁㈠崟澶辫触")
- return
- }
- if order.Status != constvar.OutsourcingOrderStatusCreate || order.EnterpriseID != 0 {
- utils.ResponseFormat(c, code.RequestParamError, "璇ヨ鍗曞凡鍒嗛厤浼佷笟锛岃妫�鏌�")
- return
- }
- } else {
- for _, orderID := range params.OrderIDs {
- order, err := models.NewOutsourcingOrderSearch().SetID(orderID).First()
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鏌ユ壘璁㈠崟澶辫触")
- return
- }
- if order.Status != constvar.OutsourcingOrderStatusCreate || order.EnterpriseID != 0 {
- utils.ResponseFormat(c, code.RequestParamError, "瀛樺湪宸插垎閰嶄紒涓氱殑璁㈠崟锛岃妫�鏌�")
- return
- }
- }
- }
-
- err = model.WithTransaction(func(db *gorm.DB) error {
- err = models.NewOutsourcingOrderSearch().SetID(params.OrderID).SetIDs(params.OrderIDs).UpdateByMap(map[string]interface{}{
- "enterprise_id": enterprise.ID,
- "enterprise_name": enterprise.Name,
- "enterprise_type": enterprise.EnterpriseType,
- "status": constvar.OutsourcingOrderStatusAssigned,
- })
- if err != nil {
- return err
- }
- err = models.NewOutsourcingOrderProductSearch().SetOutsourcingOrderID(params.OrderID).SetOutsourcingOrderIDs(params.OrderIDs).UpdateByMap(map[string]interface{}{
- "enterprise_id": enterprise.ID,
- })
- return err
- })
- if err != nil {
- utils.ResponseFormat(c, code.InternalError, "鍒嗛厤澶辫触")
- return
- }
- utils.ResponseFormat(c, code.Success, nil)
-}
-
-// SaveMaterialApply
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 淇濆瓨鐗╂枡鐢宠鍗�
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Param object body outsourcingrequest.SaveMaterialApply true "鍙傛暟"
-// @Success 200 {object} utils.Response{} "鎴愬姛"
-// @Router /outsourcing/order/saveMaterialApply [post]
-func (slf *OutsourcingController) SaveMaterialApply(c *gin.Context) {
- var params outsourcingrequest.SaveMaterialApply
- if err := c.BindJSON(¶ms); err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
- return
- }
- if len(params.ApplyList) == 0 {
- utils.ResponseFormat(c, code.RequestParamError, "鐗╂枡鐢宠涓嶈兘涓虹┖")
- return
- }
- var apply []*models.OutsourcingMaterialApply
- err := structx.AssignTo(params.ApplyList, &apply)
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鏁版嵁杞崲澶辫触")
- return
- }
- err = model.WithTransaction(func(db *gorm.DB) error {
- err = models.NewOutsourcingMaterialApplySearch().SetOrm(db).CreateBatch(apply)
- if err != nil {
- return err
- }
- err = models.NewOutsourcingOrderSearch().SetOrm(db).SetNumber(params.ApplyList[0].OutsourcingOrderNumber).
- UpdateByMap(map[string]interface{}{"status": constvar.OutsourcingOrderStatusMaterialApplying})
- return err
- })
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "淇濆瓨澶辫触")
- return
- }
-
- utils.ResponseFormat(c, code.Success, "淇濆瓨鎴愬姛")
-}
-
-// GetMaterialApplyList
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 鑾峰彇鐗╂枡鐢宠鍗�
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Param object body outsourcingrequest.GetMaterialApplyList true "鍙傛暟"
-// @Success 200 {object} utils.ResponseList{[]models.OutsourcingMaterialApply} "鎴愬姛"
-// @Router /outsourcing/order/getMaterialApplyList [post]
-func (slf *OutsourcingController) GetMaterialApplyList(c *gin.Context) {
- var params outsourcingrequest.GetMaterialApplyList
- if err := c.BindJSON(¶ms); err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
- return
- }
- find, err := models.NewOutsourcingMaterialApplySearch().SetOutsourcingOrderNumber(params.Number).FindNotTotal()
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
- return
- }
- utils.ResponseFormat(c, code.Success, find)
-}
-
-// ChangeStatus
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 淇敼鐘舵��
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Param object body outsourcingrequest.ChangeStatus true "鍙傛暟"
-// @Success 200 {object} utils.Response "鎴愬姛"
-// @Router /outsourcing/order/changeStatus [post]
-func (slf *OutsourcingController) ChangeStatus(c *gin.Context) {
- var params outsourcingrequest.ChangeStatus
- if err := c.BindJSON(¶ms); err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
- return
- }
- //闄愬畾鐘舵�佸弬鏁�
- if params.Status == constvar.OutsourcingOrderStatusMaterialExamineRefused ||
- params.Status == constvar.OutsourcingOrderStatusProducing ||
- params.Status == constvar.OutsourcingOrderStatusFinish ||
- params.Status == constvar.OutsourcingOrderStatusReceiveFinish {
- m := make(map[string]interface{})
- m["status"] = params.Status
- m["reason"] = params.Reason
- err := models.NewOutsourcingOrderSearch().SetNumber(params.OutsourcingOrderNumber).UpdateByMap(m)
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鐘舵�佹洿鏂板け璐�")
- return
- }
- utils.ResponseFormat(c, code.Success, "鐘舵�佹洿鏂版垚鍔�")
- return
- }
- utils.ResponseFormat(c, code.RequestParamError, "鐘舵�佸弬鏁颁笉姝g‘")
-}
-
-// GetDeliveryList
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 鑾峰彇鍙戣揣鍒楄〃
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Param object body outsourcingrequest.GetDeliveryList true "鍙傛暟"
-// @Success 200 {object} utils.ResponseList{[]models.OutsourcingOrderDeliveryDetails} "鎴愬姛"
-// @Router /outsourcing/order/deliveryList [post]
-func (slf *OutsourcingController) GetDeliveryList(c *gin.Context) {
- var params outsourcingrequest.GetDeliveryList
- if err := c.BindJSON(¶ms); err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
- return
- }
-
- _, err := models.NewOutsourcingOrderSearch().SetID(params.OutsourcingOrderID).First()
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "璁㈠崟涓嶅瓨鍦�")
- return
- }
-
- list, err := models.NewOutsourcingOrderDeliveryDetailsSearch().
- SetOutsourcingOrderID(params.OutsourcingOrderID).
- SetIsReceived(params.IsReceived).
- SetPreload(true).
- SetOrder("id desc").
- FindNotTotal()
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
- return
- }
- utils.ResponseFormat(c, code.Success, list)
-}
-
-// ConfirmReceipt
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 濮斿鍏ュ簱 纭鍏ュ簱
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Param object body outsourcingrequest.ConfirmDeliveryList true "鍙傛暟"
-// @Success 200 {object} utils.ResponseList{[]models.OutsourcingOrderDeliveryDetails} "鎴愬姛"
-// @Router /outsourcing/order/confirmReceipt [post]
-func (slf *OutsourcingController) ConfirmReceipt(c *gin.Context) {
- var params outsourcingrequest.ConfirmDeliveryList
- if err := c.BindJSON(¶ms); err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
- return
- }
-
- outsourcingOrder, err := models.NewOutsourcingOrderSearch().SetID(params.OutsourcingOrderID).First()
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "璁㈠崟涓嶅瓨鍦�")
- return
- }
-
- list, err := models.NewOutsourcingOrderDeliveryDetailsSearch().
- SetOutsourcingOrderID(params.OutsourcingOrderID).
- SetIds(params.OutsourcingOrderDeliveryDetailsIds).
- SetPreload(true).
- SetOrder("id desc").
- FindNotTotal()
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
- return
- }
-
- operationList := make([]*inventory_order.OperationList, 0)
- products := make([]*inventory_order.OperationProduct, 0, len(list))
- ids := make([]uint, 0, len(list))
- for _, item := range list {
- products = append(products, &inventory_order.OperationProduct{
- ProductNumber: item.OutsourcingOrderProduct.ProductId,
- Amount: item.SendAmount.IntPart(),
- })
- ids = append(ids, item.ID)
- }
- var ol inventory_order.OperationList
- ol.SourceNumber = outsourcingOrder.Number
- ol.Products = products
- ol.SalesDetailsNumber = outsourcingOrder.SalesDetailsNumber
- operationList = append(operationList, &ol)
- client := inventory_order.NewInventoryOrderServiceClient(purchase_wms.PurchaseConn)
- _, err = client.CreateOperationList(c, &inventory_order.CreateOperationListRequest{
- OperationType: 1,
- Source: "APS_OUTSOURCING_RECEIVE",
- List: operationList,
- OperationSource: common.OperationSource_OperationSourceOutsourcing,
- WarehouseId: params.WarehouseId,
- })
- if err != nil {
- logx.Errorf("outsourcing confirmReceipt CreateOperationList failed: %v", err)
- utils.ResponseFormat(c, code.InternalError, "GRPC璋冪敤閿欒")
- return
- }
-
- err = models.NewOutsourcingOrderDeliveryDetailsSearch().
- SetOutsourcingOrderID(params.OutsourcingOrderID).
- SetIds(params.OutsourcingOrderDeliveryDetailsIds).UpdateByMap(map[string]interface{}{"is_received": constvar.BoolTypeTrue})
- if err != nil {
- logx.Errorf("outsourcing confirmReceipt CreateOperationList success but update receive status failed: %v, params:%+v", err, params)
- utils.ResponseFormat(c, code.SaveFail, "鏇存敼鐘舵�佸け璐�")
- return
- }
- utils.ResponseFormat(c, code.Success, nil)
-}
-
-// GetInventoryInputDetails
-// @Tags 濮斿浼佷笟绠$悊
-// @Summary 鑾峰彇濮斿鍏ュ簱鏄庣粏
-// @Produce application/json
-// @Param Authorization header string true "token"
-// @Param object body outsourcingrequest.GetInventoryInputDetails true "鍙傛暟"
-// @Success 200 {object} utils.ResponseList{[]response.OutsourcingInputItem} "鎴愬姛"
-// @Router /outsourcing/order/getInventoryInputDetails [post]
-func (slf *OutsourcingController) GetInventoryInputDetails(c *gin.Context) {
- var params outsourcingrequest.GetInventoryInputDetails
- if err := c.BindJSON(¶ms); err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
- return
- }
-
- outsourcingOrder, err := models.NewOutsourcingOrderSearch().SetID(params.OutsourcingOrderID).First()
- if err != nil {
- utils.ResponseFormat(c, code.RequestParamError, "璁㈠崟涓嶅瓨鍦�")
- return
- }
-
- client := purchase_wms.NewPurchaseServiceClient(purchase_wms.PurchaseConn)
- resp, err := client.SrmGetOperationInfo(c, &purchase_wms.SrmGetOperationInfoRequest{
- Number: outsourcingOrder.Number,
- OperationSource: common.OperationSource_OperationSourceOutsourcing,
- SalesDetailsNumber: outsourcingOrder.SalesDetailsNumber,
- })
- if err != nil {
- logx.Errorf("SrmGetOperationInfo err:%v", err)
- utils.ResponseFormat(c, code.Success, nil)
- return
- }
-
- orderProducts, err := models.NewOutsourcingOrderProductSearch().SetOutsourcingOrderID(params.OutsourcingOrderID).FindNotTotal()
- if err != nil {
- utils.ResponseFormat(c, code.InternalError, "鏌ヨ璁㈠崟浜у搧澶辫触")
- return
- }
- productMap := models.OutsourcingOrderProductMap(orderProducts)
- list := make([]*response.OutsourcingInputItem, 0, len(resp.Operations))
- for _, v := range resp.Operations {
- if productMap[v.ProductId] == nil {
- continue
- }
- list = append(list, &response.OutsourcingInputItem{
- Number: v.Number,
- ProductId: v.ProductId,
- ProductName: v.ProductName,
- OrderAmount: productMap[v.ProductId].Amount,
- InputAmount: v.Amount,
- Specs: productMap[v.ProductId].Specs,
- Type: productMap[v.ProductId].Type,
- Unit: productMap[v.ProductId].Unit,
- Status: v.Status,
- CreateTime: v.OverTime,
- })
- }
- utils.ResponseFormat(c, code.Success, list)
-
-}
+//
+//// OutsourcingOrderList
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 濮斿璁㈠崟鍒楄〃
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Param object query outsourcingrequest.OutsourcingOrderList true "鏌ヨ鍙傛暟"
+//// @Success 200 {object} utils.ResponseList{data=[]models.OutsourcingOrder} "鎴愬姛"
+//// @Router /outsourcing/order/list [get]
+//func (slf *OutsourcingController) OutsourcingOrderList(c *gin.Context) {
+// var params outsourcingrequest.OutsourcingOrderList
+// if err := c.BindQuery(¶ms); err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+// return
+// }
+// list, total, err := models.NewOutsourcingOrderSearch().SetPage(params.Page, params.PageSize).SetKeyword(params.Keyword).SetOrder("id desc").Find()
+// if err != nil {
+// utils.ResponseFormat(c, code.InternalError, "鏌ヨ閿欒")
+// return
+// }
+// utils.ResponseFormatList(c, code.Success, list, int(total))
+//}
+//
+//// OrderOverview
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 璁㈠崟缁熻
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Success 200 {object} utils.ResponseList{data=outsourcingrequest.OutsourcingOrderOverview} "鎴愬姛"
+//// @Router /outsourcing/order/overview [get]
+//func (slf *OutsourcingController) OrderOverview(c *gin.Context) {
+// result, err := models.NewOutsourcingOrderSearch().CountGroupByStatus()
+// if err != nil {
+// utils.ResponseFormat(c, code.InternalError, "鏌ヨ閿欒")
+// return
+// }
+// resp := &outsourcingrequest.OutsourcingOrderOverview{}
+// for _, v := range result {
+// resp.Total += v.Total
+// status := constvar.OutsourcingOrderStatus(v.Status)
+// if status == constvar.OutsourcingOrderStatusCreate {
+// resp.WaitAssigned += v.Total
+// } else {
+// resp.HasAssigned += v.Total
+// }
+// }
+// utils.ResponseFormat(c, code.Success, resp)
+//}
+//
+//// OutsourcingOrderProductList
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 濮斿璁㈠崟浜у搧鍒楄〃
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Param object query outsourcingrequest.OutsourcingOrderProductList true "鏌ヨ鍙傛暟"
+//// @Success 200 {object} utils.ResponseList{data=[]models.OutsourcingOrderProduct} "鎴愬姛"
+//// @Router /outsourcing/order/productList [get]
+//func (slf *OutsourcingController) OutsourcingOrderProductList(c *gin.Context) {
+// var params outsourcingrequest.OutsourcingOrderProductList
+// if err := c.BindQuery(¶ms); err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+// return
+// }
+// if params.OutsourcingOrderId == 0 {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟缂哄け")
+// return
+// }
+// list, total, err := models.NewOutsourcingOrderProductSearch().SetPage(params.Page, params.PageSize).SetOutsourcingOrderID(params.OutsourcingOrderId).SetOrder("id desc").Find()
+// if err != nil {
+// utils.ResponseFormat(c, code.InternalError, "鏌ヨ閿欒")
+// return
+// }
+// utils.ResponseFormatList(c, code.Success, list, int(total))
+//}
+//
+//// OutsourcingEnterpriseProductList
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 濮斿浼佷笟渚涜揣鍘嗗彶
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Param object query outsourcingrequest.OutsourcingEnterpriseProductList true "鏌ヨ鍙傛暟"
+//// @Success 200 {object} utils.ResponseList{data=[]models.OutsourcingOrderProduct} "鎴愬姛"
+//// @Router /outsourcing/enterprise/productList [get]
+//func (slf *OutsourcingController) OutsourcingEnterpriseProductList(c *gin.Context) {
+// var params outsourcingrequest.OutsourcingEnterpriseProductList
+// if err := c.BindQuery(¶ms); err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+// return
+// }
+// if params.EnterpriseID == 0 {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟缂哄け")
+// return
+// }
+// list, total, err := models.NewOutsourcingOrderProductSearch().SetPage(params.Page, params.PageSize).SetEnterpriseID(params.EnterpriseID).SetOrder("id desc").Find()
+// if err != nil {
+// utils.ResponseFormat(c, code.InternalError, "鏌ヨ閿欒")
+// return
+// }
+// utils.ResponseFormatList(c, code.Success, list, int(total))
+//}
+//
+//// OutsourcingOrderAssign
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 濮斿璁㈠崟鍒嗛厤浼佷笟
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Param object body outsourcingrequest.OutsourcingOrderAssign true "鏌ヨ鍙傛暟"
+//// @Success 200 {object} contextx.Response{} "鎴愬姛"
+//// @Router /outsourcing/order/assign [post]
+//func (slf *OutsourcingController) OutsourcingOrderAssign(c *gin.Context) {
+// var params outsourcingrequest.OutsourcingOrderAssign
+// if err := c.BindJSON(¶ms); err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+// return
+// }
+// if params.EnterpriseID == 0 || params.OrderID == 0 && len(params.OrderIDs) == 0 {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟缂哄け")
+// return
+// }
+// if params.OrderID != 0 && len(params.OrderIDs) != 0 {
+// utils.ResponseFormat(c, code.RequestParamError, "涓嶈兘鍚屾椂浼爋rderID鍜宱rderIDs")
+// return
+// }
+// enterprise, err := models.NewOutsourcingEnterpriseSearch().SetID(params.EnterpriseID).First()
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鏌ユ壘浼佷笟澶辫触")
+// return
+// }
+// if params.OrderID != 0 {
+// order, err := models.NewOutsourcingOrderSearch().SetID(params.OrderID).First()
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鏌ユ壘璁㈠崟澶辫触")
+// return
+// }
+// if order.Status != constvar.OutsourcingOrderStatusCreate || order.EnterpriseID != 0 {
+// utils.ResponseFormat(c, code.RequestParamError, "璇ヨ鍗曞凡鍒嗛厤浼佷笟锛岃妫�鏌�")
+// return
+// }
+// } else {
+// for _, orderID := range params.OrderIDs {
+// order, err := models.NewOutsourcingOrderSearch().SetID(orderID).First()
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鏌ユ壘璁㈠崟澶辫触")
+// return
+// }
+// if order.Status != constvar.OutsourcingOrderStatusCreate || order.EnterpriseID != 0 {
+// utils.ResponseFormat(c, code.RequestParamError, "瀛樺湪宸插垎閰嶄紒涓氱殑璁㈠崟锛岃妫�鏌�")
+// return
+// }
+// }
+// }
+//
+// err = model.WithTransaction(func(db *gorm.DB) error {
+// err = models.NewOutsourcingOrderSearch().SetID(params.OrderID).SetIDs(params.OrderIDs).UpdateByMap(map[string]interface{}{
+// "enterprise_id": enterprise.ID,
+// "enterprise_name": enterprise.Name,
+// "enterprise_type": enterprise.EnterpriseType,
+// "status": constvar.OutsourcingOrderStatusAssigned,
+// })
+// if err != nil {
+// return err
+// }
+// err = models.NewOutsourcingOrderProductSearch().SetOutsourcingOrderID(params.OrderID).SetOutsourcingOrderIDs(params.OrderIDs).UpdateByMap(map[string]interface{}{
+// "enterprise_id": enterprise.ID,
+// })
+// return err
+// })
+// if err != nil {
+// utils.ResponseFormat(c, code.InternalError, "鍒嗛厤澶辫触")
+// return
+// }
+// utils.ResponseFormat(c, code.Success, nil)
+//}
+//
+//// SaveMaterialApply
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 淇濆瓨鐗╂枡鐢宠鍗�
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Param object body outsourcingrequest.SaveMaterialApply true "鍙傛暟"
+//// @Success 200 {object} utils.Response{} "鎴愬姛"
+//// @Router /outsourcing/order/saveMaterialApply [post]
+//func (slf *OutsourcingController) SaveMaterialApply(c *gin.Context) {
+// var params outsourcingrequest.SaveMaterialApply
+// if err := c.BindJSON(¶ms); err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+// return
+// }
+// if len(params.ApplyList) == 0 {
+// utils.ResponseFormat(c, code.RequestParamError, "鐗╂枡鐢宠涓嶈兘涓虹┖")
+// return
+// }
+// var apply []*models.OutsourcingMaterialApply
+// err := structx.AssignTo(params.ApplyList, &apply)
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鏁版嵁杞崲澶辫触")
+// return
+// }
+// err = model.WithTransaction(func(db *gorm.DB) error {
+// err = models.NewOutsourcingMaterialApplySearch().SetOrm(db).CreateBatch(apply)
+// if err != nil {
+// return err
+// }
+// err = models.NewOutsourcingOrderSearch().SetOrm(db).SetNumber(params.ApplyList[0].OutsourcingOrderNumber).
+// UpdateByMap(map[string]interface{}{"status": constvar.OutsourcingOrderStatusMaterialApplying})
+// return err
+// })
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "淇濆瓨澶辫触")
+// return
+// }
+//
+// utils.ResponseFormat(c, code.Success, "淇濆瓨鎴愬姛")
+//}
+//
+//// GetMaterialApplyList
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 鑾峰彇鐗╂枡鐢宠鍗�
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Param object body outsourcingrequest.GetMaterialApplyList true "鍙傛暟"
+//// @Success 200 {object} utils.ResponseList{[]models.OutsourcingMaterialApply} "鎴愬姛"
+//// @Router /outsourcing/order/getMaterialApplyList [post]
+//func (slf *OutsourcingController) GetMaterialApplyList(c *gin.Context) {
+// var params outsourcingrequest.GetMaterialApplyList
+// if err := c.BindJSON(¶ms); err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+// return
+// }
+// find, err := models.NewOutsourcingMaterialApplySearch().SetOutsourcingOrderNumber(params.Number).FindNotTotal()
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
+// return
+// }
+// utils.ResponseFormat(c, code.Success, find)
+//}
+//
+//// ChangeStatus
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 淇敼鐘舵��
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Param object body outsourcingrequest.ChangeStatus true "鍙傛暟"
+//// @Success 200 {object} utils.Response "鎴愬姛"
+//// @Router /outsourcing/order/changeStatus [post]
+//func (slf *OutsourcingController) ChangeStatus(c *gin.Context) {
+// var params outsourcingrequest.ChangeStatus
+// if err := c.BindJSON(¶ms); err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+// return
+// }
+// //闄愬畾鐘舵�佸弬鏁�
+// if params.Status == constvar.OutsourcingOrderStatusMaterialExamineRefused ||
+// params.Status == constvar.OutsourcingOrderStatusProducing ||
+// params.Status == constvar.OutsourcingOrderStatusFinish ||
+// params.Status == constvar.OutsourcingOrderStatusReceiveFinish {
+// m := make(map[string]interface{})
+// m["status"] = params.Status
+// m["reason"] = params.Reason
+// err := models.NewOutsourcingOrderSearch().SetNumber(params.OutsourcingOrderNumber).UpdateByMap(m)
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鐘舵�佹洿鏂板け璐�")
+// return
+// }
+// utils.ResponseFormat(c, code.Success, "鐘舵�佹洿鏂版垚鍔�")
+// return
+// }
+// utils.ResponseFormat(c, code.RequestParamError, "鐘舵�佸弬鏁颁笉姝g‘")
+//}
+//
+//// GetDeliveryList
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 鑾峰彇鍙戣揣鍒楄〃
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Param object body outsourcingrequest.GetDeliveryList true "鍙傛暟"
+//// @Success 200 {object} utils.ResponseList{[]models.OutsourcingOrderDeliveryDetails} "鎴愬姛"
+//// @Router /outsourcing/order/deliveryList [post]
+//func (slf *OutsourcingController) GetDeliveryList(c *gin.Context) {
+// var params outsourcingrequest.GetDeliveryList
+// if err := c.BindJSON(¶ms); err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+// return
+// }
+//
+// _, err := models.NewOutsourcingOrderSearch().SetID(params.OutsourcingOrderID).First()
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "璁㈠崟涓嶅瓨鍦�")
+// return
+// }
+//
+// list, err := models.NewOutsourcingOrderDeliveryDetailsSearch().
+// SetOutsourcingOrderID(params.OutsourcingOrderID).
+// SetIsReceived(params.IsReceived).
+// SetPreload(true).
+// SetOrder("id desc").
+// FindNotTotal()
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
+// return
+// }
+// utils.ResponseFormat(c, code.Success, list)
+//}
+//
+//// ConfirmReceipt
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 濮斿鍏ュ簱 纭鍏ュ簱
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Param object body outsourcingrequest.ConfirmDeliveryList true "鍙傛暟"
+//// @Success 200 {object} utils.ResponseList{[]models.OutsourcingOrderDeliveryDetails} "鎴愬姛"
+//// @Router /outsourcing/order/confirmReceipt [post]
+//func (slf *OutsourcingController) ConfirmReceipt(c *gin.Context) {
+// var params outsourcingrequest.ConfirmDeliveryList
+// if err := c.BindJSON(¶ms); err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+// return
+// }
+//
+// outsourcingOrder, err := models.NewOutsourcingOrderSearch().SetID(params.OutsourcingOrderID).First()
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "璁㈠崟涓嶅瓨鍦�")
+// return
+// }
+//
+// list, err := models.NewOutsourcingOrderDeliveryDetailsSearch().
+// SetOutsourcingOrderID(params.OutsourcingOrderID).
+// SetIds(params.OutsourcingOrderDeliveryDetailsIds).
+// SetPreload(true).
+// SetOrder("id desc").
+// FindNotTotal()
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
+// return
+// }
+//
+// operationList := make([]*inventory_order.OperationList, 0)
+// products := make([]*inventory_order.OperationProduct, 0, len(list))
+// ids := make([]uint, 0, len(list))
+// for _, item := range list {
+// products = append(products, &inventory_order.OperationProduct{
+// ProductNumber: item.OutsourcingOrderProduct.ProductId,
+// Amount: item.SendAmount.IntPart(),
+// })
+// ids = append(ids, item.ID)
+// }
+// var ol inventory_order.OperationList
+// ol.SourceNumber = outsourcingOrder.Number
+// ol.Products = products
+// ol.SalesDetailsNumber = outsourcingOrder.SalesDetailsNumber
+// operationList = append(operationList, &ol)
+// client := inventory_order.NewInventoryOrderServiceClient(purchase_wms.PurchaseConn)
+// _, err = client.CreateOperationList(c, &inventory_order.CreateOperationListRequest{
+// OperationType: 1,
+// Source: "APS_OUTSOURCING_RECEIVE",
+// List: operationList,
+// OperationSource: common.OperationSource_OperationSourceOutsourcing,
+// WarehouseId: params.WarehouseId,
+// })
+// if err != nil {
+// logx.Errorf("outsourcing confirmReceipt CreateOperationList failed: %v", err)
+// utils.ResponseFormat(c, code.InternalError, "GRPC璋冪敤閿欒")
+// return
+// }
+//
+// err = models.NewOutsourcingOrderDeliveryDetailsSearch().
+// SetOutsourcingOrderID(params.OutsourcingOrderID).
+// SetIds(params.OutsourcingOrderDeliveryDetailsIds).UpdateByMap(map[string]interface{}{"is_received": constvar.BoolTypeTrue})
+// if err != nil {
+// logx.Errorf("outsourcing confirmReceipt CreateOperationList success but update receive status failed: %v, params:%+v", err, params)
+// utils.ResponseFormat(c, code.SaveFail, "鏇存敼鐘舵�佸け璐�")
+// return
+// }
+// utils.ResponseFormat(c, code.Success, nil)
+//}
+//
+//// GetInventoryInputDetails
+//// @Tags 濮斿浼佷笟绠$悊
+//// @Summary 鑾峰彇濮斿鍏ュ簱鏄庣粏
+//// @Produce application/json
+//// @Param Authorization header string true "token"
+//// @Param object body outsourcingrequest.GetInventoryInputDetails true "鍙傛暟"
+//// @Success 200 {object} utils.ResponseList{[]response.OutsourcingInputItem} "鎴愬姛"
+//// @Router /outsourcing/order/getInventoryInputDetails [post]
+//func (slf *OutsourcingController) GetInventoryInputDetails(c *gin.Context) {
+// var params outsourcingrequest.GetInventoryInputDetails
+// if err := c.BindJSON(¶ms); err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+// return
+// }
+//
+// outsourcingOrder, err := models.NewOutsourcingOrderSearch().SetID(params.OutsourcingOrderID).First()
+// if err != nil {
+// utils.ResponseFormat(c, code.RequestParamError, "璁㈠崟涓嶅瓨鍦�")
+// return
+// }
+//
+// client := purchase_wms.NewPurchaseServiceClient(purchase_wms.PurchaseConn)
+// resp, err := client.SrmGetOperationInfo(c, &purchase_wms.SrmGetOperationInfoRequest{
+// Number: outsourcingOrder.Number,
+// OperationSource: common.OperationSource_OperationSourceOutsourcing,
+// SalesDetailsNumber: outsourcingOrder.SalesDetailsNumber,
+// })
+// if err != nil {
+// logx.Errorf("SrmGetOperationInfo err:%v", err)
+// utils.ResponseFormat(c, code.Success, nil)
+// return
+// }
+//
+// orderProducts, err := models.NewOutsourcingOrderProductSearch().SetOutsourcingOrderID(params.OutsourcingOrderID).FindNotTotal()
+// if err != nil {
+// utils.ResponseFormat(c, code.InternalError, "鏌ヨ璁㈠崟浜у搧澶辫触")
+// return
+// }
+// productMap := models.OutsourcingOrderProductMap(orderProducts)
+// list := make([]*response.OutsourcingInputItem, 0, len(resp.Operations))
+// for _, v := range resp.Operations {
+// if productMap[v.ProductId] == nil {
+// continue
+// }
+// list = append(list, &response.OutsourcingInputItem{
+// Number: v.Number,
+// ProductId: v.ProductId,
+// ProductName: v.ProductName,
+// OrderAmount: productMap[v.ProductId].Amount,
+// InputAmount: v.Amount,
+// Specs: productMap[v.ProductId].Specs,
+// Type: productMap[v.ProductId].Type,
+// Unit: productMap[v.ProductId].Unit,
+// Status: v.Status,
+// CreateTime: v.OverTime,
+// })
+// }
+// utils.ResponseFormat(c, code.Success, list)
+//
+//}
--
Gitblit v1.8.0