From dc73bb0a098f9c176ea4b6e920a5e70d9a618833 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期一, 27 十一月 2023 16:52:39 +0800 Subject: [PATCH] aps插入出库操作 --- proto/inventory_order/server.go | 74 +++++++++ proto/inventory_order.proto | 24 ++ proto/inventory_order/inventory_order.pb.go | 324 ++++++++++++++++++++++++++++++++++++++-- proto/inventory_order/inventory_order_grpc.pb.go | 36 ++++ main.go | 2 proto/product_inventory/server.go | 3 6 files changed, 442 insertions(+), 21 deletions(-) diff --git a/main.go b/main.go index 91c2eeb..68e32ad 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,7 @@ "wms/models" "wms/pkg/logx" "wms/proto/client" + "wms/proto/inventory_order" "wms/proto/product_inventory" "wms/proto/purchase_wms" "wms/proto/supplier" @@ -65,6 +66,7 @@ //todo 娣诲姞鍏蜂綋鏈嶅姟 product_inventory.RegisterProductInventoryServiceServer(s, &product_inventory.Server{}) purchase_wms.RegisterPurchaseServiceServer(s, &purchase_wms.Server{}) + inventory_order.RegisterInventoryOrderServiceServer(s, &inventory_order.Server{}) err = s.Serve(ln) if err != nil { logx.Errorf("grpc server init error: %v", err.Error()) diff --git a/proto/inventory_order.proto b/proto/inventory_order.proto index 113c6de..b624137 100644 --- a/proto/inventory_order.proto +++ b/proto/inventory_order.proto @@ -4,6 +4,7 @@ service inventoryOrderService { rpc CreateNewOrder(CreateNewOrderRequest) returns(CreateNewOrderResponse) {} + rpc CreateOperationList(CreateOperationListRequest) returns(CreateOperationListResponse) {} } message CreateNewOrderRequest{ @@ -17,4 +18,25 @@ int32 Code = 1; string Msg = 2; string OrderId = 3; -} \ No newline at end of file +} + +//-------------------------------------------------------CreateOperationList------------------------------------ + +message OperationProduct { + string ProductNumber = 1; + int64 Amount = 2; +} + +message OperationList { + string SourceNumber = 1; + repeated OperationProduct Products = 2; +} + +message CreateOperationListRequest{ + int64 OperationType = 1; + repeated OperationList List = 2; +} + +message CreateOperationListResponse{ +} + diff --git a/proto/inventory_order/inventory_order.pb.go b/proto/inventory_order/inventory_order.pb.go index 6fe5871..d65e27b 100644 --- a/proto/inventory_order/inventory_order.pb.go +++ b/proto/inventory_order/inventory_order.pb.go @@ -154,6 +154,209 @@ return "" } +type OperationProduct struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProductNumber string `protobuf:"bytes,1,opt,name=ProductNumber,proto3" json:"ProductNumber,omitempty"` + Amount int64 `protobuf:"varint,2,opt,name=Amount,proto3" json:"Amount,omitempty"` +} + +func (x *OperationProduct) Reset() { + *x = OperationProduct{} + if protoimpl.UnsafeEnabled { + mi := &file_inventory_order_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OperationProduct) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OperationProduct) ProtoMessage() {} + +func (x *OperationProduct) ProtoReflect() protoreflect.Message { + mi := &file_inventory_order_proto_msgTypes[2] + 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 OperationProduct.ProtoReflect.Descriptor instead. +func (*OperationProduct) Descriptor() ([]byte, []int) { + return file_inventory_order_proto_rawDescGZIP(), []int{2} +} + +func (x *OperationProduct) GetProductNumber() string { + if x != nil { + return x.ProductNumber + } + return "" +} + +func (x *OperationProduct) GetAmount() int64 { + if x != nil { + return x.Amount + } + return 0 +} + +type OperationList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SourceNumber string `protobuf:"bytes,1,opt,name=SourceNumber,proto3" json:"SourceNumber,omitempty"` + Products []*OperationProduct `protobuf:"bytes,2,rep,name=Products,proto3" json:"Products,omitempty"` +} + +func (x *OperationList) Reset() { + *x = OperationList{} + if protoimpl.UnsafeEnabled { + mi := &file_inventory_order_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OperationList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OperationList) ProtoMessage() {} + +func (x *OperationList) ProtoReflect() protoreflect.Message { + mi := &file_inventory_order_proto_msgTypes[3] + 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 OperationList.ProtoReflect.Descriptor instead. +func (*OperationList) Descriptor() ([]byte, []int) { + return file_inventory_order_proto_rawDescGZIP(), []int{3} +} + +func (x *OperationList) GetSourceNumber() string { + if x != nil { + return x.SourceNumber + } + return "" +} + +func (x *OperationList) GetProducts() []*OperationProduct { + if x != nil { + return x.Products + } + return nil +} + +type CreateOperationListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OperationType int64 `protobuf:"varint,1,opt,name=OperationType,proto3" json:"OperationType,omitempty"` + List []*OperationList `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` +} + +func (x *CreateOperationListRequest) Reset() { + *x = CreateOperationListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_inventory_order_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateOperationListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateOperationListRequest) ProtoMessage() {} + +func (x *CreateOperationListRequest) ProtoReflect() protoreflect.Message { + mi := &file_inventory_order_proto_msgTypes[4] + 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 CreateOperationListRequest.ProtoReflect.Descriptor instead. +func (*CreateOperationListRequest) Descriptor() ([]byte, []int) { + return file_inventory_order_proto_rawDescGZIP(), []int{4} +} + +func (x *CreateOperationListRequest) GetOperationType() int64 { + if x != nil { + return x.OperationType + } + return 0 +} + +func (x *CreateOperationListRequest) GetList() []*OperationList { + if x != nil { + return x.List + } + return nil +} + +type CreateOperationListResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CreateOperationListResponse) Reset() { + *x = CreateOperationListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_inventory_order_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateOperationListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateOperationListResponse) ProtoMessage() {} + +func (x *CreateOperationListResponse) ProtoReflect() protoreflect.Message { + mi := &file_inventory_order_proto_msgTypes[5] + 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 CreateOperationListResponse.ProtoReflect.Descriptor instead. +func (*CreateOperationListResponse) Descriptor() ([]byte, []int) { + return file_inventory_order_proto_rawDescGZIP(), []int{5} +} + var File_inventory_order_proto protoreflect.FileDescriptor var file_inventory_order_proto_rawDesc = []byte{ @@ -172,15 +375,40 @@ 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, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x32, 0x5c, 0x0a, 0x15, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, - 0x77, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, - 0x65, 0x77, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x13, 0x5a, 0x11, 0x2e, 0x2f, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x10, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, + 0x24, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x62, 0x0a, + 0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, + 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x73, 0x22, 0x66, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x24, 0x0a, 0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xb0, 0x01, 0x0a, 0x15, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x43, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x13, 0x5a, 0x11, 0x2e, + 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -195,19 +423,27 @@ return file_inventory_order_proto_rawDescData } -var file_inventory_order_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_inventory_order_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_inventory_order_proto_goTypes = []interface{}{ - (*CreateNewOrderRequest)(nil), // 0: CreateNewOrderRequest - (*CreateNewOrderResponse)(nil), // 1: CreateNewOrderResponse + (*CreateNewOrderRequest)(nil), // 0: CreateNewOrderRequest + (*CreateNewOrderResponse)(nil), // 1: CreateNewOrderResponse + (*OperationProduct)(nil), // 2: OperationProduct + (*OperationList)(nil), // 3: OperationList + (*CreateOperationListRequest)(nil), // 4: CreateOperationListRequest + (*CreateOperationListResponse)(nil), // 5: CreateOperationListResponse } var file_inventory_order_proto_depIdxs = []int32{ - 0, // 0: inventoryOrderService.CreateNewOrder:input_type -> CreateNewOrderRequest - 1, // 1: inventoryOrderService.CreateNewOrder:output_type -> CreateNewOrderResponse - 1, // [1:2] is the sub-list for method output_type - 0, // [0:1] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name + 2, // 0: OperationList.Products:type_name -> OperationProduct + 3, // 1: CreateOperationListRequest.List:type_name -> OperationList + 0, // 2: inventoryOrderService.CreateNewOrder:input_type -> CreateNewOrderRequest + 4, // 3: inventoryOrderService.CreateOperationList:input_type -> CreateOperationListRequest + 1, // 4: inventoryOrderService.CreateNewOrder:output_type -> CreateNewOrderResponse + 5, // 5: inventoryOrderService.CreateOperationList:output_type -> CreateOperationListResponse + 4, // [4:6] is the sub-list for method output_type + 2, // [2:4] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name } func init() { file_inventory_order_proto_init() } @@ -240,6 +476,54 @@ return nil } } + file_inventory_order_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OperationProduct); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventory_order_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OperationList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventory_order_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateOperationListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventory_order_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateOperationListResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -247,7 +531,7 @@ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_inventory_order_proto_rawDesc, NumEnums: 0, - NumMessages: 2, + NumMessages: 6, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/inventory_order/inventory_order_grpc.pb.go b/proto/inventory_order/inventory_order_grpc.pb.go index eaeb0a2..fd1952a 100644 --- a/proto/inventory_order/inventory_order_grpc.pb.go +++ b/proto/inventory_order/inventory_order_grpc.pb.go @@ -19,6 +19,7 @@ // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type InventoryOrderServiceClient interface { CreateNewOrder(ctx context.Context, in *CreateNewOrderRequest, opts ...grpc.CallOption) (*CreateNewOrderResponse, error) + CreateOperationList(ctx context.Context, in *CreateOperationListRequest, opts ...grpc.CallOption) (*CreateOperationListResponse, error) } type inventoryOrderServiceClient struct { @@ -38,11 +39,21 @@ return out, nil } +func (c *inventoryOrderServiceClient) CreateOperationList(ctx context.Context, in *CreateOperationListRequest, opts ...grpc.CallOption) (*CreateOperationListResponse, error) { + out := new(CreateOperationListResponse) + err := c.cc.Invoke(ctx, "/inventoryOrderService/CreateOperationList", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // InventoryOrderServiceServer is the server API for InventoryOrderService service. // All implementations must embed UnimplementedInventoryOrderServiceServer // for forward compatibility type InventoryOrderServiceServer interface { CreateNewOrder(context.Context, *CreateNewOrderRequest) (*CreateNewOrderResponse, error) + CreateOperationList(context.Context, *CreateOperationListRequest) (*CreateOperationListResponse, error) mustEmbedUnimplementedInventoryOrderServiceServer() } @@ -52,6 +63,9 @@ func (UnimplementedInventoryOrderServiceServer) CreateNewOrder(context.Context, *CreateNewOrderRequest) (*CreateNewOrderResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateNewOrder not implemented") +} +func (UnimplementedInventoryOrderServiceServer) CreateOperationList(context.Context, *CreateOperationListRequest) (*CreateOperationListResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateOperationList not implemented") } func (UnimplementedInventoryOrderServiceServer) mustEmbedUnimplementedInventoryOrderServiceServer() {} @@ -84,6 +98,24 @@ return interceptor(ctx, in, info, handler) } +func _InventoryOrderService_CreateOperationList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateOperationListRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InventoryOrderServiceServer).CreateOperationList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/inventoryOrderService/CreateOperationList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InventoryOrderServiceServer).CreateOperationList(ctx, req.(*CreateOperationListRequest)) + } + return interceptor(ctx, in, info, handler) +} + // InventoryOrderService_ServiceDesc is the grpc.ServiceDesc for InventoryOrderService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -95,6 +127,10 @@ MethodName: "CreateNewOrder", Handler: _InventoryOrderService_CreateNewOrder_Handler, }, + { + MethodName: "CreateOperationList", + Handler: _InventoryOrderService_CreateOperationList_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "inventory_order.proto", diff --git a/proto/inventory_order/server.go b/proto/inventory_order/server.go new file mode 100644 index 0000000..884c8d9 --- /dev/null +++ b/proto/inventory_order/server.go @@ -0,0 +1,74 @@ +package inventory_order + +import ( + "context" + "github.com/shopspring/decimal" + "strconv" + "time" + "wms/constvar" + "wms/models" + "wms/pkg/timex" +) + +type Server struct { + UnimplementedInventoryOrderServiceServer +} + +func (s *Server) CreateOperationList(ctx context.Context, req *CreateOperationListRequest) (*CreateOperationListResponse, error) { + var operations []*models.Operation + warehouse, err := models.NewWarehouseSearch().First() + if err != nil { + return nil, err + } + fromLocation, err := models.NewLocationSearch().SetID(warehouse.LocationId).First() + if err != nil { + return nil, err + } + toLocation, err := models.NewLocationSearch().SetType(int(constvar.LocationTypeCustomer)).First() + if err != nil { + return nil, err + } + tp := constvar.BaseOperationTypeOutgoing + if req.OperationType == 1 { + tp = constvar.BaseOperationTypeIncoming + fromLocation, err = models.NewLocationSearch().SetType(int(constvar.LocationTypeVendor)).First() + if err != nil { + return nil, err + } + toLocation, err = models.NewLocationSearch().SetID(warehouse.LocationId).First() + if err != nil { + return nil, err + } + } + operationType, err := models.NewOperationTypeSearch().SetWarehouseId(warehouse.Id).SetBaseOperationType(tp).First() + if err != nil { + return nil, err + } + for _, list := range req.List { + var operation models.Operation + var details []*models.OperationDetails + operation.SourceNumber = list.SourceNumber + operation.OperationDate = timex.TimeToString2(time.Now()) + operation.Number = strconv.FormatInt(time.Now().Unix(), 10) + operation.Status = constvar.OperationStatus_Ready + operation.OperationTypeName = operationType.Name + operation.OperationTypeId = operationType.Id + operation.FromLocationID = fromLocation.Id + operation.ToLocationID = toLocation.Id + operation.BaseOperationType = constvar.BaseOperationTypeOutgoing + if req.OperationType == 1 { + operation.BaseOperationType = constvar.BaseOperationTypeIncoming + } + for _, product := range list.Products { + var detail models.OperationDetails + detail.ProductId = product.ProductNumber + detail.Amount = decimal.NewFromInt(product.Amount) + details = append(details, &detail) + } + operation.Details = details + operations = append(operations, &operation) + } + err = models.NewOperationSearch().CreateBatch(operations) + resp := new(CreateOperationListResponse) + return resp, err +} diff --git a/proto/product_inventory/server.go b/proto/product_inventory/server.go index bb375e1..1b624b7 100644 --- a/proto/product_inventory/server.go +++ b/proto/product_inventory/server.go @@ -167,6 +167,9 @@ } operation.ToLocationID = first.Id operation.BaseOperationType = constvar.BaseOperationTypeOutgoing + operation.ReceiverName = req.Addressee + operation.ReceiverPhone = req.Phone + operation.ReceiverAddr = req.Address if req.DeliverType == 1 { for _, product := range req.ProductList { var detail models.OperationDetails -- Gitblit v1.8.0