| | |
| | | "github.com/spf13/cast" |
| | | "gorm.io/gorm" |
| | | "strconv" |
| | | "strings" |
| | | "wms/constvar" |
| | | "wms/extend/code" |
| | | "wms/extend/util" |
| | | "wms/models" |
| | | "wms/pkg/logx" |
| | | "wms/pkg/structx" |
| | | "wms/request" |
| | | ) |
| | |
| | | util.ResponseFormat(c, code.RequestParamError, err.Error()) |
| | | return |
| | | } |
| | | //创建默认位置 |
| | | location := &models.Location{ |
| | | Name: "默认位置", |
| | | JointName: 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 |
| | | err = models.WithTransaction(func(tx *gorm.DB) error { |
| | | |
| | | err := models.WithTransaction(func(tx *gorm.DB) error { |
| | | err := models.NewWarehouseSearch().SetOrm(tx).Create(¶ms) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | |
| | | //创建视图 |
| | | view := &models.Location{ |
| | | Name: params.Code, |
| | | JointName: params.Code, |
| | | Type: constvar.LocationTypeView, |
| | | WarehouseId: params.Id, |
| | | } |
| | | viewId, err := models.NewLocationSearch().CreateReturnId(view) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | |
| | | //创建默认位置 |
| | | location := &models.Location{ |
| | | Name: params.Name, |
| | | JointName: params.Name, |
| | | Type: constvar.LocationTypeInternal, |
| | | ReplenishLocation: true, |
| | | ParentId: viewId, |
| | | WarehouseId: params.Id, |
| | | } |
| | | locationId, err := models.NewLocationSearch().SetOrm(tx).CreateReturnId(location) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | |
| | | //更改仓库记录里的位置id |
| | | params.LocationId = locationId |
| | | err = models.NewWarehouseSearch().SetOrm(tx).SetID(params.Id).UpdateByMap(map[string]interface{}{"location_id": locationId}) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | |
| | | //创建三个默认操作类型 |
| | | var types []*models.OperationType |
| | | inType := &models.OperationType{ |
| | |
| | | err = models.NewOperationTypeSearch().SetOrm(tx).CreateBatch(types) |
| | | return err |
| | | }) |
| | | |
| | | if err != nil { |
| | | _ = models.NewLocationSearch().SetID(locationId).Delete() |
| | | logx.Errorf("warehouse create err: %v", err) |
| | | util.ResponseFormat(c, code.SaveFail, "插入失败") |
| | | return |
| | | } |
| | |
| | | util.ResponseFormat(c, code.RequestParamError, err.Error()) |
| | | return |
| | | } |
| | | err := models.NewWarehouseSearch().SetID(params.Id).Update(¶ms) |
| | | warehouse, err := models.NewWarehouseSearch().SetID(params.Id).First() |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "仓库不存在") |
| | | return |
| | | } |
| | | err = models.WithTransaction(func(db *gorm.DB) error { |
| | | //更新作业类型名称 |
| | | if params.Name != warehouse.Name { |
| | | m := make(map[string]interface{}) |
| | | m["name"] = params.Name + "-入库" |
| | | err := models.NewOperationTypeSearch().SetOrm(db).SetBaseOperationType(constvar.BaseOperationTypeIncoming).SetWarehouseId(params.Id).UpdateByMap(m) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | m["name"] = params.Name + "-出库" |
| | | err = models.NewOperationTypeSearch().SetOrm(db).SetBaseOperationType(constvar.BaseOperationTypeOutgoing).SetWarehouseId(params.Id).UpdateByMap(m) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | m["name"] = params.Name + "-内部调拨" |
| | | err = models.NewOperationTypeSearch().SetOrm(db).SetBaseOperationType(constvar.BaseOperationTypeInternal).SetWarehouseId(params.Id).UpdateByMap(m) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | } |
| | | err = models.NewWarehouseSearch().SetID(params.Id).Update(¶ms) |
| | | return err |
| | | }) |
| | | |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "修改失败") |
| | |
| | | } |
| | | //更新位置信息 |
| | | if oldRecord != nil && params.Code != oldRecord.Code { |
| | | m := make(map[string]interface{}) |
| | | m["joint_name"] = params.Code |
| | | err := models.NewLocationSearch().SetID(oldRecord.LocationId).UpdateByMap(m) |
| | | locations, err := models.NewLocationSearch().SetJointName(oldRecord.Code).FindNotTotal() |
| | | if err != nil { |
| | | return errors.New("查询位置信息失败") |
| | | } |
| | | |
| | | err = models.WithTransaction(func(db *gorm.DB) error { |
| | | for _, location := range locations { |
| | | m := make(map[string]interface{}) |
| | | index := strings.Index(location.JointName, "/") |
| | | if index > 0 { |
| | | m["joint_name"] = params.Code + location.JointName[index:] |
| | | } else { |
| | | m["joint_name"] = params.Code |
| | | } |
| | | err = models.NewLocationSearch().SetOrm(db).SetID(location.Id).UpdateByMap(m) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | } |
| | | return nil |
| | | }) |
| | | if err != nil { |
| | | return errors.New("更新位置信息失败") |
| | | } |
| | |
| | | return |
| | | } |
| | | //获取位置信息 |
| | | codes := make([]string, 0) |
| | | ids := make([]int, 0) |
| | | for _, warehouse := range list { |
| | | codes = append(codes, warehouse.Code) |
| | | ids = append(ids, warehouse.LocationId) |
| | | } |
| | | locations, err := models.NewLocationSearch().SetJointNames(codes).FindNotTotal() |
| | | locations, err := models.NewLocationSearch().SetIds(ids).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 |
| | | warehouse.WarehouseLocation = location.Name |
| | | break |
| | | } |
| | | } |