diff --git a/app/admin/models/commodity.go b/app/admin/models/commodity.go index 34083e5..0058061 100644 --- a/app/admin/models/commodity.go +++ b/app/admin/models/commodity.go @@ -2277,6 +2277,7 @@ type ErpStockCommodityListReq struct { PageIndex int `json:"pageIndex"` // 页码 PageSize int `json:"pageSize"` // 每页展示数据条数 IsExport uint32 `json:"is_export"` // 是否导出excel:1-导出 + StockSortFlag uint32 `json:"stock_sort_flag"` // 排序方式:0-按入库时间降序排列(默认),1-按入库时间升序排列 //Sn string `json:"sn"` // 首次入库订单编号 } @@ -2362,7 +2363,7 @@ func (m *ErpStockCommodityListReq) GetDetailList(c *gin.Context, nType uint32) ( //获取库存商品列表 var commodities []ErpStockCommodity if m.IsExport == 1 { - err := qs.Find(&commodities).Order("id DESC").Error + err := qs.Find(&commodities).Order("stock_time DESC,id DESC").Error if err != nil && !errors.Is(err, RecordNotFound) { //logger.Error("dailys err:", err) return resp, err @@ -2374,7 +2375,11 @@ func (m *ErpStockCommodityListReq) GetDetailList(c *gin.Context, nType uint32) ( } resp.ExportUrl = listExport } else { - err := qs.Offset(page * m.PageSize).Limit(m.PageSize).Order("stock_time DESC,id DESC").Find(&commodities).Error + if m.StockSortFlag == 1 { + err = qs.Offset(page * m.PageSize).Limit(m.PageSize).Order("stock_time ASC,id ASC").Find(&commodities).Error + } else { + err = qs.Offset(page * m.PageSize).Limit(m.PageSize).Order("stock_time DESC,id DESC").Find(&commodities).Error + } if err != nil && !errors.Is(err, RecordNotFound) { //logger.Error("erp commodity list err:", err) return resp, err diff --git a/app/admin/models/erp_order.go b/app/admin/models/erp_order.go index f255bed..0fdbfc7 100644 --- a/app/admin/models/erp_order.go +++ b/app/admin/models/erp_order.go @@ -802,7 +802,7 @@ func stringToIntArray(str string) ([]uint32, error) { } // 更新零售订单商品表的库存商品表主键id字段 -func updateErpStockCommodityID(gdb *gorm.DB, id uint32, nIdList []uint32) error { +func updateErpStockCommodityID(gdb *gorm.DB, commodity ErpOrderCommodity, nIdList []uint32) error { fmt.Println("nIdList is:", nIdList) strId := intArrayToString(nIdList) @@ -814,12 +814,14 @@ func updateErpStockCommodityID(gdb *gorm.DB, id uint32, nIdList []uint32) error return err } - err = gdb.Table("erp_order_commodity").Where("id = ?", id). + err = gdb.Table("erp_order_commodity").Where("id = ?", commodity.ID). Updates(map[string]interface{}{ "erp_stock_commodity_id": strId, "retail_price": stockCommodity.RetailPrice, "wholesale_price": stockCommodity.WholesalePrice, "staff_cost_price": stockCommodity.StaffCostPrice, + "sales_profit": commodity.SalePrice - stockCommodity.WholesalePrice, + "staff_profit": commodity.SalePrice - stockCommodity.WholesalePrice - stockCommodity.StaffCostPrice, }).Error //Update("erp_stock_commodity_id", strId).Error if err != nil { @@ -1000,7 +1002,7 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { stockCommodityIdList = append(stockCommodityIdList, rightId) usedStockCommodityIdList[commodities[i].ErpCommodityId] = append(usedStockCommodityIdList[commodities[i].ErpCommodityId], rightId) - err = updateErpStockCommodityID(gdb, commodities[i].ID, stockCommodityIdList) + err = updateErpStockCommodityID(gdb, commodities[i], stockCommodityIdList) if err != nil { return err } @@ -1033,7 +1035,8 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { var stockCommodity []ErpStockCommodity var stockCommodityIdList []uint32 - if commodities[i].ErpStockCommodityID != "" { + stockCommodityID, _ := tools.StringToInt(commodities[i].ErpStockCommodityID) + if stockCommodityID > 0 { err = gdb.Table("erp_stock_commodity").Where("id = ?", commodities[i].ErpStockCommodityID). Updates(map[string]interface{}{"state": InStock}).Error // 状态更新为在库 if err != nil { @@ -1087,7 +1090,7 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { stockCommodityIdList = append(stockCommodityIdList, rightId) usedStockCommodityIdList[commodities[i].ID] = append(usedStockCommodityIdList[commodities[i].ID], rightId) } - err = updateErpStockCommodityID(gdb, commodities[i].ID, stockCommodityIdList) + err = updateErpStockCommodityID(gdb, commodities[i], stockCommodityIdList) if err != nil { return err } @@ -1324,7 +1327,10 @@ func mergeOrderCommodities(orderCommodities []ErpOrderCommodity) []ErpOrderCommo existingCommodity.SaleDiscount += commodity.SaleDiscount existingCommodity.MemberDiscount += commodity.MemberDiscount existingCommodity.ReceivedAmount += commodity.ReceivedAmount - existingCommodity.ErpStockCommodityID = strings.Join([]string{existingCommodity.ErpStockCommodityID, commodity.ErpStockCommodityID}, ",") + stockCommodityID, _ := tools.StringToInt(commodity.ErpStockCommodityID) + if stockCommodityID > 0 { + existingCommodity.ErpStockCommodityID = strings.Join([]string{existingCommodity.ErpStockCommodityID, commodity.ErpStockCommodityID}, ",") + } } else { // 使用commodity的副本避免对原始数据的修改 commodityCopy := commodity @@ -4626,7 +4632,8 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) { // 串码商品直接查询;非串码商品查询库存时间最久的商品 var commodities []ErpStockCommodity if len(imeiList) != 0 { - err := orm.Eloquent.Table("erp_stock_commodity").Where("imei IN (?)", imeiList). + err := orm.Eloquent.Table("erp_stock_commodity").Where("imei IN (?) and state = ? "+ + "and store_id = ?", imeiList, InStock, req.StoreId). Find(&commodities).Error if err != nil { logger.Error("get commodities err:", logger.Field("err", err)) @@ -4640,7 +4647,8 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) { if len(commodityIds) != 0 { commodities = nil - err = orm.Eloquent.Table("erp_stock_commodity").Where("erp_commodity_id IN (?)", commodityIds). + err = orm.Eloquent.Table("erp_stock_commodity").Where("erp_commodity_id IN (?) and state = ? "+ + "and store_id = ?", commodityIds, InStock, req.StoreId). Find(&commodities).Error if err != nil { logger.Error("get commodities err:", logger.Field("err", err)) @@ -5089,50 +5097,22 @@ func updateSalesData(gdb *gorm.DB, orderId uint32, req *ErpOrderCreateReq) error return errors.New("操作失败:" + err.Error()) } - var newOrderSales []ErpOrderSales - var deletedOrderSales []ErpOrderSales - var matchingOrderSales []ErpOrderSales - // 找到新增的商品 - for _, reqSales := range req.Salesman { - var found bool - for _, dbSales := range orderSales { - if reqSales.Uid == dbSales.Uid { - found = true - break - } - } - if !found { - reqSales.ID = 0 - reqSales.CreatedAt = Now() - newOrderSales = append(newOrderSales, reqSales) - } - } - - // 找到删除的商品 - for _, dbSales := range orderSales { - var found bool - for _, reqSales := range req.Salesman { - if reqSales.Uid == dbSales.Uid { - found = true - // 找到匹配的商品,加入匹配列表 - matchingOrderSales = append(matchingOrderSales, dbSales) - break - } - } - if !found { - deletedOrderSales = append(deletedOrderSales, dbSales) - } - } - - // 更新 - for _, orderSaleInfo := range matchingOrderSales { - if err = gdb.Model(&ErpOrderSales{}).Where("id = ?", orderSaleInfo.ID).Updates(orderSaleInfo).Error; err != nil { - logger.Error("更新订单销售员信息-更新 error") + // 1-删除所有的零售订单支付方式 + if len(orderSales) != 0 { + err = gdb.Delete(&orderSales).Error + if err != nil { + logger.Error("更新订单销售员信息-删除 error") return errors.New("操作失败:" + err.Error()) } } - // 新增 + var newOrderSales []ErpOrderSales + for _, reqSales := range req.Salesman { + reqSales.ID = 0 + newOrderSales = append(newOrderSales, reqSales) + } + + // 2-新增所有的零售订单支付方式 if len(newOrderSales) != 0 { err = gdb.Create(&newOrderSales).Error if err != nil { @@ -5141,15 +5121,6 @@ func updateSalesData(gdb *gorm.DB, orderId uint32, req *ErpOrderCreateReq) error } } - // 删除 - if len(deletedOrderSales) != 0 { - err = gdb.Delete(&deletedOrderSales).Error - if err != nil { - logger.Error("更新订单销售员信息-删除 error") - return errors.New("操作失败:" + err.Error()) - } - } - return nil } @@ -5163,54 +5134,27 @@ func updatePayWayData(gdb *gorm.DB, orderId uint32, req *ErpOrderCreateReq) erro return errors.New("操作失败:" + err.Error()) } - var newOrderPayWay []ErpOrderPayWay - var deletedOrderPayWay []ErpOrderPayWay - var matchingOrderPayWay []ErpOrderPayWay - // 找到新增的商品 - for _, reqPayWay := range req.Cashiers { - var found bool - for _, dbPayWay := range orderPayWay { - if reqPayWay.CashierId == dbPayWay.CashierId { - found = true - break - } - } - if !found { - payWay := ErpOrderPayWay{ - ErpOrderId: orderId, - CashierId: reqPayWay.CashierId, - Name: reqPayWay.Name, - Amount: reqPayWay.Amount, - } - newOrderPayWay = append(newOrderPayWay, payWay) - } - } - - // 找到删除的商品 - for _, dbPayWay := range orderPayWay { - var found bool - for _, reqPayWay := range req.Cashiers { - if reqPayWay.CashierId == dbPayWay.CashierId { - found = true - // 找到匹配的商品,加入匹配列表 - matchingOrderPayWay = append(matchingOrderPayWay, dbPayWay) - break - } - } - if !found { - deletedOrderPayWay = append(deletedOrderPayWay, dbPayWay) - } - } - - // 更新 - for _, orderPayWayInfo := range matchingOrderPayWay { - if err = gdb.Model(&ErpOrderPayWay{}).Where("id = ?", orderPayWayInfo.ID).Updates(orderPayWayInfo).Error; err != nil { - logger.Error("更新零售订单支付方式-更新 error") + // 1-删除所有的零售订单支付方式 + if len(orderPayWay) != 0 { + err = gdb.Delete(&orderPayWay).Error + if err != nil { + logger.Error("更新零售订单支付方式-删除 error") return errors.New("操作失败:" + err.Error()) } } - // 新增 + var newOrderPayWay []ErpOrderPayWay + for _, reqPayWay := range req.Cashiers { + payWay := ErpOrderPayWay{ + ErpOrderId: orderId, + CashierId: reqPayWay.CashierId, + Name: reqPayWay.Name, + Amount: reqPayWay.Amount, + } + newOrderPayWay = append(newOrderPayWay, payWay) + } + + // 2-新增所有的零售订单支付方式 if len(newOrderPayWay) != 0 { err = gdb.Create(&newOrderPayWay).Error if err != nil { @@ -5219,14 +5163,5 @@ func updatePayWayData(gdb *gorm.DB, orderId uint32, req *ErpOrderCreateReq) erro } } - // 删除 - if len(deletedOrderPayWay) != 0 { - err = gdb.Delete(&deletedOrderPayWay).Error - if err != nil { - logger.Error("更新零售订单支付方式-删除 error") - return errors.New("操作失败:" + err.Error()) - } - } - return nil } diff --git a/config/settings.yml b/config/settings.yml index 164c7d9..20811ce 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -30,8 +30,8 @@ settings: enabledjob: false jwt: # token 密钥,生产环境时及的修改 -# secret: go-admin - secret: adminqYrhCcQRvVNAaEo4h4osoW + secret: go-admin +# secret: adminqYrhCcQRvVNAaEo4h4osoW # token 过期时间 单位:秒 timeout: 3600 database: @@ -39,10 +39,10 @@ settings: driver: mysql # 数据库连接字符串 mysql 缺省信息 charset=utf8&parseTime=True&loc=Local&timeout=1000ms # source: root:myTest@921@tcp(127.0.0.1:3306)/mh_dev?charset=utf8&parseTime=True&loc=Local&timeout=1000ms -# source: mh_dev:d9qy46ONI0ZTF9eH@tcp(112.33.14.191:3306)/mh_dev?charset=utf8&parseTime=True&loc=Local&timeout=1000ms + source: mh_dev:d9qy46ONI0ZTF9eH@tcp(112.33.14.191:3306)/mh_dev?charset=utf8&parseTime=True&loc=Local&timeout=1000ms # source: mh_pro:c5JBW3X6EEVQluYM@tcp(39.108.188.218:3306)/mh_pro?charset=utf8&parseTime=True&loc=Local&timeout=1000ms # source: mh_test:GPLzZ8rMmbJbKtMh@tcp(112.33.14.191:3306)/mh_test?charset=utf8&parseTime=True&loc=Local&timeout=1000ms - source: mh_new_pro:YnzexdTfBHMSGZki@tcp(39.108.188.218:3306)/mh_new_pro?charset=utf8&parseTime=True&loc=Local&timeout=1000ms +# source: mh_new_pro:YnzexdTfBHMSGZki@tcp(39.108.188.218:3306)/mh_new_pro?charset=utf8&parseTime=True&loc=Local&timeout=1000ms gen: # 代码生成读取的数据库名称 diff --git a/docs/docs.go b/docs/docs.go index 2f90afb..16b1103 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -5374,7 +5374,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/basic.SupplierListRequest" + "$ref": "#/definitions/models.GetSupplierRequest" } } ], @@ -5384,7 +5384,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/models.Supplier" + "$ref": "#/definitions/models.GetSupplierResp" } } } @@ -6374,19 +6374,6 @@ const docTemplate = `{ } } }, - "basic.SupplierListRequest": { - "type": "object", - "properties": { - "name": { - "description": "供应商名称", - "type": "string" - }, - "number": { - "description": "供应商编号", - "type": "string" - } - } - }, "basic.SupplierUpdateRequest": { "type": "object", "required": [ @@ -11171,6 +11158,13 @@ const docTemplate = `{ }, "state": { "description": "库存状态:1-在库 2-已售 3-采购退货 4-调拨中 5-出库(前端只看1,4)", + "type": "array", + "items": { + "type": "integer" + } + }, + "stock_sort_flag": { + "description": "排序方式:0-按入库时间降序排列(默认),1-按入库时间升序排列", "type": "integer" }, "stock_time_end": { @@ -11759,6 +11753,54 @@ const docTemplate = `{ } } }, + "models.GetSupplierRequest": { + "type": "object", + "properties": { + "cooperativeBusinessId": { + "description": "合作商id", + "type": "integer" + }, + "name": { + "description": "供应商名称", + "type": "string" + }, + "number": { + "description": "供应商编号", + "type": "string" + }, + "pageIndex": { + "description": "页码", + "type": "integer" + }, + "pageSize": { + "description": "每页展示数据条数", + "type": "integer" + } + } + }, + "models.GetSupplierResp": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Supplier" + } + }, + "pageIndex": { + "description": "页码", + "type": "integer" + }, + "pageSize": { + "description": "每页展示条数", + "type": "integer" + }, + "total": { + "description": "数据总条数", + "type": "integer" + } + } + }, "models.GoodsOrderListReq": { "type": "object", "properties": { @@ -16183,11 +16225,11 @@ const docTemplate = `{ "properties": { "DJ": { "description": "商品指导零售价", - "type": "integer" + "type": "number" }, "JE": { "description": "商品指导零售价乘以销售数量", - "type": "integer" + "type": "number" }, "SL": { "description": "销售数量", diff --git a/docs/swagger.json b/docs/swagger.json index 321ba59..66fd6d0 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -5363,7 +5363,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/basic.SupplierListRequest" + "$ref": "#/definitions/models.GetSupplierRequest" } } ], @@ -5373,7 +5373,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/models.Supplier" + "$ref": "#/definitions/models.GetSupplierResp" } } } @@ -6363,19 +6363,6 @@ } } }, - "basic.SupplierListRequest": { - "type": "object", - "properties": { - "name": { - "description": "供应商名称", - "type": "string" - }, - "number": { - "description": "供应商编号", - "type": "string" - } - } - }, "basic.SupplierUpdateRequest": { "type": "object", "required": [ @@ -11160,6 +11147,13 @@ }, "state": { "description": "库存状态:1-在库 2-已售 3-采购退货 4-调拨中 5-出库(前端只看1,4)", + "type": "array", + "items": { + "type": "integer" + } + }, + "stock_sort_flag": { + "description": "排序方式:0-按入库时间降序排列(默认),1-按入库时间升序排列", "type": "integer" }, "stock_time_end": { @@ -11748,6 +11742,54 @@ } } }, + "models.GetSupplierRequest": { + "type": "object", + "properties": { + "cooperativeBusinessId": { + "description": "合作商id", + "type": "integer" + }, + "name": { + "description": "供应商名称", + "type": "string" + }, + "number": { + "description": "供应商编号", + "type": "string" + }, + "pageIndex": { + "description": "页码", + "type": "integer" + }, + "pageSize": { + "description": "每页展示数据条数", + "type": "integer" + } + } + }, + "models.GetSupplierResp": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Supplier" + } + }, + "pageIndex": { + "description": "页码", + "type": "integer" + }, + "pageSize": { + "description": "每页展示条数", + "type": "integer" + }, + "total": { + "description": "数据总条数", + "type": "integer" + } + } + }, "models.GoodsOrderListReq": { "type": "object", "properties": { @@ -16172,11 +16214,11 @@ "properties": { "DJ": { "description": "商品指导零售价", - "type": "integer" + "type": "number" }, "JE": { "description": "商品指导零售价乘以销售数量", - "type": "integer" + "type": "number" }, "SL": { "description": "销售数量", diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 7d59916..bc933a3 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -177,15 +177,6 @@ definitions: - bank_list - name type: object - basic.SupplierListRequest: - properties: - name: - description: 供应商名称 - type: string - number: - description: 供应商编号 - type: string - type: object basic.SupplierUpdateRequest: properties: account_holder: @@ -3674,6 +3665,11 @@ definitions: type: string state: description: 库存状态:1-在库 2-已售 3-采购退货 4-调拨中 5-出库(前端只看1,4) + items: + type: integer + type: array + stock_sort_flag: + description: 排序方式:0-按入库时间降序排列(默认),1-按入库时间升序排列 type: integer stock_time_end: description: 最近入库结束时间 @@ -4091,6 +4087,40 @@ definitions: total_page: type: integer type: object + models.GetSupplierRequest: + properties: + cooperativeBusinessId: + description: 合作商id + type: integer + name: + description: 供应商名称 + type: string + number: + description: 供应商编号 + type: string + pageIndex: + description: 页码 + type: integer + pageSize: + description: 每页展示数据条数 + type: integer + type: object + models.GetSupplierResp: + properties: + list: + items: + $ref: '#/definitions/models.Supplier' + type: array + pageIndex: + description: 页码 + type: integer + pageSize: + description: 每页展示条数 + type: integer + total: + description: 数据总条数 + type: integer + type: object models.GoodsOrderListReq: properties: goods_id: @@ -7282,10 +7312,10 @@ definitions: properties: DJ: description: 商品指导零售价 - type: integer + type: number JE: description: 商品指导零售价乘以销售数量 - type: integer + type: number SL: description: 销售数量 type: integer @@ -11290,7 +11320,7 @@ paths: name: request required: true schema: - $ref: '#/definitions/basic.SupplierListRequest' + $ref: '#/definitions/models.GetSupplierRequest' produces: - application/json responses: @@ -11298,7 +11328,7 @@ paths: description: OK schema: items: - $ref: '#/definitions/models.Supplier' + $ref: '#/definitions/models.GetSupplierResp' type: array summary: 供应商列表 tags: