package query import ( "context" "fmt" "strings" "github.com/gogf/gf/v2/errors/gerror" "git.5iot.com/iotlcm-public/iotlcm-openapi/internal/consts" "git.5iot.com/iotlcm-public/iotlcm-openapi/internal/dao" "git.5iot.com/iotlcm-public/iotlcm-openapi/internal/library/contexts" "git.5iot.com/iotlcm-public/iotlcm-openapi/internal/model" ) type batchStatusRecord struct { Id int64 `orm:"id"` BatchNo string `orm:"batch_no"` BatchAsyncStatus int `orm:"batch_async_status"` SourceChannel string `orm:"source_channel"` ExecutionMode int `orm:"execution_mode"` SourceType int `orm:"source_type"` TotalCount int `orm:"total_count"` ValidCount int `orm:"valid_count"` SuccessCount int `orm:"success_count"` FailCount int `orm:"fail_count"` RunResult int `orm:"run_result"` FailReason string `orm:"fail_reason"` } func (s *sQuerySim) QueryBatchStatus(ctx context.Context, in *model.QueryBatchStatusParam) (*model.QueryBatchStatusOutput, error) { if in == nil { return nil, gerror.New("查询参数不能为空") } if strings.TrimSpace(in.AppId) == "" { return nil, gerror.New("appId不能为空") } batchNo := strings.TrimSpace(in.BatchNo) if batchNo == "" { return nil, gerror.New("batchNo不能为空") } tenantID := strings.TrimSpace(contexts.GetTenantId(ctx)) deptID := contexts.GetAgentDeptId(ctx) if tenantID == "" || deptID <= 0 { return nil, gerror.New("当前接口调用方信息不完整") } columns := dao.BatchMain.Columns() var batch batchStatusRecord err := dao.BatchMain.Ctx(ctx). Where(columns.TenantId, tenantID). Where(columns.DeptId, deptID). Where(columns.BatchNo, batchNo). Where(fmt.Sprintf("NOT (%s = ? AND COALESCE(%s, '') <> '' AND %s <> %s)", columns.BatchType, columns.SourceBatchNo, columns.SourceBatchNo, columns.BatchNo), consts.BatchTypeAllocate). Scan(&batch) if err != nil { return nil, gerror.Wrap(err, "查询批次状态失败") } if batch.Id == 0 { return nil, gerror.New("批次不存在或无权限") } return &model.QueryBatchStatusOutput{ BatchNo: batch.BatchNo, BatchAsyncStatus: batch.BatchAsyncStatus, SourceChannel: batch.SourceChannel, ExecutionMode: batch.ExecutionMode, SourceType: batch.SourceType, TotalCount: batch.TotalCount, ValidCount: batch.ValidCount, SuccessCount: batch.SuccessCount, FailCount: batch.FailCount, RunResult: batch.RunResult, FailReason: batch.FailReason, }, nil }