zhangqian
2024-07-31 155f70979af20ca520a55b89c6ec8cd46c43f8a5
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的grpc服务信息")
   }
   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
}