// 盘点任务控制器 // 职责:盘点任务CRUD、完成/取消、导出模板、导入Excel // 调用服务:service.InventoryCount // 注意:ImportInventoryCount从multipart form读取文件,Update/Delete返回*beans.ResponseEmpty package controller import ( dto "assets/model/dto/stock" service "assets/service/stock" "context" "fmt" "io" "gitea.redpowerfuture.com/red-future/common/beans" "github.com/gogf/gf/v2/frame/g" ) type inventoryCount struct{} var InventoryCount = new(inventoryCount) func init() { } func (c *inventoryCount) CreateInventoryCount(ctx context.Context, req *dto.CreateInventoryCountReq) (res *dto.CreateInventoryCountRes, err error) { g.Log().Debugf(ctx, "[CreateInventoryCount] req: %+v", req) return service.InventoryCount.Create(ctx, req) } func (c *inventoryCount) UpdateInventoryCount(ctx context.Context, req *dto.UpdateInventoryCountReq) (res *beans.ResponseEmpty, err error) { err = service.InventoryCount.Update(ctx, req) return } func (c *inventoryCount) DeleteInventoryCount(ctx context.Context, req *dto.DeleteInventoryCountReq) (res *beans.ResponseEmpty, err error) { err = service.InventoryCount.Delete(ctx, req) return } func (c *inventoryCount) GetInventoryCount(ctx context.Context, req *dto.GetInventoryCountReq) (res *dto.GetInventoryCountRes, err error) { return service.InventoryCount.GetOne(ctx, req) } func (c *inventoryCount) ListInventoryCounts(ctx context.Context, req *dto.ListInventoryCountReq) (res *dto.ListInventoryCountRes, err error) { return service.InventoryCount.List(ctx, req) } func (c *inventoryCount) CompleteInventoryCount(ctx context.Context, req *dto.CompleteInventoryCountReq) (res *dto.CompleteInventoryCountRes, err error) { return service.InventoryCount.Complete(ctx, req) } func (c *inventoryCount) CancelInventoryCount(ctx context.Context, req *dto.CancelInventoryCountReq) (res *dto.CancelInventoryCountRes, err error) { return service.InventoryCount.Cancel(ctx, req) } func (c *inventoryCount) ExportInventoryCountTemplate(ctx context.Context, req *dto.ExportInventoryCountTemplateReq) (res *dto.ExportInventoryCountTemplateRes, err error) { return service.InventoryCount.ExportTemplate(ctx, req) } // ImportInventoryCount 上传盘点Excel // 从multipart form读取文件数据并调用Service层解析导入 func (c *inventoryCount) ImportInventoryCount(ctx context.Context, req *dto.ImportInventoryCountReq) (res *dto.ImportInventoryCountRes, err error) { r := g.RequestFromCtx(ctx) file, _, err := r.Request.FormFile("file") if err != nil { return nil, fmt.Errorf("读取上传文件失败: %v", err) } defer file.Close() fileData, err := io.ReadAll(file) if err != nil { return nil, fmt.Errorf("读取文件内容失败: %v", err) } return service.InventoryCount.ImportInventoryCount(ctx, req, fileData) }