From e1ec7e077a10938ce795c766915c5c5673dcf282 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期三, 20 三月 2024 19:08:10 +0800 Subject: [PATCH] crm发货申请补充发货单号 --- service/code.go | 56 ++++++++++++++++++++++++++++ service/operation.go | 10 ++++ 2 files changed, 65 insertions(+), 1 deletions(-) diff --git a/service/code.go b/service/code.go new file mode 100644 index 0000000..bb17a77 --- /dev/null +++ b/service/code.go @@ -0,0 +1,56 @@ +package service + +import ( + "context" + "errors" + "wms/constvar" + "wms/models" + "wms/pkg/logx" + "wms/proto/code" + "wms/proto/init_client" +) + +func GetAutoCode(codeType constvar.CodeStandardType) (autoCode string, codeStandard *code.CodeStandard, maxAutoIncr int, err error) { + client := code.NewCodeServiceClient(init_client.ApsConn) + list, err := client.GetCodeList(context.Background(), &code.GetCodeListRequest{ + Page: 1, + PageSize: 1, + Type: string(codeType), + }) + if err != nil { + logx.Errorf("rpc GetCodeList err: %v", err.Error()) + return + } + + if len(list.List) == 0 { + logx.Errorf("rpc GetCodeList err: %v", err.Error()) + err = errors.New("娌℃湁鎵惧埌缂栫爜瑙勮寖") + return + } + + codeStandard = list.List[0] + switch codeType { + case constvar.CodeStandardType_Material: + maxAutoIncr, err = models.NewMaterialSearch().MaxAutoIncr() + case constvar.CodeStandardType_Incoming: + maxAutoIncr, err = models.NewOperationSearch().SetBaseOperationType(constvar.BaseOperationTypeIncoming).MaxAutoIncr() + case constvar.CodeStandardType_Outgoing: + maxAutoIncr, err = models.NewOperationSearch().SetBaseOperationType(constvar.BaseOperationTypeOutgoing).MaxAutoIncr() + case constvar.CodeStandardType_Internal: + maxAutoIncr, err = models.NewOperationSearch().SetBaseOperationType(constvar.BaseOperationTypeInternal).MaxAutoIncr() + case constvar.CodeStandardType_Disuse: + maxAutoIncr, err = models.NewOperationSearch().SetBaseOperationType(constvar.BaseOperationTypeDisuse).MaxAutoIncr() + default: + err = errors.New("缂栫爜瑙勫垯涓嶅瓨鍦�") + return + } + + if err != nil { + err = errors.New("缂栫爜瑙勫垯涓嶅瓨鍦�") + return + } + + autoCode = models.GetAutoCode(maxAutoIncr, codeStandard) + maxAutoIncr = maxAutoIncr + 1 + return +} diff --git a/service/operation.go b/service/operation.go index e0456d4..dd5a9ea 100644 --- a/service/operation.go +++ b/service/operation.go @@ -30,6 +30,12 @@ if err != nil { return err } + + autoCode, codeStandard, maxAutoIncr, err := GetAutoCode(constvar.CodeStandardType_Outgoing) + if err != nil { + return err + } + opTypeMap := make(map[int]*models.OperationType, len(opTypes)) for _, opType := range opTypes { opTypeMap[opType.WarehouseId] = opType @@ -50,7 +56,7 @@ } operation := &models.Operation{ Id: 0, - Number: "", + Number: autoCode, SourceNumber: output.SourceNumber, OperationTypeId: opTypeMap[output.WarehouseID].Id, OperationTypeName: opTypeMap[output.WarehouseID].Name, @@ -72,6 +78,8 @@ LocationID: output.LocationID, } operations = append(operations, operation) + autoCode = models.GetAutoCode(maxAutoIncr, codeStandard) + maxAutoIncr++ } return models.NewOperationSearch().CreateBatch(operations) -- Gitblit v1.8.0