From 0ddbf564f6e2a33c4f73141423ad0905da4278d0 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 19 四月 2024 16:36:33 +0800
Subject: [PATCH] 增加查询字段接口,保存字典接口

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