package examtestpage import ( "encoding/json" "fmt" "strconv" "strings" "sync" "time" "gin_server_admin/commonus" "gin_server_admin/global" "gin_server_admin/model/common/response" "gin_server_admin/model/locationing" "gin_server_admin/utils/redishandel" "github.com/gin-gonic/gin" ) // 健康上报 type HealthReportStat struct{} func (h *HealthReportStat) HealthList(c *gin.Context) { var healthReport commonus.GetHealthReport err := c.ShouldBindJSON(&healthReport) tadayTime := commonus.GetYesterDay() if err == nil { if healthReport.Date != "" { tadayTime = healthReport.Date } } // fmt.Printf("%v===>%v\n", tadayTime, healthReport) pv, uv, isTrue, msg := commonus.GetHealthReportStat(tadayTime) if isTrue != true { response.Result(101, tadayTime, msg, c) return } type outStruct struct { Pv int64 `json:"pv"` //应用使用次数 Uv int64 `json:"uv"` //应用使用成员数 } var healthReportInfo outStruct healthReportInfo.Pv = pv healthReportInfo.Uv = uv // fmt.Printf("%v===>%v===>%v===>%v===>%v\n", tadayTime, pv, uv, isTrue, msg) response.Result(200, healthReportInfo, msg, c) } // 获取企业当前正在运行的上报任务ID列表 func (h *HealthReportStat) RunHealthList(c *gin.Context) { var healthReport commonus.GetHealthReportRun err := c.ShouldBindJSON(&healthReport) var page int var pageSize int64 page = 0 pageSize = 100 if err == nil { if healthReport.Page != 0 { page = healthReport.Page } if healthReport.PageSize != 0 { pageSize = healthReport.PageSize } } jobMap, isTrue, msg := commonus.GetRunHealthReportJobids(page, pageSize) if isTrue != true { response.Result(102, isTrue, msg, c) return } // fmt.Printf("%v\n", jobMap) response.Result(0, jobMap, msg, c) } // 获取健康上报任务详情 func (h *HealthReportStat) PostReportJobInfo(c *gin.Context) { var healthReportJob commonus.GetReportJobInfoDate err := c.ShouldBindJSON(&healthReportJob) if err != nil { response.Result(101, healthReportJob, "参数错误!", c) return } if healthReportJob.JobId == "" { response.Result(102, err, "参数错误!", c) return } tadayTime := commonus.GetYesterDay() if healthReportJob.Date != "" { tadayTime = healthReportJob.Date } strucr, _, _, msg := commonus.GetReportJobInfo(healthReportJob.JobId, tadayTime) if strucr.Errcode != 0 { response.Result(102, strucr.ErrMsg, "获取数据错误!", c) return } response.Result(0, strucr.JobInfo, msg, c) } // 获取用户填写答案列表 func (h *HealthReportStat) PostReportAnswerList(c *gin.Context) { var reportAnswer commonus.ReportAnswerStruct err := c.ShouldBindJSON(&reportAnswer) if err != nil { response.Result(101, reportAnswer, "参数错误!", c) return } if reportAnswer.JobId == "" { response.Result(102, err, "参数错误!", c) return } tadayTime := commonus.GetYesterDay() if reportAnswer.Date != "" { tadayTime = reportAnswer.Date } var page int var pageSize int page = 0 pageSize = 100 if reportAnswer.Page != 0 { page = reportAnswer.Page } if reportAnswer.PageSize != 0 { pageSize = reportAnswer.PageSize } // fmt.Printf("pageSize = >%v\n", pageSize) // jsonBtye, reportAnswerInfoList, _, msg := commonus.GetUserWriteAnswer(reportAnswer.JobId, tadayTime, page, pageSize) _, reportAnswerInfoList, isTrue, msg := commonus.GetUserWriteAnswer(reportAnswer.JobId, tadayTime, page, int64(pageSize)) // var reportAnswerJson commonus.ReportAnswerResult // err = json.Unmarshal(reportByte, &reportAnswerJson) // var AdmDivStruct []commonus.AdministrativeDivision // for _, v := range reportAnswerInfoList.Answers { // for _, v_sun := range v.ReportValues { // if v_sun.Text != "" { // var AdmDiv commonus.AdministrativeDivision // countSplit := strings.Split(v_sun.Text, "省") // if len(countSplit) >= 2 { // AdmDiv.Userid = v.Userid // AdmDiv.Province = countSplit[0] + "省" // countSplitSun := strings.Split(countSplit[1], "市") // if len(countSplitSun) > 2 { // AdmDiv.City = countSplitSun[0] + "市" // AdmDiv.County = countSplitSun[1] + "市" // } else { // AdmDiv.City = countSplitSun[0] + "市" // if len(countSplitSun) == 2 { // countSplitSunes := strings.Split(countSplitSun[1], "县") // if len(countSplitSun) > 1 { // AdmDiv.County = countSplitSunes[0] + "县" // } // countSplitSunesi := strings.Split(countSplitSun[1], "区") // if len(countSplitSunesi) > 1 { // AdmDiv.County = countSplitSunesi[0] + "区" // } // // fmt.Printf("%v切割地址%v-------------%v\n", v.Userid, countSplitSunes, len(countSplitSunes)) // } // } // AdmDivStruct = append(AdmDivStruct, AdmDiv) // } // } // } // } if isTrue == false { response.Result(102, reportAnswerInfoList.ErrMsg, "获取数据错误!", c) return } response.Result(200, reportAnswerInfoList.Answers, msg, c) } //获取用户填写答案列表 (全部) // 用户填写 var myStatisWg = sync.WaitGroup{} type dataLockStatistics struct { dataMap []map[string]interface{} baoJing []map[string]interface{} mutext sync.RWMutex } // 读取锁数据 func (d *dataLockStatistics) readMyDayData() ([]map[string]interface{}, []map[string]interface{}) { d.mutext.RLock() defer d.mutext.RUnlock() return d.dataMap, d.baoJing } func (h *HealthReportStat) PostReportAnswerListAll(c *gin.Context) { var reportAnswer commonus.ReportAnswerStruct err := c.ShouldBindJSON(&reportAnswer) if err != nil { response.Result(101, reportAnswer, "参数错误!", c) return } if reportAnswer.JobId == "" { response.Result(102, err, "参数错误!", c) return } tadayTime := commonus.GetYesterDay() if reportAnswer.Date != "" { tadayTime = reportAnswer.Date // fmt.Printf("时间是=》%v\n", reportAnswer.Date) } //判断日期是否已经统计 sendCalCulTime := tadayTime + " 12:00:00" calCulTime := commonus.DateToTimeStamp(tadayTime + " 12:00:00") var reportInfo locationing.ReportAddress errInfo := global.GVA_DB_HealthReport.Where("calcultime = ?", calCulTime).First(&reportInfo).Error if errInfo == nil { response.Result(102, tadayTime, "该日期已经统计", c) return } //获取围栏地址 var legalAreaList []locationing.LegalArea addressListErr := global.GVA_DB_HealthReport.Where("la_state = ?", 1).Find(&legalAreaList).Error if addressListErr != nil { fmt.Printf("未设置围栏地址:%v\n", addressListErr) } // return strucr, isTrue, _, msg := commonus.GetReportJobInfo(reportAnswer.JobId, tadayTime) //strucr.JobInfo.FinishCnt if isTrue != true { response.Result(103, err, msg, c) return } dateExcept := strucr.JobInfo.FinishCnt / 100 dateSurplus := strucr.JobInfo.FinishCnt % 100 if dateSurplus > 0 { dateExcept = dateExcept + 1 } // fmt.Printf("%v****************%v-------->%v\n", strucr.JobInfo.FinishCnt, dateExcept, dateSurplus) var dataStruct dataLockStatistics //获取全国风险等级 nationalRiskLevel, riskIsTrue := commonus.GetNationalRiskArea() for i := 0; i < dateExcept; i++ { myStatisWg.Add(1) go dataStruct.getUserAnswerList(reportAnswer.JobId, tadayTime, sendCalCulTime, i, 100, legalAreaList, nationalRiskLevel, riskIsTrue) } myStatisWg.Wait() returData := commonus.MapOut() readDataMap, readBaoJinf := dataStruct.readMyDayData() returData["alenda"] = len(readDataMap) returData["alendalist"] = readDataMap returData["baojing"] = len(readBaoJinf) returData["baojinglist"] = readBaoJinf //计算未上报人员 // CalculationNotReport(tadayTime, calCulTime, readDataMap) //判断报警人是不是超员 if len(readBaoJinf) > 0 { //给相关人员发送信息 // sendMessAgeAlarm(calCulTime, readBaoJinf) } response.Result(0, returData, msg, c) } /* 计算未上报人员 @time 计算日期 @decisionTime 判定时间 @reportedPeople 已经上报的人 */ func CalculationNotReport(time string, decisionTime int64, reportedPeople []map[string]interface{}) { userStruct, isTrues := commonus.GetMemberList() if isTrues != true { return } userDateCount := len(userStruct) userCurlCount := len(reportedPeople) fmt.Printf("%v==================>%v", userDateCount, userCurlCount) } // 向相关人员发送警报 https://docu.hxgk.group/images/2021_11/205c2d8d35491880a1ac9f03d6e879d3.jpg func sendMessAgeAlarm(calCulTime int64, alarmUser []map[string]interface{}) (sendBakc map[string]interface{}) { // fmt.Printf("%v\n", reflect.TypeOf(alarmUser)) var sendText string sendText = fmt.Sprintf("异常上报地址人员(%v)\n查看详情\n", commonus.TimeStampToDate(calCulTime, 4), calCulTime) jiBuQi := 0 for i, v := range alarmUser { jiBuQi++ // fmt.Printf("%v---------------------->%v\n", i, v["userid"]) userID := fmt.Sprintf("%v", v["userid"]) weChatUserCont := commonus.GetWechatUserInfo(userID) // sendText = "异常上报地址人员\n产看详情\n" + weChatUserCont.Name + v["province"] + v["city"] + v["county"] sendText = sendText + fmt.Sprintf("%v、%v %v%v%v TEL:%v\n", i+1, weChatUserCont.Name, v["province"], v["city"], v["county"], weChatUserCont.Mobile) } var reportAnswerSet []locationing.NoticeUser getNoticUserErr := global.GVA_DB_HealthReport.Where("n_state = ?", 1).Find(&reportAnswerSet).Error if getNoticUserErr == nil { sendUserKey := "" for u_i, u_v := range reportAnswerSet { if u_i == 0 { sendUserKey = u_v.UserWechat } else { sendUserKey = sendUserKey + "|" + u_v.UserWechat } } if sendUserKey != "" { // var sendTxt commonus.SendText // sendTxt.Touser = sendUserKey // sendTxt.MsgType = "text" // sendTxt.Text.Content = sendText // appId, _ := strconv.ParseInt(global.GVA_CONFIG.WorkWechatSchool.AgentId, 10, 64) // sendTxt.AgentId = appId // sendTxt.DuplicateCheckInterval = 1800 // sendTxt.SendTextMessage() var sendCont commonus.ArticlesStruct sendCont.Title = "异常上报地址人员" sendCont.Description = commonus.TimeStampToDate(calCulTime, 6) + fmt.Sprintf("共计(%v)异常上报地址人员", jiBuQi) sendCont.URL = fmt.Sprintf("https://www.hxgk.group/excereportaddress?time=%v", calCulTime) sendCont.Picurl = "https://docu.hxgk.group/images/2021_11/205c2d8d35491880a1ac9f03d6e879d3.jpg" var sendContAry []commonus.ArticlesStruct sendContAry = append(sendContAry, sendCont) var sendImgMsg commonus.SendImgCont sendImgMsg.Touser = sendUserKey sendImgMsg.MsgType = "news" appId, _ := strconv.ParseInt(global.GVA_CONFIG.WorkWechatSchool.AgentId, 10, 64) sendImgMsg.AgentId = appId sendImgMsg.News.Articles = sendContAry sendImgMsg.DuplicateCheckInterval = 1800 callbakcMsg, isTrueCall, callBackCont := sendImgMsg.SendImgMessage() fmt.Printf("发送信息返回:%v-----------%v----------->%v\n", string(callbakcMsg), isTrueCall, callBackCont) sendBakcs := commonus.MapOut() sendBakcs["callbakcMsg"] = string(callbakcMsg) sendBakcs["isTrueCall"] = isTrueCall sendBakcs["callBackCont"] = callBackCont // sendBakcs["errmsg"] = "没有要通知的人" sendBakc = sendBakcs return } else { fmt.Println("没有要通知的人") sendBakcs := commonus.MapOut() sendBakcs["errmsg"] = "没有要通知的人" sendBakc = sendBakcs return } } else { fmt.Println("没有要通知的人") // sendBakc["errmsg"] = "没有要通知的人" sendBakcs := commonus.MapOut() sendBakcs["errmsg"] = "没有要通知的人" sendBakc = sendBakcs return } return // fmt.Printf("%v---------------------->%v\n", sendText, sendText) } // 获取上报地址异常的数据人员信息 func (d *dataLockStatistics) getUserAnswerList(jobid, tadayTime, calCulTime string, page int, pageSize int64, legalAreaList []locationing.LegalArea, regionalRiskLevel []commonus.RegionalRiskLevel, isRiskYes bool) { d.mutext.Lock() defer d.mutext.Unlock() // calCulTime := tadayTime // calCulTime := tadayTime + " 12:00:00" // fmt.Printf("page ------------> %v\n", page) // timeStamp := commonus.DateToTimeStamp(calCulTime) // var judgeWriteInfoUser locationing.ReportAddress // getReportAddressErr := global.GVA_DB_HealthReport.Where("calcultime = ?", timeStamp).Take(&judgeWriteInfoUser).Error // if getReportAddressErr != nil { //设置redis数据 redisUserClient := redishandel.RunRedis() redisUserClient.SetRedisTime(1123200) _, reportAnswerInfoList, _, _ := commonus.GetUserWriteAnswer(jobid, tadayTime, page, pageSize) var AdmDivStruct []commonus.AdministrativeDivision var writeInfo []locationing.ReportAddress for _, v := range reportAnswerInfoList.Answers { for _, v_sun := range v.ReportValues { if v_sun.Text != "" && v_sun.QuestionId != 2 { var writeInfoUser locationing.ReportAddress var AdmDiv commonus.AdministrativeDivision AdmDivMap := commonus.MapOut() // writeInfoUser.Address = string(msgBtye) countSplit := strings.Split(v_sun.Text, "省") xieRuBaoJong := false var groupIdCont int64 groupIdCont = 0 if len(countSplit) >= 2 { writeInfoUser.WechatId = v.Userid writeInfoUser.Userid = v.Userid writeInfoUser.AddTime = time.Now().Unix() writeInfoUser.Address = v_sun.Text writeInfoUser.ItineraryCardType = v_sun.ItineraryCardType writeInfoUser.HighRiskArea = v_sun.HighRiskArea AdmDivMap["itinerary_card_type"] = v_sun.ItineraryCardType AdmDivMap["high_risk_area"] = v_sun.HighRiskArea AdmDivMap["riskLevel"] = 0 writeInfoUser.RiskLevel = 0 writeInfoUser.CalCulTime = commonus.DateToTimeStamp(calCulTime) // fmt.Printf("时间值-----》%v @@@@@@@@@@@@@@@@@@@@ %v\n\n", v_sun.ItineraryCardType, v_sun) AdmDiv.Userid = v.Userid AdmDiv.Province = countSplit[0] + "省" writeInfoUser.Province = countSplit[0] + "省" AdmDivMap["userid"] = v.Userid AdmDivMap["province"] = countSplit[0] + "省" AdmDivMap["id"] = v.IdType countSplitSun := strings.Split(countSplit[1], "市") if len(countSplitSun) > 2 { AdmDiv.City = countSplitSun[0] + "市" AdmDiv.County = countSplitSun[1] + "市" writeInfoUser.City = countSplitSun[0] + "市" writeInfoUser.County = countSplitSun[1] + "市" AdmDivMap["city"] = countSplitSun[0] + "市" AdmDivMap["county"] = countSplitSun[1] + "市" if isRiskYes == true { //判断是否要进行风险等级判定 for _, riskAre := range regionalRiskLevel { if riskAre.ProvinceName == countSplit[0] { if riskAre.CityName == countSplitSun[0] { writeInfoUser.RiskLevel = riskAre.RiskLevel AdmDivMap["riskLevel"] = riskAre.RiskLevel // commonus.WriteInMan(v.Userid) xieRuBaoJong = true } } } } } else { AdmDiv.City = countSplitSun[0] + "市" writeInfoUser.City = countSplitSun[0] + "市" AdmDivMap["city"] = countSplitSun[0] + "市" if isRiskYes == true { //判断是否要进行风险等级判定 for _, riskAre := range regionalRiskLevel { if riskAre.ProvinceName == countSplit[0] { if riskAre.CityName == countSplitSun[0] { writeInfoUser.RiskLevel = riskAre.RiskLevel writeInfoUser.RiskLevel = riskAre.RiskLevel AdmDivMap["riskLevel"] = riskAre.RiskLevel // commonus.WriteInMan(v.Userid) xieRuBaoJong = true } } } } if len(countSplitSun) == 2 { countSplitSunes := strings.Split(countSplitSun[1], "县") if len(countSplitSun) > 1 { AdmDiv.County = countSplitSunes[0] + "县" writeInfoUser.County = countSplitSunes[0] + "县" AdmDivMap["county"] = countSplitSunes[0] + "县" } countSplitSunesi := strings.Split(countSplitSun[1], "区") if len(countSplitSunesi) > 1 { AdmDiv.County = countSplitSunesi[0] + "区" writeInfoUser.County = countSplitSunes[0] + "区" AdmDivMap["county"] = countSplitSunesi[0] + "区" } // fmt.Printf("%v切割地址%v-------------%v\n", v.Userid, countSplitSunes, len(countSplitSunes)) } } // //获取个人信息 weChatUserCont := commonus.GetWechatUserInfo(v.Userid) writeInfoUser.UserName = weChatUserCont.Name writeInfoUser.UserTel = weChatUserCont.Mobile writeInfoUser.MainDepartment = int64(weChatUserCont.MainDepartment) AdmDivMap["user_name"] = weChatUserCont.Name AdmDivMap["user_tel"] = weChatUserCont.Name AdmDivMap["main_department"] = weChatUserCont.MainDepartment abnormalIsTrue := false for _, expVal := range legalAreaList { if expVal.ProvinceName == AdmDiv.Province { if expVal.CityName == AdmDiv.City { abnormalIsTrue = true } } } AdmDivMap["abnormalIsTrue"] = abnormalIsTrue if abnormalIsTrue == true { writeInfoUser.IsDbnormal = 1 // fmt.Printf("报警1=====>%v", abnormalIsTrue) } else { writeInfoUser.IsDbnormal = 2 d.baoJing = append(d.baoJing, AdmDivMap) // fmt.Printf("报警2=====>%v", abnormalIsTrue) } isTrue, myDepartment := commonus.GetGroupInfo(int64(weChatUserCont.MainDepartment)) if isTrue == true { var arrAy []int64 errdd := json.Unmarshal([]byte(myDepartment.Group), &arrAy) if errdd == nil { if len(arrAy) >= 2 { if arrAy[0] == 1 { writeInfoUser.GroupId = arrAy[1] groupIdCont = arrAy[1] if arrAy[1] != 0 { isTrues, myDepartments := commonus.GetGroupInfo(arrAy[1]) if isTrues == true { writeInfoUser.GroupName = fmt.Sprintf("%s", myDepartments.Name) } } } else { writeInfoUser.GroupId = arrAy[0] groupIdCont = arrAy[0] if arrAy[0] != 0 { isTrues, myDepartments := commonus.GetGroupInfo(arrAy[0]) if isTrues == true { writeInfoUser.GroupName = fmt.Sprintf("%s", myDepartments.Name) } } } } } } if xieRuBaoJong == true { commonus.WriteInMan(v.Userid, calCulTime, groupIdCont) } // writeInfoUser.MainDepartment = AdmDivStruct = append(AdmDivStruct, AdmDiv) d.dataMap = append(d.dataMap, AdmDivMap) if v.Userid != "" { redisUserClient.HashMsetAdd("epidemic:userInclude_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+v.Userid+"_"+tadayTime, AdmDivMap) writeInfo = append(writeInfo, writeInfoUser) } } } } } errDb := global.GVA_DB_HealthReport.Create(&writeInfo).Error if errDb != nil { } // } // fmt.Printf("%v切割地址%v-------------%v\n", page, jhs, len(AdmDivStruct)) myStatisWg.Done() } // 添加报警信息通知人 func (h *HealthReportStat) NoticeUserList(c *gin.Context) { // var reportAnswer commonus.GetHealthReportRun // err := c.ShouldBindJSON(&reportAnswer) // if err != nil { // response.Result(101, reportAnswer, "参数错误!", c) // return // } var noticeUserStruct []locationing.NoticeUser notUserErr := global.GVA_DB_HealthReport.Find(¬iceUserStruct).Error if notUserErr != nil { response.Result(101, noticeUserStruct, "未能获取到数据!", c) return } response.Result(0, noticeUserStruct, "获取到数据成功!", c) } // 添加报警人信息 func (h *HealthReportStat) AddNoticeUser(c *gin.Context) { var reportAnswer locationing.NoticeUser err := c.ShouldBindJSON(&reportAnswer) if err != nil { response.Result(101, reportAnswer, "参数错误!", c) return } if reportAnswer.UserWechat == "" { response.Result(102, reportAnswer, "请输入微信ID!", c) return } if reportAnswer.UserName == "" { response.Result(103, reportAnswer, "请输入被通知人姓名!", c) return } reportAnswer.Time = time.Now().Unix() var reportAnswerSet locationing.NoticeUser getNoticUserErr := global.GVA_DB_HealthReport.Where("n_user_wechat = ?", reportAnswer.UserWechat).First(&reportAnswerSet).Error if getNoticUserErr == nil { response.Result(104, reportAnswerSet, "该通知人已经存在!请不要重复添加!", c) return } notUserErr := global.GVA_DB_HealthReport.Create(&reportAnswer).Error if notUserErr != nil { response.Result(105, reportAnswer, "写入数据失败!", c) return } response.Result(0, reportAnswer, "写入数据成功!", c) } // 修改报警人信息 func (h *HealthReportStat) EiteNoticeUser(c *gin.Context) { var reportAnswer locationing.NoticeUser err := c.ShouldBindJSON(&reportAnswer) if err != nil { response.Result(101, reportAnswer, "参数错误!", c) return } if reportAnswer.Id == 0 { response.Result(102, reportAnswer, "参数错误!", c) return } if reportAnswer.UserWechat == "" { response.Result(103, reportAnswer, "请输入微信ID!", c) return } if reportAnswer.UserName == "" { response.Result(104, reportAnswer, "请输入被通知人姓名!", c) return } var reportAnswerSet locationing.NoticeUser getNoticUserErr := global.GVA_DB_HealthReport.Where("n_id = ?", reportAnswer.Id).First(&reportAnswerSet).Error if getNoticUserErr != nil { response.Result(104, reportAnswerSet, "该通知人不存在!请检查你的输入!", c) return } reportAnswer.Time = time.Now().Unix() notUserErr := global.GVA_DB_HealthReport.Where("n_id = ?", reportAnswer.Id).Save(&reportAnswer).Error if notUserErr != nil { response.Result(101, reportAnswer, "写入数据失败!", c) return } response.Result(0, reportAnswer, "写入数据成功!", c) } // 删除报警人信息 func (h *HealthReportStat) DelNoticeUser(c *gin.Context) { var reportAnswer locationing.NoticeUser err := c.ShouldBindJSON(&reportAnswer) if err != nil { response.Result(101, reportAnswer, "参数错误!", c) return } if reportAnswer.Id == 0 { response.Result(102, reportAnswer, "参数错误!", c) return } delErr := global.GVA_DB_HealthReport.Where("n_id = ?", reportAnswer.Id).Delete(&reportAnswer).Error if delErr != nil { response.Result(103, reportAnswer, "删除失败!", c) return } response.Result(0, reportAnswer, "删除成功!", c) } // 根据ID查询详情 func (h *HealthReportStat) LookNoticeUser(c *gin.Context) { var reportAnswer locationing.NoticeUser err := c.ShouldBindJSON(&reportAnswer) if err != nil { response.Result(101, reportAnswer, "参数错误!", c) return } if reportAnswer.Id == 0 { response.Result(102, reportAnswer, "参数错误!", c) return } var reportAnswerSet locationing.NoticeUser getNoticUserErr := global.GVA_DB_HealthReport.Where("n_id = ?", reportAnswer.Id).First(&reportAnswerSet).Error if getNoticUserErr != nil { response.Result(104, reportAnswerSet, "该通知人不存在!请检查你的输入!", c) return } response.Result(0, reportAnswerSet, "获取成功!", c) } func (h *HealthReportStat) PostReportAnswerListTodayAll(c *gin.Context) { var reportAnswer commonus.ReportAnswerStruct err := c.ShouldBindJSON(&reportAnswer) if err != nil { response.Result(101, reportAnswer, "参数错误!", c) return } if reportAnswer.JobId == "" { response.Result(102, err, "参数错误!", c) return } tadayTime := commonus.GetToDay() if reportAnswer.Date != "" { tadayTime = reportAnswer.Date // fmt.Printf("时间是=》%v\n", reportAnswer.Date) } //判断日期是否已经统计 sendCalCulTime := tadayTime + " 09:00:00" calCulTime := commonus.DateToTimeStamp(sendCalCulTime) var reportInfo locationing.ReportAddress errInfo := global.GVA_DB_HealthReport.Where("calcultime = ?", calCulTime).First(&reportInfo).Error if errInfo == nil { response.Result(102, tadayTime, "该日期已经统计", c) return } //获取围栏地址 var legalAreaList []locationing.LegalArea addressListErr := global.GVA_DB_HealthReport.Where("la_state = ?", 1).Find(&legalAreaList).Error if addressListErr != nil { fmt.Printf("未设置围栏地址:%v\n", addressListErr) } // return strucr, isTrue, _, msg := commonus.GetReportJobInfo(reportAnswer.JobId, tadayTime) //strucr.JobInfo.FinishCnt if isTrue != true { response.Result(103, err, msg, c) return } dateExcept := strucr.JobInfo.FinishCnt / 100 dateSurplus := strucr.JobInfo.FinishCnt % 100 if dateSurplus > 0 { dateExcept = dateExcept + 1 } // fmt.Printf("%v****************%v-------->%v\n", strucr.JobInfo.FinishCnt, dateExcept, dateSurplus) var dataStruct dataLockStatistics //获取全国风险等级 nationalRiskLevel, riskIsTrue := commonus.GetNationalRiskArea() for i := 0; i < dateExcept; i++ { myStatisWg.Add(1) go dataStruct.getUserAnswerList(reportAnswer.JobId, tadayTime, sendCalCulTime, i, 100, legalAreaList, nationalRiskLevel, riskIsTrue) } myStatisWg.Wait() returData := commonus.MapOut() readDataMap, readBaoJinf := dataStruct.readMyDayData() returData["alenda"] = len(readDataMap) returData["alendalist"] = readDataMap returData["baojing"] = len(readBaoJinf) returData["baojinglist"] = readBaoJinf response.Result(0, returData, msg, c) //计算未上报人员 // CalculationNotReport(tadayTime, calCulTime, readDataMap) //判断报警人是不是超员 if len(readBaoJinf) > 0 { //给相关人员发送信息 // sendMessAgeAlarm(calCulTime, readBaoJinf) } if len(readDataMap) > 0 { reportDataWrittenToDatabase(readDataMap) } } // 上报数据写入数据库 func reportDataWrittenToDatabase(saveAry []map[string]interface{}) { if len(saveAry) > 0 { for intdx, val := range saveAry { fmt.Printf("写入数据:%v---->%v\n", intdx, val) } } else { fmt.Printf("没有数据") } }