type Virtual struct { Ts *gorm.DB } // VirtualWarehouseAdd 入库 func (vir *Virtual) VirtualWarehouseAdd(info *VirtualWarehouseInfo) error { var Vir VirtualWarehouse utils.Error(vir.Ts.Table("virtual_warehouse"). Select("total_num, ver, virid, bid, cid, shop_id, prodict_id, cbecskuid"). Scan(&Vir).Error) if Vir.Virid == info.Virid && Vir.Bid == info.Bid && Vir.Cid == info.Cid && Vir.Cbecskuid == info.Cbecskuid && Vir.ShopId == info.ShopId { utils.Error(vir.Ts.Table("virtual_warehouse"). Where("ver = ?", Vir.Ver). Updates(map[string]interface{}{ "ver": gorm.Expr("ver + ?", 1), "total_num": gorm.Expr("total_num + ?", info.Num), }).Error) InfoAdd(info, "1") } else if info.Virid > 0 && info.Bid > 0 && info.Cid != "" && info.Cbecskuid != "" && info.ShopId > 0 { InfoAdd(info, "1") f := model.TbVirtualWarehouse{ WarehouseStatus: model.Delete, Status: model.Normal, Ctime: time.Now().Unix(), Ver: 0, } utils.Error(vir.Ts.Table(model.TbSystemNotice{}.TableName()).Create(&f).Error) } else { return errors.New("参数错误") } return nil } // VirtualWarehouseDel 出库 func (vir *Virtual) VirtualWarehouseDel(info *VirtualWarehouseInfo) error { var Vir VirtualWarehouse utils.Error(vir.Ts.Table("virtual_warehouse"). Select("total_num, ver"). Scan(&Vir).Error) if Vir.TotalNum > info.Num { utils.Error(vir.Ts.Table("virtual_warehouse"). Where("ver = ?", Vir.Ver). Updates(map[string]interface{}{ "ver": gorm.Expr("ver + ?", 1), "total_num": gorm.Expr("total_num - ?", info.Num), }).Error) InfoAdd(info, "2") } else if Vir.TotalNum == info.Num { utils.Error(vir.Ts.Table("virtual_warehouse"). Where("ver = ?", Vir.Ver). Updates(map[string]interface{}{ "ver": gorm.Expr("ver + ?", 1), "warehouseStatus": 0, "total_num": gorm.Expr("total_num - ?", info.Num), }).Error) InfoAdd(info, "2") } else { return errors.New("仓库数量不足") } return nil } // 出入库列表添加 func InfoAdd(info *VirtualWarehouseInfo, Type string) { var a *gorm.DB var id string switch Type { case "1": id = "IN" + idGenerate.ID.Generate(idGenerate.Other) case "2": id = "OUT" + idGenerate.ID.Generate(idGenerate.Other) } f := model.TbVirtualWarehouseInfo{ InOutType: Type, //出入类型 1入库 2出库 InoutOrderNo: id, //出入库单号 InoutTime: time.Now().Unix(), //出入库时间 Status: "0", Ctime: time.Now().Unix(), Ver: 0, } utils.Error(copier.Copy(&f, info)) utils.Error(a.Table(model.TbSystemNotice{}.TableName()).Create(&f).Error) }
时间: 2024-04-11 21:29:34 浏览: 28
这段代码是关于虚拟仓库操作的函数。它定义了一个名为Virtual的结构体,并且有两个方法:VirtualWarehouseAdd和VirtualWarehouseDel,分别用于入库和出库操作。
在VirtualWarehouseAdd方法中,首先查询数据库中是否存在与传入参数相匹配的虚拟仓库记录。如果存在,则更新该记录的版本和总数量字段,并调用InfoAdd函数将相关信息添加到出入库列表中。如果不存在,则根据传入参数创建一个新的虚拟仓库记录,并将相关信息添加到出入库列表中。
在VirtualWarehouseDel方法中,首先查询数据库中是否存在与传入参数相匹配的虚拟仓库记录。如果存在,并且虚拟仓库的总数量大于要出库的数量,则更新该记录的版本和总数量字段,并调用InfoAdd函数将相关信息添加到出入库列表中。如果存在,并且虚拟仓库的总数量等于要出库的数量,则更新该记录的版本、仓库状态和总数量字段,并调用InfoAdd函数将相关信息添加到出入库列表中。如果不存在或者虚拟仓库的总数量小于要出库的数量,则返回一个错误。
InfoAdd函数用于将出入库相关信息添加到出入库列表中。根据传入的Type参数,生成一个唯一的出入库单号,并根据传入的info参数创建一个新的出入库记录,并将其保存到数据库中。
以上是关于虚拟仓库操作的一些代码逻辑。如果你有任何进一步的问题,请随时提出。
相关问题
*gorm.DB 怎么创建新表
要使用 GORM 创建新表,你需要先定义一个新的结构体来表示表中的数据列,如下所示:
```
type User struct {
ID uint `gorm:"primary_key"`
Name string `gorm:"size:255"`
Age uint
}
```
然后,你可以使用 `AutoMigrate` 函数来创建新表:
```
db.AutoMigrate(&User{})
```
这将会根据你定义的 `User` 结构体创建一个名为 "users" 的新表,并且将其列映射到结构体的字段上。如果表已经存在,那么 `AutoMigrate` 函数将会自动执行数据库迁移操作,以确保表结构与结构体定义保持一致。
typedef struct QNode* Queue;//将struct QNode* 替换为Queue,对象为结构体指针 typedef struct Robot* PtrRt;//将struct Robot* 替换为PtrRt typedef struct Node* PtrToNode如何理解
这段代码中使用了 typedef 关键字,将结构体指针类型重命名为了新的名称,具体解释如下:
1. typedef struct QNode* Queue;
这行代码将 struct QNode* 这个结构体指针类型重命名为 Queue,意味着以后在使用这个结构体指针类型时,可以直接使用 Queue 这个名称,而不需要写成 struct QNode*。
2. typedef struct Robot* PtrRt;
这行代码将 struct Robot* 这个结构体指针类型重命名为 PtrRt,以后在使用这个结构体指针类型时,可以直接使用 PtrRt 这个名称,而不需要写成 struct Robot*。
3. typedef struct Node* PtrToNode
这行代码将 struct Node* 这个结构体指针类型重命名为 PtrToNode,以后在使用这个结构体指针类型时,可以直接使用 PtrToNode 这个名称,而不需要写成 struct Node*。
这样做的目的是为了方便代码的阅读和书写,使得代码更加简洁易懂。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)