From 155f70979af20ca520a55b89c6ec8cd46c43f8a5 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期三, 31 七月 2024 15:47:33 +0800 Subject: [PATCH] 产品流水表增加多单位存储 --- controllers/dict_controller.go | 100 ++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 89 insertions(+), 11 deletions(-) diff --git a/controllers/dict_controller.go b/controllers/dict_controller.go index 7366885..2e4826e 100644 --- a/controllers/dict_controller.go +++ b/controllers/dict_controller.go @@ -1,13 +1,19 @@ package controllers import ( + "context" + "errors" + "fmt" "github.com/gin-gonic/gin" "gorm.io/gorm" "strconv" + "wms/constvar" "wms/extend/code" "wms/extend/util" "wms/models" "wms/pkg/logx" + "wms/proto/init_client" + "wms/proto/user" "wms/request" ) @@ -38,8 +44,16 @@ return } + _, err := models.NewMiniDictSearch().SetType(params.Type).SetName(params.Name).First() + if !errors.Is(err, gorm.ErrRecordNotFound) { + util.ResponseFormat(c, code.NameExistedError, "鍚嶇О宸插瓨鍦�") + return + } + + autoCode, _ := getAutoCode(params.Type) record := models.MiniDict{ Type: params.Type, + Code: autoCode, Name: params.Name, Value: params.Value, IsDefault: params.IsDefault, @@ -85,6 +99,7 @@ record := models.MiniDict{ Type: params.Type, + Code: params.Code, Name: params.Name, Value: params.Value, IsDefault: params.IsDefault, @@ -181,7 +196,7 @@ // @Tags 鏁版嵁瀛楀吀 // @Summary 鑾峰彇瀛楀吀淇℃伅鍒楄〃 // @Produce application/json -// @Param object body request.GetMiniDictList true "鍙傛暟" +// @Param object body request.GetMiniDictList true "鍙傛暟" // @Success 200 {object} util.ResponseList{data=[]models.MiniDict} "鎴愬姛" // @Router /api-wms/v1/dict/getDictList [post] func (slf DictController) GetMiniDictList(c *gin.Context) { @@ -191,16 +206,7 @@ return } - //if !params.Type.Valid() { - // util.ResponseFormat(c, code.RequestParamError, "瀛楀吀绫诲瀷閿欒") - // return - //} - dictSearch := models.NewMiniDictSearch() - if params.Type.Valid() { - dictSearch.SetType(params.Type) - } - - list, total, err := dictSearch.Find() + list, total, err := models.NewMiniDictSearch().SetKeyword(params.Keyword).SetType(params.Type).Find() if err != nil { util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触") return @@ -208,3 +214,75 @@ util.ResponseFormatList(c, code.Success, list, int(total)) } + +// GetUserList +// @Tags 鏁版嵁瀛楀吀 +// @Summary 鑾峰彇鐢ㄦ埛鍒楄〃 +// @Produce application/json +// @Param object query user.GetUserRequest true "鍙傛暟" +// @Success 200 {object} util.ResponseList{data=[]user.GetUserRequest} "鎴愬姛" +// @Router /api-wms/v1/dict/getUserList [get] +func (slf DictController) GetUserList(c *gin.Context) { + if init_client.AdminConn == nil { + util.ResponseFormat(c, code.InternalError, "璇峰厛閰嶇疆Admin鐨刧rpc鏈嶅姟淇℃伅") + } + query := new(user.GetUserRequest) + if c.Query("id") != "" { + query.Id = c.Query("id") + } + if c.Query("userName") != "" { + query.UserName = c.Query("userName") + } + if c.Query("nickName") != "" { + query.NickName = c.Query("nickName") + } + if c.Query("parentId") != "" { + query.ParentId = c.Query("parentId") + } + if userType, err := strconv.Atoi(c.Query("userType")); err == nil && userType > 0 { + query.UserType = int32(userType) + } + + cli := user.NewUserServiceClient(init_client.AdminConn) + list, err := cli.GetUserList(context.Background(), query) + if err != nil { + util.ResponseFormat(c, code.InternalError, "鍐呴儴閿欒") + logx.Error("grpc璋冪敤澶辫触, GetPersonnelList err : " + err.Error()) + return + } + util.ResponseFormat(c, code.Success, list.List) +} + +// GetAutoCode 鑾峰彇瀛楀吀鑷姩缂栫爜 +func getAutoCode(dictType constvar.MiniDictType) (string, error) { + + var prefix string + switch constvar.MiniDictType(dictType) { + case constvar.StorageType: + prefix = "IN0" + case constvar.StockoutType: + prefix = "OUT" + case constvar.TransferType: + prefix = "TF0" + case constvar.TakeStockType: + prefix = "TS0" + case constvar.DisuseType: + prefix = "DIS" + case constvar.ProductSource: + prefix = "PS0" + default: + return "", errors.New("缂栫爜瑙勫垯涓嶅瓨鍦�") + } + id, err := models.NewMiniDictSearch().MaxAutoIncr() + if err != nil { + return "", errors.New("鑾峰彇鏈�澶у�煎け璐�") + } + + strMaxAutoIncr := strconv.Itoa(id + 1) + count := 5 - len(strMaxAutoIncr) + for i := 0; i < count; i++ { + strMaxAutoIncr = "0" + strMaxAutoIncr + } + + return fmt.Sprintf("%v%v", prefix, strMaxAutoIncr), nil +} -- Gitblit v1.8.0