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