jiangshuai
2023-09-20 6becb6b281b34e17197a25af86acd35628e88811
controllers/warehouse.go
@@ -6,6 +6,8 @@
   "github.com/gin-gonic/gin"
   "github.com/spf13/cast"
   "gorm.io/gorm"
   "strconv"
   "wms/constvar"
   "wms/extend/code"
   "wms/extend/util"
   "wms/models"
@@ -39,6 +41,19 @@
      util.ResponseFormat(c, code.RequestParamError, err.Error())
      return
   }
   //创建默认位置
   location := &models.Location{
      Name:              "默认位置",
      ParentId:          params.Code,
      Type:              constvar.LocationTypeInternal,
      ReplenishLocation: true,
   }
   locationId, err := models.NewLocationSearch().CreateReturnId(location)
   if err != nil {
      util.ResponseFormat(c, code.SaveFail, "位置创建失败")
      return
   }
   params.LocationId = locationId
   if err := models.NewWarehouseSearch().Create(&params); err != nil {
      logx.Errorf("warehouse create err: %v", err)
      util.ResponseFormat(c, code.SaveFail, "插入失败")
@@ -48,39 +63,24 @@
   util.ResponseFormat(c, code.Success, "添加成功")
}
// Update
// UpdateWarehouse
// @Tags      仓库
// @Summary   编辑仓库
// @Produce   application/json
// @Param     object  body request.UpdateWarehouse true  "仓库信息"
// @Param     id  path string true  "仓库id"
// @Param     object  body  models.Warehouse true  "仓库信息"
// @Success   200 {object} util.Response "成功"
// @Router    /api-wms/v1/warehouse/warehouse/{id} [put]
func (slf WarehouseController) Update(c *gin.Context) {
   id := cast.ToUint(c.Param("id"))
   if id == 0 {
      util.ResponseFormat(c, code.RequestParamError, "空的记录id")
      return
   }
   var (
      reqParams request.UpdateWarehouse
      params    models.Warehouse
   )
   if err := c.BindJSON(&reqParams); err != nil {
// @Router    /api-wms/v1/warehouse/updateWarehouse [post]
func (slf WarehouseController) UpdateWarehouse(c *gin.Context) {
   var params models.Warehouse
   if err := c.BindJSON(&params); err != nil {
      util.ResponseFormat(c, code.RequestParamError, fmt.Sprintf("参数解析失败: %v"+err.Error()))
      return
   }
   if err := structx.AssignTo(reqParams, &params); err != nil {
      util.ResponseFormat(c, code.RequestParamError, fmt.Sprintf("数据转换错误: %v", err.Error()))
      return
   }
   params.ID = id
   if err := slf.ParamsCheck(params); err != nil {
      util.ResponseFormat(c, code.RequestParamError, err.Error())
      return
   }
   err := models.NewWarehouseSearch().SetID(params.ID).Update(&params)
   err := models.NewWarehouseSearch().SetID(params.Id).Update(&params)
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "修改失败")
@@ -92,19 +92,31 @@
func (slf WarehouseController) ParamsCheck(params models.Warehouse) (err error) {
   var oldRecord *models.Warehouse
   if params.ID != 0 {
      oldRecord, err = models.NewWarehouseSearch().SetID(params.ID).First()
   if params.Id != 0 {
      oldRecord, err = models.NewWarehouseSearch().SetID(params.Id).First()
      if err == gorm.ErrRecordNotFound {
         return errors.New("记录不存在")
      }
   }
   if oldRecord == nil || params.Code != oldRecord.Code {
      _, err = models.NewWarehouseSearch().SetCode(params.Code).First()
      if err != gorm.ErrRecordNotFound {
   //更新位置信息
   if oldRecord != nil && params.Code != oldRecord.Code {
      m := make(map[string]interface{})
      m["parent_id"] = params.Code
      err := models.NewLocationSearch().SetID(oldRecord.LocationId).UpdateByMap(m)
      if err != nil {
         return errors.New("更新位置信息失败")
      }
   }
   if oldRecord == nil {
      record, err := models.NewWarehouseSearch().SetCode(params.Code).First()
      if record != nil && record.Code == params.Code {
         fmt.Println(err)
         return errors.New("仓库编号重复")
      }
   }
   if params.Code == "" {
      return errors.New("缩写不能为空")
   }
   return nil
}
@@ -126,6 +138,24 @@
      util.ResponseFormat(c, code.RequestParamError, "查找失败")
      return
   }
   //获取位置信息
   codes := make([]string, 0)
   for _, warehouse := range list {
      codes = append(codes, warehouse.Code)
   }
   locations, err := models.NewLocationSearch().SetParents(codes).FindNotTotal()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "位置信息查找失败")
      return
   }
   for _, warehouse := range list {
      for _, location := range locations {
         if warehouse.LocationId == location.Id {
            warehouse.WarehouseLocation = warehouse.Code + "/" + location.Name
            break
         }
      }
   }
   util.ResponseFormatList(c, code.Success, list, cast.ToInt(total))
}
@@ -138,16 +168,49 @@
// @Success   200 {object} util.Response "成功"
// @Router    /api-wms/v1/warehouse/warehouse/{id} [delete]
func (slf WarehouseController) Delete(c *gin.Context) {
   id := cast.ToUint(c.Param("id"))
   id, _ := strconv.Atoi(c.Param("id"))
   if id == 0 {
      util.ResponseFormat(c, code.RequestParamError, "空的记录id")
      return
   }
   err := models.NewWarehouseSearch().SetID(id).Delete()
   //删除位置信息
   first, err := models.NewWarehouseSearch().SetID(id).First()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "删除失败")
      util.ResponseFormat(c, code.RequestParamError, "获取仓库信息失败")
      return
   }
   err = models.NewLocationSearch().SetID(first.LocationId).Delete()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "删除位置信息失败")
      return
   }
   err = models.NewWarehouseSearch().SetID(id).Delete()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "删除仓库信息失败")
      return
   }
   util.ResponseFormat(c, code.UpdateSuccess, "删除成功")
}
// GetWarehouseDetails
// @Tags      仓库
// @Summary   获取仓库详情
// @Produce   application/json
// @Param     id  path string true  "仓库id"
// @Success   200 {object} util.Response{data=models.Warehouse}   "成功"
// @Router    /api-wms/v1/warehouse/getWarehouseDetails/{id} [get]
func (slf WarehouseController) GetWarehouseDetails(c *gin.Context) {
   id, _ := strconv.Atoi(c.Param("id"))
   if id == 0 {
      util.ResponseFormat(c, code.RequestParamError, "空的记录id")
      return
   }
   first, err := models.NewWarehouseSearch().SetID(id).First()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "获取仓库信息失败")
      return
   }
   util.ResponseFormat(c, code.UpdateSuccess, first)
}