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 |  115 +++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 99 insertions(+), 16 deletions(-)

diff --git a/controllers/dict_controller.go b/controllers/dict_controller.go
index 8c8d8fb..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"
 )
 
@@ -16,7 +22,7 @@
 // AddMiniDict
 //
 //	@Tags		鏁版嵁瀛楀吀
-//	@Summary	娣诲姞杩蜂綘瀛楀吀
+//	@Summary	娣诲姞瀛楀吀淇℃伅
 //	@Produce	application/json
 //	@Param		object	body		request.AddMiniDict	true	"鍙傛暟"
 //	@Success	200		{object}	util.Response		"鎴愬姛"
@@ -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,
@@ -56,7 +70,7 @@
 // EditMiniDict
 //
 //	@Tags		鏁版嵁瀛楀吀
-//	@Summary	缂栬緫杩蜂綘瀛楀吀
+//	@Summary	缂栬緫瀛楀吀淇℃伅
 //	@Produce	application/json
 //	@Param		object	body		request.EditMiniDict	true	"鍙傛暟"
 //	@Success	200		{object}	util.Response			"鎴愬姛"
@@ -84,6 +98,8 @@
 	}
 
 	record := models.MiniDict{
+		Type:      params.Type,
+		Code:      params.Code,
 		Name:      params.Name,
 		Value:     params.Value,
 		IsDefault: params.IsDefault,
@@ -100,8 +116,8 @@
 
 // DeleteMiniDict
 //
-//	@Tags		灞炴�у�煎拰瀵硅薄
-//	@Summary	鍒犻櫎灞炴�у�煎拰瀵硅薄
+//	@Tags		鏁版嵁瀛楀吀
+//	@Summary	鍒犻櫎瀛楀吀淇℃伅
 //	@Param		id	path		string			true	"id"
 //	@Success	200	{object}	util.Response	"鎴愬姛"
 //	@Router		/api-wms/v1/dict/delete/{id} [delete]
@@ -177,12 +193,12 @@
 
 // GetMiniDictList
 //
-//		@Tags		鏁版嵁瀛楀吀
-//		@Summary	鑾峰彇杩蜂綘瀛楀吀鍒楄〃
-//		@Produce	application/json
-//	 @Param		object	query		request.GetMiniDictList	true	"鍙傛暟"
-//		@Success	200		{object}	util.ResponseList{data=[]models.MiniDict}	"鎴愬姛"
-//		@Router		/api-wms/v1/dict/getDictList [get]
+//	@Tags		鏁版嵁瀛楀吀
+//	@Summary	鑾峰彇瀛楀吀淇℃伅鍒楄〃
+//	@Produce	application/json
+//	@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) {
 	var params request.GetMiniDictList
 	if err := c.BindJSON(&params); err != nil {
@@ -190,12 +206,7 @@
 		return
 	}
 
-	if !params.Type.Valid() {
-		util.ResponseFormat(c, code.RequestParamError, "瀛楀吀绫诲瀷閿欒")
-		return
-	}
-
-	list, total, err := models.NewMiniDictSearch().SetType(params.Type).Find()
+	list, total, err := models.NewMiniDictSearch().SetKeyword(params.Keyword).SetType(params.Type).Find()
 	if err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触")
 		return
@@ -203,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