goweb-gin-demo/service/wt/wt_output.go

82 lines
2.1 KiB
Go

package wt
import (
"goweb-gin-demo/model/common"
"goweb-gin-demo/model/common/request"
"goweb-gin-demo/model/wt"
wtReq "goweb-gin-demo/model/wt/request"
wtRes "goweb-gin-demo/model/wt/response"
"goweb-gin-demo/utils"
)
type WtOutputService struct {
}
// GetWtRule 根据id获取WtRule记录
func (wtOutputService *WtOutputService) GetStatResult(idInfo request.GetByUserID) (err error, wtRule wtRes.StatResult) {
//首先查询要统计的人
ruleInfo := wtReq.WtRuleSearch{}
ruleInfo.UserId = int(idInfo.UserId)
var WtServiceGroup WtServiceGroup
err, wtRuleResultList, _ := WtServiceGroup.WtRuleService.GetWtRuleInfoList(ruleInfo)
if err != nil {
return err, wtRes.StatResult{}
}
wtRuleResult := wtRuleResultList[0]
//计算起始时间 起始时间是 5-0900 7-1000
startTime := utils.GetTimeFromWeek(wtRuleResult.StartWeek, wtRuleResult.StartHour)
endTime := utils.GetTimeFromWeek(wtRuleResult.EndWeek, wtRuleResult.EndHour)
//在周报表中进行统计
reports := wtRuleResult.Reporters
var reportSearch wtReq.WtReportsSearch
reportSearch.StartTime = startTime
reportSearch.EndTime = endTime
var userIds []int
for _, userInfo := range reports {
userIds = append(userIds, int(userInfo.ID))
}
var statData wt.StatDataSearch
statData.StartTime = startTime
statData.EndTime = endTime
statData.UserIds = userIds
err, commitedUserIds := WtServiceGroup.WtReportsService.getWtReportListForStat(statData)
if err != nil {
}
var commitedList []common.UserInfo
var uncommitedList []common.UserInfo
// 比较那些人提交了,那些人没有提交
for _, needCommitPeoples := range reports {
isCommit := false
for _, commitedUserId := range commitedUserIds {
if int(needCommitPeoples.ID) == commitedUserId {
isCommit = true
}
}
if isCommit {
commitedList = append(commitedList, needCommitPeoples)
}else {
uncommitedList = append(uncommitedList, needCommitPeoples)
}
}
var statResult wtRes.StatResult
statResult.CommitCount = len(commitedList)
statResult.CommitPeoples = commitedList
statResult.UncommitCount = len(uncommitedList)
statResult.UncommitPeoples = uncommitedList
return err, statResult
}