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
|
}
|