diff --git a/app/admin/apis/inventorymanage/allot.go b/app/admin/apis/inventorymanage/allot.go index af0132f..93e3eef 100644 --- a/app/admin/apis/inventorymanage/allot.go +++ b/app/admin/apis/inventorymanage/allot.go @@ -306,7 +306,12 @@ func InventoryAllotDetail(c *gin.Context) { return } - allotOrder.Commodities = models.MergeCommodities(allotCommodities) + mergeCommodities := models.MergeCommodities(allotCommodities) + allotOrder.Commodities = mergeCommodities + + // 查询商品的库存数量 + allotOrder.Commodities, _ = models.UpdateStockCounts(mergeCommodities, allotOrder.DeliverStoreId) + app.OK(c, allotOrder, "查询成功") return } diff --git a/app/admin/models/inventory_allot.go b/app/admin/models/inventory_allot.go index 1cd76ed..f8f6e70 100644 --- a/app/admin/models/inventory_allot.go +++ b/app/admin/models/inventory_allot.go @@ -57,6 +57,7 @@ type ErpInventoryAllotCommodity struct { Count uint32 `json:"count"` // 数量 Amount float64 `json:"amount"` // 金额(采购价) Remark string `json:"remark"` // 备注 + StockCount uint32 `json:"stock_count" gorm:"-"` // 库存数量 } // InventoryAllotAddReq 新增库存调拨入参 @@ -786,6 +787,46 @@ func MergeCommodities(commodities []ErpInventoryAllotCommodity) []ErpInventoryAl return mergedCommodities } +// UpdateStockCounts 根据传入的 storeId 更新每个商品的库存数量。 +func UpdateStockCounts(commodities []ErpInventoryAllotCommodity, storeId uint32) ([]ErpInventoryAllotCommodity, error) { + // 收集商品 ID + var commodityIDs []uint32 + for _, commodity := range commodities { + commodityIDs = append(commodityIDs, commodity.CommodityId) + } + + // 查询数据库中的库存数量 + var stockCounts []struct { + ErpCommodityID uint32 `gorm:"column:erp_commodity_id"` + StockCount int64 `gorm:"column:stock_count"` + } + err := orm.Eloquent.Table("erp_stock_commodity"). + Where("erp_commodity_id IN (?) AND state = ? AND store_id = ?", commodityIDs, InStock, storeId). + Select("erp_commodity_id, COUNT(*) as stock_count"). + Group("erp_commodity_id"). + Scan(&stockCounts).Error + if err != nil { + return nil, err + } + + // 创建库存数量映射 + stockCountMap := make(map[uint32]int64) + for _, stock := range stockCounts { + stockCountMap[stock.ErpCommodityID] = stock.StockCount + } + + // 更新商品的 StockCount 字段 + for i, commodity := range commodities { + if count, exists := stockCountMap[commodity.CommodityId]; exists { + commodities[i].StockCount = uint32(count) + } else { + commodities[i].StockCount = 0 // 如果没有库存记录,则默认为 0 + } + } + + return commodities, nil +} + // MergeAllCommodities 遍历库存调拨商品信息,将商品id相同的所有商品进行合并,数量累加即可 func MergeAllCommodities(commodities []ErpInventoryAllotCommodity) []ErpInventoryAllotCommodity { // 用于存储合并后的商品信息 diff --git a/app/admin/models/purchase.go b/app/admin/models/purchase.go index 7c11579..0a74b13 100644 --- a/app/admin/models/purchase.go +++ b/app/admin/models/purchase.go @@ -4895,7 +4895,7 @@ func reportByCommodityExport(req *ErpPurchaseReportByCommodityResp) (string, err req.NonExecutionCount, // 未执行数量 } for i, _ := range end { - cell, _ := excelize.CoordinatesToCellName(1+i, nExcelStartRow+2) + cell, _ := excelize.CoordinatesToCellName(1+i, nExcelStartRow+3) err := file.SetCellValue(fSheet, cell, end[i]) if err != nil { logger.Error("file set value err:", logger.Field("err", err)) @@ -4934,7 +4934,7 @@ func reportByCommodityExport(req *ErpPurchaseReportByCommodityResp) (string, err file.SetColWidth("Sheet1", "C", "C", 13) file.SetColWidth("Sheet1", "E", "E", 25) - endRow := fmt.Sprintf("Q"+"%d", nExcelStartRow+2) + endRow := fmt.Sprintf("Q"+"%d", nExcelStartRow+3) // 应用样式到整个表格 _ = file.SetCellStyle("Sheet1", "A1", endRow, style)