liujiandao
2024-03-14 99e5ccc3e971607a997af7b3f700d397049d300a
查询销售明细单tab页信息
8个文件已修改
773 ■■■■ 已修改文件
api/v1/product.go 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/salesDetails.go 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/response/salesDetails.go 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
proto/product.proto 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
proto/product/product.pb.go 403 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/product.go
@@ -174,9 +174,15 @@
        wo.WorkOrderStatus = orderInfo.WorkOrderStatus
        wo.StartTime = orderInfo.StartTime
        wo.EndTime = orderInfo.EndTime
        wo.ProductId = orderInfo.ProductId
        wo.Specs = orderInfo.Specs
        wo.Unit = orderInfo.Unit
        wo.Amount = orderInfo.Amount
        wo.FinishAmount = orderInfo.FinishAmount
        list = append(list, wo)
    }
    result.MakeInfo = list
    var purchaseInfo []response.Purchase
    for _, pl := range info.PurchaseList {
        var p response.Purchase
@@ -185,8 +191,32 @@
        p.PurchaseName = pl.PurchaseName
        p.PurchaseNumber = pl.PurchaseNumber
        p.SupplierName = pl.SupplierName
        p.ProductId = pl.ProductId
        p.ProductName = pl.ProductName
        p.Specs = pl.Specs
        p.Unit = pl.Unit
        p.Amount = pl.Amount
        p.FinishAmount = pl.FinishAmount
        purchaseInfo = append(purchaseInfo, p)
    }
    result.PurchaseInfo = purchaseInfo
    var outsourcingList []response.OutsourcingInfo
    for _, outsourcingInfo := range info.OutsourcingList {
        var oi response.OutsourcingInfo
        oi.OutsourcingId = outsourcingInfo.OutsourcingId
        oi.OutsourcingStatus = outsourcingInfo.OutsourcingStatus
        oi.ProductId = outsourcingInfo.ProductId
        oi.ProductName = outsourcingInfo.ProductName
        oi.SupplierName = outsourcingInfo.SupplierName
        oi.StartTime = outsourcingInfo.StartTime
        oi.EndTime = outsourcingInfo.EndTime
        oi.Specs = outsourcingInfo.Specs
        oi.Unit = outsourcingInfo.Unit
        oi.Amount = outsourcingInfo.Amount
        oi.FinishAmount = outsourcingInfo.FinishAmount
        outsourcingList = append(outsourcingList, oi)
    }
    result.OutsourcingInfo = outsourcingList
    ctx.OkWithDetailed(result)
}
constvar/salesDetails.go
@@ -14,6 +14,8 @@
const (
    WaitConfirmed SalesDetailsStatus = iota + 1 //待确认
    WaitDecompose                               //待分解
    InStock                                     //备货中
    WaitOutbound                                //待出库
    OverOutbound                                //出库完成
    OverCLose                                   //已关闭
docs/docs.go
@@ -10653,16 +10653,22 @@
                1,
                2,
                3,
                4
                4,
                5,
                6
            ],
            "x-enum-comments": {
                "InStock": "备货中",
                "OverCLose": "已关闭",
                "OverOutbound": "出库完成",
                "WaitConfirmed": "待确认",
                "WaitDecompose": "待分解",
                "WaitOutbound": "待出库"
            },
            "x-enum-varnames": [
                "WaitConfirmed",
                "WaitDecompose",
                "InStock",
                "WaitOutbound",
                "OverOutbound",
                "OverCLose"
@@ -11994,8 +12000,14 @@
                "profit": {
                    "type": "string"
                },
                "specs": {
                    "type": "string"
                },
                "total": {
                    "type": "number"
                },
                "type": {
                    "type": "string"
                },
                "unit": {
                    "type": "string"
@@ -19324,6 +19336,12 @@
                        "$ref": "#/definitions/response.WorkOrderInfo"
                    }
                },
                "outsourcingInfo": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/response.OutsourcingInfo"
                    }
                },
                "purchaseInfo": {
                    "type": "array",
                    "items": {
@@ -19433,6 +19451,49 @@
                }
            }
        },
        "response.OutsourcingInfo": {
            "type": "object",
            "properties": {
                "amount": {
                    "description": "订单数量",
                    "type": "integer"
                },
                "endTime": {
                    "type": "string"
                },
                "finishAmount": {
                    "description": "完成数量",
                    "type": "integer"
                },
                "outsourcingId": {
                    "description": "委外订单id",
                    "type": "string"
                },
                "outsourcingStatus": {
                    "type": "string"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "specs": {
                    "description": "物料规格",
                    "type": "string"
                },
                "startTime": {
                    "type": "string"
                },
                "supplierName": {
                    "type": "string"
                },
                "unit": {
                    "description": "单位",
                    "type": "string"
                }
            }
        },
        "response.PlanResponse": {
            "type": "object",
            "properties": {
@@ -19473,7 +19534,18 @@
            "type": "object",
            "properties": {
                "amount": {
                    "description": "订单数量",
                    "type": "integer"
                },
                "finishAmount": {
                    "description": "完成数量",
                    "type": "integer"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "purchaseName": {
                    "type": "string"
@@ -19481,10 +19553,18 @@
                "purchaseNumber": {
                    "type": "string"
                },
                "specs": {
                    "description": "物料规格",
                    "type": "string"
                },
                "status": {
                    "type": "integer"
                },
                "supplierName": {
                    "type": "string"
                },
                "unit": {
                    "description": "单位",
                    "type": "string"
                }
            }
@@ -19798,8 +19878,16 @@
        "response.WorkOrderInfo": {
            "type": "object",
            "properties": {
                "amount": {
                    "description": "订单数量",
                    "type": "integer"
                },
                "endTime": {
                    "type": "string"
                },
                "finishAmount": {
                    "description": "完成数量",
                    "type": "integer"
                },
                "orderId": {
                    "type": "string"
@@ -19807,12 +19895,23 @@
                "orderStatus": {
                    "type": "string"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "specs": {
                    "description": "物料规格",
                    "type": "string"
                },
                "startTime": {
                    "type": "string"
                },
                "unit": {
                    "description": "单位",
                    "type": "string"
                },
                "workOrderId": {
                    "type": "string"
                },
docs/swagger.json
@@ -10641,16 +10641,22 @@
                1,
                2,
                3,
                4
                4,
                5,
                6
            ],
            "x-enum-comments": {
                "InStock": "备货中",
                "OverCLose": "已关闭",
                "OverOutbound": "出库完成",
                "WaitConfirmed": "待确认",
                "WaitDecompose": "待分解",
                "WaitOutbound": "待出库"
            },
            "x-enum-varnames": [
                "WaitConfirmed",
                "WaitDecompose",
                "InStock",
                "WaitOutbound",
                "OverOutbound",
                "OverCLose"
@@ -11982,8 +11988,14 @@
                "profit": {
                    "type": "string"
                },
                "specs": {
                    "type": "string"
                },
                "total": {
                    "type": "number"
                },
                "type": {
                    "type": "string"
                },
                "unit": {
                    "type": "string"
@@ -19312,6 +19324,12 @@
                        "$ref": "#/definitions/response.WorkOrderInfo"
                    }
                },
                "outsourcingInfo": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/response.OutsourcingInfo"
                    }
                },
                "purchaseInfo": {
                    "type": "array",
                    "items": {
@@ -19421,6 +19439,49 @@
                }
            }
        },
        "response.OutsourcingInfo": {
            "type": "object",
            "properties": {
                "amount": {
                    "description": "订单数量",
                    "type": "integer"
                },
                "endTime": {
                    "type": "string"
                },
                "finishAmount": {
                    "description": "完成数量",
                    "type": "integer"
                },
                "outsourcingId": {
                    "description": "委外订单id",
                    "type": "string"
                },
                "outsourcingStatus": {
                    "type": "string"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "specs": {
                    "description": "物料规格",
                    "type": "string"
                },
                "startTime": {
                    "type": "string"
                },
                "supplierName": {
                    "type": "string"
                },
                "unit": {
                    "description": "单位",
                    "type": "string"
                }
            }
        },
        "response.PlanResponse": {
            "type": "object",
            "properties": {
@@ -19461,7 +19522,18 @@
            "type": "object",
            "properties": {
                "amount": {
                    "description": "订单数量",
                    "type": "integer"
                },
                "finishAmount": {
                    "description": "完成数量",
                    "type": "integer"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "purchaseName": {
                    "type": "string"
@@ -19469,10 +19541,18 @@
                "purchaseNumber": {
                    "type": "string"
                },
                "specs": {
                    "description": "物料规格",
                    "type": "string"
                },
                "status": {
                    "type": "integer"
                },
                "supplierName": {
                    "type": "string"
                },
                "unit": {
                    "description": "单位",
                    "type": "string"
                }
            }
@@ -19786,8 +19866,16 @@
        "response.WorkOrderInfo": {
            "type": "object",
            "properties": {
                "amount": {
                    "description": "订单数量",
                    "type": "integer"
                },
                "endTime": {
                    "type": "string"
                },
                "finishAmount": {
                    "description": "完成数量",
                    "type": "integer"
                },
                "orderId": {
                    "type": "string"
@@ -19795,12 +19883,23 @@
                "orderStatus": {
                    "type": "string"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "specs": {
                    "description": "物料规格",
                    "type": "string"
                },
                "startTime": {
                    "type": "string"
                },
                "unit": {
                    "description": "单位",
                    "type": "string"
                },
                "workOrderId": {
                    "type": "string"
                },
docs/swagger.yaml
@@ -193,14 +193,20 @@
    - 2
    - 3
    - 4
    - 5
    - 6
    type: integer
    x-enum-comments:
      InStock: 备货中
      OverCLose: 已关闭
      OverOutbound: 出库完成
      WaitConfirmed: 待确认
      WaitDecompose: 待分解
      WaitOutbound: 待出库
    x-enum-varnames:
    - WaitConfirmed
    - WaitDecompose
    - InStock
    - WaitOutbound
    - OverOutbound
    - OverCLose
@@ -1134,8 +1140,12 @@
        type: number
      profit:
        type: string
      specs:
        type: string
      total:
        type: number
      type:
        type: string
      unit:
        type: string
    type: object
@@ -6103,6 +6113,10 @@
        items:
          $ref: '#/definitions/response.WorkOrderInfo'
        type: array
      outsourcingInfo:
        items:
          $ref: '#/definitions/response.OutsourcingInfo'
        type: array
      purchaseInfo:
        items:
          $ref: '#/definitions/response.Purchase'
@@ -6173,6 +6187,36 @@
          $ref: '#/definitions/model.OrderType'
        type: array
    type: object
  response.OutsourcingInfo:
    properties:
      amount:
        description: 订单数量
        type: integer
      endTime:
        type: string
      finishAmount:
        description: 完成数量
        type: integer
      outsourcingId:
        description: 委外订单id
        type: string
      outsourcingStatus:
        type: string
      productId:
        type: string
      productName:
        type: string
      specs:
        description: 物料规格
        type: string
      startTime:
        type: string
      supplierName:
        type: string
      unit:
        description: 单位
        type: string
    type: object
  response.PlanResponse:
    properties:
      count:
@@ -6199,14 +6243,28 @@
  response.Purchase:
    properties:
      amount:
        description: 订单数量
        type: integer
      finishAmount:
        description: 完成数量
        type: integer
      productId:
        type: string
      productName:
        type: string
      purchaseName:
        type: string
      purchaseNumber:
        type: string
      specs:
        description: 物料规格
        type: string
      status:
        type: integer
      supplierName:
        type: string
      unit:
        description: 单位
        type: string
    type: object
  response.QuotationResponse:
@@ -6407,16 +6465,30 @@
    type: object
  response.WorkOrderInfo:
    properties:
      amount:
        description: 订单数量
        type: integer
      endTime:
        type: string
      finishAmount:
        description: 完成数量
        type: integer
      orderId:
        type: string
      orderStatus:
        type: string
      productId:
        type: string
      productName:
        type: string
      specs:
        description: 物料规格
        type: string
      startTime:
        type: string
      unit:
        description: 单位
        type: string
      workOrderId:
        type: string
      workOrderStatus:
model/response/salesDetails.go
@@ -1,8 +1,9 @@
package response
type Info struct {
    MakeInfo     []WorkOrderInfo `json:"makeInfo"`
    PurchaseInfo []Purchase      `json:"purchaseInfo"`
    MakeInfo        []WorkOrderInfo   `json:"makeInfo"`
    PurchaseInfo    []Purchase        `json:"purchaseInfo"`
    OutsourcingInfo []OutsourcingInfo `json:"outsourcingInfo"`
}
type WorkOrderInfo struct {
@@ -13,14 +14,38 @@
    WorkOrderStatus string `json:"workOrderStatus"`
    StartTime       string `json:"startTime"`
    EndTime         string `json:"endTime"`
    ProductId       string `json:"productId"`
    Specs           string `json:"specs"`        //物料规格
    Unit            string `json:"unit"`         //单位
    Amount          int64  `json:"amount"`       //订单数量
    FinishAmount    int64  `json:"finishAmount"` //完成数量
}
type Purchase struct {
    PurchaseNumber string `json:"purchaseNumber"`
    PurchaseName   string `json:"purchaseName"`
    SupplierName   string `json:"supplierName"`
    Amount         int64  `json:"amount"`
    Status         int64  `json:"status"`
    ProductId      string `json:"productId"`
    ProductName    string `json:"productName"`
    Specs          string `json:"specs"`        //物料规格
    Unit           string `json:"unit"`         //单位
    Amount         int64  `json:"amount"`       //订单数量
    FinishAmount   int64  `json:"finishAmount"` //完成数量
}
type OutsourcingInfo struct {
    OutsourcingId     string `json:"outsourcingId"` //委外订单id
    ProductId         string `json:"productId"`
    ProductName       string `json:"productName"`
    OutsourcingStatus string `json:"outsourcingStatus"`
    SupplierName      string `json:"supplierName"`
    StartTime         string `json:"startTime"`
    EndTime           string `json:"endTime"`
    Specs             string `json:"specs"`        //物料规格
    Unit              string `json:"unit"`         //单位
    Amount            int64  `json:"amount"`       //订单数量
    FinishAmount      int64  `json:"finishAmount"` //完成数量
}
type ProductInfo struct {
proto/product.proto
@@ -61,19 +61,42 @@
  string WorkOrderStatus = 5;
  string StartTime = 6;
  string EndTime = 7;
  string ProductId = 8;
  string Specs = 9;//物料规格
  string Unit = 10;//单位
  int64 Amount = 11;//订单数量
  int64 FinishAmount = 12;//完成数量
}
message CrmGetPurchaseInfo {
  string PurchaseNumber = 1;
  string PurchaseName = 2;
  string SupplierName = 3;
  int64 Amount = 4;
  int64 Amount = 4;//订单数量
  int64 Status = 5;
  string ProductName = 6;
  string ProductId = 7;
  string Specs = 8;//物料规格
  string Unit = 9;//单位
  int64 FinishAmount = 10;//完成数量
}
message OutsourcingInfo {
  string OutsourcingId = 1;
  string ProductName = 2;
  string OutsourcingStatus = 3;
  string SupplierName = 4;
  string StartTime = 5;
  string EndTime = 6;
  string ProductId = 7;
  string Specs = 8;//物料规格
  string Unit = 9;//单位
  int64 Amount = 10;//订单数量
  int64 FinishAmount = 11;//完成数量
}
message GetProductOrderResponse{
  int32   Code = 1;
  string  Msg = 2;
  repeated WorkOrderInfo List = 3;//制造信息
  repeated CrmGetPurchaseInfo PurchaseList = 4;//采购信息
  repeated WorkOrderInfo List = 1;//制造信息
  repeated CrmGetPurchaseInfo PurchaseList = 2;//采购信息
  repeated OutsourcingInfo OutsourcingList = 3;//委外信息
}
proto/product/product.pb.go
@@ -474,6 +474,11 @@
    WorkOrderStatus string `protobuf:"bytes,5,opt,name=WorkOrderStatus,proto3" json:"WorkOrderStatus,omitempty"`
    StartTime       string `protobuf:"bytes,6,opt,name=StartTime,proto3" json:"StartTime,omitempty"`
    EndTime         string `protobuf:"bytes,7,opt,name=EndTime,proto3" json:"EndTime,omitempty"`
    ProductId       string `protobuf:"bytes,8,opt,name=ProductId,proto3" json:"ProductId,omitempty"`
    Specs           string `protobuf:"bytes,9,opt,name=Specs,proto3" json:"Specs,omitempty"`                 //物料规格
    Unit            string `protobuf:"bytes,10,opt,name=Unit,proto3" json:"Unit,omitempty"`                  //单位
    Amount          int64  `protobuf:"varint,11,opt,name=Amount,proto3" json:"Amount,omitempty"`             //订单数量
    FinishAmount    int64  `protobuf:"varint,12,opt,name=FinishAmount,proto3" json:"FinishAmount,omitempty"` //完成数量
}
func (x *WorkOrderInfo) Reset() {
@@ -557,6 +562,41 @@
    return ""
}
func (x *WorkOrderInfo) GetProductId() string {
    if x != nil {
        return x.ProductId
    }
    return ""
}
func (x *WorkOrderInfo) GetSpecs() string {
    if x != nil {
        return x.Specs
    }
    return ""
}
func (x *WorkOrderInfo) GetUnit() string {
    if x != nil {
        return x.Unit
    }
    return ""
}
func (x *WorkOrderInfo) GetAmount() int64 {
    if x != nil {
        return x.Amount
    }
    return 0
}
func (x *WorkOrderInfo) GetFinishAmount() int64 {
    if x != nil {
        return x.FinishAmount
    }
    return 0
}
type CrmGetPurchaseInfo struct {
    state         protoimpl.MessageState
    sizeCache     protoimpl.SizeCache
@@ -565,8 +605,13 @@
    PurchaseNumber string `protobuf:"bytes,1,opt,name=PurchaseNumber,proto3" json:"PurchaseNumber,omitempty"`
    PurchaseName   string `protobuf:"bytes,2,opt,name=PurchaseName,proto3" json:"PurchaseName,omitempty"`
    SupplierName   string `protobuf:"bytes,3,opt,name=SupplierName,proto3" json:"SupplierName,omitempty"`
    Amount         int64  `protobuf:"varint,4,opt,name=Amount,proto3" json:"Amount,omitempty"`
    Amount         int64  `protobuf:"varint,4,opt,name=Amount,proto3" json:"Amount,omitempty"` //订单数量
    Status         int64  `protobuf:"varint,5,opt,name=Status,proto3" json:"Status,omitempty"`
    ProductName    string `protobuf:"bytes,6,opt,name=ProductName,proto3" json:"ProductName,omitempty"`
    ProductId      string `protobuf:"bytes,7,opt,name=ProductId,proto3" json:"ProductId,omitempty"`
    Specs          string `protobuf:"bytes,8,opt,name=Specs,proto3" json:"Specs,omitempty"`                 //物料规格
    Unit           string `protobuf:"bytes,9,opt,name=Unit,proto3" json:"Unit,omitempty"`                   //单位
    FinishAmount   int64  `protobuf:"varint,10,opt,name=FinishAmount,proto3" json:"FinishAmount,omitempty"` //完成数量
}
func (x *CrmGetPurchaseInfo) Reset() {
@@ -636,21 +681,182 @@
    return 0
}
func (x *CrmGetPurchaseInfo) GetProductName() string {
    if x != nil {
        return x.ProductName
    }
    return ""
}
func (x *CrmGetPurchaseInfo) GetProductId() string {
    if x != nil {
        return x.ProductId
    }
    return ""
}
func (x *CrmGetPurchaseInfo) GetSpecs() string {
    if x != nil {
        return x.Specs
    }
    return ""
}
func (x *CrmGetPurchaseInfo) GetUnit() string {
    if x != nil {
        return x.Unit
    }
    return ""
}
func (x *CrmGetPurchaseInfo) GetFinishAmount() int64 {
    if x != nil {
        return x.FinishAmount
    }
    return 0
}
type OutsourcingInfo struct {
    state         protoimpl.MessageState
    sizeCache     protoimpl.SizeCache
    unknownFields protoimpl.UnknownFields
    OutsourcingId     string `protobuf:"bytes,1,opt,name=OutsourcingId,proto3" json:"OutsourcingId,omitempty"`
    ProductName       string `protobuf:"bytes,2,opt,name=ProductName,proto3" json:"ProductName,omitempty"`
    OutsourcingStatus string `protobuf:"bytes,3,opt,name=OutsourcingStatus,proto3" json:"OutsourcingStatus,omitempty"`
    SupplierName      string `protobuf:"bytes,4,opt,name=SupplierName,proto3" json:"SupplierName,omitempty"`
    StartTime         string `protobuf:"bytes,5,opt,name=StartTime,proto3" json:"StartTime,omitempty"`
    EndTime           string `protobuf:"bytes,6,opt,name=EndTime,proto3" json:"EndTime,omitempty"`
    ProductId         string `protobuf:"bytes,7,opt,name=ProductId,proto3" json:"ProductId,omitempty"`
    Specs             string `protobuf:"bytes,8,opt,name=Specs,proto3" json:"Specs,omitempty"`                 //物料规格
    Unit              string `protobuf:"bytes,9,opt,name=Unit,proto3" json:"Unit,omitempty"`                   //单位
    Amount            int64  `protobuf:"varint,10,opt,name=Amount,proto3" json:"Amount,omitempty"`             //订单数量
    FinishAmount      int64  `protobuf:"varint,11,opt,name=FinishAmount,proto3" json:"FinishAmount,omitempty"` //完成数量
}
func (x *OutsourcingInfo) Reset() {
    *x = OutsourcingInfo{}
    if protoimpl.UnsafeEnabled {
        mi := &file_product_proto_msgTypes[8]
        ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
        ms.StoreMessageInfo(mi)
    }
}
func (x *OutsourcingInfo) String() string {
    return protoimpl.X.MessageStringOf(x)
}
func (*OutsourcingInfo) ProtoMessage() {}
func (x *OutsourcingInfo) ProtoReflect() protoreflect.Message {
    mi := &file_product_proto_msgTypes[8]
    if protoimpl.UnsafeEnabled && x != nil {
        ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
        if ms.LoadMessageInfo() == nil {
            ms.StoreMessageInfo(mi)
        }
        return ms
    }
    return mi.MessageOf(x)
}
// Deprecated: Use OutsourcingInfo.ProtoReflect.Descriptor instead.
func (*OutsourcingInfo) Descriptor() ([]byte, []int) {
    return file_product_proto_rawDescGZIP(), []int{8}
}
func (x *OutsourcingInfo) GetOutsourcingId() string {
    if x != nil {
        return x.OutsourcingId
    }
    return ""
}
func (x *OutsourcingInfo) GetProductName() string {
    if x != nil {
        return x.ProductName
    }
    return ""
}
func (x *OutsourcingInfo) GetOutsourcingStatus() string {
    if x != nil {
        return x.OutsourcingStatus
    }
    return ""
}
func (x *OutsourcingInfo) GetSupplierName() string {
    if x != nil {
        return x.SupplierName
    }
    return ""
}
func (x *OutsourcingInfo) GetStartTime() string {
    if x != nil {
        return x.StartTime
    }
    return ""
}
func (x *OutsourcingInfo) GetEndTime() string {
    if x != nil {
        return x.EndTime
    }
    return ""
}
func (x *OutsourcingInfo) GetProductId() string {
    if x != nil {
        return x.ProductId
    }
    return ""
}
func (x *OutsourcingInfo) GetSpecs() string {
    if x != nil {
        return x.Specs
    }
    return ""
}
func (x *OutsourcingInfo) GetUnit() string {
    if x != nil {
        return x.Unit
    }
    return ""
}
func (x *OutsourcingInfo) GetAmount() int64 {
    if x != nil {
        return x.Amount
    }
    return 0
}
func (x *OutsourcingInfo) GetFinishAmount() int64 {
    if x != nil {
        return x.FinishAmount
    }
    return 0
}
type GetProductOrderResponse struct {
    state         protoimpl.MessageState
    sizeCache     protoimpl.SizeCache
    unknownFields protoimpl.UnknownFields
    Code         int32                 `protobuf:"varint,1,opt,name=Code,proto3" json:"Code,omitempty"`
    Msg          string                `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"`
    List         []*WorkOrderInfo      `protobuf:"bytes,3,rep,name=List,proto3" json:"List,omitempty"`                 //制造信息
    PurchaseList []*CrmGetPurchaseInfo `protobuf:"bytes,4,rep,name=PurchaseList,proto3" json:"PurchaseList,omitempty"` //采购信息
    List            []*WorkOrderInfo      `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"`                       //制造信息
    PurchaseList    []*CrmGetPurchaseInfo `protobuf:"bytes,2,rep,name=PurchaseList,proto3" json:"PurchaseList,omitempty"`       //采购信息
    OutsourcingList []*OutsourcingInfo    `protobuf:"bytes,3,rep,name=OutsourcingList,proto3" json:"OutsourcingList,omitempty"` //委外信息
}
func (x *GetProductOrderResponse) Reset() {
    *x = GetProductOrderResponse{}
    if protoimpl.UnsafeEnabled {
        mi := &file_product_proto_msgTypes[8]
        mi := &file_product_proto_msgTypes[9]
        ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
        ms.StoreMessageInfo(mi)
    }
@@ -663,7 +869,7 @@
func (*GetProductOrderResponse) ProtoMessage() {}
func (x *GetProductOrderResponse) ProtoReflect() protoreflect.Message {
    mi := &file_product_proto_msgTypes[8]
    mi := &file_product_proto_msgTypes[9]
    if protoimpl.UnsafeEnabled && x != nil {
        ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
        if ms.LoadMessageInfo() == nil {
@@ -676,21 +882,7 @@
// Deprecated: Use GetProductOrderResponse.ProtoReflect.Descriptor instead.
func (*GetProductOrderResponse) Descriptor() ([]byte, []int) {
    return file_product_proto_rawDescGZIP(), []int{8}
}
func (x *GetProductOrderResponse) GetCode() int32 {
    if x != nil {
        return x.Code
    }
    return 0
}
func (x *GetProductOrderResponse) GetMsg() string {
    if x != nil {
        return x.Msg
    }
    return ""
    return file_product_proto_rawDescGZIP(), []int{9}
}
func (x *GetProductOrderResponse) GetList() []*WorkOrderInfo {
@@ -703,6 +895,13 @@
func (x *GetProductOrderResponse) GetPurchaseList() []*CrmGetPurchaseInfo {
    if x != nil {
        return x.PurchaseList
    }
    return nil
}
func (x *GetProductOrderResponse) GetOutsourcingList() []*OutsourcingInfo {
    if x != nil {
        return x.OutsourcingList
    }
    return nil
}
@@ -763,7 +962,7 @@
    0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12,
    0x53, 0x61, 0x6c, 0x65, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4e, 0x75, 0x6d, 0x62,
    0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x53, 0x61, 0x6c, 0x65, 0x73, 0x44,
    0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xf1, 0x01, 0x0a,
    0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xf5, 0x02, 0x0a,
    0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18,
    0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
    0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x64,
@@ -779,43 +978,85 @@
    0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61,
    0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d,
    0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
    0x22, 0xb4, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x6d, 0x47, 0x65, 0x74, 0x50, 0x75, 0x72, 0x63, 0x68,
    0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x50, 0x75, 0x72, 0x63, 0x68,
    0x61, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
    0x0e, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12,
    0x22, 0x0a, 0x0c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18,
    0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4e,
    0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x4e,
    0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x75, 0x70, 0x70, 0x6c,
    0x69, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e,
    0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12,
    0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
    0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50,
    0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
    0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
    0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02,
    0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73,
    0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x4f, 0x72,
    0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a,
    0x0c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20,
    0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x72, 0x6d, 0x47, 0x65, 0x74, 0x50, 0x75, 0x72, 0x63,
    0x68, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61,
    0x73, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x32, 0xe2, 0x01, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75,
    0x63, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x0e, 0x47, 0x65, 0x74,
    0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x47, 0x65,
    0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75,
    0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
    0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43,
    0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74,
    0x12, 0x16, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73,
    0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72,
    0x6f, 0x64, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
    0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
    0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64,
    0x75, 0x63, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
    0x18, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4f, 0x72, 0x64, 0x65,
    0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0b, 0x5a, 0x09, 0x2e,
    0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
    0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20,
    0x01, 0x28, 0x09, 0x52, 0x09, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x14,
    0x0a, 0x05, 0x53, 0x70, 0x65, 0x63, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53,
    0x70, 0x65, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01,
    0x28, 0x09, 0x52, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75,
    0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
    0x12, 0x22, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
    0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x41, 0x6d,
    0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc2, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x6d, 0x47, 0x65, 0x74, 0x50,
    0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x50,
    0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20,
    0x01, 0x28, 0x09, 0x52, 0x0e, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4e, 0x75, 0x6d,
    0x62, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4e,
    0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x75, 0x72, 0x63, 0x68,
    0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x75, 0x70, 0x70, 0x6c,
    0x69, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53,
    0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41,
    0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x6d, 0x6f,
    0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20,
    0x01, 0x28, 0x03, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x50,
    0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
    0x52, 0x0b, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a,
    0x09, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
    0x52, 0x09, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53,
    0x70, 0x65, 0x63, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x70, 0x65, 0x63,
    0x73, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
    0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x41,
    0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x46, 0x69, 0x6e,
    0x69, 0x73, 0x68, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe7, 0x02, 0x0a, 0x0f, 0x4f, 0x75,
    0x74, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a,
    0x0d, 0x4f, 0x75, 0x74, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x18, 0x01,
    0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x75, 0x74, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x69, 0x6e,
    0x67, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61,
    0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
    0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x4f, 0x75, 0x74, 0x73, 0x6f, 0x75, 0x72,
    0x63, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
    0x52, 0x11, 0x4f, 0x75, 0x74, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61,
    0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x4e,
    0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x75, 0x70, 0x70, 0x6c,
    0x69, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74,
    0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72,
    0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
    0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12,
    0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01,
    0x28, 0x09, 0x52, 0x09, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a,
    0x05, 0x53, 0x70, 0x65, 0x63, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x70,
    0x65, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
    0x09, 0x52, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e,
    0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12,
    0x22, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
    0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x41, 0x6d, 0x6f,
    0x75, 0x6e, 0x74, 0x22, 0xb2, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75,
    0x63, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
    0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
    0x57, 0x6f, 0x72, 0x6b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c,
    0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x0c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4c,
    0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x72, 0x6d, 0x47,
    0x65, 0x74, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c,
    0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0f,
    0x4f, 0x75, 0x74, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18,
    0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x4f, 0x75, 0x74, 0x73, 0x6f, 0x75, 0x72, 0x63,
    0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x4f, 0x75, 0x74, 0x73, 0x6f, 0x75, 0x72,
    0x63, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x32, 0xe2, 0x01, 0x0a, 0x0e, 0x70, 0x72, 0x6f,
    0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x0e, 0x47,
    0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e,
    0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
    0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75,
    0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
    0x12, 0x43, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4c, 0x69,
    0x73, 0x74, 0x12, 0x16, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4c,
    0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x47, 0x65, 0x74,
    0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
    0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64,
    0x75, 0x63, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72,
    0x6f, 0x64, 0x75, 0x63, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
    0x74, 0x1a, 0x18, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4f, 0x72,
    0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0b, 0x5a,
    0x09, 0x2e, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
    0x6f, 0x33,
}
var (
@@ -830,7 +1071,7 @@
    return file_product_proto_rawDescData
}
var file_product_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_product_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_product_proto_goTypes = []interface{}{
    (*GetProductInfoRequest)(nil),   // 0: GetProductInfoRequest
    (*GetProductInfoResponse)(nil),  // 1: GetProductInfoResponse
@@ -840,24 +1081,26 @@
    (*GetProductOrderRequest)(nil),  // 5: GetProductOrderRequest
    (*WorkOrderInfo)(nil),           // 6: WorkOrderInfo
    (*CrmGetPurchaseInfo)(nil),      // 7: CrmGetPurchaseInfo
    (*GetProductOrderResponse)(nil), // 8: GetProductOrderResponse
    (*OutsourcingInfo)(nil),         // 8: OutsourcingInfo
    (*GetProductOrderResponse)(nil), // 9: GetProductOrderResponse
}
var file_product_proto_depIdxs = []int32{
    2, // 0: GetProductInfoResponse.Data:type_name -> Product
    2, // 1: GetProductListResponse.List:type_name -> Product
    6, // 2: GetProductOrderResponse.List:type_name -> WorkOrderInfo
    7, // 3: GetProductOrderResponse.PurchaseList:type_name -> CrmGetPurchaseInfo
    0, // 4: productService.GetProductInfo:input_type -> GetProductInfoRequest
    3, // 5: productService.GetProductList:input_type -> GetProductListRequest
    5, // 6: productService.GetProductOrder:input_type -> GetProductOrderRequest
    1, // 7: productService.GetProductInfo:output_type -> GetProductInfoResponse
    4, // 8: productService.GetProductList:output_type -> GetProductListResponse
    8, // 9: productService.GetProductOrder:output_type -> GetProductOrderResponse
    7, // [7:10] is the sub-list for method output_type
    4, // [4:7] is the sub-list for method input_type
    4, // [4:4] is the sub-list for extension type_name
    4, // [4:4] is the sub-list for extension extendee
    0, // [0:4] is the sub-list for field type_name
    8, // 4: GetProductOrderResponse.OutsourcingList:type_name -> OutsourcingInfo
    0, // 5: productService.GetProductInfo:input_type -> GetProductInfoRequest
    3, // 6: productService.GetProductList:input_type -> GetProductListRequest
    5, // 7: productService.GetProductOrder:input_type -> GetProductOrderRequest
    1, // 8: productService.GetProductInfo:output_type -> GetProductInfoResponse
    4, // 9: productService.GetProductList:output_type -> GetProductListResponse
    9, // 10: productService.GetProductOrder:output_type -> GetProductOrderResponse
    8, // [8:11] is the sub-list for method output_type
    5, // [5:8] is the sub-list for method input_type
    5, // [5:5] is the sub-list for extension type_name
    5, // [5:5] is the sub-list for extension extendee
    0, // [0:5] is the sub-list for field type_name
}
func init() { file_product_proto_init() }
@@ -963,6 +1206,18 @@
            }
        }
        file_product_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
            switch v := v.(*OutsourcingInfo); i {
            case 0:
                return &v.state
            case 1:
                return &v.sizeCache
            case 2:
                return &v.unknownFields
            default:
                return nil
            }
        }
        file_product_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
            switch v := v.(*GetProductOrderResponse); i {
            case 0:
                return &v.state
@@ -981,7 +1236,7 @@
            GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
            RawDescriptor: file_product_proto_rawDesc,
            NumEnums:      0,
            NumMessages:   9,
            NumMessages:   10,
            NumExtensions: 0,
            NumServices:   1,
        },