From 16e12f85cbce36430a63e42385bb6cdb9cac9b5d Mon Sep 17 00:00:00 2001 From: chenlin Date: Tue, 10 Sep 2024 20:15:26 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=88=9B=E5=BB=BA=E9=9B=B6=E5=94=AE?= =?UTF-8?q?=E9=80=80=E8=B4=A7=E8=AE=A2=E5=8D=95=E6=97=B6=EF=BC=8C=E5=8D=95?= =?UTF-8?q?=E4=B8=AA=E5=95=86=E5=93=81=E9=80=80=E8=B4=A7=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E4=BB=A5=E5=85=A5=E5=8F=82=E4=B8=BA=E5=87=86=EF=BC=9B=202?= =?UTF-8?q?=E3=80=81=E4=BC=98=E5=8C=96=E5=BA=93=E5=AD=98=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=B0=9D=E8=AF=95=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E5=88=97=E8=A1=A8=E6=95=B0=E6=8D=AE=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/models/commodity.go | 24 +++++++++++++++++++++--- app/admin/models/erp_order.go | 4 ++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/admin/models/commodity.go b/app/admin/models/commodity.go index 3d8e3a7..f1a848b 100644 --- a/app/admin/models/commodity.go +++ b/app/admin/models/commodity.go @@ -1229,13 +1229,13 @@ func (m *StockImporter) processErpStocks(erpStocks []ErpStockCommodity) error { }) } - err := m.ErpStockCountUpdate(begin) //更新or插入库存表 + err := errGroup.Wait() if err != nil { begin.Rollback() return err } - err = errGroup.Wait() + err = m.ErpStockCountUpdate(begin) //更新or插入库存表 if err != nil { begin.Rollback() return err @@ -1259,8 +1259,26 @@ func createStockList(begin *gorm.DB, stockList []ErpStockCommodity) error { return nil } +// 合并导入数据的辅助函数 +func mergeCensusMap(censusMap map[uint32]map[uint32]uint32) map[uint32]map[uint32]uint32 { + mergedMap := make(map[uint32]map[uint32]uint32) + for storeId, commodities := range censusMap { + if mergedMap[storeId] == nil { + mergedMap[storeId] = make(map[uint32]uint32) + } + for commodityId, count := range commodities { + mergedMap[storeId][commodityId] += count + } + } + return mergedMap +} + func (m *StockImporter) ErpStockCountUpdate(gdb *gorm.DB) error { - for k1, v1 := range m.CensusMap { + // 合并导入数据,避免同一商品多次重复处理 + mergedCensusMap := mergeCensusMap(m.CensusMap) + + //for k1, v1 := range m.CensusMap { + for k1, v1 := range mergedCensusMap { for k2, v2 := range v1 { exist, err := QueryRecordExist(fmt.Sprintf("SELECT * FROM erp_stock WHERE store_id=%d AND erp_commodity_id=%d", k1, k2)) if err != nil { diff --git a/app/admin/models/erp_order.go b/app/admin/models/erp_order.go index 8fabd28..b2a2d3a 100644 --- a/app/admin/models/erp_order.go +++ b/app/admin/models/erp_order.go @@ -5382,8 +5382,8 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) { req.ErpOrderCommodities[i].MemberDiscount = req.ErpOrderCommodities[i].MemberDiscount / float64(req.ErpOrderCommodities[i].Count) // 单个商品实收金额 req.ErpOrderCommodities[i].ReceivedAmount = req.ErpOrderCommodities[i].ReceivedAmount / float64(req.ErpOrderCommodities[i].Count) - // 单个商品退货金额 - req.ErpOrderCommodities[i].RejectedAmount = req.ErpOrderCommodities[i].RejectedAmount / float64(req.ErpOrderCommodities[i].Count) + //// 单个商品退货金额 + //req.ErpOrderCommodities[i].RejectedAmount = req.ErpOrderCommodities[i].RejectedAmount / float64(req.ErpOrderCommodities[i].RejectedCount) for j := 0; j < int(req.ErpOrderCommodities[i].Count); j++ { stockIdList, _ := stringToIntArray(req.ErpOrderCommodities[i].ErpStockCommodityID)