sunty
2024-05-29 16b34c939d6790fe6ebe61f8f0e85fe80ee52224
rule/service.go
@@ -32,7 +32,7 @@
// 执行程序入口
func ExecuteTask() {
   //进出异常布控任务,暂时归类到标签计算部分
   fmt.Println("进出异常开始入口!!!!!!")
   //fmt.Println("进出异常开始入口!!!!!!")
   tasks, err := db.GetAllTaskData()
   if err != nil {
      logger.Error("GetAllTaskData Error", err)
@@ -44,20 +44,21 @@
         tkInfo.Name = taskInfo.Name
      }
   }
   fmt.Println("tkInfo: ", tkInfo)
   //fmt.Println("tkInfo: ", tkInfo)
   days := config.Api.AInterval
   docNumIdMap, err := db.QueryLastIdByDayRange(days, days-1)
   if err != nil {
      logger.Error("QueryByDayRange err: ", err)
   }
   fmt.Println("docNumIdMap: ", len(docNumIdMap))
   //fmt.Println("docNumIdMap: ", len(docNumIdMap))
   for docNumber, id := range docNumIdMap {
      //fmt.Println(docNumber, id)
      alarmRules := make([]db.AlarmRule, 0)
      flag := task.EnteringButNotLeaving(docNumber, id, days)
      flag := task.EnteringButNotLeaving(docNumber, days)
      if flag == true {
         alarmRules = append(alarmRules, db.AlarmRule{RuleId: strconv.Itoa(tkInfo.Id), RuleText: tkInfo.Name, AlarmLevel: "0"})
      }
      //fmt.Println("alarmRules: ", id, alarmRules)
      addFlag, err := db.AddAlarmRules(alarmRules, id)
      if err != nil {
         logger.Error("AddAlarmRules err: ", err)
@@ -88,53 +89,68 @@
      //if communityID != "50010101010000001001" {
      //   continue
      //}
      fmt.Println("communityID: ", communityID)
      //查询社区内人员档案,方便数据更新
      personStatus, err := db.GetDBPersonStatusData(communityID)
      personStatusList, err := db.QueryPersonStatusWithPagination(communityID, 30)
      if err != nil {
         logger.Error("GetDBPersonStatusData Error", err)
         logger.Error("QueryPersonStatusWithPagination err: ", err)
      }
      //fmt.Println(labeManage)
      //fmt.Println("personStatus: ", personStatus)
      //fmt.Println("CcmmunityIDs: ", cmmunityID)
      //按社区id查询近一个月es数据
      captureInfos, err := db.Query1MDataByCommunityId(communityID)
      //fmt.Println("captureInfos: ", captureInfos)
      //residentCount := 0
      //
      documentNumberIDS := make([]string, 0)
      for _, personStatus := range personStatusList {
         //fmt.Println("personStatus.LastAppearanceTime: ", personStatus.LastAppearanceTime)
         documentNumberIDS = append(documentNumberIDS, personStatus.DocumentNumber)
         //业务逻辑
      }
      //fmt.Println("len(documentNumberIDS)", len(documentNumberIDS))
      captureInfos := make([]db.CaptureInfo, 0)
      batchSize := config.Elastic.BatchSize
      //fmt.Println(batchSize)
      for i := 0; i < len(documentNumberIDS); i += batchSize {
         end := i + batchSize
         if end > len(documentNumberIDS) {
            end = len(documentNumberIDS)
         }
         batch := documentNumberIDS[i:end]
         //fmt.Println("batch: ", batch)
         batchCaptureInfos, err := db.Query1MDataByCommunityId(communityID, batch, 30)
         if err != nil {
            logger.Error("Query1MDataByCommunityId Error", err)
         }
         if len(batchCaptureInfos) == 0 {
            continue
         }
         //fmt.Println("batchCaptureInfos: ", batchCaptureInfos)
         captureInfos = append(captureInfos, batchCaptureInfos...)
      }
      if len(captureInfos) == 0 {
         continue
      }
      fmt.Println("共计有档案数据条数为:", len(captureInfos))
      //补全分析所需数据
      for i := range captureInfos {
         //fmt.Println(captureInfos[i].DocumentNumber)
         captureDays, overnightCount := data.CalculateCaptureDays(captureInfos[i].CaptureDetail)
         captureInfos[i].CaptureDays = captureDays
         captureInfos[i].OvernightStays = overnightCount
         //if captureInfos[i].CaptureDays <= 10 && captureInfos[i].OvernightStays >= 1 {
         //   fmt.Println(captureInfos[i].DocumentNumber)
         //   fmt.Println("该人员出现天数为", captureInfos[i].CaptureDays)
         //   fmt.Println("该人员过夜天数为", captureInfos[i].OvernightStays)
         //}
         captureInfos[i].Status = data.SetStatus(captureDays, ruleInfo)
         if captureInfos[i].OvernightStays >= 5 && (captureInfos[i].CaptureDays <= 14 && captureInfos[i].CaptureDays >= 5) {
            captureInfos[i].Status = "resident"
         }
         //if captureInfos[i].Status == "resident" {
         //   residentCount++
         //}
         //fmt.Println("SetStatus: ", captureInfos[i].Status)
         age, err := db.QueryAgeById(captureInfos[i].DocumentNumber)
         if err != nil {
            logger.Error("QueryAgeById ERROR", err)
         }
         captureInfos[i].Age = age
         data.SetFrequentAddress(&captureInfos[i])
         //fmt.Println("captureInfos[i].Age: ", captureInfos[i].Age)
         captureInfos[i].FrequentAddress = data.GetFrequentAddress(captureInfos[i].CaptureDetail)
         //fmt.Println("CaptureDetail: ", captureInfos[i].DocumentNumber, captureInfos[i].CaptureDays, captureInfos[i].CaptureDetail)
      }
      //fmt.Println("residentCount: ", residentCount)
      if err != nil {
         logger.Error("MatchAllTargets Error", err)
      }
      if len(captureInfos) == 0 {
         continue
      }
      //fmt.Println("captureInfosQ: ", captureInfos)
      for _, identity := range labeManage {
         switch identity.Name {
         case "服务人员":
@@ -153,10 +169,14 @@
         logger.Error("UpdateDBPersonLabel Error", errIdentity)
      }
      //continue
      //fmt.Println("captureInfos: ", captureInfos)
      postCaptureInfos := data.ProcessData(captureInfos, personStatus, ruleInfo, communityID)
      //fmt.Println("postCaptureInfos: ", postCaptureInfos)
      //fmt.Println("共过滤条数:", len(captureInfos)-len(postCaptureInfos))
      postCaptureInfos := data.ProcessData(captureInfos, personStatusList, ruleInfo, communityID)
      /*for _, inf := range postCaptureInfos {
         fmt.Println("inf: ", inf.DocumentNumber, inf.Status, inf.FrequentAddress, inf.LastAppearanceStatusTime)
      }*/
      //fmt.Println("共更新档案数:", len(postCaptureInfos))
      //fmt.Println("----->captureInfos: ", len(captureInfos))
      //continue
      UpdatePersonInfoErr := db.UpdatePersonInfo(postCaptureInfos, communityID)
      if UpdatePersonInfoErr != nil {
         logger.Error("MatchPermanentResidentTargets Error: ", UpdatePersonInfoErr)