zhangqian
2024-03-11 7d4f02f6a8066018911d09bad42c5c540abaa66b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package controllers
 
import (
    "github.com/gin-gonic/gin"
    "github.com/spf13/cast"
    "wms/constvar"
    cd "wms/extend/code"
    "wms/extend/util"
    "wms/models"
    "wms/pkg/contextx"
    "wms/pkg/logx"
    "wms/proto/code"
    "wms/proto/init_client"
    "wms/request"
)
 
type CodeApi struct{}
 
//var (
//    codeServiceConn *grpc.ClientConn
//)
//
//func InitCodeServiceConn() {
//    var err error
//    codeServiceConn, err = grpc.Dial(conf.GrpcServerConf.ApsAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
//    if err != nil {
//        logx.Errorf("grpc dial product service error: %v", err.Error())
//        return
//    }
//}
//
//func CloseCodeServiceConn() {
//    if codeServiceConn != nil {
//        codeServiceConn.Close()
//    }
//}
 
// GetCodeList
//
// @Tags        编码
// @Summary    获取编码列表
// @Produce    application/json
// @Param        object    query        request.GetCodeList    true    "参数"
// @Success    200    {object}    util.ResponseList{data=[]code.CodeStandard}
//
//    @Router        /api-wms/v1/code/getCodeList [get]
func (ca *CodeApi) GetCodeList(c *gin.Context) {
    var params request.GetCodeList
    ctx, ok := contextx.NewContext(c, &params)
    if !ok {
        return
    }
    params.CodeStandID = c.Query("codeStandID")
    params.Name = c.Query("name")
    params.Type = c.Query("type")
    client := code.NewCodeServiceClient(init_client.ApsConn)
    list, err := client.GetCodeList(ctx.GetCtx(), &code.GetCodeListRequest{
        Page:        cast.ToInt32(params.Page),
        PageSize:    cast.ToInt32(params.PageSize),
        CodeStandID: params.CodeStandID,
        Name:        params.Name,
        Type:        params.Type,
    })
    if err != nil {
        logx.Errorf("GetCodeList err: %v", err.Error())
        util.ResponseFormat(c, cd.RequestParamError, "产品名称不能为空")
        return
    }
    util.ResponseFormatList(c, cd.Success, list.List, int(list.Total))
}
 
// GetAutoCode
//
// @Tags        编码
// @Summary    获取自动编码
// @Produce    application/json
// @Param        object    body        code.CodeStandard    true    "参数"
// @Success    200    {object}    util.ResponseList{data=map[string]interface{}}
//
//    @Router        /api-wms/v1/code/getAutoCode [post]
func (ca *CodeApi) GetAutoCode(c *gin.Context) {
    var params code.CodeStandard
    ctx, ok := contextx.NewContext(c, &params)
    if !ok {
        return
    }
    var (
        id  = 0
        err error
    )
    switch constvar.CodeStandardType(params.Type) {
    case constvar.CodeStandardType_Material:
        id, err = models.NewMaterialSearch().MaxAutoIncr()
    case constvar.CodeStandardType_Incoming:
        id, err = models.NewOperationSearch().SetBaseOperationType(constvar.BaseOperationTypeIncoming).MaxAutoIncr()
    case constvar.CodeStandardType_Outgoing:
        id, err = models.NewOperationSearch().SetBaseOperationType(constvar.BaseOperationTypeOutgoing).MaxAutoIncr()
    case constvar.CodeStandardType_Internal:
        id, err = models.NewOperationSearch().SetBaseOperationType(constvar.BaseOperationTypeInternal).MaxAutoIncr()
    case constvar.CodeStandardType_Disuse:
        id, err = models.NewOperationSearch().SetBaseOperationType(constvar.BaseOperationTypeDisuse).MaxAutoIncr()
    default:
        util.ResponseFormat(c, cd.RequestError, "编码规则不存在")
        return
    }
    if err != nil {
        util.ResponseFormat(c, cd.RequestError, "获取最大值失败")
        return
    }
    m := make(map[string]interface{})
    autoCode := models.GetAutoCode(id, &params)
    m["id"] = autoCode
    m["codeStandardID"] = params.ID
    m["maxAutoIncr"] = id + 1
    ctx.OkWithDetailed(m)
}