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 }