zhangzengfei
2024-12-20 4b7fb684b349c22698a2b568549043098c31b977
修改参数获取
2个文件已修改
27 ■■■■■ 已修改文件
db/db.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/disappear.go 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
db/db.go
@@ -194,7 +194,7 @@
            ModelId: ModelIdDisappear,
            Scope:   "",
            RuleArg: RuleArg{
                Alias:    "age",
                Alias:    "lastDirection",
                Name:     "进出方向",
                Type:     "input",
                Must:     false,
models/disappear.go
@@ -21,7 +21,8 @@
    DisappearTime int    // 消失时间, 单位小时
    AlarmInterval int    // 报警时间间隔, 单位天
    LastDirection string // 最后一次抓拍
    PersonAge     int    // 年龄
    MaxAge        string // 年龄
    MinAge        string // 年龄
    Task          *db.ModelTask
}
@@ -52,8 +53,10 @@
        }
        if v.Alias == "age" {
            if val, ok := v.Value.(float64); ok {
                m.PersonAge = int(val)
            if val, ok := v.Value.(string); ok {
                ages := strings.Split(val, ",")
                m.MinAge = ages[0]
                m.MaxAge = ages[1]
            }
        }
@@ -90,7 +93,7 @@
    results := make([]*db.ModelTaskResults, 0)
    var ageFilter, labelFilter, keyFilter, lastFilter []PersonInfo
    if m.PersonAge > 0 {
    if m.MinAge != "" {
        err := db.GetDB().Raw(`
        SELECT
            s.document_number,
@@ -110,14 +113,18 @@
            AND TIMESTAMPDIFF(
                YEAR,
                STR_TO_DATE( CASE WHEN LENGTH( id_card ) = 18 THEN SUBSTRING( id_card, 7, 8 ) ELSE NULL END, '%Y%m%d' ),
            CURDATE( ) > ?
        `, m.PersonAge).Scan(&ageFilter).Error
            CURDATE( ) >= ?
            AND TIMESTAMPDIFF(
                YEAR,
                STR_TO_DATE( CASE WHEN LENGTH( id_card ) = 18 THEN SUBSTRING( id_card, 7, 8 ) ELSE NULL END, '%Y%m%d' ),
            CURDATE( ) <= ?
        `, m.MinAge, m.MaxAge).Scan(&ageFilter).Error
        if err != nil {
            logger.Warnf(err.Error())
        }
        if len(ageFilter) == 0 {
            return fmt.Errorf("no results found that match the age condition %d", m.PersonAge)
            return fmt.Errorf("no results found that match the age condition %s - %s", m.MinAge, m.MaxAge)
        }
        logger.Debugf("match age result %d", len(ageFilter))
@@ -154,9 +161,9 @@
    }
    // 合并一下条件
    if m.PersonAge > 0 && m.PersonLabel != "" {
    if m.MinAge != "" && m.PersonLabel != "" {
        lastFilter = intersectPersonInfo(ageFilter, labelFilter)
    } else if m.PersonAge > 0 {
    } else if m.MinAge != "" {
        lastFilter = ageFilter
    } else if m.PersonLabel != "" {
        lastFilter = labelFilter