新增查询库存列表和详情接口

This commit is contained in:
chenlin 2023-11-16 18:09:11 +08:00
parent 065a80c343
commit e156b3d7d5
9 changed files with 1370 additions and 494 deletions

View File

@ -37,6 +37,7 @@ type CommodityCreateRequest struct {
// @Param request body CommodityCreateRequest true "商品新增模型"
// @Success 200 {object} models.ErpCommodity
// @Router /api/v1/commodity/create [post]
// 规则:商品名称/商品编号相同则为同一商品,创建的时候由于商品编号不重复,无需判断
func CommodityCreate(c *gin.Context) {
var req = new(CommodityCreateRequest)
@ -90,19 +91,6 @@ func CommodityCreate(c *gin.Context) {
}
commodity.IdInit()
//var catCommodity models.ErpCommodity
//err = orm.Eloquent.Table("erp_commodity").Where("erp_category_id=?", req.ErpCategoryId).
// Order("id DESC").Limit(1).Find(&catCommodity).Error
//if err != nil && err != models.RecordNotFound {
// //logger.Error("cat erp commodity err:", err)
// app.Error(c, http.StatusInternalServerError, err, "创建失败")
// return
//}
//if catCommodity.Number != 0 {
// commodity.Number = catCommodity.Number + 1
//}
//commodity.SerialNumber = fmt.Sprintf("%06d%04d", commodity.ErpCategory.FullNum, commodity.Number)
commodity.SerialNumber, err = models.GenerateSerialNumber(req.ErpCategoryId)
if err != nil {
app.Error(c, http.StatusInternalServerError, err, err.Error())
@ -224,24 +212,6 @@ func CommodityEdit(c *gin.Context) {
brokerage1Float := req.Brokerage1
brokerage2Float := req.Brokerage2
memberDiscountFloat := req.MemberDiscount
//brokerage1Float, err := strconv.ParseFloat(req.Brokerage1, 64)
//if err != nil {
// logger.Error("brokerage1 err:", err)
// app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
// return
//}
//brokerage2Float, err := strconv.ParseFloat(req.Brokerage2, 64)
//if err != nil {
// logger.Error("brokerage2 err:", err)
// app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
// return
//}
//memberDiscountFloat, err := strconv.ParseFloat(req.MemberDiscount, 64)
//if err != nil {
// logger.Error("member discount err:", err)
// app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
// return
//}
commodity := &models.ErpCommodity{
Name: req.Name,

View File

@ -0,0 +1,63 @@
package inventory
import (
"errors"
"github.com/gin-gonic/gin"
"go-admin/app/admin/models"
"go-admin/tools/app"
"net/http"
)
// InventoryList 查询库存列表
// @Summary 查询库存列表
// @Tags 库存管理
// @Produce json
// @Accept json
// @Param request body models.ErpStockListReq true "查询库存列表模型"
// @Success 200 {object} models.ErpStockListResp
// @Router /api/v1/inventory/list [post]
func GetInventoryList(c *gin.Context) {
req := &models.ErpStockListReq{}
if err := c.ShouldBindJSON(&req); err != nil {
//logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
resp, err := req.List()
if err != nil {
//logger.Error("erp commodity list err:", err)
app.Error(c, http.StatusInternalServerError, err, "获取失败")
return
}
app.OK(c, resp, "OK")
return
}
// InventoryDetail 查询库存详情
// @Summary 查询库存详情
// @Tags 库存管理
// @Produce json
// @Accept json
// @Param request body models.ErpStockCommodityListReq true "查询库存详情模型"
// @Success 200 {object} models.ErpStockCommodityListResp
// @Router /api/v1/inventory/detail [post]
func GetInventoryDetail(c *gin.Context) {
req := &models.ErpStockCommodityListReq{}
if err := c.ShouldBindJSON(&req); err != nil {
//logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误")
return
}
list, err := req.GetDetailList()
if err != nil {
//logger.Error("erp stock err:", err)
app.Error(c, http.StatusInternalServerError, err, "获取失败")
return
}
app.OK(c, list, "OK")
return
}

View File

@ -14,71 +14,62 @@ import (
"time"
)
// gen:qs
// ErpStock 库存表
//
//go:generate goqueryset -in commodity.go
type ErpStock struct {
Model
StoreId uint32 `json:"store_id" gorm:"index"`
StoreName string `json:"store_name"`
ErpCommodityId uint32 `json:"erp_commodity_id" gorm:"index"`
ErpCommodityName string `json:"erp_commodity_name"`
ErpCategoryId uint32 `json:"erp_category_id" gorm:"index"`
ErpCategoryName string `json:"erp_category_name"`
CommoditySerialNumber string `json:"commodity_serial_number" gorm:"index"`
StoreId uint32 `json:"store_id" gorm:"index"` // 门店编号
StoreName string `json:"store_name"` // 门店名称
ErpCommodityId uint32 `json:"erp_commodity_id" gorm:"index"` // 商品id
ErpCommodityName string `json:"erp_commodity_name"` // 商品名称
ErpCategoryId uint32 `json:"erp_category_id" gorm:"index"` // 分类id
ErpCategoryName string `json:"erp_category_name"` // 分类名称
CommoditySerialNumber string `json:"commodity_serial_number" gorm:"index"` // 商品编码/串码
IMEIType uint32 `json:"imei_type"` // 1-无串码 2-串码(系统生成) 3-串码(手动添加)
RetailPrice uint32 `json:"retail_price"`
MinRetailPrice uint32 `json:"min_retail_price"`
Count uint32 `json:"count"`
DispatchCount uint32 `json:"dispatch_count"`
//ErpSupplierId uint32 `json:"erp_supplier_id" gorm:"index"`
//ErpSupplierName string `json:"erp_supplier_name"`
//IMEI string `json:"imei"`
//StockTime time.Time `json:"stock_time"`
//StaffCostPrice uint32 `json:"staff_cost_price"`
//WholesalePrice uint32 `json:"wholesale_price"`
//OriginalSn string `json:"original_sn" gorm:"index"`
RetailPrice uint32 `json:"retail_price"` // 指导零售价
MinRetailPrice uint32 `json:"min_retail_price"` // 最低零售价
Count uint32 `json:"count"` // 数量
DispatchCount uint32 `json:"dispatch_count"` // 调拨中数量
Commodities []ErpStockCommodity `json:"commodities" gorm:"-"`
// erp_stock
}
// gen:qs
// ErpStockCommodity 库存详情
type ErpStockCommodity struct {
Model
ErpStockId uint32 `json:"erp_stock_id" gorm:"index"`
StoreId uint32 `json:"store_id" gorm:"index"`
StoreName string `json:"store_name"`
ErpCommodityId uint32 `json:"erp_commodity_id" gorm:"index"`
ErpCommodityName string `json:"erp_commodity_name"`
CommoditySerialNumber string `json:"commodity_serial_number" gorm:"index"`
ErpCategoryId uint32 `json:"erp_category_id" gorm:"index"`
ErpCategoryName string `json:"erp_category_name"`
IMEIType uint32 `json:"imei_type"` // 1-无串码 2-串码(系统生成) 3-串码(手动添加)
IMEI string `json:"imei"`
ErpSupplierId uint32 `json:"erp_supplier_id" gorm:"index"`
ErpSupplierName string `json:"erp_supplier_name"`
StockTime time.Time `json:"stock_time"`
RetailPrice uint32 `json:"retail_price"`
MinRetailPrice uint32 `json:"min_retail_price"`
StaffCostPrice uint32 `json:"staff_cost_price"`
WholesalePrice uint32 `json:"wholesale_price"`
OriginalSn string `json:"original_sn" gorm:"index"`
ErpStockId uint32 `json:"erp_stock_id" gorm:"index"` // 库存id
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
StoreName string `json:"store_name"` // 门店名称
ErpCommodityId uint32 `json:"erp_commodity_id" gorm:"index"` // 商品id
ErpCommodityName string `json:"erp_commodity_name"` // 商品名称
CommoditySerialNumber string `json:"commodity_serial_number" gorm:"index"` // 商品编号
ErpCategoryId uint32 `json:"erp_category_id" gorm:"index"` // 分类id
ErpCategoryName string `json:"erp_category_name"` // 分类名称
IMEIType uint32 `json:"imei_type"` // 是否串码1-无串码 2-串码(系统生成) 3-串码(手动添加)
IMEI string `json:"imei"` // 商品串码
ErpSupplierId uint32 `json:"erp_supplier_id" gorm:"index"` // 供应商id
ErpSupplierName string `json:"erp_supplier_name"` // 供应商名称
StockTime time.Time `json:"stock_time"` // 最近入库时间
RetailPrice uint32 `json:"retail_price"` // 指导零售价
MinRetailPrice uint32 `json:"min_retail_price"` // 最低零售价
StaffCostPrice uint32 `json:"staff_cost_price"` // 员工成本价加价
WholesalePrice uint32 `json:"wholesale_price"` // 指导采购价
State uint32 `json:"state"` // 状态:1-在库 2-已售 3-采购退货 4-调拨中
Count uint32 `json:"count"`
StockSn string `json:"stock_sn"`
StorageType uint32 `json:"storage_type"` //1-系统入库 2-采购入库
FirstStockTime time.Time `json:"first_stock_time"`
Age uint32 `json:"age" gorm:"-"`
AllAge uint32 `json:"all_age" gorm:"-"`
Commodity ErpCommodity `json:"commodity" gorm:"-"`
//DispatchCount uint32 `json:"dispatch_count"`
// erp_stock_commodity
Count uint32 `json:"count"` // 数量
StorageType uint32 `json:"storage_type"` // 入库方式1-系统入库 2-采购入库
FirstStockTime time.Time `json:"first_stock_time"` // 首次入库时间
StockSn string `json:"stock_sn"` // 库存订单编号
OriginalSn string `json:"original_sn" gorm:"index"` // 首次入库订单编号
StockStartTime time.Time `json:"stock_start_time" gorm:"-"` // 最近入库开始时间
StockEndTime time.Time `json:"stock_end_time" gorm:"-"` // 最近入库结束时间
Age uint32 `json:"age" gorm:"-"` // 最近库龄
AllAge uint32 `json:"all_age" gorm:"-"` // 总库龄
//Commodity ErpCommodity `json:"commodity" gorm:"-"`
}
// gen:qs
// ErpCommodity 商品表
type ErpCommodity struct {
Model
@ -102,7 +93,6 @@ type ErpCommodity struct {
Remark string `json:"remark" gorm:"type:varchar(512)"` // 备注
ErpCategory *ErpCategory `json:"erp_category" gorm:"-"`
// erp_commodity
}
// gen:qs
@ -526,122 +516,6 @@ type ErpCategorySub struct {
//UnCodeMap map[string]uint32
}
func ErpCommodityFileExcelListProcessing(list []ErpCommodityFileExcel) {
allCategoriesMap, err := GetErpCategorySubMap()
if err != nil {
//logger.Error("all categories map err:", err)
return
}
fmt.Println("allCategoriesMap:", allCategoriesMap)
unCodeMap1 := make(map[string]string, 0)
unCodeMap2 := make(map[string]string, 0)
numberCount := &CommodityNumberCount{}
numberCount.NumberMap = make(map[uint32]uint32, 0)
for i, _ := range list {
//if i == 0 {
// continue
//}
list[i].Processing()
cat1 := list[i].Category1
unCode1, okUc1 := unCodeMap1[cat1]
if okUc1 {
cat1 = unCode1
}
catSub, ok := allCategoriesMap[cat1]
if ok {
if list[i].Category2 != "" {
cat2 := list[i].Category2
unCode2, okUc2 := unCodeMap2[cat2]
if okUc2 {
cat2 = unCode2
}
sub, ok1 := catSub.SubMap[unCode2]
//unCodeCat, ok2 := unCodeMap2[list[i].Category2]
if ok1 {
list[i].ErpCommodity.ErpCategoryId = sub.ID
list[i].ErpCommodity.ErpCategory = &sub
numberCommodity, err := numberCount.GetErpCommodityNumberByCategoryId(sub.ID)
if err != nil {
//logger.Error("category2 create err:", err)
return
}
list[i].ErpCommodity.Number = numberCommodity
list[i].ErpCommodity.ErpCategoryName = cat2
} else {
category2, err := ErpCategoryCreate(list[i].Category2, catSub.Id)
if err != nil {
//logger.Error("category2 create err:", err)
return
}
fmt.Println("分类id", category2.ID)
list[i].ErpCommodity.ErpCategoryId = category2.ID
list[i].ErpCommodity.ErpCategory = category2
allCategoriesMap, err = GetErpCategorySubMap()
if err != nil {
//logger.Error("all categories map err:", err)
return
}
numberCount.NumberMap[category2.ID] = 1
list[i].ErpCommodity.Number = 1
list[i].ErpCommodity.ErpCategoryName = cat2
unCodeMap2[list[i].Category2] = category2.Name
}
} else {
list[i].ErpCommodity.ErpCategoryId = catSub.Id
list[i].ErpCommodity.ErpCategory = &ErpCategory{Number: catSub.FullNum} // TODO
numberCommodity, err := numberCount.GetErpCommodityNumberByCategoryId(catSub.Id)
if err != nil {
//logger.Error("category2 create err:", err)
return
}
list[i].ErpCommodity.Number = numberCommodity
list[i].ErpCommodity.ErpCategoryName = catSub.Name
}
list[i].ErpCommodity.SerialNumber = fmt.Sprintf("%06d%04d", list[i].ErpCommodity.ErpCategory.FullNum, list[i].ErpCommodity.Number)
} else {
category1, err := ErpCategoryCreate(list[i].Category1, 0)
if err != nil {
//logger.Error("category1 create err:", err)
return
}
unCodeMap1[list[i].Category1] = category1.Name
if list[i].Category2 != "" {
category2, err := ErpCategoryCreate(list[i].Category2, category1.ID)
if err != nil {
//logger.Error("category2 create err:", err)
return
}
fmt.Println("分类id2", category2.ID)
list[i].ErpCommodity.ErpCategoryId = category2.ID
list[i].ErpCommodity.ErpCategoryName = list[i].Category2
list[i].ErpCommodity.ErpCategory = category2
unCodeMap2[list[i].Category2] = category2.Name
numberCount.NumberMap[category2.ID] = 1
list[i].ErpCommodity.Number = 1
} else {
list[i].ErpCommodity.ErpCategoryId = category1.ID
list[i].ErpCommodity.ErpCategoryName = list[i].Category1
list[i].ErpCommodity.ErpCategory = category1
numberCount.NumberMap[category1.ID] = 1
list[i].ErpCommodity.Number = 1
}
list[i].ErpCommodity.SerialNumber = fmt.Sprintf("%06d%04d", list[i].ErpCommodity.ErpCategory.FullNum, list[i].ErpCommodity.Number)
allCategoriesMap, err = GetErpCategorySubMap()
if err != nil {
//logger.Error("all categories map err:", err)
return
}
} /**/
}
}
type CommodityNumberCount struct {
NumberMap map[uint32]uint32 `json:"number_map"`
}
@ -1196,61 +1070,6 @@ func ErpStockCommodityToInventory(inventoryStockIdMap map[string]uint32, list []
return inventoryList
}
func GetErpCommodityMap(ids []uint32) (map[uint32]ErpCommodity, error) {
commodityMap := make(map[uint32]ErpCommodity, 0)
if len(ids) == 0 {
return commodityMap, nil
}
var commodities []ErpCommodity
err := orm.Eloquent.Table("erp_commodity").Where("id IN (?)", ids).Find(&commodities).Error
if err != nil {
//logger.Error("commodities err:", err)
return commodityMap, err
}
for i, _ := range commodities {
commodityMap[commodities[i].ID] = commodities[i]
}
return commodityMap, nil
}
func ErpSupplierListExport(list []ErpSupplier) (string, error) {
file := excelize.NewFile()
streamWriter, err := file.NewStreamWriter("Sheet1")
if err != nil {
fmt.Println(err)
}
url := "http://39.108.188.218:8000/img/export/"
fileName := time.Now().Format(TimeFormat) + "供应商" + ".xlsx"
//title := []interface{}{"门店", "用户ID", "订单编号", "下单时间", "卡带", "说明", "回收价", "闲麦价", "审核时间", "审核人", "操作", "复核时间", "复核状态"}
title := []interface{}{"供应商编号", "供应商名称", "联系人", "手机号", "地址", "开户银行", "银行账号", "付款周期/天"}
cell, _ := excelize.CoordinatesToCellName(1, 1)
if err = streamWriter.SetRow(cell, title); err != nil {
fmt.Println(err)
}
var row []interface{}
for rowId := 0; rowId < len(list); rowId++ {
row = []interface{}{list[rowId].Number, list[rowId].Name, list[rowId].Contact,
list[rowId].Tel, list[rowId].Address, list[rowId].OpeningBank,
list[rowId].BankAccount, list[rowId].PaymentCycle}
cell, _ := excelize.CoordinatesToCellName(1, rowId+2)
if err := streamWriter.SetRow(cell, row); err != nil {
fmt.Println(err)
}
}
if err := streamWriter.Flush(); err != nil {
fmt.Println(err)
}
if err := file.SaveAs("/www/server/images/export/" + fileName); err != nil {
//if err := file.SaveAs("./" + fileName); err != nil {
fmt.Println(err)
}
return url + fileName, nil
}
func ErpCommodityListExport(list []ErpCommodity) (string, error) {
file := excelize.NewFile()
streamWriter, err := file.NewStreamWriter("Sheet1")
@ -1294,41 +1113,6 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) {
return url + fileName, nil
}
//func ErpStoreCashierListExport(list []ErpStoreCashier) (string, error) {
// file := excelize.NewFile()
// streamWriter, err := file.NewStreamWriter("Sheet1")
// if err != nil {
// fmt.Println(err)
// }
//
// url := "http://39.108.188.218:8000/img/export/"
// fileName := time.Now().Format(TimeFormat) + "支付账号" + ".xlsx"
//
// //title := []interface{}{"门店", "用户ID", "订单编号", "下单时间", "卡带", "说明", "回收价", "闲麦价", "审核时间", "审核人", "操作", "复核时间", "复核状态"}
// title := []interface{}{"所属门店", "账号名称", "银行全称", "银行账号"}
// cell, _ := excelize.CoordinatesToCellName(1, 1)
// if err = streamWriter.SetRow(cell, title); err != nil {
// fmt.Println(err)
// }
// var row []interface{}
// for rowId := 0; rowId < len(list); rowId++ {
// row = []interface{}{list[rowId].StoreName, list[rowId].Name, list[rowId].BankName,
// list[rowId].BankAccount}
// cell, _ := excelize.CoordinatesToCellName(1, rowId+2)
// if err := streamWriter.SetRow(cell, row); err != nil {
// fmt.Println(err)
// }
// }
// if err := streamWriter.Flush(); err != nil {
// fmt.Println(err)
// }
// if err := file.SaveAs("/www/server/images/export/" + fileName); err != nil {
// //if err := file.SaveAs("./" + fileName); err != nil {
// fmt.Println(err)
// }
// return url + fileName, nil
//}
func ErpCategoryListExport(list []ErpCategory) (string, error) {
file := excelize.NewFile()
streamWriter, err := file.NewStreamWriter("Sheet1")
@ -1373,13 +1157,14 @@ func ErpCategoryListExport(list []ErpCategory) (string, error) {
}
type ErpStockListReq struct {
SerialNumber string `json:"serial_number"`
CommodityName string `json:"commodity_name"`
ErpCategoryId uint32 `json:"erp_category_id"`
StockType uint32 `json:"stock_type"` // 库存:1-全部 2-有库存 3-无库存
PageNum int `json:"page_num"`
PageSize int `json:"page_size"`
IsExport uint32 `json:"is_export"` // 1-导出
SerialNumber string `json:"serial_number"` // 商品编号
CommodityName string `json:"commodity_name"` // 商品名称
ErpCategoryId uint32 `json:"erp_category_id"` // 商品分类
StockType uint32 `json:"stock_type"` // 库存情况:1-全部 2-有库存 3-无库存
StoreId uint32 `json:"store_id"` // 门店编号
PageNum int `json:"page_num"` // 页面条数
PageSize int `json:"page_size"` // 页码
//IsExport uint32 `json:"is_export"` // 1-导出
}
type ErpStockListResp struct {
List []ErpStock `json:"list"`
@ -1411,42 +1196,30 @@ func (m *ErpStockListReq) List() (*ErpStockListResp, error) {
if m.ErpCategoryId != 0 {
qs = qs.Where("erp_category_id=?", m.ErpCategoryId)
}
if m.StockType != 0 {
if m.StockType == 2 {
qs = qs.Where("count>0")
} else if m.StockType == 3 {
qs = qs.Where("count=0")
if m.StoreId != 0 {
qs = qs.Where("store_id=?", m.StoreId)
}
switch m.StockType {
case 2:
qs = qs.Where("count > 0")
case 3:
qs = qs.Where("count = 0")
}
var count int64
err := qs.Count(&count).Error
if err != nil {
if err := qs.Count(&count).Error; err != nil {
//logger.Error("count err:", err)
return resp, err
}
resp.Total = int(count)/m.PageSize + 1
var commodities []ErpStock
if m.IsExport == 1 {
err = qs.Order("id DESC").Find(&commodities).Error
if err != nil && err != RecordNotFound {
//logger.Error("dailys err:", err)
return resp, err
}
//listExport, err := ErpCommodityListExport(commodities)
//if err != nil {
// logger.Error("list export err:", err)
//}
//resp.ExportUrl = listExport
} else {
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&commodities).Error
if err != nil && err != RecordNotFound {
err := qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&commodities).Error
if err != nil && !errors.Is(err, RecordNotFound) {
//logger.Error("erp commodity list err:", err)
return resp, err
}
resp.List = commodities
}
return resp, nil
}
@ -1467,22 +1240,26 @@ func ErpStockCommodityListSetCommodity(commodities []ErpStockCommodity) {
}
}
// ErpStockCommodityListReq 库存详情接口请求参数
type ErpStockCommodityListReq struct {
CommodityName string `json:"commodity_name"`
ErpCategoryId uint32 `json:"erp_category_id"`
SerialNumber string `json:"serial_number"`
StoreId uint32 `json:"store_id"`
IMEI string `json:"imei"`
State uint32 `json:"state"`
Sn string `json:"sn"`
StorageType uint32 `json:"storage_type"`
StockTimeStart string `json:"stock_time_start"`
StockTimeEnd string `json:"stock_time_end"`
Age uint32 `json:"age"`
AllAge uint32 `json:"all_age"`
PageNum int `json:"page_num"`
PageSize int `json:"page_size"`
IsExport uint32 `json:"is_export"` // 1-导出
ErpStockId uint32 `json:"erp_stock_id"` // 库存id
ErpCommodityId uint32 `json:"erp_commodity_id"` // 商品id
SerialNumber string `json:"serial_number"` // 商品编号
CommodityName string `json:"commodity_name"` // 商品名称
ErpCategoryId uint32 `json:"erp_category_id"` // 商品分类Id
IMEI string `json:"imei"` // 串码
StoreId uint32 `json:"store_id"` // 门店编号
SupplierId uint32 `json:"supplier_id"` // 供应商id
State uint32 `json:"state"` // 库存状态:1-在库 2-已售 3-采购退货 4-调拨中
Sn string `json:"sn"` // 首次入库订单编号
StorageType uint32 `json:"storage_type"` // 首次入库方式1-系统入库 2-采购入库
StockTimeStart string `json:"stock_time_start"` // 最近入库开始时间
StockTimeEnd string `json:"stock_time_end"` // 最近入库结束时间
Age uint32 `json:"age"` // 最近库龄
AllAge uint32 `json:"all_age"` // 总库龄
PageNum int `json:"page_num"` // 页面条数
PageSize int `json:"page_size"` // 页码
IsExport uint32 `json:"is_export"` // 是否导出excel1-导出
}
type ErpStockCommodityListResp struct {
List []ErpStockCommodity `json:"list"`
@ -1492,7 +1269,7 @@ type ErpStockCommodityListResp struct {
ExportUrl string `json:"export_url"`
}
func (m *ErpStockCommodityListReq) List() (*ErpStockCommodityListResp, error) {
func (m *ErpStockCommodityListReq) GetDetailList() (*ErpStockCommodityListResp, error) {
resp := &ErpStockCommodityListResp{
PageNum: m.PageNum,
PageSize: m.PageSize,
@ -1504,72 +1281,24 @@ func (m *ErpStockCommodityListReq) List() (*ErpStockCommodityListResp, error) {
if m.PageSize == 0 {
m.PageSize = 10
}
qs := orm.Eloquent.Table("erp_stock_commodity")
if m.SerialNumber != "" {
qs = qs.Where("commodity_serial_number=?", m.SerialNumber)
}
if m.CommodityName != "" {
qs = qs.Where("name Like %" + m.CommodityName + "%")
}
if m.ErpCategoryId != 0 {
qs = qs.Where("erp_category_id=?", m.ErpCategoryId)
}
if m.IMEI != "" {
qs = qs.Where("imei=?", m.IMEI)
}
if m.StoreId != 0 {
qs = qs.Where("store_id=?", m.StoreId)
}
if m.State != 0 {
qs = qs.Where("state=?", m.State)
}
if m.Sn != "" {
qs = qs.Where("stock_sn=?", m.Sn)
}
if m.StorageType != 0 {
qs = qs.Where("storage_type=?", m.StorageType)
}
if m.StockTimeStart != "" {
startTime, err := time.Parse(DateTimeFormat, m.StockTimeStart)
if err != nil {
//logger.Error("stock time start parse err:", err)
} else {
qs = qs.Where("first_stock_time>?", startTime)
}
}
if m.StockTimeEnd != "" {
endTime, err := time.Parse(DateTimeFormat, m.StockTimeEnd)
if err != nil {
//logger.Error("stock time end parse err:", err)
} else {
qs = qs.Where("first_stock_time<?", endTime)
}
}
if m.Age != 0 {
qs = qs.Where("stock_time<?", time.Now().AddDate(0, 0, int(m.Age)*(-1)))
}
if m.AllAge != 0 {
qs = qs.Where("first_stock_time<?", time.Now().AddDate(0, 0, int(m.AllAge)*(-1)))
}
//if m.StockType != 0 {
// if m.StockType == 2 {
// qs = qs.Where("count>0")
// } else if m.StockType == 3 {
// qs = qs.Where("count=0")
// }
//}
qs := orm.Eloquent.Table("erp_stock_commodity").Order("id DESC")
// 构建查询条件
m.buildQueryConditions(qs)
var count int64
err := qs.Count(&count).Error
if err != nil {
if err := qs.Count(&count).Error; err != nil {
//logger.Error("count err:", err)
return resp, err
}
resp.Total = int(count)/m.PageSize + 1
var commodities []ErpStockCommodity
//获取库存商品列表
var commodities []ErpStockCommodity
if m.IsExport == 1 {
err = qs.Order("id DESC").Find(&commodities).Error
if err != nil && err != RecordNotFound {
err := qs.Find(&commodities).Error
if err != nil && !errors.Is(err, RecordNotFound) {
//logger.Error("dailys err:", err)
return resp, err
}
@ -1580,8 +1309,8 @@ func (m *ErpStockCommodityListReq) List() (*ErpStockCommodityListResp, error) {
//}
//resp.ExportUrl = listExport
} else {
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&commodities).Error
if err != nil && err != RecordNotFound {
err := qs.Offset(page * m.PageSize).Limit(m.PageSize).Find(&commodities).Error
if err != nil && !errors.Is(err, RecordNotFound) {
//logger.Error("erp commodity list err:", err)
return resp, err
}
@ -1592,47 +1321,71 @@ func (m *ErpStockCommodityListReq) List() (*ErpStockCommodityListResp, error) {
return resp, nil
}
//func ErpOrderListExport(list []ErpOrder) (string, error) {
// file := excelize.NewFile()
// streamWriter, err := file.NewStreamWriter("Sheet1")
// if err != nil {
// fmt.Println(err)
// }
//
// //url := "http://39.108.188.218:8000/img/export/"
// fileName := time.Now().Format(TimeFormat) + "零售订单" + ".xlsx"
//
// title := []interface{}{"单据编号", "类型", "手机号", "店铺名称", "制单人", "制单时间", "审核时间", "审核人", "状态"}
// cell, _ := excelize.CoordinatesToCellName(1, 1)
// if err = streamWriter.SetRow(cell, title); err != nil {
// fmt.Println(err)
// }
// var row []interface{}
// for rowId := 0; rowId < len(list); rowId++ {
// row = []interface{}{list[rowId].BillSn, list[rowId].RetailType, list[rowId].Tel, list[rowId].StoreName,
// list[rowId].MakerName, list[rowId].MakerId, list[rowId].MakerTime.Format(TimeFormat),
// list[rowId].AuditTime.Format(TimeFormat), list[rowId].AuditorName, ErpOrderStateToString(list[rowId].State),
// }
// cell, _ := excelize.CoordinatesToCellName(1, rowId+2)
// if err := streamWriter.SetRow(cell, row); err != nil {
// fmt.Println(err)
// }
// }
// if err := streamWriter.Flush(); err != nil {
// fmt.Println(err)
// }
// //if err := file.SaveAs("/www/server/images/export/" + fileName); err != nil {
// if err := file.SaveAs("./" + fileName); err != nil {
// fmt.Println(err)
// }
// return ExportBaseUrl + fileName, nil
//}
//
//func ErpOrderStateToString(state string) string {
// if state == ErpOrderStateUnAudit {
// return "未审核"
// } else if state == ErpOrderStateAudited {
// return "已审核"
// }
// return ""
//}
// buildQueryConditions 根据请求参数构建查询条件
func (m *ErpStockCommodityListReq) buildQueryConditions(qs *gorm.DB) {
if m.ErpStockId != 0 { //库存id
qs = qs.Where("erp_stock_id=?", m.ErpStockId)
}
if m.ErpCommodityId != 0 { //商品id
qs = qs.Where("erp_commodity_id=?", m.ErpCommodityId)
}
if m.SerialNumber != "" { //商品编号
qs = qs.Where("commodity_serial_number=?", m.SerialNumber)
}
if m.CommodityName != "" { //商品名称
qs = qs.Where("erp_commodity_name LIKE ?", "%"+m.CommodityName+"%")
}
if m.ErpCategoryId != 0 { //商品分类id
qs = qs.Where("erp_category_id=?", m.ErpCategoryId)
}
if m.IMEI != "" { //商品串码
qs = qs.Where("imei=?", m.IMEI)
}
if m.StoreId != 0 { //门店编号
qs = qs.Where("store_id=?", m.StoreId)
}
if m.State != 0 { //库存状态
qs = qs.Where("state=?", m.State)
}
if m.Sn != "" { //首次入库订单编号
qs = qs.Where("stock_sn=?", m.Sn)
}
if m.StorageType != 0 { //首次入库方式
qs = qs.Where("storage_type=?", m.StorageType)
}
if m.StockTimeStart != "" { //最近入库开始时间
startTime, err := time.Parse(DateTimeFormat, m.StockTimeStart)
if err == nil {
qs = qs.Where("first_stock_time>?", startTime)
} else {
//logger.Error("stock time start parse err:", err)
}
}
if m.StockTimeEnd != "" { //最近入库结束时间
endTime, err := time.Parse(DateTimeFormat, m.StockTimeEnd)
if err == nil {
qs = qs.Where("first_stock_time<?", endTime)
} else {
//logger.Error("stock time end parse err:", err)
}
}
if m.Age != 0 { //最近库龄
qs = qs.Where("stock_time<?", time.Now().AddDate(0, 0, int(m.Age)*(-1)))
}
if m.AllAge != 0 { //总库龄
qs = qs.Where("first_stock_time<?", time.Now().AddDate(0, 0, int(m.AllAge)*(-1)))
}
}

View File

@ -45,7 +45,7 @@ func (s *Supplier) BeforeCreate(tx *gorm.DB) error {
logger.Error("get supplier count failed", logger.Field("err", err), logger.Field("s", s))
return err
}
s.Number = fmt.Sprintf("%03d", count)
s.Number = fmt.Sprintf("%03d", count+1)
}
return nil
}

View File

@ -0,0 +1,14 @@
package router
import (
"github.com/gin-gonic/gin"
"go-admin/app/admin/apis/inventory"
"go-admin/app/admin/middleware"
jwt "go-admin/pkg/jwtauth"
)
func registerInventoryManageRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
r := v1.Group("/inventory").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
r.POST("list", inventory.GetInventoryList)
r.POST("detail", inventory.GetInventoryDetail)
}

View File

@ -94,12 +94,14 @@ func examplesCheckRoleRouter(r *gin.Engine, authMiddleware *jwtauth.GinJWTMiddle
// 回收卡
registerRecycleCardManageRouter(v1, authMiddleware)
//供应商
// 供应商
registerSupplierRouter(v1, authMiddleware)
//商品分类
// 商品分类
registerCategoryRouter(v1, authMiddleware)
//商品资料
// 商品资料
registerCommodityRouter(v1, authMiddleware)
//收付款账号设置
// 收付款账号设置
registerCashierRouter(v1, authMiddleware)
// 库存管理
registerInventoryManageRouter(v1, authMiddleware)
}

View File

@ -10,10 +10,6 @@ const docTemplate = `{
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"contact": {},
"license": {
"name": "MIT",
"url": "https://github.com/wenjianzhang/go-admin/blob/master/LICENSE.md"
},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
@ -1466,6 +1462,72 @@ const docTemplate = `{
}
}
},
"/api/v1/inventory/detail": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"库存管理"
],
"summary": "查询库存详情",
"parameters": [
{
"description": "查询库存详情模型",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.ErpStockCommodityListReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.ErpStockCommodityListResp"
}
}
}
}
},
"/api/v1/inventory/list": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"库存管理"
],
"summary": "查询库存列表",
"parameters": [
{
"description": "查询库存列表模型",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.ErpStockListReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.ErpStockListResp"
}
}
}
}
},
"/api/v1/loginlog": {
"put": {
"security": [
@ -4331,6 +4393,350 @@ const docTemplate = `{
}
}
},
"models.ErpStock": {
"type": "object",
"properties": {
"commodities": {
"type": "array",
"items": {
"$ref": "#/definitions/models.ErpStockCommodity"
}
},
"commodity_serial_number": {
"description": "商品编码/串码",
"type": "string"
},
"count": {
"description": "数量",
"type": "integer"
},
"createdAt": {
"description": "创建时间",
"type": "string"
},
"dispatch_count": {
"description": "调拨中数量",
"type": "integer"
},
"erp_category_id": {
"description": "分类id",
"type": "integer"
},
"erp_category_name": {
"description": "分类名称",
"type": "string"
},
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
},
"erp_commodity_name": {
"description": "商品名称",
"type": "string"
},
"id": {
"description": "数据库记录编号",
"type": "integer"
},
"imei_type": {
"description": "1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"min_retail_price": {
"description": "最低零售价",
"type": "integer"
},
"retail_price": {
"description": "指导零售价",
"type": "integer"
},
"store_id": {
"description": "门店编号",
"type": "integer"
},
"store_name": {
"description": "门店名称",
"type": "string"
}
}
},
"models.ErpStockCommodity": {
"type": "object",
"properties": {
"age": {
"description": "最近库龄",
"type": "integer"
},
"all_age": {
"description": "总库龄",
"type": "integer"
},
"commodity_serial_number": {
"description": "商品编号",
"type": "string"
},
"count": {
"description": "数量",
"type": "integer"
},
"createdAt": {
"description": "创建时间",
"type": "string"
},
"erp_category_id": {
"description": "分类id",
"type": "integer"
},
"erp_category_name": {
"description": "分类名称",
"type": "string"
},
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
},
"erp_commodity_name": {
"description": "商品名称",
"type": "string"
},
"erp_stock_id": {
"description": "库存id",
"type": "integer"
},
"erp_supplier_id": {
"description": "供应商id",
"type": "integer"
},
"erp_supplier_name": {
"description": "供应商名称",
"type": "string"
},
"first_stock_time": {
"description": "首次入库时间",
"type": "string"
},
"id": {
"description": "数据库记录编号",
"type": "integer"
},
"imei": {
"description": "商品串码",
"type": "string"
},
"imei_type": {
"description": "是否串码1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"min_retail_price": {
"description": "最低零售价",
"type": "integer"
},
"original_sn": {
"description": "首次入库订单编号",
"type": "string"
},
"retail_price": {
"description": "指导零售价",
"type": "integer"
},
"staff_cost_price": {
"description": "员工成本价加价",
"type": "integer"
},
"state": {
"description": "状态:1-在库 2-已售 3-采购退货 4-调拨中",
"type": "integer"
},
"stock_end_time": {
"description": "最近入库结束时间",
"type": "string"
},
"stock_sn": {
"description": "库存订单编号",
"type": "string"
},
"stock_start_time": {
"description": "最近入库开始时间",
"type": "string"
},
"stock_time": {
"description": "最近入库时间",
"type": "string"
},
"storage_type": {
"description": "入库方式1-系统入库 2-采购入库",
"type": "integer"
},
"store_id": {
"description": "门店id",
"type": "integer"
},
"store_name": {
"description": "门店名称",
"type": "string"
},
"wholesale_price": {
"description": "指导采购价",
"type": "integer"
}
}
},
"models.ErpStockCommodityListReq": {
"type": "object",
"properties": {
"age": {
"description": "最近库龄",
"type": "integer"
},
"all_age": {
"description": "总库龄",
"type": "integer"
},
"commodity_name": {
"description": "商品名称",
"type": "string"
},
"erp_category_id": {
"description": "商品分类Id",
"type": "integer"
},
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
},
"erp_stock_id": {
"description": "库存id",
"type": "integer"
},
"imei": {
"description": "串码",
"type": "string"
},
"is_export": {
"description": "是否导出excel1-导出",
"type": "integer"
},
"page_num": {
"description": "页面条数",
"type": "integer"
},
"page_size": {
"description": "页码",
"type": "integer"
},
"serial_number": {
"description": "商品编号",
"type": "string"
},
"sn": {
"description": "首次入库订单编号",
"type": "string"
},
"state": {
"description": "库存状态:1-在库 2-已售 3-采购退货 4-调拨中",
"type": "integer"
},
"stock_time_end": {
"description": "最近入库结束时间",
"type": "string"
},
"stock_time_start": {
"description": "最近入库开始时间",
"type": "string"
},
"storage_type": {
"description": "首次入库方式1-系统入库 2-采购入库",
"type": "integer"
},
"store_id": {
"description": "门店编号",
"type": "integer"
},
"supplier_id": {
"description": "供应商id",
"type": "integer"
}
}
},
"models.ErpStockCommodityListResp": {
"type": "object",
"properties": {
"export_url": {
"type": "string"
},
"list": {
"type": "array",
"items": {
"$ref": "#/definitions/models.ErpStockCommodity"
}
},
"page_num": {
"type": "integer"
},
"page_size": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"models.ErpStockListReq": {
"type": "object",
"properties": {
"commodity_name": {
"description": "商品名称",
"type": "string"
},
"erp_category_id": {
"description": "商品分类",
"type": "integer"
},
"page_num": {
"description": "页面条数",
"type": "integer"
},
"page_size": {
"description": "页码",
"type": "integer"
},
"serial_number": {
"description": "商品编号",
"type": "string"
},
"stock_type": {
"description": "库存情况:1-全部 2-有库存 3-无库存",
"type": "integer"
},
"store_id": {
"description": "门店编号",
"type": "integer"
}
}
},
"models.ErpStockListResp": {
"type": "object",
"properties": {
"export_url": {
"type": "string"
},
"list": {
"type": "array",
"items": {
"$ref": "#/definitions/models.ErpStock"
}
},
"page_num": {
"type": "integer"
},
"page_size": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"models.Login": {
"type": "object",
"required": [
@ -5493,24 +5899,17 @@ const docTemplate = `{
}
}
}
},
"securityDefinitions": {
"Bearer": {
"type": "apiKey",
"name": "Authorization",
"in": "header"
}
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "1.0.1",
Version: "",
Host: "",
BasePath: "",
Schemes: []string{},
Title: "go-admin API",
Description: "基于Gin + Vue + Element UI的前后端分离权限管理系统的接口文档\n添加qq群: 74520518 进入技术交流群 请备注,谢谢!",
Title: "",
Description: "",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",

View File

@ -1,14 +1,7 @@
{
"swagger": "2.0",
"info": {
"description": "基于Gin + Vue + Element UI的前后端分离权限管理系统的接口文档\n添加qq群: 74520518 进入技术交流群 请备注,谢谢!",
"title": "go-admin API",
"contact": {},
"license": {
"name": "MIT",
"url": "https://github.com/wenjianzhang/go-admin/blob/master/LICENSE.md"
},
"version": "1.0.1"
"contact": {}
},
"paths": {
"/api/v1/cashier/create": {
@ -1458,6 +1451,72 @@
}
}
},
"/api/v1/inventory/detail": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"库存管理"
],
"summary": "查询库存详情",
"parameters": [
{
"description": "查询库存详情模型",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.ErpStockCommodityListReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.ErpStockCommodityListResp"
}
}
}
}
},
"/api/v1/inventory/list": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"库存管理"
],
"summary": "查询库存列表",
"parameters": [
{
"description": "查询库存列表模型",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.ErpStockListReq"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.ErpStockListResp"
}
}
}
}
},
"/api/v1/loginlog": {
"put": {
"security": [
@ -4323,6 +4382,350 @@
}
}
},
"models.ErpStock": {
"type": "object",
"properties": {
"commodities": {
"type": "array",
"items": {
"$ref": "#/definitions/models.ErpStockCommodity"
}
},
"commodity_serial_number": {
"description": "商品编码/串码",
"type": "string"
},
"count": {
"description": "数量",
"type": "integer"
},
"createdAt": {
"description": "创建时间",
"type": "string"
},
"dispatch_count": {
"description": "调拨中数量",
"type": "integer"
},
"erp_category_id": {
"description": "分类id",
"type": "integer"
},
"erp_category_name": {
"description": "分类名称",
"type": "string"
},
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
},
"erp_commodity_name": {
"description": "商品名称",
"type": "string"
},
"id": {
"description": "数据库记录编号",
"type": "integer"
},
"imei_type": {
"description": "1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"min_retail_price": {
"description": "最低零售价",
"type": "integer"
},
"retail_price": {
"description": "指导零售价",
"type": "integer"
},
"store_id": {
"description": "门店编号",
"type": "integer"
},
"store_name": {
"description": "门店名称",
"type": "string"
}
}
},
"models.ErpStockCommodity": {
"type": "object",
"properties": {
"age": {
"description": "最近库龄",
"type": "integer"
},
"all_age": {
"description": "总库龄",
"type": "integer"
},
"commodity_serial_number": {
"description": "商品编号",
"type": "string"
},
"count": {
"description": "数量",
"type": "integer"
},
"createdAt": {
"description": "创建时间",
"type": "string"
},
"erp_category_id": {
"description": "分类id",
"type": "integer"
},
"erp_category_name": {
"description": "分类名称",
"type": "string"
},
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
},
"erp_commodity_name": {
"description": "商品名称",
"type": "string"
},
"erp_stock_id": {
"description": "库存id",
"type": "integer"
},
"erp_supplier_id": {
"description": "供应商id",
"type": "integer"
},
"erp_supplier_name": {
"description": "供应商名称",
"type": "string"
},
"first_stock_time": {
"description": "首次入库时间",
"type": "string"
},
"id": {
"description": "数据库记录编号",
"type": "integer"
},
"imei": {
"description": "商品串码",
"type": "string"
},
"imei_type": {
"description": "是否串码1-无串码 2-串码(系统生成) 3-串码(手动添加)",
"type": "integer"
},
"min_retail_price": {
"description": "最低零售价",
"type": "integer"
},
"original_sn": {
"description": "首次入库订单编号",
"type": "string"
},
"retail_price": {
"description": "指导零售价",
"type": "integer"
},
"staff_cost_price": {
"description": "员工成本价加价",
"type": "integer"
},
"state": {
"description": "状态:1-在库 2-已售 3-采购退货 4-调拨中",
"type": "integer"
},
"stock_end_time": {
"description": "最近入库结束时间",
"type": "string"
},
"stock_sn": {
"description": "库存订单编号",
"type": "string"
},
"stock_start_time": {
"description": "最近入库开始时间",
"type": "string"
},
"stock_time": {
"description": "最近入库时间",
"type": "string"
},
"storage_type": {
"description": "入库方式1-系统入库 2-采购入库",
"type": "integer"
},
"store_id": {
"description": "门店id",
"type": "integer"
},
"store_name": {
"description": "门店名称",
"type": "string"
},
"wholesale_price": {
"description": "指导采购价",
"type": "integer"
}
}
},
"models.ErpStockCommodityListReq": {
"type": "object",
"properties": {
"age": {
"description": "最近库龄",
"type": "integer"
},
"all_age": {
"description": "总库龄",
"type": "integer"
},
"commodity_name": {
"description": "商品名称",
"type": "string"
},
"erp_category_id": {
"description": "商品分类Id",
"type": "integer"
},
"erp_commodity_id": {
"description": "商品id",
"type": "integer"
},
"erp_stock_id": {
"description": "库存id",
"type": "integer"
},
"imei": {
"description": "串码",
"type": "string"
},
"is_export": {
"description": "是否导出excel1-导出",
"type": "integer"
},
"page_num": {
"description": "页面条数",
"type": "integer"
},
"page_size": {
"description": "页码",
"type": "integer"
},
"serial_number": {
"description": "商品编号",
"type": "string"
},
"sn": {
"description": "首次入库订单编号",
"type": "string"
},
"state": {
"description": "库存状态:1-在库 2-已售 3-采购退货 4-调拨中",
"type": "integer"
},
"stock_time_end": {
"description": "最近入库结束时间",
"type": "string"
},
"stock_time_start": {
"description": "最近入库开始时间",
"type": "string"
},
"storage_type": {
"description": "首次入库方式1-系统入库 2-采购入库",
"type": "integer"
},
"store_id": {
"description": "门店编号",
"type": "integer"
},
"supplier_id": {
"description": "供应商id",
"type": "integer"
}
}
},
"models.ErpStockCommodityListResp": {
"type": "object",
"properties": {
"export_url": {
"type": "string"
},
"list": {
"type": "array",
"items": {
"$ref": "#/definitions/models.ErpStockCommodity"
}
},
"page_num": {
"type": "integer"
},
"page_size": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"models.ErpStockListReq": {
"type": "object",
"properties": {
"commodity_name": {
"description": "商品名称",
"type": "string"
},
"erp_category_id": {
"description": "商品分类",
"type": "integer"
},
"page_num": {
"description": "页面条数",
"type": "integer"
},
"page_size": {
"description": "页码",
"type": "integer"
},
"serial_number": {
"description": "商品编号",
"type": "string"
},
"stock_type": {
"description": "库存情况:1-全部 2-有库存 3-无库存",
"type": "integer"
},
"store_id": {
"description": "门店编号",
"type": "integer"
}
}
},
"models.ErpStockListResp": {
"type": "object",
"properties": {
"export_url": {
"type": "string"
},
"list": {
"type": "array",
"items": {
"$ref": "#/definitions/models.ErpStock"
}
},
"page_num": {
"type": "integer"
},
"page_size": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"models.Login": {
"type": "object",
"required": [
@ -5485,12 +5888,5 @@
}
}
}
},
"securityDefinitions": {
"Bearer": {
"type": "apiKey",
"name": "Authorization",
"in": "header"
}
}
}

View File

@ -779,6 +779,256 @@ definitions:
description: 总页数
type: integer
type: object
models.ErpStock:
properties:
commodities:
items:
$ref: '#/definitions/models.ErpStockCommodity'
type: array
commodity_serial_number:
description: 商品编码/串码
type: string
count:
description: 数量
type: integer
createdAt:
description: 创建时间
type: string
dispatch_count:
description: 调拨中数量
type: integer
erp_category_id:
description: 分类id
type: integer
erp_category_name:
description: 分类名称
type: string
erp_commodity_id:
description: 商品id
type: integer
erp_commodity_name:
description: 商品名称
type: string
id:
description: 数据库记录编号
type: integer
imei_type:
description: 1-无串码 2-串码(系统生成) 3-串码(手动添加)
type: integer
min_retail_price:
description: 最低零售价
type: integer
retail_price:
description: 指导零售价
type: integer
store_id:
description: 门店编号
type: integer
store_name:
description: 门店名称
type: string
type: object
models.ErpStockCommodity:
properties:
age:
description: 最近库龄
type: integer
all_age:
description: 总库龄
type: integer
commodity_serial_number:
description: 商品编号
type: string
count:
description: 数量
type: integer
createdAt:
description: 创建时间
type: string
erp_category_id:
description: 分类id
type: integer
erp_category_name:
description: 分类名称
type: string
erp_commodity_id:
description: 商品id
type: integer
erp_commodity_name:
description: 商品名称
type: string
erp_stock_id:
description: 库存id
type: integer
erp_supplier_id:
description: 供应商id
type: integer
erp_supplier_name:
description: 供应商名称
type: string
first_stock_time:
description: 首次入库时间
type: string
id:
description: 数据库记录编号
type: integer
imei:
description: 商品串码
type: string
imei_type:
description: 是否串码1-无串码 2-串码(系统生成) 3-串码(手动添加)
type: integer
min_retail_price:
description: 最低零售价
type: integer
original_sn:
description: 首次入库订单编号
type: string
retail_price:
description: 指导零售价
type: integer
staff_cost_price:
description: 员工成本价加价
type: integer
state:
description: 状态:1-在库 2-已售 3-采购退货 4-调拨中
type: integer
stock_end_time:
description: 最近入库结束时间
type: string
stock_sn:
description: 库存订单编号
type: string
stock_start_time:
description: 最近入库开始时间
type: string
stock_time:
description: 最近入库时间
type: string
storage_type:
description: 入库方式1-系统入库 2-采购入库
type: integer
store_id:
description: 门店id
type: integer
store_name:
description: 门店名称
type: string
wholesale_price:
description: 指导采购价
type: integer
type: object
models.ErpStockCommodityListReq:
properties:
age:
description: 最近库龄
type: integer
all_age:
description: 总库龄
type: integer
commodity_name:
description: 商品名称
type: string
erp_category_id:
description: 商品分类Id
type: integer
erp_commodity_id:
description: 商品id
type: integer
erp_stock_id:
description: 库存id
type: integer
imei:
description: 串码
type: string
is_export:
description: 是否导出excel1-导出
type: integer
page_num:
description: 页面条数
type: integer
page_size:
description: 页码
type: integer
serial_number:
description: 商品编号
type: string
sn:
description: 首次入库订单编号
type: string
state:
description: 库存状态:1-在库 2-已售 3-采购退货 4-调拨中
type: integer
stock_time_end:
description: 最近入库结束时间
type: string
stock_time_start:
description: 最近入库开始时间
type: string
storage_type:
description: 首次入库方式1-系统入库 2-采购入库
type: integer
store_id:
description: 门店编号
type: integer
supplier_id:
description: 供应商id
type: integer
type: object
models.ErpStockCommodityListResp:
properties:
export_url:
type: string
list:
items:
$ref: '#/definitions/models.ErpStockCommodity'
type: array
page_num:
type: integer
page_size:
type: integer
total:
type: integer
type: object
models.ErpStockListReq:
properties:
commodity_name:
description: 商品名称
type: string
erp_category_id:
description: 商品分类
type: integer
page_num:
description: 页面条数
type: integer
page_size:
description: 页码
type: integer
serial_number:
description: 商品编号
type: string
stock_type:
description: 库存情况:1-全部 2-有库存 3-无库存
type: integer
store_id:
description: 门店编号
type: integer
type: object
models.ErpStockListResp:
properties:
export_url:
type: string
list:
items:
$ref: '#/definitions/models.ErpStock'
type: array
page_num:
type: integer
page_size:
type: integer
total:
type: integer
type: object
models.Login:
properties:
code:
@ -1605,14 +1855,6 @@ definitions:
type: object
info:
contact: {}
description: |-
基于Gin + Vue + Element UI的前后端分离权限管理系统的接口文档
添加qq群: 74520518 进入技术交流群 请备注,谢谢!
license:
name: MIT
url: https://github.com/wenjianzhang/go-admin/blob/master/LICENSE.md
title: go-admin API
version: 1.0.1
paths:
/api/v1/cashier/create:
post:
@ -2527,6 +2769,48 @@ paths:
summary: 字典类型列表数据
tags:
- system/字典类型
/api/v1/inventory/detail:
post:
consumes:
- application/json
parameters:
- description: 查询库存详情模型
in: body
name: request
required: true
schema:
$ref: '#/definitions/models.ErpStockCommodityListReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.ErpStockCommodityListResp'
summary: 查询库存详情
tags:
- 库存管理
/api/v1/inventory/list:
post:
consumes:
- application/json
parameters:
- description: 查询库存列表模型
in: body
name: request
required: true
schema:
$ref: '#/definitions/models.ErpStockListReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.ErpStockListResp'
summary: 查询库存列表
tags:
- 库存管理
/api/v1/loginlog:
post:
consumes:
@ -3670,9 +3954,4 @@ paths:
summary: 退出登录
tags:
- system/用户
securityDefinitions:
Bearer:
in: header
name: Authorization
type: apiKey
swagger: "2.0"