feat: 补齐消毒、种源与二维码身份链
This commit is contained in:
@@ -262,6 +262,35 @@ func autoTrace(db *gorm.DB) gin.HandlerFunc {
|
||||
"pastCount": pastCount,
|
||||
}
|
||||
|
||||
// 生物安全证据:种源与消毒记录
|
||||
bio := map[string]interface{}{
|
||||
"seedSourceCount": int64(0),
|
||||
"disinfectionCount": int64(0),
|
||||
"evidenceSufficient": false,
|
||||
"missing": []string{"种源", "消毒"},
|
||||
}
|
||||
if t.RoomID != nil {
|
||||
var seedCount, disinfectionCount int64
|
||||
db.Table("seed_sources").
|
||||
Joins("JOIN batches ON batches.id = seed_sources.batch_id AND batches.room_id = ?", *t.RoomID).
|
||||
Count(&seedCount)
|
||||
db.Table("disinfection_records").
|
||||
Joins("JOIN batches ON batches.id = disinfection_records.batch_id AND batches.room_id = ?", *t.RoomID).
|
||||
Count(&disinfectionCount)
|
||||
missing := []string{}
|
||||
if seedCount == 0 {
|
||||
missing = append(missing, "种源")
|
||||
}
|
||||
if disinfectionCount == 0 {
|
||||
missing = append(missing, "消毒")
|
||||
}
|
||||
bio["seedSourceCount"] = seedCount
|
||||
bio["disinfectionCount"] = disinfectionCount
|
||||
bio["evidenceSufficient"] = seedCount > 0 && disinfectionCount > 0
|
||||
bio["missing"] = missing
|
||||
}
|
||||
report["biosecurity"] = bio
|
||||
|
||||
// 传播途径推断
|
||||
mode, source := service.TransmissionInference(t.Disease)
|
||||
report["transmission"] = map[string]interface{}{"mode": mode, "source": source}
|
||||
|
||||
Reference in New Issue
Block a user