| | |
| | | "github.com/gin-gonic/gin" |
| | | "github.com/spf13/cast" |
| | | "gorm.io/gorm" |
| | | "strconv" |
| | | "wms/constvar" |
| | | "wms/extend/code" |
| | | "wms/extend/util" |
| | | "wms/models" |
| | |
| | | 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(¶ms); err != nil { |
| | | logx.Errorf("warehouse create err: %v", err) |
| | | util.ResponseFormat(c, code.SaveFail, "插入失败") |
| | |
| | | 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(¶ms); err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, fmt.Sprintf("参数解析失败: %v"+err.Error())) |
| | | return |
| | | } |
| | | if err := structx.AssignTo(reqParams, ¶ms); 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(¶ms) |
| | | err := models.NewWarehouseSearch().SetID(params.Id).Update(¶ms) |
| | | |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "修改失败") |
| | |
| | | |
| | | 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 |
| | | } |
| | | |
| | |
| | | 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)) |
| | | } |
| | |
| | | // @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) |
| | | } |