From b95911437fe57ad8ab0a4f6460d71939f4852399 Mon Sep 17 00:00:00 2001 From: chenlin Date: Fri, 17 Nov 2023 18:07:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=87=BA=E5=BA=93=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E4=BC=98=E5=8C=96=E5=8F=91=E7=8E=B0=E7=9A=84?= =?UTF-8?q?=E7=BC=BA=E9=99=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/basic/commodity.go | 27 ++-- app/admin/apis/inventory/Inventory.go | 63 ---------- app/admin/apis/inventorymanage/Inventory.go | 133 ++++++++++++++++++++ app/admin/models/commodity.go | 55 ++++++-- app/admin/router/inventory.go | 8 +- docs/docs.go | 4 +- docs/swagger.json | 4 +- docs/swagger.yaml | 4 +- 8 files changed, 204 insertions(+), 94 deletions(-) delete mode 100644 app/admin/apis/inventory/Inventory.go create mode 100644 app/admin/apis/inventorymanage/Inventory.go diff --git a/app/admin/apis/basic/commodity.go b/app/admin/apis/basic/commodity.go index af08968..ccd7cd1 100644 --- a/app/admin/apis/basic/commodity.go +++ b/app/admin/apis/basic/commodity.go @@ -10,7 +10,6 @@ import ( "go-admin/tools/app" "io" "net/http" - "strconv" ) type CommodityCreateRequest struct { @@ -22,7 +21,7 @@ type CommodityCreateRequest struct { MinRetailPrice uint32 `json:"min_retail_price" binding:"required"` // 最低零售价 StaffCostPrice uint32 `json:"staff_cost_price" binding:"required"` // 员工成本价加价 WholesalePrice uint32 `json:"wholesale_price" binding:"required"` // 指导采购价 - Brokerage1 string `json:"brokerage_1" binding:"required"` // 销售毛利提成 + Brokerage1 string `json:"brokerage_1"` // 销售毛利提成 Brokerage2 string `json:"brokerage_2"` // 员工毛利提成 MemberDiscount string `json:"member_discount"` // 会员优惠 Origin string `json:"origin"` // 产地 @@ -44,27 +43,31 @@ func CommodityCreate(c *gin.Context) { if err := c.ShouldBindJSON(&req); err != nil { //logger.Error(err) fmt.Println(err.Error()) - app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误") + app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误") return } - brokerage1Float, err := strconv.ParseFloat(req.Brokerage1, 64) + + brokerage1Float, err := models.StringToFloat(req.Brokerage1) if err != nil { //logger.Error("brokerage1 err:", err) - app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误") + app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误") return } - brokerage2Float, err := strconv.ParseFloat(req.Brokerage2, 64) + + brokerage2Float, err := models.StringToFloat(req.Brokerage2) if err != nil { - //logger.Error("brokerage2 err:", err) - app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误") + //logger.Error("brokerage1 err:", err) + app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误") return } - memberDiscountFloat, err := strconv.ParseFloat(req.MemberDiscount, 64) + + memberDiscountFloat, err := models.StringToFloat(req.MemberDiscount) if err != nil { - //logger.Error("member discount err:", err) - app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误") + //logger.Error("brokerage1 err:", err) + app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误") return } + commodity := &models.ErpCommodity{ Number: 1, Name: req.Name, @@ -104,7 +107,7 @@ func CommodityCreate(c *gin.Context) { return } - app.OK(c, commodity, "") + app.OK(c, commodity, "OK") return } diff --git a/app/admin/apis/inventory/Inventory.go b/app/admin/apis/inventory/Inventory.go deleted file mode 100644 index 1e7161f..0000000 --- a/app/admin/apis/inventory/Inventory.go +++ /dev/null @@ -1,63 +0,0 @@ -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 -} diff --git a/app/admin/apis/inventorymanage/Inventory.go b/app/admin/apis/inventorymanage/Inventory.go new file mode 100644 index 0000000..4fdc41e --- /dev/null +++ b/app/admin/apis/inventorymanage/Inventory.go @@ -0,0 +1,133 @@ +package inventorymanage + +import ( + "errors" + "github.com/gin-gonic/gin" + "go-admin/app/admin/models" + "go-admin/tools" + "go-admin/tools/app" + "net/http" +) + +// GetInventoryList 查询库存列表 +// @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 +} + +// GetInventoryDetail 查询库存详情 +// @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 +} + +type DeliveryCargoReq struct { + Id uint32 `json:"id" binding:"required"` // 商品库存列表id + State uint32 `json:"state" binding:"required"` // 库存状态:4-出库 +} + +// DeliveryCargo 出库 +// @Summary 出库 +// @Tags 库存管理 +// @Produce json +// @Accept json +// @Param request body DeliveryCargoReq true "出库模型" +// @Success 200 {object} app.Response +// @Router /api/v1/inventory/delivery [post] +func DeliveryCargo(c *gin.Context) { + req := &DeliveryCargoReq{} + if err := c.ShouldBindJSON(&req); err != nil { + //logger.Error(err) + app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误") + return + } + + if err := tools.Validate(req); err != nil { + app.Error(c, http.StatusBadRequest, err, err.Error()) + return + } + + err := models.SetStockCommodityState(req.Id, req.State) + if err != nil { + //logger.Error("erp stock err:", err) + app.Error(c, http.StatusInternalServerError, err, "获取失败") + return + } + + app.OK(c, nil, "OK") + return +} + +// BatchPrint 批量打印 +// @Summary 批量打印 +// @Tags 库存管理 +// @Produce json +// @Accept json +// @Param request body models.BatchPrintInfoReq true "批量打印模型" +// @Success 200 {object} app.Response +// @Router /api/v1/inventory/print [post] +func BatchPrint(c *gin.Context) { + req := &models.BatchPrintInfoReq{} + if err := c.ShouldBindJSON(&req); err != nil { + //logger.Error(err) + app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误") + return + } + + if err := tools.Validate(req); err != nil { + app.Error(c, http.StatusBadRequest, err, err.Error()) + return + } + + err := models.BatchPrint(req) + if err != nil { + //logger.Error("erp stock err:", err) + app.Error(c, http.StatusInternalServerError, err, "打印失败") + return + } + + app.OK(c, nil, "OK") + return +} diff --git a/app/admin/models/commodity.go b/app/admin/models/commodity.go index 1df12a5..fe446b1 100644 --- a/app/admin/models/commodity.go +++ b/app/admin/models/commodity.go @@ -939,10 +939,10 @@ func (m *StockImporter) ErpInventoryStockCreate(gdb *gorm.DB, list []ErpStockFil inventoryStockIdMap := make(map[string]uint32, 0) for _, inventory := range m.Inventories { - //err := gdb.Create(inventory).Error + //err := gdb.Create(inventorymanage).Error err := orm.Eloquent.Create(inventory).Error if err != nil { - //logger.Error("create erp inventory stock err:", err) + //logger.Error("create erp inventorymanage stock err:", err) return err } inventoryStockIdMap[fmt.Sprintf("%d_%d", inventory.StoreId, inventory.ErpCommodityId)] = inventory.ID @@ -993,14 +993,14 @@ func (m *StockImporter) ErpInventoryStockCreate(gdb *gorm.DB, list []ErpStockFil //go func() { // //inventoryStockIdMap := make(map[string]uint32, 0) - // //for _, inventory := range m.Inventories { - // // //err := gdb.Create(inventory).Error - // // err := orm.Eloquent.Create(inventory).Error + // //for _, inventorymanage := range m.Inventories { + // // //err := gdb.Create(inventorymanage).Error + // // err := orm.Eloquent.Create(inventorymanage).Error // // if err != nil { - // // logger.Error("create erp inventory stock err:", err) + // // logger.Error("create erp inventorymanage stock err:", err) // // return // // } - // // inventoryStockIdMap[fmt.Sprintf("%d_%d", inventory.StoreId, inventory.ErpCommodityId)] = inventory.ID + // // inventoryStockIdMap[fmt.Sprintf("%d_%d", inventorymanage.StoreId, inventorymanage.ErpCommodityId)] = inventorymanage.ID // //} // // //stock := ErpStockFileExcel{} @@ -1027,7 +1027,7 @@ func (m *StockImporter) ErpInventoryStockCreate(gdb *gorm.DB, list []ErpStockFil // //err := gdb.Create(inventoryCommodity).Error // err := orm.Eloquent.Create(inventoryCommodity).Error // if err != nil { - // logger.Error("create erp inventory stock commodity err:", err) + // logger.Error("create erp inventorymanage stock commodity err:", err) // return // } // } @@ -1062,7 +1062,7 @@ func ErpStockCommodityToInventory(inventoryStockIdMap map[string]uint32, list [] inventoryList = append(inventoryList, inventoryCommodity) //err := orm.Eloquent.Create(inventoryCommodity).Error //if err != nil { - // logger.Error("create erp inventory stock commodity err:", err) + // logger.Error("create erp inventorymanage stock commodity err:", err) // return inventoryList //} } @@ -1191,7 +1191,7 @@ func (m *ErpStockListReq) List() (*ErpStockListResp, error) { qs = qs.Where("commodity_serial_number=?", m.SerialNumber) } if m.CommodityName != "" { - qs = qs.Where("name Like %" + m.CommodityName + "%") + qs = qs.Where("erp_commodity_name LIKE ?", "%"+m.CommodityName+"%") } if m.ErpCategoryId != 0 { qs = qs.Where("erp_category_id=?", m.ErpCategoryId) @@ -1389,3 +1389,38 @@ func (m *ErpStockCommodityListReq) buildQueryConditions(qs *gorm.DB) { qs = qs.Where("first_stock_time