zhangzengfei
2025-02-11 9bf9c64da2f0babb3313ba6b6b27c2f15bf62592
完善模型参数,修复bug
3个文件已修改
21 ■■■■■ 已修改文件
models/accessRegularity.go 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/locationAnalysis.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/esSearch.go 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/accessRegularity.go
@@ -94,7 +94,7 @@
        return fmt.Errorf("task id:%s, %s timeRange Time range setting error. %+v", task.ID, task.Name, task.Rules)
    }
    logger.Debugf("LocationModel init finish ...task id:%s, name:%s, rule:%+v", task.ID, task.Name, m)
    logger.Debugf("AccessRegularity init finish ...task id:%s, name:%s, rule:%+v", task.ID, task.Name, m)
    return nil
}
@@ -123,18 +123,22 @@
        logger.Warnf(err.Error())
    }
    logger.Debugf("task %s base filter result %d", m.Task.Name, len(baseFilter))
    esCli := db.GetEsClient()
    for _, p := range baseFilter {
        // 调用es分析此人的出行规律是否符合条件, 返回符合条件的次数和最后一次符合条件的时间
        sTime := startDate.Format(time.DateTime)
        eTime := time.Now().Format(time.DateTime)
        captures, err := service.QueryEsRecord(esCli, sTime, eTime, nil, []interface{}{p.CommunityId}, []string{p.DocumentNumber})
        //logger.Debugf("task %s person %s captures %d", m.Task.Name, p.DocumentNumber, len(captures))
        if len(captures) == 0 || err != nil {
            continue
        }
        //logger.Debugf("task %s person %s captures %+v", m.Task.Name, p.DocumentNumber, captures[0])
        // 根据抓拍时间和出入方向,计算符合规则内的出入次数
        hitCount := countValidDays(captures, m.StartHour, m.EndHour, m.LastDirection)
        hitCount, pd := countValidDays(captures, m.StartHour, m.EndHour, m.LastDirection)
        if hitCount > m.Appearances {
            // 写数据库
@@ -147,7 +151,7 @@
                OrgID:         p.OrgId,
                ObjectIds:     p.DocumentNumber,
                Location:      p.FrequentAddress,
                PicDate:       time.Unix(p.LastAppearanceTime, 0).Format(time.DateTime),
                PicDate:       pd,
                FirstPersonID: p.DocumentNumber,
            }
@@ -174,10 +178,11 @@
    return ""
}
func countValidDays(records []*service.ESRecordInfo, startHour, endHour int, direction string) int {
func countValidDays(records []*service.ESRecordInfo, startHour, endHour int, direction string) (int, string) {
    layout := "2006-01-02 15:04:05"             // 时间格式
    lastDirectionMap := make(map[string]string) // 记录最后一条 Direction
    lastTimeMap := make(map[string]time.Time)   // 记录最后一条时间
    lastPicDate := ""
    // 判断是否跨天
    var isCrossDay bool
@@ -219,6 +224,7 @@
        if lastTime, exists := lastTimeMap[key]; !exists || t.After(lastTime) {
            lastTimeMap[key] = t
            lastDirectionMap[key] = record.CameraLocation.Direction
            lastPicDate = record.PicDate
        }
    }
@@ -230,5 +236,5 @@
        }
    }
    return count
    return count, lastPicDate
}
models/locationAnalysis.go
@@ -230,7 +230,7 @@
    if err != nil {
        return err
    }
    logger.Debugf("records %s last result %s", m.Task.Name, records)
    logger.Debugf("records %s last result %+v", m.Task.Name, records)
    domains, err := domainToLocation(records)
    if err != nil {
        return err
service/esSearch.go
@@ -89,7 +89,6 @@
                "filter": filters,
            },
        },
        "size":    0,
        "sort":    []interface{}{map[string]interface{}{"picDate": map[string]interface{}{"order": "asc"}}},
        "_source": map[string]interface{}{"includes": []interface{}{}, "excludes": []interface{}{"*.feature"}},
    }
@@ -148,7 +147,7 @@
            PicMaxUrl:      source["picMaxUrl"].(string),
        }
        cameraLocation := source["cameraId"].(map[string]interface{})
        cameraLocation := source["cameraLocation"].(map[string]interface{})
        record.CameraLocation = CameraLocation{
            Building:  cameraLocation["building"].(string),
            Unit:      cameraLocation["unit"].(string),