Browse Source

升级gorm版本

qin_1
超级管理员 4 years ago
parent
commit
9d5509770a
  1. 171
      gin_server_admin/api/admin/dutyassess/assess.go
  2. 198
      gin_server_admin/api/admin/dutyassess/assesstype.go
  3. 928
      gin_server_admin/api/admin/dutyassess/dutyhandle.go
  4. 638
      gin_server_admin/api/admin/dutyassess/planversio.go
  5. 134
      gin_server_admin/api/index/evaluation/assessment.go
  6. 135
      gin_server_admin/api/index/evaluation/evaluation.go
  7. 78
      gin_server_admin/api/index/evaluation/flowsend.go
  8. 1
      gin_server_admin/api/index/evaluation/newflowsend.go
  9. 59
      gin_server_admin/api/index/evaluation/type.go
  10. 16
      gin_server_admin/api/v1/assessment/department_target.go
  11. 1
      gin_server_admin/api/v1/assessment/dutytype.go
  12. 29
      gin_server_admin/api/v1/assessment/target.go
  13. 28
      gin_server_admin/api/v1/shiyan/shiyan.go
  14. 114
      gin_server_admin/api/wechatapp/callback/updatehandle.go
  15. 351
      gin_server_admin/commonus/publichaneld.go
  16. 8
      gin_server_admin/commonus/timeSub.go
  17. 90
      gin_server_admin/go.mod
  18. 106
      gin_server_admin/go.sum
  19. 26
      gin_server_admin/model/assessmentmodel/dutyclass.go
  20. 1
      gin_server_admin/model/assessmentmodel/performance_appraisal.go
  21. 4
      gin_server_admin/router/assessment/assessmentrouter.go
  22. 2
      gin_server_admin/router/shiyan/sys_shiyan.go
  23. 18
      gin_server_admin/router/systemadmin/dutyassess.go
  24. 2
      gin_server_admin/scheduledtask/time_task.go

171
gin_server_admin/api/admin/dutyassess/assess.go

@ -2,6 +2,8 @@ package dutyassess
import ( import (
"strconv" "strconv"
"strings"
"time"
"github.com/flipped-aurora/gin-vue-admin/server/api/v1/archiveapi" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/archiveapi"
"github.com/flipped-aurora/gin-vue-admin/server/api/v1/assessment" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/assessment"
@ -483,3 +485,172 @@ func (e *DutyAssessApi) LookQuantitativeConfig(c *gin.Context) {
} }
response.Result(0, outList, "获取成功!", c) response.Result(0, outList, "获取成功!", c)
} }
//删除部门考核指标(New)
func (d *DutyAssessApi) DelDepartDutyTarger(c *gin.Context) {
var requestData DelDutyDepartTarget
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "数据获取失败!", c)
return
}
if requestData.DeaprtId == "" {
response.Result(103, err, "数据获取失败!", c)
return
}
if requestData.Dimension == "" {
response.Result(104, err, "数据获取失败!", c)
return
}
if requestData.TargetId == "" {
response.Result(105, err, "数据获取失败!", c)
return
}
eiteCont := commonus.MapOut()
eiteCont["State"] = 3
eiteCont["qe_eitetime"] = time.Now().Unix()
delErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ?", requestData.Group, requestData.DeaprtId, requestData.Dimension, requestData.TargetId).Updates(eiteCont).Error
if delErr != nil {
response.Result(106, delErr, "数据处理失败!", c)
return
}
response.Result(0, eiteCont, "处理成功", c)
}
//删除部门考核方案
func (d *DutyAssessApi) DelDepartDuty(c *gin.Context) {
var requestData DelDutyDepartTarget
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "数据获取失败!", c)
return
}
if requestData.DeaprtId == "" {
response.Result(103, err, "数据获取失败!", c)
return
}
eiteCont := commonus.MapOut()
eiteCont["State"] = 3
eiteCont["qe_eitetime"] = time.Now().Unix()
delErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_group` = ? AND `qe_accept_evaluation` = ? ", requestData.Group, requestData.DeaprtId).Updates(eiteCont).Error
if delErr != nil {
response.Result(106, delErr, "数据处理失败!", c)
return
}
response.Result(0, eiteCont, "处理成功", c)
}
//获取定性考核相关部门
func (d *DutyAssessApi) GetDepartForDuty(c *gin.Context) {
var requestData LookTargetContList
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "参数错误!无法获取数据", c)
return
}
if requestData.Dimension == "" {
response.Result(103, err, "参数错误!无法获取数据", c)
return
}
if requestData.TargetId == "" {
response.Result(104, err, "参数错误!无法获取数据", c)
return
}
var assessInfor assessmentmodel.Assesstarget
delErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).First(&assessInfor).Error
if delErr != nil {
response.Result(106, delErr, "获取失败失败!", c)
return
}
var outInfor OutDutyListes
outInfor.DepartmentId, outInfor.DepartmentAry = commonus.GetBranchDepartAry(strings.Split(assessInfor.Departmentmap, ","))
// outInfor.Id = strconv.FormatInt(assessInfor.Id, 10)
outInfor.Group = strconv.FormatInt(assessInfor.Group, 10)
//指标信息
outInfor.Target = strconv.FormatInt(assessInfor.TargetId, 10)
tarCont, _ := commonus.GetTargetInfo(assessInfor.TargetId)
outInfor.TargetName = tarCont.Title
//维度信息
dutyClassCont, _ := commonus.GetDutyClassInfo(tarCont.Dimension)
outInfor.Dimension = strconv.FormatInt(tarCont.Dimension, 10)
outInfor.DimensionName = dutyClassCont.Title
outInfor.Content = "" //指标说明
outInfor.Unit = tarCont.Uniteing //单位"`
outInfor.ReferenceScore = 0 //标准分值"`
outInfor.Cycles = tarCont.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年"`
outInfor.CycleAttres = tarCont.CycleAttres //辅助计数"`
outInfor.State = 1
outInfor.DepartmentId, outInfor.DepartmentAry = commonus.GetBranchDepartAry(strings.Split(assessInfor.Departmentmap, ","))
shenPiRen := strings.Split(tarCont.Report, ",")
outInfor.UserList = shenPiRen
for _, v := range shenPiRen {
usCont, usErr := commonus.GetWorkUser(v)
// GetWorkUser
if usErr == true {
var userCont QualEvalArrt
userCont.Id = v
userCont.Name = usCont.Name
userCont.Icon = usCont.Icon
_, groupInfo := commonus.GetGroupCont(usCont.Group)
userCont.GroupName = groupInfo.Name
_, bfInfo := commonus.GetBranchFactory(usCont.DepartmentId)
userCont.DepartmentName = bfInfo.Name
userCont.Number = usCont.Number
outInfor.UserListAry = append(outInfor.UserListAry, userCont)
}
}
response.Result(0, outInfor, "获取失败失败!", c)
}
//修改已知定性考核指标关联部门
func (d *DutyAssessApi) EiteDepartForDuty(c *gin.Context) {
var requestData EiteDutyForDepart
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "参数错误!无法获取数据", c)
return
}
if requestData.Dimension == "" {
response.Result(103, err, "参数错误!无法获取数据", c)
return
}
if requestData.TargetId == "" {
response.Result(104, err, "参数错误!无法获取数据", c)
return
}
if len(requestData.DepartAry) < 1 {
response.Result(105, err, "请指定所属部门!", c)
return
}
saveData := commonus.MapOut()
saveData["departmentmap"] = strings.Join(requestData.DepartAry, ",")
saveData["time"] = time.Now().Unix()
delErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.Assesstarget{}).Where("`group` = ? AND `dimension` = ? AND `targetid` = ?", requestData.Group, requestData.Dimension, requestData.TargetId).Updates(saveData).Error
if delErr != nil {
response.Result(106, delErr, "编辑失败!", c)
return
}
response.Result(0, delErr, "编辑成功!", c)
}

198
gin_server_admin/api/admin/dutyassess/assesstype.go

@ -1,12 +1,31 @@
package dutyassess package dutyassess
import ( import (
"sync"
"github.com/flipped-aurora/gin-vue-admin/server/commonus" "github.com/flipped-aurora/gin-vue-admin/server/commonus"
"github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel" "github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel"
) )
type DutyAssessApi struct{} type DutyAssessApi struct{}
//协程设置
var syncProcess = sync.WaitGroup{}
//数据锁统计
type dataLockStatistics struct {
dataMap []map[string]interface{}
dataErrMap []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.dataErrMap
}
//获取部门考核列表 //获取部门考核列表
type getDepartAssObtain struct { type getDepartAssObtain struct {
commonus.PageSetLimt commonus.PageSetLimt
@ -129,6 +148,15 @@ type TargetContOutCont struct {
State int `json:"state"` State int `json:"state"`
UserList []string `json:"userlist"` //执行人列表 UserList []string `json:"userlist"` //执行人列表
UserListAry []QualEvalArrt `json:"userlistary"` //执行人列表 UserListAry []QualEvalArrt `json:"userlistary"` //执行人列表
MinScore float64 `json:"minscore"` //最小分*100保存
MaxScore float64 `json:"maxscore"` //最大分*100保存
Score string `json:"score"` //分值
DutyAssessId string `json:"dutyassessid"` //定性考核ID
MinOrMaxScore string `json:"score"` //参考分值
DepartIdMap []string `json:"departidmap"` //子栏目部门
DepartNameMap []string `json:"departnamemap"` //子栏目部门
ScoreIng string `json:"scoreing"` //分值
QualEvalId string `json:"qualevalid"`
} }
//定性考核列表输出 //定性考核列表输出
@ -138,6 +166,8 @@ type QualEvalArrt struct {
GroupName string `json:"groupname"` GroupName string `json:"groupname"`
DepartmentName string `json:"departmentname"` DepartmentName string `json:"departmentname"`
Icon string `json:"icon"` Icon string `json:"icon"`
Number string `json:"number"`
DepartmentMap []string `json:"departmentmap"`
} }
//输出定性考核列表 //输出定性考核列表
@ -180,6 +210,7 @@ type OutDutyListes struct {
DepartmentAry []commonus.DepartmentAryType `json:"departmentmap"` DepartmentAry []commonus.DepartmentAryType `json:"departmentmap"`
UserList []string `json:"userlist"` //执行人列表 UserList []string `json:"userlist"` //执行人列表
UserListAry []QualEvalArrt `json:"userlistary"` //执行人列表 UserListAry []QualEvalArrt `json:"userlistary"` //执行人列表
Group string `json:"group"`
} }
//根据指标ID获取相关信息 //根据指标ID获取相关信息
@ -231,6 +262,7 @@ type AddQualEval struct {
Target string `json:"target"` //考核指标 Target string `json:"target"` //考核指标
TargetSun string `json:"targetsun"` //考核指标子栏目 TargetSun string `json:"targetsun"` //考核指标子栏目
TargetSunTitle string `json:"targetsuntitle"` //考核指标子栏目 TargetSunTitle string `json:"targetsuntitle"` //考核指标子栏目
TargetSunDepart []string `json:"targetsundepart"` //指定专属部门
Group string `json:"group"` //归属集团 Group string `json:"group"` //归属集团
EvaluationList []QualEvalSunList `json:"evaluationlist"` //测评详情 EvaluationList []QualEvalSunList `json:"evaluationlist"` //测评详情
} }
@ -241,11 +273,14 @@ type QualEvalSunList struct {
Title string `json:"title"` //指标说明 Title string `json:"title"` //指标说明
Content string `json:"content"` //指标说明 Content string `json:"content"` //指标说明
Unit string `json:"unit"` //单位 Unit string `json:"unit"` //单位
ReferenceScore int64 `json:"referencescore"` //标准分值 ReferenceScore string `json:"referencescore"` //标准分值
Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年 Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年
CycleAttres int `json:"cycleattr"` //辅助计数 CycleAttres int `json:"cycleattr"` //辅助计数
DepartmentId string `json:"parentid"` //执行考核部门ID DepartmentId string `json:"parentid"` //执行考核部门ID
Operator []string `json:"userlist"` //考核执行人 Operator []string `json:"userlist"` //考核执行人
MinScore int64 `json:"minscore"` //最小分*100保存
MaxScore int64 `json:"maxscore"` //最大分*100保存
AddOrReduce int `json:"addorreduce"` //1:减少;2:增加
} }
//添加 定性考核指标关系指定细则 //添加 定性考核指标关系指定细则
@ -259,4 +294,165 @@ type LookTargetContList struct {
Group string `json:"group"` //归属集团 Group string `json:"group"` //归属集团
TargetId string `json:"targetid"` TargetId string `json:"targetid"`
Dimension string `json:"dimension"` //考核维度 Dimension string `json:"dimension"` //考核维度
DepartId string `json:"departid"` //部门
}
//查看定性指标细则提交参数
type GetDeitalTarCont struct {
Id string `json:"id"`
AssId string `json:"assid"`
}
//输出新版指标明细列表
type NewOutPutDetailedTarget struct {
OutTargetCont
Unit string `json:"unit"` //单位
Score string `json:"score"` //分值
AssId string `json:"assid"`
}
//
type NewEiteDtyDiteCont struct {
GetEiteTargetCont
AssId string `json:"assid"`
Unit string `json:"unit"` //单位
Score string `json:"score"` //分值
AddOrReduce int `json:"addorreduce"` //1:减少;2:增加
}
//定量考核列表查询
type rationSelect struct {
Group string `json:"group"` //归属集团
DepartmentId string `json:"parentid"` //接受考核部门
}
//部门考核指标组合列表输出
type DepartTargetListTop struct {
Id string `json:"id"`
Name string `json:"name"`
Child []DepartTargetList `json:"child"`
}
type DepartTargetList struct {
Id string `json:"id"`
Name string `json:"name"`
Content string `json:"content"` //指标说明
Unit string `json:"unit"` //单位"`
ReferenceScore int64 `json:"referencescore"` //标准分值"`
State int `json:"state"`
IsTrue int `json:"istrue"` //是否允许修改
}
//添加部门考核项目新
type AddDutyNewContGroup struct {
Group string `json:"group"` //集团
DepartmentId string `json:"parentid"` //部门
Year string `json:"year"` //年度
Child []AddDutyNewCont `json:"child"` //考核细则
}
type AddDutyNewCont struct {
Id string `json:"id"` //维度ID
Name string `json:"name"`
// Order int64 `json:"ordering"`
ZhiFraction int `json:"zhiFraction"`
Child []EvaluPross `json:"child"` //考核细则
}
//指标
type EvaluPross struct {
Id string `json:"id"` //维度ID
Name string `json:"name"`
Content string `json:"content"` //指标说明
Unit string `json:"unit"` //单位"`
ReferenceScore int64 `json:"referencescore"` //标准分值"`
Cycles int `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"`
CycleAttres int `json:"cycleattr"` //辅助计数"`
State int `json:"state"`
Score int64 `json:"score"` //分数
QualEvalId string `json:"qeid"`
Status int `json:"status"`
}
//添加部门考核过度
type AddPartMentGuodu struct {
Group int64 `json:"group"` //集团
DeaprtId int64 `json:"deaprtid"` //部门ID
Dimension int64 `json:"dimension"` //维度
TargetId int64 `json:"targetid"` //指标ID
SunTargetId int64 `json:"suntargetid"` //子栏目
DetailedTarget int64 `json:"detailedtarget"` //指标细则
Operator []string `json:"operator"` //操作人
}
//删除部门指标考核获取参数
type DelDutyDepartTarget struct {
Group string `json:"group"` //归属集团
DeaprtId string `json:"deaprtid"` //部门ID
TargetId string `json:"targetid"`
Dimension string `json:"dimension"` //考核维度
}
//修改已知定性考核指标关联部门
type EiteDutyForDepart struct {
LookTargetContList
DepartAry []string `json:"departary"`
}
//考核方案版本列表查询
type DutyPlanVersio struct {
Group string `json:"group"` //归属集团
DeaprtId string `json:"deaprtid"` //部门ID
Year string `json:"year"` //年度
Versio string `json:"versio"` //版本
VersioNum string `json:"versionum"` //编号
State int `json:"state"` //状态
}
//考核方案版本列表查询输出
type DutyPlanVersioOut struct {
assessmentmodel.PlanVersio
GroupName string `json:"groupname"` //归属集团
DeaprtName string `json:"deaprtname"` //部门ID
Time string `json:"time"`
}
//查看考核方案详情
type LookDutyVersio struct {
Key string `json:"key"`
}
//更改状态
type SetOnOffDutyVersio struct {
LookDutyVersio
IsTrue int `json:"istrue"` //强制删除
State int `json:"state"` //状态
}
//并发输出
type bingFaOut struct {
Id int64 `json:"id" gorm:"primaryKey;column:sf_id;type:bigint(20) unsigned;not null;comment:Id"`
Key int64 `json:"key" gorm:"column:sf_key;type:bigint(20) unsigned;default:0;not null;comment:识别标志"`
EvaluationPlan int64 `json:"evaluationplan" gorm:"column:sf_evaluation_plan;type:bigint(20) unsigned;default:0;not null;comment:考核方案项目ID"`
Reply int `json:"reply" gorm:"column:sf_reply;type:int(2) unsigned;default:1;not null;comment:状态(0:删除;1:起草;2:审批;3:通过)"`
OrderKey int64 `json:"orderkey" gorm:"column:ep_order_key;type:bigint(20) unsigned;default:0;not null;comment:发起表单key"`
State int `json:"state" gorm:"column:ep_state;type:int(2) unsigned;default:1;not null;comment:1:审批,2:通过;3:驳回;"`
}
type bingFaOutDingLiang struct {
Id int64 `json:"id" gorm:"primaryKey;column:fl_id;type:bigint(20) unsigned;not null;comment:Id;index"`
Key int64 `json:"key" gorm:"column:fl_key;type:bigint(20) unsigned;default:0;not null;comment:识别标志"`
EvaluationPlan string `json:"evaluationplan" gorm:"column:fl_evaluation_id;type:mediumtext unsigned;default:0;not null;comment:考核方案项目ID"`
Reply int `json:"reply" gorm:"column:fl_reply;type:int(2) unsigned;default:1;not null;comment:状态(0:删除;1:起草;2:审批;3:通过)"`
OrderKey int64 `json:"orderkey" gorm:"column:ep_order_key;type:bigint(20) unsigned;default:0;not null;comment:发起表单key"`
State int `json:"state" gorm:"column:ep_state;type:int(2) unsigned;default:1;not null;comment:1:审批,2:通过;3:驳回;"`
}
//修改部门考核方案说明
type EitrDepartExplan struct {
Group string `json:"group"` //集团
DeaprtId string `json:"deaprtid"` //部门ID
Dimension string `json:"dimension"` //维度
TargetId string `json:"targetid"` //指标ID
SunTargetId string `json:"suntargetid"` //子栏目
DetailedTarget string `json:"detailedtarget"` //指标细则
QualEvalId string `json:"qualevalid"`
Content string `json:"content"` //指标说明
} }

928
gin_server_admin/api/admin/dutyassess/dutyhandle.go

File diff suppressed because it is too large

638
gin_server_admin/api/admin/dutyassess/planversio.go

@ -0,0 +1,638 @@
package dutyassess
import (
"encoding/json"
"fmt"
"strconv"
"strings"
"time"
"github.com/flipped-aurora/gin-vue-admin/server/commonus"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
)
//部门考核方案版本列表
func (d *DutyAssessApi) DepartDutyPlanVersion(c *gin.Context) {
var requestData DutyPlanVersio
err := c.ShouldBindJSON(&requestData)
if err != nil {
// response.Result(101, err, "数据获取失败!", c)
// return
}
gormDb := global.GVA_DB_Performanceappraisal
if requestData.Group != "" {
gormDb = gormDb.Where("`group` = ?", requestData.Group)
}
if requestData.DeaprtId != "" {
gormDb = gormDb.Where("`department` = ?", requestData.DeaprtId)
}
if requestData.Year != "" {
gormDb = gormDb.Where("`yeares` = ?", requestData.Year)
}
if requestData.Versio != "" {
gormDb = gormDb.Where("`versio` LIKE ?", "%"+requestData.Versio+"%")
}
if requestData.VersioNum != "" {
gormDb = gormDb.Where("`key` LIKE ?", "%"+requestData.VersioNum+"%")
}
if requestData.State != 0 {
gormDb = gormDb.Where("`state` = ?", requestData.State)
} else {
gormDb = gormDb.Where("`state` IN (1,2)")
}
// response.Result(104, requestData, "没有查询到数据", c)
// return
var planVersio []DutyPlanVersioOut
dataErr := gormDb.Order("`addtime` DESC").Find(&planVersio).Error
if dataErr != nil {
response.Result(104, dataErr, "没有查询到数据", c)
return
}
for i, v := range planVersio {
_, groupCont := commonus.GetGroupCont(v.Group)
planVersio[i].GroupName = groupCont.Name
_, departMent := commonus.GetBranchFactory(v.Department)
planVersio[i].DeaprtName = departMent.Name
planVersio[i].Time = commonus.TimeStampToDate(v.AddTime, 20)
}
response.Result(0, planVersio, "获取成功", c)
}
//添加部门考核方案(待版本号的版本)
func (d *DutyAssessApi) AddDepartDutyVersio(c *gin.Context) {
var requestData AddDutyNewContGroup
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "数据获取失败!", c)
return
}
groupId, groupErr := strconv.ParseInt(requestData.Group, 10, 64) //集团ID
if groupErr != nil {
groupId = 0
}
_, groupCont := commonus.GetGroupCont(groupId)
groupInitials := commonus.ChinaToPinYinFirstWord(groupCont.Name) //获取集团首字母
if requestData.DepartmentId == "" {
response.Result(103, err, "数据获取失败!", c)
return
}
departId, departErr := strconv.ParseInt(requestData.DepartmentId, 10, 64) //部门ID
if departErr != nil {
departId = 0
}
if requestData.Year == "" {
response.Result(104, err, "数据获取失败!", c)
return
}
yearInt, _ := strconv.ParseInt(requestData.Year, 10, 64) //部门ID
if len(requestData.Child) < 0 {
response.Result(105, err, "没有要添加的数据", c)
return
}
judgeState := 1
//判断是否有新生成的方案
var versionState []int
judgeVersio := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PlanVersio{}).Select("`state`").Where("`group` = ? AND `department` = ?", requestData.Group, requestData.DepartmentId).Find(&versionState).Error //判断是否有启用的方案
if judgeVersio == nil {
for _, s_v := range versionState {
if s_v == 1 {
judgeState = 2
}
}
}
var versioNum string
//判断年度是否存在版本
var sumVerson float64
judgeVersioNum := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PlanVersio{}).Select("`id`").Where("`group` = ? AND `yeares` = ?", requestData.Group, requestData.Year).Pluck("COALESCE(COUNT(id), 0) as countid", &sumVerson).Error
fmt.Printf("sumVerson---->%v\n", sumVerson)
if judgeVersioNum == nil {
if sumVerson == 0 {
versioNum = "0001"
} else {
sumVerson++
if sumVerson <= 9999 {
versioNumGuoDu := strconv.FormatFloat(sumVerson/10000, 'f', -1, 64)
versioNumAry := strings.Split(versioNumGuoDu, ".")
if len(versioNumAry) == 2 {
versioNum = versioNumAry[1]
} else {
versioNum = "0001"
}
} else {
versioNumGuoDu := strconv.FormatFloat(sumVerson/10000000, 'f', -1, 64)
versioNumAry := strings.Split(versioNumGuoDu, ".")
if len(versioNumAry) == 2 {
versioNum = versioNumAry[1]
} else {
versioNum = "0001"
}
}
}
} else {
versioNum = "0001"
}
todyTime := time.Now().Unix()
keyStr := fmt.Sprintf("%v%v%v", groupInitials, commonus.TimeStampToDate(todyTime, 14), versioNum)
//方案版本
var savePlanVersio assessmentmodel.PlanVersio
savePlanVersio.Group = groupId
savePlanVersio.Department = departId
savePlanVersio.Year = yearInt
savePlanVersio.Versio = versioNum
savePlanVersio.Key = keyStr
savePlanVersio.State = judgeState
savePlanVersio.AddTime = todyTime
savePlanVersio.EiteTime = todyTime
// response.Result(0, savePlanVersio, "添加成功!", c)
// return
var saveDataAry []assessmentmodel.QualitativeEvaluation //新增条目
for _, v := range requestData.Child { //维度
commonus.AddWeight(requestData.Group, v.Id, requestData.DepartmentId, "", int64(v.ZhiFraction), 1) //添加维度权重
for _, tar_v := range v.Child { //指标
if tar_v.Status == 1 {
targetId, _ := strconv.ParseInt(tar_v.Id, 10, 64) //指标ID转换
evalTarCont, evalTarContErr := commonus.GetTargetInfo(targetId) //获取指标内容
if evalTarContErr == true {
//判断是定量还是定性
if evalTarCont.Type == 2 {
//定量指标操作
commonus.AddWeight(requestData.Group, v.Id, requestData.DepartmentId, tar_v.Id, tar_v.ReferenceScore, 2)
var saveData assessmentmodel.QualitativeEvaluation
//维度ID
dimId, dimErr := strconv.ParseInt(v.Id, 10, 64)
if dimErr == nil {
saveData.Dimension = dimId
}
saveData.Target = targetId //指标
saveData.Type = evalTarCont.Type //类型
saveData.Unit = evalTarCont.Uniteing //单位
saveData.ReferenceScore = tar_v.ReferenceScore //分值
// saveData.ReferenceScore = v_s.ReferenceScore //分值
saveData.State = judgeState //状态
saveData.Addtime = time.Now().Unix()
saveData.Eitetime = time.Now().Unix()
saveData.Group = groupId //集团
saveData.Cycles = evalTarCont.Cycles //单位
saveData.CycleAttres = evalTarCont.CycleAttres //辅助计数
saveData.AcceptEvaluation = departId //接受考核部门
saveData.Content = tar_v.Content //描述
saveData.Operator = evalTarCont.Report //执行考核人
var departAry []string
userKeyAry := strings.Split(evalTarCont.Report, ",")
if len(userKeyAry) > 0 {
for _, u_v := range userKeyAry {
usCont, usErr := commonus.GetWorkUser(u_v)
if usErr == true {
departIdStr := strconv.FormatInt(usCont.DepartmentId, 10)
if commonus.IsItTrueString(departIdStr, departAry) == false {
departAry = append(departAry, departIdStr)
}
}
}
}
saveData.DepartmentId = strings.Join(departAry, ",")
saveData.QualEvalId = keyStr
//要新增的条目
saveDataAry = append(saveDataAry, saveData)
} else {
//定性操作
commonus.AddWeight(requestData.Group, v.Id, requestData.DepartmentId, tar_v.Id, tar_v.ReferenceScore, 1)
//获取部门关联考核指标项目
var assessTarList []assessmentmodel.Assesstarget
judgeARTErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `dimension` = ? AND `targetid` = ? AND FIND_IN_SET(?,`departmentmap`)", groupId, v.Id, tar_v.Id, departId).Find(&assessTarList).Error
if judgeARTErr == nil {
var guoDu []AddPartMentGuodu
for _, ass_v := range assessTarList {
judgeTure := commonus.JudegSunTarToDepart(ass_v.SunTargetId, departId)
if judgeTure == true {
var guoDuCont AddPartMentGuodu
guoDuCont.Group = groupId
guoDuCont.DeaprtId = departId
guoDuCont.Dimension = ass_v.Dimension
guoDuCont.TargetId = ass_v.TargetId
guoDuCont.SunTargetId = ass_v.SunTargetId
if ass_v.Content != "" {
//拆解指标详情
var detailedList []DutyAssEssTarget
detailedListErr := json.Unmarshal([]byte(ass_v.Content), &detailedList)
if detailedListErr == nil {
for _, det_v := range detailedList {
guoDuCont.DetailedTarget = det_v.Id
guoDuCont.Operator = det_v.Operator
guoDu = append(guoDu, guoDuCont)
fmt.Printf("Targer---6---->%v---->%v---->%v\n", ass_v.TargetId, ass_v.SunTargetId, det_v.Id)
}
} else {
guoDu = append(guoDu, guoDuCont)
}
} else {
guoDu = append(guoDu, guoDuCont)
}
}
}
//判断关联项目
if len(guoDu) > 0 {
// guoDuJsonm, _ := json.Marshal(guoDu)
// fmt.Printf("Targer---7---->%v---->%v\n", string(guoDuJsonm), guoDu)
for _, ae_v := range guoDu {
//写入新的定性考核细则
var saveData assessmentmodel.QualitativeEvaluation
saveData.Dimension = ae_v.Dimension
saveData.Target = ae_v.TargetId //指标
saveData.Type = 1 //类型
saveData.TargetSun = ae_v.SunTargetId
getEvalTarCont, _ := commonus.GetDetailedTargetInfo(ae_v.DetailedTarget) //获取指标内容
saveData.DetailedTarget = ae_v.DetailedTarget
saveData.Unit = getEvalTarCont.Company //单位
saveData.ReferenceScore = 0 //分值
saveData.MinScore = getEvalTarCont.MinScore
saveData.MaxScore = getEvalTarCont.MaxScore
// saveData.ReferenceScore = v_s.ReferenceScore //分值
saveData.State = judgeState //状态
saveData.Addtime = time.Now().Unix()
saveData.Eitetime = time.Now().Unix()
saveData.Group = ae_v.Group //集团
evaDingXinglTarCont, _ := commonus.GetTargetInfo(ae_v.TargetId) //获取指标内容
saveData.Cycles = evaDingXinglTarCont.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年
saveData.CycleAttres = evaDingXinglTarCont.CycleAttres //辅助计数
saveData.AcceptEvaluation = ae_v.DeaprtId //接受考核部门
saveData.Content = getEvalTarCont.Content //描述
saveData.Operator = strings.Join(ae_v.Operator, ",") //执行考核人
//获取执行人部门
var departAry []string
if len(ae_v.Operator) > 0 {
for _, u_v := range ae_v.Operator {
usCont, usErr := commonus.GetWorkUser(u_v)
if usErr == true {
departIdStr := strconv.FormatInt(usCont.DepartmentId, 10)
if commonus.IsItTrueString(departIdStr, departAry) == false {
departAry = append(departAry, departIdStr)
}
}
}
}
saveData.DepartmentId = strings.Join(departAry, ",")
saveDataJsonm, _ := json.Marshal(saveData)
fmt.Printf("Targer---9---->%v---->%v\n", string(saveDataJsonm), saveData)
saveData.QualEvalId = keyStr
//要新增的条目
saveDataAry = append(saveDataAry, saveData)
}
}
}
}
}
}
}
}
if len(saveDataAry) > 0 {
affairDb := global.GVA_DB_Performanceappraisal.Begin()
addSysAdminContErr := affairDb.Create(&savePlanVersio).Error
addSysAdminAttrContErr := affairDb.Create(&saveDataAry).Error
if addSysAdminContErr == nil && addSysAdminAttrContErr == nil {
affairDbErr := affairDb.Commit().Error
if affairDbErr == nil {
response.Result(0, affairDbErr, "数据写入成功!", c)
} else {
response.Result(108, affairDbErr, "数据写入失败!", c)
}
} else {
affairDbErr := affairDb.Rollback().Error
response.Result(109, affairDbErr, "数据写入失败!", c)
}
}
// response.Result(0, saveDataAry, "添加成功!", c)
}
//查看考核方案
func (d *DutyAssessApi) LookDepartDutyVersio(c *gin.Context) {
var requestData LookDutyVersio
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Key == "" {
response.Result(102, err, "数据获取失败!", c)
return
}
var qualitativeEvaluationAry []assessmentmodel.QualitativeEvaluation
listTargetErr := global.GVA_DB_Performanceappraisal.Select("qualitative_evaluation.*,dutyclass.sort").Where("`qe_qual_eval_id` = ?", requestData.Key).Joins("left join dutyclass on id = qe_dimension").Order("qe_group asc,qe_accept_evaluation asc,sort asc,qe_type asc,qe_target asc,qe_target_sun asc").Find(&qualitativeEvaluationAry).Error
if listTargetErr != nil || len(qualitativeEvaluationAry) < 1 {
response.Result(101, listTargetErr, "没有数据!", c)
return
}
var uotContAry []TargetContOutCont
for _, v := range qualitativeEvaluationAry {
var uotCont TargetContOutCont
uotCont.Id = strconv.FormatInt(v.Id, 10)
uotCont.Type = v.Type
uotCont.Group = strconv.FormatInt(v.Group, 10)
groupErr, groupCont := commonus.GetGroupCont(v.Group)
if groupErr == true {
uotCont.GroupNAme = groupCont.Name
}
uotCont.DepartmentId = strconv.FormatInt(v.AcceptEvaluation, 10)
deparConErr, deparConCont := commonus.GetBranchFactory(v.AcceptEvaluation)
if deparConErr == true {
uotCont.DepartmentName = deparConCont.Name
}
uotCont.Dimension = strconv.FormatInt(v.Dimension, 10)
dutyClassCont, dutyClassErr := commonus.GetDutyClassInfo(v.Dimension)
if dutyClassErr == true {
uotCont.DimensionName = dutyClassCont.Title
}
uotCont.DimensionWeight = commonus.GetDimesionTargetWeight(1, v.Group, v.AcceptEvaluation, v.Dimension, 0)
uotCont.Target = strconv.FormatInt(v.Target, 10)
targetInfo, targetErr := commonus.GetTargetInfo(v.Target)
if targetErr == true {
uotCont.TargetName = targetInfo.Title
}
uotCont.TargetWeight = commonus.GetDimesionTargetWeight(2, v.Group, v.AcceptEvaluation, v.Dimension, v.Target)
uotCont.TargetSun = strconv.FormatInt(v.TargetSun, 10)
info, infoErr := commonus.GetQualitativeTargetInfo(v.TargetSun)
if infoErr == true {
uotCont.TargetSunName = info.Title
}
uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10)
dtCont, dtIsTrue := commonus.GetDetailedTargetInfo(v.DetailedTarget)
if dtIsTrue == true {
uotCont.DetailedTargetName = dtCont.Title
if v.Content == "" {
uotCont.Content = dtCont.Content
} else {
uotCont.Content = v.Content
}
} else {
uotCont.Content = v.Content
}
uotCont.QualEvalId = v.QualEvalId
uotCont.Unit = v.Unit
uotCont.ReferenceScore = v.ReferenceScore
uotCont.Cycles = v.Cycles
uotCont.CycleAttres = v.CycleAttres
uotCont.State = v.State
userAry := strings.Split(v.Operator, ",")
uotCont.UserList = userAry
for _, u_v := range userAry {
// usCont, usErr := archiveapi.GetUserInfo([]string{"worker_man.wm_number", "worker_man_data.wmd_name"}, map[string]interface{}{"wm_key": u_v})
// if usErr == true {
// var userCont QualEvalArrt
// userCont.Id = u_v
// userCont.Name = usCont.Name
// uotCont.UserListAry = append(uotCont.UserListAry, userCont)
// }
usCont, usErr := commonus.GetWorkUser(u_v)
// GetWorkUser
if usErr == true {
var userCont QualEvalArrt
userCont.Id = u_v
userCont.Name = usCont.Name
userCont.Icon = usCont.Icon
_, groupInfo := commonus.GetGroupCont(usCont.Group)
userCont.GroupName = groupInfo.Name
_, bfInfo := commonus.GetBranchFactory(usCont.DepartmentId)
userCont.DepartmentName = bfInfo.Name
userCont.Number = usCont.Number
uotCont.UserListAry = append(uotCont.UserListAry, userCont)
}
}
if v.MinScore > 0 && v.MaxScore > 0 {
uotCont.MinOrMaxScore = fmt.Sprintf("%v-%v", float64(v.MinScore)/100, float64(v.MaxScore)/100)
} else if v.MinScore > 0 && v.MaxScore <= 0 {
uotCont.MinOrMaxScore = fmt.Sprintf("%v", float64(v.MinScore)/100)
} else if v.MinScore <= 0 && v.MaxScore > 0 {
uotCont.MinOrMaxScore = fmt.Sprintf("%v", float64(v.MaxScore)/100)
} else {
uotCont.MinOrMaxScore = "0"
}
uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10)
uotContAry = append(uotContAry, uotCont)
}
response.Result(0, uotContAry, "数据获取成功!", c)
}
//启用禁用删除
func (d *DutyAssessApi) OnOffDepartDutyVersio(c *gin.Context) {
var requestData SetOnOffDutyVersio
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Key == "" {
response.Result(102, err, "数据获取失败!", c)
return
}
if requestData.State == 0 {
requestData.State = 1
}
if requestData.IsTrue == 0 {
requestData.IsTrue = 2
}
//判断是否存在
var ContInfo assessmentmodel.PlanVersio
getContErr := global.GVA_DB_Performanceappraisal.Where("`key` = ?", requestData.Key).First(&ContInfo).Error
if getContErr != nil {
response.Result(103, getContErr, "没有该方案!", c)
return
}
//判断是否可以执行该操作
if judgeOnOffVersio(ContInfo, requestData.IsTrue) == true {
response.Result(103, ContInfo, "要禁用的方案还有未走完的审批流程!请不要进行此操作!", c)
return
}
//获取
if requestData.State != 3 {
eiteOtherData := commonus.MapOut()
eiteOtherData["state"] = 2
eiteOtherData["eitetime"] = time.Now().Unix()
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PlanVersio{}).Where("`group` = ? AND `department` = ? AND `yeares` = ?", ContInfo.Group, ContInfo.Department, ContInfo.Year).Updates(eiteOtherData)
}
eiteData := commonus.MapOut()
eiteData["state"] = requestData.State
eiteData["eitetime"] = time.Now().Unix()
errOne := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.PlanVersio{}).Where("`key` = ?", requestData.Key).Updates(eiteData).Error
eiteQuerData := commonus.MapOut()
eiteQuerData["qe_state"] = requestData.State
eiteQuerData["qe_eitetime"] = time.Now().Unix()
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_qual_eval_id` = ?", requestData.Key).Updates(eiteQuerData)
if errOne != nil {
response.Result(102, errOne, "修改失败", c)
return
}
response.Result(0, errOne, "修改成功", c)
}
//判断是否可以执行启用禁用操作
func judgeOnOffVersio(contInfo assessmentmodel.PlanVersio, onOff int) (isTrue bool) {
isTrue = false
if onOff == 1 {
var isOpen []assessmentmodel.PlanVersio
isErr := global.GVA_DB_Performanceappraisal.Where("`group` = ? AND `department` = ? AND `yeares` = ?", contInfo.Group, contInfo.Department, contInfo.Year).Find(&isOpen).Error
if isErr != nil {
return
}
for _, v := range isOpen {
if v.State == 1 {
isTrue = selectServio(v.Key)
}
}
} else {
isTrue = selectServio(contInfo.Key)
}
return
}
//查询
func selectServio(key string) (isTrue bool) {
isTrue = false
fmt.Printf("HGJK--------1---------->%v", key)
var dutyList []assessmentmodel.QualitativeEvaluation
dutyErr := global.GVA_DB_Performanceappraisal.Where("`qe_state` = 1 AND `qe_qual_eval_id` = ?", key).Find(&dutyList).Error
fmt.Printf("HGJK--------2---------->%v", dutyErr)
if dutyErr != nil {
return
}
var dingXing []int64
var dingLiang []int64
for _, v := range dutyList {
if v.Type == 1 {
dingXing = append(dingXing, v.Id)
} else {
dingLiang = append(dingLiang, v.Id)
}
}
var dataStruct dataLockStatistics
syncProcess.Add(1)
go dataStruct.SelectDutyVersioProcessXing(dingXing)
syncProcess.Add(1)
go dataStruct.SelectDutyVersioProcessLing(dingLiang)
syncProcess.Wait()
readDingXingDataMap, readDingLiangDataMap := dataStruct.readMyDayData()
if len(readDingXingDataMap) > 0 || len(readDingLiangDataMap) > 0 {
isTrue = true
}
return
}
//并发查询定性考核方案
func (d *dataLockStatistics) SelectDutyVersioProcessXing(departId []int64) {
d.mutext.Lock()
defer d.mutext.Unlock()
if len(departId) > 0 {
var stateIsTrue []bingFaOut
err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Select("sf_id,sf_key,sf_evaluation_plan,sf_reply,ep_order_key,ep_state").Where("`sf_evaluation_plan` IN ?", departId).Joins("left join evaluation_process on ep_order_key = sf_key").Find(&stateIsTrue).Error
if err == nil {
for _, v := range stateIsTrue {
if v.State == 1 {
isIn := commonus.MapOut()
isIn["id"] = v.Id
isIn["key"] = v.Key
isIn["state"] = v.State
d.dataMap = append(d.dataMap, isIn)
}
}
}
}
syncProcess.Done()
}
//并发查询定量考核方案
func (d *dataLockStatistics) SelectDutyVersioProcessLing(departId []int64) {
d.mutext.Lock()
defer d.mutext.Unlock()
if len(departId) > 0 {
var stateIsTrue []bingFaOutDingLiang
err := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.FlowLog{}).Select("fl_id,fl_key,fl_evaluation_id,fl_reply,ep_order_key,ep_state").Where("`sf_evaluation_plan` IN ?", departId).Joins("left join evaluation_process on ep_order_key = fl_key").Find(&stateIsTrue).Error
if err == nil {
for _, v := range stateIsTrue {
if v.State == 1 {
isIn := commonus.MapOut()
isIn["id"] = v.Id
isIn["key"] = v.Key
isIn["state"] = v.State
d.dataErrMap = append(d.dataErrMap, isIn)
}
}
}
}
syncProcess.Done()
}
//修改部门考核方案内的说明
func (d *DutyAssessApi) EiteDepartExplain(c *gin.Context) {
var requestData EitrDepartExplan
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(101, err, "数据获取失败!", c)
return
}
if requestData.Group == "" {
response.Result(102, err, "数据获取失败!", c)
return
}
if requestData.DeaprtId == "" {
response.Result(103, err, "数据获取失败!", c)
return
}
if requestData.Dimension == "" {
response.Result(104, err, "数据获取失败!", c)
return
}
if requestData.TargetId == "" {
response.Result(105, err, "数据获取失败!", c)
return
}
if requestData.QualEvalId == "" {
response.Result(106, err, "数据获取失败!", c)
return
}
eiteData := commonus.MapOut()
eiteData["qe_eitetime"] = time.Now().Unix()
eiteData["qe_content"] = requestData.Content
saveErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Where("`qe_qual_eval_id` = ? AND `qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ?", requestData.QualEvalId, requestData.Group, requestData.DeaprtId, requestData.Dimension, requestData.TargetId).Updates(eiteData).Error
if saveErr == nil {
response.Result(0, eiteData, "数据处理成功!", c)
} else {
response.Result(102, err, "数据处理失败!", c)
}
}

134
gin_server_admin/api/index/evaluation/assessment.go

@ -0,0 +1,134 @@
package evaluation
import (
"fmt"
"strconv"
"github.com/flipped-aurora/gin-vue-admin/server/commonus"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
)
//新定性考核列表
func (e *EvaluationInterface) NewQualitative(c *gin.Context) {
isTrue, userCont := commonus.ClientIdentity()
if isTrue != true {
response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
var requestData NewQualType
err := c.ShouldBindJSON(&requestData)
if err != nil {
// response.Result(102, err, "数据获取失败!", c)
// return
}
var qualEvaList []NewQualOutList
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("DISTINCT qe_group,qe_accept_evaluation,qe_dimension,qe_target,et_title").Joins("left join evaluationtarget on evaluationtarget.et_id = qualitative_evaluation.qe_target").Where("`qe_type` = 1 AND `qe_state` = 1 AND FIND_IN_SET(?,`qe_operator`)", userCont.Key)
if requestData.Group != "" {
gormDb = gormDb.Where("`qe_group` = ?", requestData.Group)
}
if requestData.Department != "" {
gormDb = gormDb.Where("`qe_accept_evaluation` = ?", requestData.Department)
}
if requestData.Title != "" {
gormDb = gormDb.Where("evaluationtarget.et_title LIKE ?", "%"+requestData.Title+"%")
}
errList := gormDb.Order("qe_group ASC,qe_accept_evaluation ASC,qe_dimension ASC,qe_target ASC").Find(&qualEvaList).Error
if errList != nil || len(qualEvaList) < 1 {
response.Result(102, isTrue, "您没有要参加的考核项目!", c)
return
}
var outContList []NewQualOutList
for _, v := range qualEvaList {
var outCont NewQualOutList
outCont.Group = v.Group
_, groupCont := commonus.GetGroupCont(v.Group)
outCont.GroupName = groupCont.Name
outCont.Department = v.Department
_, departCont := commonus.GetBranchFactory(v.Department)
outCont.DepartmentName = departCont.Name
outCont.Dimension = v.Dimension
dimensionCont, _ := commonus.GetDutyClassInfo(v.Dimension)
outCont.DimensionName = dimensionCont.Title
outCont.Target = v.Target
outCont.Title = v.Title
outContList = append(outContList, outCont)
}
response.Result(0, outContList, "获取成功!", c)
}
//获取定性考核详细指标
func (e *EvaluationInterface) NewGetQualDetailedTarget(c *gin.Context) {
isTrue, userCont := commonus.ClientIdentity()
if isTrue != true {
response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
return
}
var requestData NewQualDetailTar
err := c.ShouldBindJSON(&requestData)
if err != nil {
response.Result(102, err, "数据获取失败!", c)
return
}
if requestData.Group == "" || requestData.Department == "" || requestData.Target == "" {
response.Result(103, err, "参数错误!请检查您的输入", c)
return
}
var qualEvaList []NewQualDetailOutList
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id,qe_group,qe_accept_evaluation,qe_dimension,qe_target,et_title,qe_detailed_target,dt_title,qe_target_sun").Joins("left join evaluationtarget on evaluationtarget.et_id = qualitative_evaluation.qe_target").Joins("left join detailed_target on detailed_target.dt_id = qualitative_evaluation.qe_detailed_target").Where("`qe_type` = 1 AND `qe_state` = 1 AND FIND_IN_SET(?,`qe_operator`)", userCont.Key)
gormDb = gormDb.Where("`qe_group` = ?", requestData.Group).Where("`qe_accept_evaluation` = ?", requestData.Department).Where("`qe_target` = ?", requestData.Target)
errList := gormDb.Order("qe_group ASC,qe_accept_evaluation ASC,qe_dimension ASC,qe_target ASC,qe_detailed_target ASC").Find(&qualEvaList).Error
if errList != nil || len(qualEvaList) < 1 {
response.Result(102, isTrue, "您没有要参加的考核项目!", c)
return
}
var outContList []NewQualDetailOutList
for _, v := range qualEvaList {
detaiTargetCont, _ := commonus.GetDetailedTargetInfo(v.DetailedTargetId)
var outCont NewQualDetailOutList
outCont.Id = v.Id
outCont.Group = v.Group
_, groupCont := commonus.GetGroupCont(v.Group)
outCont.GroupName = groupCont.Name
outCont.Department = v.Department
_, departCont := commonus.GetBranchFactory(v.Department)
outCont.DepartmentName = departCont.Name
outCont.Dimension = v.Dimension
dimensionCont, _ := commonus.GetDutyClassInfo(v.Dimension)
outCont.DimensionName = dimensionCont.Title
outCont.Target = v.Target
outCont.Title = v.Title
//子栏目
targetCont, _ := commonus.GetQualitativeTargetInfo(v.TargetSun)
outCont.Target = v.TargetSun
outCont.TargetSunId = strconv.FormatInt(v.TargetSun, 10)
outCont.TargetSunName = targetCont.Title
outCont.DetailedTargetId = v.DetailedTargetId
outCont.DetailedTargetTitle = v.DetailedTargetTitle
outCont.DetailedTargetCont = detaiTargetCont.Content
outCont.AddReduce = detaiTargetCont.AddReduce
outCont.Company = detaiTargetCont.Company
outCont.State = 1
if detaiTargetCont.MinScore > 0 && detaiTargetCont.MaxScore > 0 {
outCont.Score = fmt.Sprintf("%v-%v", float64(detaiTargetCont.MinScore)/100, float64(detaiTargetCont.MaxScore)/100)
outCont.State = 2
} else if detaiTargetCont.MinScore > 0 && detaiTargetCont.MaxScore <= 0 {
outCont.Score = fmt.Sprintf("%v", float64(detaiTargetCont.MinScore)/100)
outCont.State = 1
} else if detaiTargetCont.MinScore <= 0 && detaiTargetCont.MaxScore > 0 {
outCont.Score = fmt.Sprintf("%v", float64(detaiTargetCont.MaxScore)/100)
outCont.State = 1
} else {
outCont.Score = "0"
outCont.State = 3
}
outContList = append(outContList, outCont)
}
response.Result(0, outContList, "获取成功!", c)
}

135
gin_server_admin/api/index/evaluation/evaluation.go

@ -135,7 +135,7 @@ func (e *EvaluationInterface) AdditionAndSubtractionScore(c *gin.Context) {
response.Result(106, requestData, "请问您是要进行加分还是减分?请指定,谢谢!", c) response.Result(106, requestData, "请问您是要进行加分还是减分?请指定,谢谢!", c)
return return
} }
if requestData.Score == 0 { if requestData.Score == "" {
response.Result(107, requestData, "请您输入要操作的分数,谢谢!", c) response.Result(107, requestData, "请您输入要操作的分数,谢谢!", c)
return return
} }
@ -157,7 +157,7 @@ func (e *EvaluationInterface) AdditionAndSubtractionScore(c *gin.Context) {
var addScore assessmentmodel.ScoreFlow var addScore assessmentmodel.ScoreFlow
addScore.EvaluationPlan = planIdInt addScore.EvaluationPlan = planIdInt
addScore.PlusReduceScore = requestData.Type addScore.PlusReduceScore = requestData.Type
addScore.Score = requestData.Score // addScore.Score = requestData.Score
addScore.Key = keyNumber addScore.Key = keyNumber
addScore.Reason = requestData.Reason addScore.Reason = requestData.Reason
addScore.Time = operationTime addScore.Time = operationTime
@ -298,12 +298,12 @@ func (e *EvaluationInterface) AdditionAndSubtractionScore(c *gin.Context) {
mainTitleDesc = programme.Content mainTitleDesc = programme.Content
} }
} }
handleUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", keyNumber) // handleUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", keyNumber)
callbakcMsg, isTrueCall, callBackCont := sendmessage.SendMsgPublic(sendUserList, mainTitle, mainTitleDesc, programme.Unit, requestData.Reason, handleUrl, requestData.Type, departmentId, userKey, requestData.Score, keyNumber, "请前往处理") // callbakcMsg, isTrueCall, callBackCont := sendmessage.SendMsgPublic(sendUserList, mainTitle, mainTitleDesc, programme.Unit, requestData.Reason, handleUrl, requestData.Type, departmentId, userKey, requestData.Score, keyNumber, "请前往处理")
outData := commonus.MapOut() outData := commonus.MapOut()
outData["callbakcMsg"] = string(callbakcMsg) // outData["callbakcMsg"] = string(callbakcMsg)
outData["isTrueCall"] = isTrueCall // outData["isTrueCall"] = isTrueCall
outData["callBackCont"] = callBackCont // outData["callBackCont"] = callBackCont
outData["addScore"] = addScore outData["addScore"] = addScore
outData["mainTitle"] = mainTitle outData["mainTitle"] = mainTitle
outData["mainTitleDesc"] = mainTitleDesc outData["mainTitleDesc"] = mainTitleDesc
@ -752,6 +752,7 @@ func (e *EvaluationInterface) QualitativeEvalRation(c *gin.Context) {
} }
var uotContAry []TargetContOutCont var uotContAry []TargetContOutCont
for _, v := range qualEvaList { for _, v := range qualEvaList {
kickOut := 1 //踢出设置
var uotCont TargetContOutCont var uotCont TargetContOutCont
uotCont.Id = strconv.FormatInt(v.Id, 10) uotCont.Id = strconv.FormatInt(v.Id, 10)
uotCont.Type = v.Type uotCont.Type = v.Type
@ -802,10 +803,95 @@ func (e *EvaluationInterface) QualitativeEvalRation(c *gin.Context) {
uotCont.UserListAry = append(uotCont.UserListAry, userCont) uotCont.UserListAry = append(uotCont.UserListAry, userCont)
} }
} }
//获取目标设定
quanTitWhere := commonus.MapOut()
quanTitWhere["group"] = v.Group
quanTitWhere["departmentid"] = v.DepartmentId
quanTitWhere["dimension"] = v.Dimension
quanTitWhere["target"] = v.Target
if v.DetailedTarget != 0 {
quanTitWhere["targetconfig"] = v.DetailedTarget
}
quanTitCont := commonus.GetQuantitativeConfig(quanTitWhere)
uotCont.ZeroPrize = strconv.FormatFloat(float64(quanTitCont.Zeroprize)/100, 'f', -1, 64)
uotCont.AllPrize = strconv.FormatFloat(float64(quanTitCont.Allprize)/100, 'f', -1, 64)
//获取实际值
shiJiZhi := commonus.MapOut()
shiJiZhi["fl_evaluation_user"] = userCont.Key
shiJiZhi["fl_evaluation_department"] = userCont.DepartmentId
shiJiZhi["fl_evaluation_group"] = userCont.Group
operationTime := time.Now().Unix()
switch v.Cycles {
case 1:
shiJiZhi["fl_year"] = commonus.ComputingTime(operationTime, 1)
shiJiZhi["fl_quarter"] = commonus.ComputingTime(operationTime, 2)
shiJiZhi["fl_month"] = commonus.ComputingTime(operationTime, 3)
shiJiZhi["fl_week"] = commonus.ComputingTime(operationTime, 4)
shiJiZhi["fl_day"] = commonus.ComputingTime(operationTime, 5)
case 2:
shiJiZhi["fl_year"] = commonus.ComputingTime(operationTime, 1)
shiJiZhi["fl_quarter"] = commonus.ComputingTime(operationTime, 2)
shiJiZhi["fl_month"] = commonus.ComputingTime(operationTime, 3)
shiJiZhi["fl_week"] = commonus.ComputingTime(operationTime, 4)
shiJiZhi["fl_day"] = commonus.ComputingTime(operationTime, 5)
case 3:
shiJiZhi["fl_year"] = commonus.ComputingTime(operationTime, 1)
shiJiZhi["fl_quarter"] = commonus.ComputingTime(operationTime, 2)
shiJiZhi["fl_month"] = commonus.ComputingTime(operationTime, 3)
shiJiZhi["fl_week"] = commonus.ComputingTime(operationTime, 4)
case 4:
shiJiZhi["fl_year"] = commonus.ComputingTime(operationTime, 1)
shiJiZhi["fl_quarter"] = commonus.ComputingTime(operationTime, 2)
shiJiZhi["fl_month"] = commonus.ComputingTime(operationTime, 3)
case 5:
shiJiZhi["fl_year"] = commonus.ComputingTime(operationTime, 1)
shiJiZhi["fl_quarter"] = commonus.ComputingTime(operationTime, 2)
case 6:
shiJiZhi["fl_year"] = commonus.ComputingTime(operationTime, 1)
default:
shiJiZhi["fl_year"] = commonus.ComputingTime(operationTime, 1)
shiJiZhi["fl_quarter"] = commonus.ComputingTime(operationTime, 2)
shiJiZhi["fl_month"] = commonus.ComputingTime(operationTime, 3)
shiJiZhi["fl_week"] = commonus.ComputingTime(operationTime, 4)
shiJiZhi["fl_day"] = commonus.ComputingTime(operationTime, 5)
}
actualValue := commonus.GetTimeIntervalDuty(shiJiZhi, v.Id) //实际值
uotCont.Actual = strconv.FormatFloat(actualValue/100, 'f', -1, 64)
judgeActualValue := commonus.GetTimeIntervalDutyJudge(shiJiZhi, v.Id) //判断当前条件下时候又审批中和审批通过的
if judgeActualValue > 0 {
kickOut = 2
}
//计算达成率
if quanTitCont.Zeroprize == 0 && quanTitCont.Allprize == 0 {
uotCont.Reach = "未设置目标值"
} else {
divisor := actualValue - float64(quanTitCont.Zeroprize) //除数
dividend := quanTitCont.Allprize - quanTitCont.Zeroprize //被除数
if dividend == 0 {
uotCont.Reach = "未设置目标值"
} else {
reachValue := ((divisor / 100) / (float64(dividend) / 100)) * 100
if reachValue < 0 {
uotCont.Reach = "0%"
} else {
reachValueStr := strconv.FormatFloat(reachValue, 'f', -1, 64)
uotCont.Reach = fmt.Sprintf("%v%", reachValueStr)
}
}
}
uotCont.Reason = ""
uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10) uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10)
if kickOut == 1 {
uotContAry = append(uotContAry, uotCont) uotContAry = append(uotContAry, uotCont)
} }
// uotContAry = append(uotContAry, uotCont)
}
response.Result(0, uotContAry, "用户端个人要执行的考核任务", c) response.Result(0, uotContAry, "用户端个人要执行的考核任务", c)
} }
@ -853,6 +939,7 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) {
operationTime := time.Now().Unix() operationTime := time.Now().Unix()
keyNumber := commonus.GetFileNumberEs() keyNumber := commonus.GetFileNumberEs()
var flowLog assessmentmodel.FlowLog var flowLog assessmentmodel.FlowLog
flowLog.Key = keyNumber flowLog.Key = keyNumber
flowLog.Time = time.Now().Unix() flowLog.Time = time.Now().Unix()
flowLog.EiteTime = time.Now().Unix() flowLog.EiteTime = time.Now().Unix()
@ -877,14 +964,18 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) {
flowLog.Reply = 1 flowLog.Reply = 1
var flowDataLogAry []assessmentmodel.FlowLogData var flowDataLogAry []assessmentmodel.FlowLogData
var reason string var reason string
var evaluationPlan []string //方案ID
jsonMapStr, _ := json.Marshal(requestData.List)
fmt.Printf("OutJsonMap-----1------>%\n", string(jsonMapStr))
for i, v := range requestData.List { for i, v := range requestData.List {
var flowDataLog assessmentmodel.FlowLogData var flowDataLog assessmentmodel.FlowLogData
evaluationPlan = append(evaluationPlan, v.Id)
evaluationPlanid, evaluationPlanidErr := strconv.ParseInt(v.Id, 10, 64) evaluationPlanid, evaluationPlanidErr := strconv.ParseInt(v.Id, 10, 64)
if evaluationPlanidErr == nil { if evaluationPlanidErr == nil {
flowDataLog.EvaluationPlan = evaluationPlanid flowDataLog.EvaluationPlan = evaluationPlanid
} }
flowDataLog.Key = keyNumber flowDataLog.Key = keyNumber
flowDataLog.Score = v.Score * 100 flowDataLog.Score = commonus.GetDuyCycle(v.Actual, 100)
flowDataLog.Content = v.Reason flowDataLog.Content = v.Reason
flowDataLog.Enclosure = strings.Join(v.Enclosure, ",") flowDataLog.Enclosure = strings.Join(v.Enclosure, ",")
flowDataLog.Time = time.Now().Unix() flowDataLog.Time = time.Now().Unix()
@ -892,11 +983,21 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) {
tarInfo, _ := commonus.GetTargetInfo(targetInfo.Target) tarInfo, _ := commonus.GetTargetInfo(targetInfo.Target)
if i == 0 { if i == 0 {
if targetInfoErr == true { if targetInfoErr == true {
reason = fmt.Sprintf("%v :%v%v", tarInfo.Title, v.Score, v.Unit) if v.Reason != "" {
reason = fmt.Sprintf("%v :%v%v\n备注:%v", tarInfo.Title, v.Actual, v.Unit, v.Reason)
} else {
reason = fmt.Sprintf("%v :%v%v", tarInfo.Title, v.Actual, v.Unit)
}
} }
} else { } else {
if targetInfoErr == true { if targetInfoErr == true {
reason = fmt.Sprintf("%v\n%v :%v%v", reason, tarInfo.Title, v.Score, v.Unit) if v.Reason != "" {
reason = fmt.Sprintf("%v\n%v :%v%v\n备注:%v", reason, tarInfo.Title, v.Actual, v.Unit, v.Reason)
} else {
reason = fmt.Sprintf("%v\n%v :%v%v", reason, tarInfo.Title, v.Actual, v.Unit)
}
} }
} }
@ -904,6 +1005,8 @@ func (e *EvaluationInterface) AddFlowRationLog(c *gin.Context) {
} }
gromDb := global.GVA_DB_Performanceappraisal.Begin() gromDb := global.GVA_DB_Performanceappraisal.Begin()
flowLog.EvaluationPlan = strings.Join(evaluationPlan, ",")
addFlowLogErr := gromDb.Create(&flowLog).Error addFlowLogErr := gromDb.Create(&flowLog).Error
addFlowLogDataErr := gromDb.Create(&flowDataLogAry).Error addFlowLogDataErr := gromDb.Create(&flowDataLogAry).Error
fmt.Printf("%v---------------------->%v\n", addFlowLogErr, addFlowLogDataErr) fmt.Printf("%v---------------------->%v\n", addFlowLogErr, addFlowLogDataErr)
@ -1033,11 +1136,19 @@ func (e *EvaluationInterface) LookDutkScoreFlow(c *gin.Context) {
fmt.Printf("7-------------------->%v\n", requestData.Id) fmt.Printf("7-------------------->%v\n", requestData.Id)
dutyCecorFlowInfo.Reason = addScore.Reason dutyCecorFlowInfo.Reason = addScore.Reason
//分数
sendScore := addScore.Score * int64(addScore.Count)
if addScore.PlusReduceScore == 1 { if addScore.PlusReduceScore == 1 {
dutyCecorFlowInfo.ReasonInfo = "增加:" + strconv.FormatInt(addScore.Score, 10) + qualEvalCont.Unit dutyCecorFlowInfo.ReasonInfo = fmt.Sprintf("考核加分:%v\n", float64(sendScore)/100)
} else { } else {
dutyCecorFlowInfo.ReasonInfo = "扣除:" + strconv.FormatInt(addScore.Score, 10) + qualEvalCont.Unit dutyCecorFlowInfo.ReasonInfo = fmt.Sprintf("考核减分:%v\n", float64(sendScore)/100)
} }
// if addScore.PlusReduceScore == 1 {
// dutyCecorFlowInfo.ReasonInfo = "增加:" + strconv.FormatInt(addScore.Score, 10) + qualEvalCont.Unit
// } else {
// dutyCecorFlowInfo.ReasonInfo = "扣除:" + strconv.FormatInt(addScore.Score, 10) + qualEvalCont.Unit
// }
fmt.Printf("8-------------------->%v\n", requestData.Id) fmt.Printf("8-------------------->%v\n", requestData.Id)
if addScore.Rectification == 1 { if addScore.Rectification == 1 {
var divisionResponsibilities []assessmentmodel.DivisionResponsibilities var divisionResponsibilities []assessmentmodel.DivisionResponsibilities

78
gin_server_admin/api/index/evaluation/flowsend.go

@ -48,10 +48,25 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) {
response.Result(106, requestData, "请问您是要进行加分还是减分?请指定,谢谢!", c) response.Result(106, requestData, "请问您是要进行加分还是减分?请指定,谢谢!", c)
return return
} }
if requestData.Score == 0 { countFrequency := 1
if requestData.Count != 0 {
countFrequency = requestData.Count
}
switch requestData.State {
case 2, 3:
if requestData.Score == "" {
response.Result(107, requestData, "请您输入要操作的分数,谢谢!", c)
return
}
case 1:
//获取分数
requestData.Score = strconv.FormatInt(programme.MaxScore, 10)
default:
if requestData.Score == "" {
response.Result(107, requestData, "请您输入要操作的分数,谢谢!", c) response.Result(107, requestData, "请您输入要操作的分数,谢谢!", c)
return return
} }
}
if requestData.Reason == "" { if requestData.Reason == "" {
response.Result(108, requestData, "请输入您的原因,谢谢!", c) response.Result(108, requestData, "请输入您的原因,谢谢!", c)
return return
@ -66,37 +81,42 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) {
operationTime := time.Now().Unix() operationTime := time.Now().Unix()
keyNumber := commonus.GetFileNumberEs() keyNumber := commonus.GetFileNumberEs()
var addScore assessmentmodel.ScoreFlow var addScore assessmentmodel.ScoreFlow
addScore.EvaluationPlan = planIdInt addScore.EvaluationPlan = planIdInt //考核方案项目ID
addScore.PlusReduceScore = requestData.Type addScore.PlusReduceScore = requestData.Type //1:加分;2:减分
addScore.Score = requestData.Score //分值转化
addScore.Key = keyNumber scoreStringToInt64 := commonus.GetDuyCycle(requestData.Score, 100)
addScore.Reason = requestData.Reason
addScore.Score = scoreStringToInt64 //分值(乘100录入)
addScore.Key = keyNumber //识别标志
addScore.Reason = requestData.Reason //操作原因
addScore.Time = operationTime addScore.Time = operationTime
addScore.EiteTime = operationTime addScore.EiteTime = operationTime
addScore.HappenTime = commonus.DateToTimeStamp(requestData.Addtime) addScore.Count = countFrequency //发生次数
addScore.HappenTime = commonus.DateToTimeStamp(requestData.Addtime) //发生时间
departmentId, departmentIdErr := strconv.ParseInt(userCont.DepartmentId, 10, 64) departmentId, departmentIdErr := strconv.ParseInt(userCont.DepartmentId, 10, 64)
if departmentIdErr == nil { if departmentIdErr == nil {
addScore.EvaluationDepartment = departmentId addScore.EvaluationDepartment = departmentId //测评部门
} }
userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64) userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64)
if userKeyErr == nil { if userKeyErr == nil {
addScore.EvaluationUser = userKey addScore.EvaluationUser = userKey //测评人
} }
userGroup, userGroupErr := strconv.ParseInt(userCont.Group, 10, 64) userGroup, userGroupErr := strconv.ParseInt(userCont.Group, 10, 64)
if userGroupErr == nil { if userGroupErr == nil {
addScore.EvaluationGroup = userGroup addScore.EvaluationGroup = userGroup //测评集团
} }
//获取拆分时间节
addScore.Year = commonus.ComputingTime(operationTime, 1) addScore.Year = commonus.ComputingTime(operationTime, 1)
addScore.Quarter = commonus.ComputingTime(operationTime, 2) addScore.Quarter = commonus.ComputingTime(operationTime, 2)
addScore.Month = commonus.ComputingTime(operationTime, 3) addScore.Month = commonus.ComputingTime(operationTime, 3)
addScore.Week = commonus.ComputingTime(operationTime, 4) addScore.Week = commonus.ComputingTime(operationTime, 4)
enclosure, enclosureErr := json.Marshal(requestData.Enclosure) enclosure, enclosureErr := json.Marshal(requestData.Enclosure)
if enclosureErr == nil { if enclosureErr == nil {
addScore.Enclosure = string(enclosure) addScore.Enclosure = string(enclosure) //附件
} }
addScore.DutyGroup = programme.Group addScore.DutyGroup = programme.Group //职责集团
addScore.DutyDepartment = programme.AcceptEvaluation addScore.DutyDepartment = programme.AcceptEvaluation //职责部门
addScore.Rectification = requestData.Rectification addScore.Rectification = requestData.Rectification //1、需要整改;2:无需整改
addScore.Reply = 1 addScore.Reply = 1
addErr := global.GVA_DB_Performanceappraisal.Create(&addScore).Error addErr := global.GVA_DB_Performanceappraisal.Create(&addScore).Error
//步进内容 //步进内容
@ -148,10 +168,19 @@ func (e *EvaluationInterface) PlusOrMinusPoints(c *gin.Context) {
reason := fmt.Sprintf("原因:%v\n", requestData.Reason) reason := fmt.Sprintf("原因:%v\n", requestData.Reason)
//执行操作内容 //执行操作内容
var subtitle string = "" var subtitle string = ""
//分数
sendScore := scoreStringToInt64 * int64(countFrequency)
sendScVal := float64(sendScore) / 100
scoreFloat64ToStringsss := strconv.FormatFloat(sendScVal, 'f', -1, 64)
fmt.Printf("ScoreSetp---2----s->%v----f->%v----fs->%v----si->%v\n", sendScore, float64(sendScore)/100, sendScVal, scoreFloat64ToStringsss)
if requestData.Type == 1 { if requestData.Type == 1 {
subtitle = fmt.Sprintf("加:%v%v\n", requestData.Score, programme.Unit) subtitle = fmt.Sprintf("考核:%v\n", scoreFloat64ToStringsss)
} else { } else {
subtitle = fmt.Sprintf("扣除:%v%v\n", requestData.Score, programme.Unit) subtitle = fmt.Sprintf("考核减分:%v\n", scoreFloat64ToStringsss)
} }
twoLevelTitle := "考核上报部门:" twoLevelTitle := "考核上报部门:"
@ -321,7 +350,7 @@ func (e *EvaluationInterface) PersonInCharge(c *gin.Context) {
//分配权限 //分配权限
weightFloat := float64(v.Weight) / float64(userKeyLen) weightFloat := float64(v.Weight) / float64(userKeyLen)
weightInt := commonus.Round(weightFloat, 2) * 100 weightInt := commonus.Round(weightFloat, 2) * 100
weightInt64, _ := strconv.ParseInt(strconv.FormatFloat(weightInt, 'g', 1, 64), 10, 64) weightInt64, _ := strconv.ParseInt(strconv.FormatFloat(weightInt, 'f', -1, 64), 10, 64)
//不是班组选项 //不是班组选项
for _, ua_v := range v.UserKey { for _, ua_v := range v.UserKey {
userConting, userIsTrue := commonus.GetWorkUser(ua_v) userConting, userIsTrue := commonus.GetWorkUser(ua_v)
@ -418,7 +447,7 @@ func (e *EvaluationInterface) PersonInCharge(c *gin.Context) {
//分配权限 //分配权限
weightFloat := float64(t_v.Weight) / float64(jiShuQi) weightFloat := float64(t_v.Weight) / float64(jiShuQi)
weightInt := commonus.Round(weightFloat, 2) * 100 weightInt := commonus.Round(weightFloat, 2) * 100
weightInt64, _ := strconv.ParseInt(strconv.FormatFloat(weightInt, 'g', 1, 64), 10, 64) weightInt64, _ := strconv.ParseInt(strconv.FormatFloat(weightInt, 'f', -1, 64), 10, 64)
for _, tu_v := range teamUserList { for _, tu_v := range teamUserList {
if judgeIsSet(tu_v.Key, userKeyAry) == false { if judgeIsSet(tu_v.Key, userKeyAry) == false {
@ -462,11 +491,20 @@ func (e *EvaluationInterface) PersonInCharge(c *gin.Context) {
taskId := strconv.FormatInt(commonus.GetFileNumberEs(), 10) //卡片唯一识别符 taskId := strconv.FormatInt(commonus.GetFileNumberEs(), 10) //卡片唯一识别符
//获取执行结果 //获取执行结果
var mainTitleDesc string = "" var mainTitleDesc string = ""
//分数
sendScore := scoreFlowInfo.Score * int64(scoreFlowInfo.Count)
if scoreFlowInfo.PlusReduceScore == 1 { if scoreFlowInfo.PlusReduceScore == 1 {
mainTitleDesc = "增加:" + strconv.FormatInt(scoreFlowInfo.Score, 10) + programme.Unit mainTitleDesc = fmt.Sprintf("考核加分:%v\n", float64(sendScore)/100)
} else { } else {
mainTitleDesc = "扣除:" + strconv.FormatInt(scoreFlowInfo.Score, 10) + programme.Unit mainTitleDesc = fmt.Sprintf("考核减分:%v\n", float64(sendScore)/100)
} }
// if scoreFlowInfo.PlusReduceScore == 1 {
// mainTitleDesc = "增加:" + strconv.FormatInt(scoreFlowInfo.Score, 10) + programme.Unit
// } else {
// mainTitleDesc = "扣除:" + strconv.FormatInt(scoreFlowInfo.Score, 10) + programme.Unit
// }
//部门名称 //部门名称
var twoLevelKeyName string = "" var twoLevelKeyName string = ""
departmentId, _ := strconv.ParseInt(userCont.DepartmentId, 10, 64) departmentId, _ := strconv.ParseInt(userCont.DepartmentId, 10, 64)

1
gin_server_admin/api/index/evaluation/newflowsend.go

@ -0,0 +1 @@
package evaluation

59
gin_server_admin/api/index/evaluation/type.go

@ -31,6 +31,11 @@ type TargetContOutCont struct {
State int `json:"state"` State int `json:"state"`
UserList []string `json:"userlist"` //执行人列表 UserList []string `json:"userlist"` //执行人列表
UserListAry []QualEvalArrt `json:"userlistary"` //执行人列表 UserListAry []QualEvalArrt `json:"userlistary"` //执行人列表
Actual string `json:"actual"` //实际值
ZeroPrize string `json:"zeroprize"` //零奖值
AllPrize string `json:"allprize"` //全奖奖值
Reach string `json:"reach"` //达成率
Reason string `json:"reason"` //说明
} }
//定性考核列表输出 //定性考核列表输出
@ -44,7 +49,9 @@ type addPlusOrMinusPoints struct {
PlanId string `json:"planid"` //方案id PlanId string `json:"planid"` //方案id
Addtime string `json:"time"` //检查时间 Addtime string `json:"time"` //检查时间
Type int `json:"type"` //1:加分;2:减分 Type int `json:"type"` //1:加分;2:减分
Score int64 `json:""score` //分数 Score string `json:"score"` //分数
Count int `json:"count"` //次数
State int `json:"state"` //1、定分;2、区间分;3、不定性分值
Reason string `json:"reason"` //原因 Reason string `json:"reason"` //原因
Rectification int `json:"rectification"` //1:整改;2:无需整改 Rectification int `json:"rectification"` //1:整改;2:无需整改
Enclosure []string `json:"enclosure"` //附件 Enclosure []string `json:"enclosure"` //附件
@ -105,9 +112,11 @@ type AddRationFlowLog struct {
type RationLogList struct { type RationLogList struct {
Id string `json:"id"` Id string `json:"id"`
Score int64 `json:"score` // Score int64 `json:"score`
Actual string `json:"actual`
Unit string `json:"unit` Unit string `json:"unit`
Reason string `json:"content"` //原因 // Content string `json:"content"` //原因
Reason string `json:"reason"` //原因
Enclosure []string `json:"enclosure"` //附件 Enclosure []string `json:"enclosure"` //附件
} }
@ -227,3 +236,47 @@ type FlowLogListOut struct {
Result string `json:"result"` //审批结果 Result string `json:"result"` //审批结果
Class int `json:"class"` //1、定性;2、定量 Class int `json:"class"` //1、定性;2、定量
} }
//新定性考核列表
type NewQualType struct {
Group string `json:"group"` //集团
Department string `json:"department"` //部门
Title string `json:"tittle"` //指标名称
}
//新型定性考核列表输出
type NewQualOutList struct {
Group int64 `json:"group" gorm:"column:qe_group;type:bigint(20) unsigned;default:0;not null;comment:归属集团"`
GroupName string `json:"groupname"` //集团
Department int64 `json:"department" gorm:"column:qe_accept_evaluation;type:bigint(20) unsigned;default:0;not null;comment:接受考核部门"`
DepartmentName string `json:"departmentname"` //部门
Dimension int64 `json:"dimension" gorm:"column:qe_dimension;type:bigint(20) unsigned;default:0;not null;comment:考核维度"`
DimensionName string `json:"dimensionname"` //维度
Target int64 `json:"target" gorm:"column:qe_target;type:bigint(20) unsigned;default:0;not null;comment:考核指标"`
Title string `json:"title" gorm:"column:et_title;type:varchar(255);comment:指标名称"`
ExtraPoints int64 `json:"extrapoints"` //加分总价
ScoreReduction int64 `json:"scorereduction"` //减分总计
}
//新定性考核指标细则列表
type NewQualDetailTar struct {
Group string `json:"group"` //集团
Department string `json:"department"` //部门
Target string `json:"targets"` //指标id
}
//新型定性考核细则列表输出
type NewQualDetailOutList struct {
NewQualOutList
Id int64 `json:"id" gorm:"primaryKey;column:qe_id;type:bigint(20) unsigned;not null;comment:Id;index"`
DetailedTargetId int64 `json:"detailedtargetid" gorm:"column:qe_detailed_target;type:bigint(20) unsigned;default:0;not null;comment:考核细则"`
DetailedTargetTitle string `json:"detailedtargenttitle" gorm:"column:dt_title;type:text;comment:指标细则"` //指标明细
DetailedTargetCont string `json:"detailedtargentcont"` //指标明细
AddReduce int `json:"addreduce"` //1:减少;2:增加;3:无属性,现场确认加或减"`
Company string `json:"company"` //单位
Score string `json:"score"`
State int `json:"state"` //1、定分;2、区间分;3、不定性分值
TargetSun int64 `json:"targetsun" gorm:"column:qe_target_sun;type:bigint(20) unsigned;default:0;not null;comment:考核指标子栏目"`
TargetSunId string `json:"targetsunid"` //子栏目ID
TargetSunName string `json:"targetsunname"` //子栏目名称
}

16
gin_server_admin/api/v1/assessment/department_target.go

@ -98,7 +98,7 @@ func (d *DutyHandle) DepartmentTaskList(c *gin.Context) {
c.ShouldBindJSON(&requestData) c.ShouldBindJSON(&requestData)
var qualitativeEvaluationAry []assessmentmodel.QualitativeEvaluation var qualitativeEvaluationAry []assessmentmodel.QualitativeEvaluation
gormDb := global.GVA_DB_Performanceappraisal gormDb := global.GVA_DB_Performanceappraisal.Select("qualitative_evaluation.*,dutyclass.sort")
if requestData.Type != 0 { if requestData.Type != 0 {
gormDb = gormDb.Where("`qe_type` = ?", requestData.Type) gormDb = gormDb.Where("`qe_type` = ?", requestData.Type)
} }
@ -122,7 +122,7 @@ func (d *DutyHandle) DepartmentTaskList(c *gin.Context) {
gormDb = gormDb.Where("`qe_target_sun` = ?", requestData.TargetSun) gormDb = gormDb.Where("`qe_target_sun` = ?", requestData.TargetSun)
} }
gormDb = gormDb.Where("`qe_state` = 1") gormDb = gormDb.Where("`qe_state` = 1")
listTargetErr := gormDb.Order("qe_group asc,qe_accept_evaluation asc,qe_dimension asc,qe_type asc,qe_target asc,qe_target_sun asc").Find(&qualitativeEvaluationAry).Error listTargetErr := gormDb.Joins("left join dutyclass on id = qe_dimension").Order("qe_group asc,qe_accept_evaluation asc,sort asc,qe_type asc,qe_target asc,qe_target_sun asc").Find(&qualitativeEvaluationAry).Error
if listTargetErr != nil || len(qualitativeEvaluationAry) < 1 { if listTargetErr != nil || len(qualitativeEvaluationAry) < 1 {
response.Result(101, listTargetErr, "没有数据!", c) response.Result(101, listTargetErr, "没有数据!", c)
@ -155,7 +155,7 @@ func (d *DutyHandle) DepartmentTaskList(c *gin.Context) {
if targetErr == true { if targetErr == true {
uotCont.TargetName = targetInfo.Title uotCont.TargetName = targetInfo.Title
} }
uotCont.TargetWeight = commonus.GetDimesionTargetWeight(1, v.Group, v.AcceptEvaluation, v.Dimension, v.Target) uotCont.TargetWeight = commonus.GetDimesionTargetWeight(2, v.Group, v.AcceptEvaluation, v.Dimension, v.Target)
uotCont.TargetSun = strconv.FormatInt(v.TargetSun, 10) uotCont.TargetSun = strconv.FormatInt(v.TargetSun, 10)
info, infoErr := commonus.GetQualitativeTargetInfo(v.TargetSun) info, infoErr := commonus.GetQualitativeTargetInfo(v.TargetSun)
if infoErr == true { if infoErr == true {
@ -185,6 +185,16 @@ func (d *DutyHandle) DepartmentTaskList(c *gin.Context) {
} }
} }
if v.MinScore > 0 && v.MaxScore > 0 {
uotCont.MinOrMaxScore = fmt.Sprintf("%v-%v", float64(v.MinScore)/100, float64(v.MaxScore)/100)
} else if v.MinScore > 0 && v.MaxScore <= 0 {
uotCont.MinOrMaxScore = fmt.Sprintf("%v", float64(v.MinScore)/100)
} else if v.MinScore <= 0 && v.MaxScore > 0 {
uotCont.MinOrMaxScore = fmt.Sprintf("%v", float64(v.MaxScore)/100)
} else {
uotCont.MinOrMaxScore = "0"
}
uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10) uotCont.DetailedTarget = strconv.FormatInt(v.DetailedTarget, 10)
uotContAry = append(uotContAry, uotCont) uotContAry = append(uotContAry, uotCont)
} }

1
gin_server_admin/api/v1/assessment/dutytype.go

@ -684,6 +684,7 @@ type TargetContOutCont struct {
State int `json:"state"` State int `json:"state"`
UserList []string `json:"userlist"` //执行人列表 UserList []string `json:"userlist"` //执行人列表
UserListAry []QualEvalArrt `json:"userlistary"` //执行人列表 UserListAry []QualEvalArrt `json:"userlistary"` //执行人列表
MinOrMaxScore string `json:"score"` //参考分值
} }
//修改考核方案单条细则 //修改考核方案单条细则

29
gin_server_admin/api/v1/assessment/target.go

@ -104,7 +104,7 @@ func (d *DutyHandle) GetTargetList(c *gin.Context) {
outMapCont.Type = tg_val.Type outMapCont.Type = tg_val.Type
outMapCont.State = tg_val.State outMapCont.State = tg_val.State
outMapCont.AddTime = tg_val.AddTime outMapCont.AddTime = tg_val.AddTime
outMapCont.Share = tg_val.Share outMapCont.Share = 2
outMapCont.RelevantDepartments = tg_val.RelevantDepartments outMapCont.RelevantDepartments = tg_val.RelevantDepartments
if tg_val.RelevantDepartments != "" { if tg_val.RelevantDepartments != "" {
departIdAry := strings.Split(tg_val.RelevantDepartments, ",") departIdAry := strings.Split(tg_val.RelevantDepartments, ",")
@ -352,6 +352,7 @@ func (d *DutyHandle) GetTarget(c *gin.Context) {
if systemEvalCont.VisibleRange != "" { if systemEvalCont.VisibleRange != "" {
systemEvalCont.VisibleRangeDepartMap = strings.Split(systemEvalCont.VisibleRange, ",") systemEvalCont.VisibleRangeDepartMap = strings.Split(systemEvalCont.VisibleRange, ",")
} }
systemEvalCont.Share = 2
systemEvalCont.DimensionIdStr = strconv.FormatInt(systemEvalCont.Dimension, 10) systemEvalCont.DimensionIdStr = strconv.FormatInt(systemEvalCont.Dimension, 10)
response.Result(0, systemEvalCont, "数据获取成功!", c) response.Result(0, systemEvalCont, "数据获取成功!", c)
} }
@ -470,18 +471,28 @@ func (d *DutyHandle) EiteTarget(c *gin.Context) {
if requestData.Type != 0 { if requestData.Type != 0 {
saveData["et_type"] = requestData.Type saveData["et_type"] = requestData.Type
} }
if requestData.Share != 0 {
saveData["et_share"] = requestData.Share if len(requestData.RelevantDepartments) > 0 {
if requestData.Share > 1 {
if len(requestData.RelevantDepartments) == 0 {
response.Result(103, err, "您选择了此指标为指定部门使用!但您未指定具体使用部门!请指定相关使用部门!", c)
return
}
saveData["et_relevant_departments"] = strings.Join(requestData.RelevantDepartments, ",") saveData["et_relevant_departments"] = strings.Join(requestData.RelevantDepartments, ",")
saveData["et_share"] = 2
} else { } else {
saveData["et_relevant_departments"] = "" saveData["et_relevant_departments"] = ""
saveData["et_share"] = 1
} }
}
// if requestData.Share != 0 {
// saveData["et_share"] = requestData.Share
// if requestData.Share > 1 {
// if len(requestData.RelevantDepartments) == 0 {
// response.Result(103, err, "您选择了此指标为指定部门使用!但您未指定具体使用部门!请指定相关使用部门!", c)
// return
// }
// saveData["et_relevant_departments"] = strings.Join(requestData.RelevantDepartments, ",")
// } else {
// saveData["et_relevant_departments"] = ""
// }
// }
if requestData.Dimension != "" { if requestData.Dimension != "" {
saveData["et_dimension"] = requestData.Dimension saveData["et_dimension"] = requestData.Dimension
} }

28
gin_server_admin/api/v1/shiyan/shiyan.go

@ -1413,3 +1413,31 @@ func (s *ShiyanApi) JiaMi(c *gin.Context) {
response.Result(101, outMap, "sha1Token加密实验!", c) response.Result(101, outMap, "sha1Token加密实验!", c)
} }
//处理子栏目归属
func (s *ShiyanApi) SunTar(c *gin.Context) {
var sunList []assessmentmodel.QualitativeTarget
err := global.GVA_DB_Performanceappraisal.Find(&sunList).Error
if err != nil {
return
}
for _, v := range sunList {
departStr := GetGuishuDepart(v.ParentId)
eiteCont := commonus.MapOut()
eiteCont["q_depart"] = departStr
eiteCont["q_time"] = time.Now().Unix()
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Where("`q_id` = ?", v.Id).Updates(eiteCont)
fmt.Printf("%v\n", v.Id)
}
}
//获取指标归属分厂
func GetGuishuDepart(targetId int64) (departStr string) {
var targetCont assessmentmodel.EvaluationTarget
err := global.GVA_DB_Performanceappraisal.Where("et_id = ?", targetId).First(&targetCont).Error
if err == nil {
departStr = targetCont.RelevantDepartments
}
return
}

114
gin_server_admin/api/wechatapp/callback/updatehandle.go

@ -136,10 +136,11 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
taskId := strconv.FormatInt(commonus.GetFileNumberEs(), 10) taskId := strconv.FormatInt(commonus.GetFileNumberEs(), 10)
evaluationPlanStr := strconv.FormatInt(scoreFlowInfo.EvaluationPlan, 10) evaluationPlanStr := strconv.FormatInt(scoreFlowInfo.EvaluationPlan, 10)
var executeReason string = "" var executeReason string = ""
sendScore := scoreFlowInfo.Score * int64(scoreFlowInfo.Count)
if scoreFlowInfo.PlusReduceScore == 1 { if scoreFlowInfo.PlusReduceScore == 1 {
executeReason = fmt.Sprintf("加:%v\n", scoreFlowInfo.Score) executeReason = fmt.Sprintf("考核:%v\n", float64(sendScore)/100)
} else { } else {
executeReason = fmt.Sprintf("减:%v\n", scoreFlowInfo.Score) executeReason = fmt.Sprintf("考核:%v\n", float64(sendScore)/100)
} }
SendUpdateCallBackMsg(t.FromUsername, orderId, taskId, evaluationPlanStr, executeReason, "考核部门", userContInfo.DepartmentName, userContInfo.Name, t.FromUsername) SendUpdateCallBackMsg(t.FromUsername, orderId, taskId, evaluationPlanStr, executeReason, "考核部门", userContInfo.DepartmentName, userContInfo.Name, t.FromUsername)
flowSaveData := commonus.MapOut() flowSaveData := commonus.MapOut()
@ -206,11 +207,17 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
} }
} }
var quoteAreaTitle string = "" var quoteAreaTitle string = ""
sendScore := scoreFlowInfo.Score * int64(scoreFlowInfo.Count)
if scoreFlowInfo.PlusReduceScore == 1 { if scoreFlowInfo.PlusReduceScore == 1 {
quoteAreaTitle = fmt.Sprintf("加:%v%v\n", scoreFlowInfo.Score, programme.Unit) quoteAreaTitle = fmt.Sprintf("考核:%v\n", float64(sendScore)/100)
} else { } else {
quoteAreaTitle = fmt.Sprintf("扣除:%v%v\n", scoreFlowInfo.Score, programme.Unit) quoteAreaTitle = fmt.Sprintf("考核减分:%v\n", float64(sendScore)/100)
} }
// if scoreFlowInfo.PlusReduceScore == 1 {
// quoteAreaTitle = fmt.Sprintf("加:%v%v\n", scoreFlowInfo.Score, programme.Unit)
// } else {
// quoteAreaTitle = fmt.Sprintf("扣除:%v%v\n", scoreFlowInfo.Score, programme.Unit)
// }
cardJumpUrl := fmt.Sprintf("http://new.hxgk.group/#/approvalList?id=%v", orderId) cardJumpUrl := fmt.Sprintf("http://new.hxgk.group/#/approvalList?id=%v", orderId)
jumpUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", orderId) jumpUrl := fmt.Sprintf("http://new.hxgk.group/#/responsible?id=%v", orderId)
jumpUrlTitle := "请前往处理" jumpUrlTitle := "请前往处理"
@ -257,6 +264,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
fmt.Printf("Setp-------6----------->%v----------->%v\n", sendUserList, personLiable) fmt.Printf("Setp-------6----------->%v----------->%v\n", sendUserList, personLiable)
//获取考核项目关联项目 //获取考核项目关联项目
targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId)
fmt.Printf("%v", unit)
//一级文本处理 //一级文本处理
var title, desc string var title, desc string
if detailedRulesTitle != "" { if detailedRulesTitle != "" {
@ -271,11 +279,17 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
title = targettitle title = targettitle
} }
var quoteAreaTitle string = "" var quoteAreaTitle string = ""
sendScore := flowContent.Score * int64(flowContent.Count)
if flowContent.PlusReduceScore == 1 { if flowContent.PlusReduceScore == 1 {
quoteAreaTitle = fmt.Sprintf("加:%v%v\n", flowContent.Score, unit) quoteAreaTitle = fmt.Sprintf("考核:%v\n", float64(sendScore)/100)
} else { } else {
quoteAreaTitle = fmt.Sprintf("扣除:%v%v\n", flowContent.Score, unit) quoteAreaTitle = fmt.Sprintf("考核减分:%v\n", float64(sendScore)/100)
} }
// if flowContent.PlusReduceScore == 1 {
// quoteAreaTitle = fmt.Sprintf("加:%v%v\n", flowContent.Score, unit)
// } else {
// quoteAreaTitle = fmt.Sprintf("扣除:%v%v\n", flowContent.Score, unit)
// }
quoteAreaContent := flowContent.Reason quoteAreaContent := flowContent.Reason
twoLevelTitle := "部门负责人" twoLevelTitle := "部门负责人"
twoLevelKeyName := userContInfo.DepartmentName twoLevelKeyName := userContInfo.DepartmentName
@ -303,6 +317,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
//获取考核项目关联项目 //获取考核项目关联项目
targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId)
fmt.Printf("%v", unit)
//一级文本处理 //一级文本处理
var title, desc string var title, desc string
if detailedRulesTitle != "" { if detailedRulesTitle != "" {
@ -317,11 +332,17 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
title = targettitle title = targettitle
} }
var subtitle string = "" var subtitle string = ""
sendScore := flowContent.Score * int64(flowContent.Count)
if flowContent.PlusReduceScore == 1 { if flowContent.PlusReduceScore == 1 {
subtitle = fmt.Sprintf("加:%v%v\n", flowContent.Score, unit) subtitle = fmt.Sprintf("考核:%v\n", float64(sendScore)/100)
} else { } else {
subtitle = fmt.Sprintf("扣除:%v%v\n", flowContent.Score, unit) subtitle = fmt.Sprintf("考核减分:%v\n", float64(sendScore)/100)
} }
// if flowContent.PlusReduceScore == 1 {
// subtitle = fmt.Sprintf("加:%v%v\n", flowContent.Score, unit)
// } else {
// subtitle = fmt.Sprintf("扣除:%v%v\n", flowContent.Score, unit)
// }
//获取责任划分 //获取责任划分
var reason string var reason string
teamBility, teamErr := commonus.GetDivisionOfResponsibility(orderId, 2) teamBility, teamErr := commonus.GetDivisionOfResponsibility(orderId, 2)
@ -378,6 +399,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
} }
//获取考核项目关联项目 //获取考核项目关联项目
targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId)
fmt.Printf("%v\n", unit)
//一级文本处理 //一级文本处理
var title, desc string var title, desc string
if detailedRulesTitle != "" { if detailedRulesTitle != "" {
@ -395,11 +417,17 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
//获取执行结果 //获取执行结果
var mainTitleDesc string var mainTitleDesc string
mainTitleDesc = fmt.Sprintf("执行原因:%v\n", flowContent.Reason) mainTitleDesc = fmt.Sprintf("执行原因:%v\n", flowContent.Reason)
sendScore := flowContent.Score * int64(flowContent.Count)
if flowContent.PlusReduceScore == 1 { if flowContent.PlusReduceScore == 1 {
mainTitleDesc = fmt.Sprintf("%v加:%v%v\n", mainTitleDesc, flowContent.Score, unit) mainTitleDesc = fmt.Sprintf("%v考核:%v\n", mainTitleDesc, float64(sendScore)/100)
} else { } else {
mainTitleDesc = fmt.Sprintf("%v减:%v%v\n", mainTitleDesc, flowContent.Score, unit) mainTitleDesc = fmt.Sprintf("%v考核:%v\n", mainTitleDesc, float64(sendScore)/100)
} }
// if flowContent.PlusReduceScore == 1 {
// mainTitleDesc = fmt.Sprintf("%v加:%v%v\n", mainTitleDesc, flowContent.Score, unit)
// } else {
// mainTitleDesc = fmt.Sprintf("%v减:%v%v\n", mainTitleDesc, flowContent.Score, unit)
// }
var reason string var reason string
buttonClickAry := strings.Split(t.EventKey, "_") buttonClickAry := strings.Split(t.EventKey, "_")
if len(buttonClickAry) > 4 { if len(buttonClickAry) > 4 {
@ -468,6 +496,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
//获取考核项目关联项目 //获取考核项目关联项目
targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId)
fmt.Printf("%v\n", unit)
//一级文本处理 //一级文本处理
var title, desc string var title, desc string
if detailedRulesTitle != "" { if detailedRulesTitle != "" {
@ -485,11 +514,17 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
//获取执行结果 //获取执行结果
var mainTitleDesc string var mainTitleDesc string
mainTitleDesc = fmt.Sprintf("执行原因:%v\n", flowContent.Reason) mainTitleDesc = fmt.Sprintf("执行原因:%v\n", flowContent.Reason)
sendScore := flowContent.Score * int64(flowContent.Count)
if flowContent.PlusReduceScore == 1 { if flowContent.PlusReduceScore == 1 {
mainTitleDesc = fmt.Sprintf("%v加:%v%v\n", mainTitleDesc, flowContent.Score, unit) mainTitleDesc = fmt.Sprintf("%v考核:%v\n", mainTitleDesc, float64(sendScore)/100)
} else { } else {
mainTitleDesc = fmt.Sprintf("%v减:%v%v\n", mainTitleDesc, flowContent.Score, unit) mainTitleDesc = fmt.Sprintf("%v考核:%v\n", mainTitleDesc, float64(sendScore)/100)
} }
// if flowContent.PlusReduceScore == 1 {
// mainTitleDesc = fmt.Sprintf("%v加:%v%v\n", mainTitleDesc, flowContent.Score, unit)
// } else {
// mainTitleDesc = fmt.Sprintf("%v减:%v%v\n", mainTitleDesc, flowContent.Score, unit)
// }
var reason string var reason string
commonus.GetDivisionOfResponsibility(orderId, 2) commonus.GetDivisionOfResponsibility(orderId, 2)
if flowContent.Rectification == 1 { if flowContent.Rectification == 1 {
@ -539,6 +574,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
} }
//获取考核项目关联项目 //获取考核项目关联项目
targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId)
fmt.Printf("%v", unit)
//一级文本处理 //一级文本处理
var title, desc string var title, desc string
if detailedRulesTitle != "" { if detailedRulesTitle != "" {
@ -553,11 +589,17 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
title = targettitle title = targettitle
} }
var quoteAreaTitle string = "" var quoteAreaTitle string = ""
sendScore := flowContent.Score * int64(flowContent.Count)
if flowContent.PlusReduceScore == 1 { if flowContent.PlusReduceScore == 1 {
quoteAreaTitle = fmt.Sprintf("加:%v%v\n", flowContent.Score, unit) quoteAreaTitle = fmt.Sprintf("考核:%v\n", float64(sendScore)/100)
} else { } else {
quoteAreaTitle = fmt.Sprintf("扣除:%v%v\n", flowContent.Score, unit) quoteAreaTitle = fmt.Sprintf("考核减分:%v\n", float64(sendScore)/100)
} }
// if flowContent.PlusReduceScore == 1 {
// quoteAreaTitle = fmt.Sprintf("加:%v%v\n", flowContent.Score, unit)
// } else {
// quoteAreaTitle = fmt.Sprintf("扣除:%v%v\n", flowContent.Score, unit)
// }
quoteAreaContent := flowContent.Reason quoteAreaContent := flowContent.Reason
twoLevelTitle := "部门负责人" twoLevelTitle := "部门负责人"
twoLevelKeyName := userContInfo.DepartmentName twoLevelKeyName := userContInfo.DepartmentName
@ -586,6 +628,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
_, butCallBackUser := commonus.GetSendMsgUser(16118387069540343, userContInfo.DepartmentId) //获取对应部门内勤(高科) _, butCallBackUser := commonus.GetSendMsgUser(16118387069540343, userContInfo.DepartmentId) //获取对应部门内勤(高科)
//获取考核项目关联项目 //获取考核项目关联项目
targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId)
fmt.Printf("%v", unit)
//一级文本处理 //一级文本处理
var title, desc string var title, desc string
if detailedRulesTitle != "" { if detailedRulesTitle != "" {
@ -600,11 +643,17 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
title = targettitle title = targettitle
} }
var subtitle string = "" var subtitle string = ""
sendScore := flowContent.Score * int64(flowContent.Count)
if flowContent.PlusReduceScore == 1 { if flowContent.PlusReduceScore == 1 {
subtitle = fmt.Sprintf("加:%v%v\n", flowContent.Score, unit) subtitle = fmt.Sprintf("考核:%v\n", float64(sendScore)/100)
} else { } else {
subtitle = fmt.Sprintf("扣除:%v%v\n", flowContent.Score, unit) subtitle = fmt.Sprintf("考核减分:%v\n", float64(sendScore)/100)
} }
// if flowContent.PlusReduceScore == 1 {
// subtitle = fmt.Sprintf("加:%v%v\n", flowContent.Score, unit)
// } else {
// subtitle = fmt.Sprintf("扣除:%v%v\n", flowContent.Score, unit)
// }
//获取责任划分 //获取责任划分
subtitle = fmt.Sprintf("%v责任划分\n", subtitle) subtitle = fmt.Sprintf("%v责任划分\n", subtitle)
var reason string var reason string
@ -653,6 +702,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
sendUserList := strings.Join(personLiable, "|") sendUserList := strings.Join(personLiable, "|")
//获取考核项目关联项目 //获取考核项目关联项目
targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId)
fmt.Printf("%v\n", unit)
//一级文本处理 //一级文本处理
var title, desc string var title, desc string
if detailedRulesTitle != "" { if detailedRulesTitle != "" {
@ -670,11 +720,17 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
//获取执行结果 //获取执行结果
var mainTitleDesc string var mainTitleDesc string
mainTitleDesc = fmt.Sprintf("执行原因:%v\n", flowContent.Reason) mainTitleDesc = fmt.Sprintf("执行原因:%v\n", flowContent.Reason)
sendScore := flowContent.Score * int64(flowContent.Count)
if flowContent.PlusReduceScore == 1 { if flowContent.PlusReduceScore == 1 {
mainTitleDesc = fmt.Sprintf("%v加:%v%v\n", mainTitleDesc, flowContent.Score, unit) mainTitleDesc = fmt.Sprintf("%v考核:%v\n", mainTitleDesc, float64(sendScore)/100)
} else { } else {
mainTitleDesc = fmt.Sprintf("%v减:%v%v\n", mainTitleDesc, flowContent.Score, unit) mainTitleDesc = fmt.Sprintf("%v考核:%v\n", mainTitleDesc, float64(sendScore)/100)
} }
// if flowContent.PlusReduceScore == 1 {
// mainTitleDesc = fmt.Sprintf("%v加:%v%v\n", mainTitleDesc, flowContent.Score, unit)
// } else {
// mainTitleDesc = fmt.Sprintf("%v减:%v%v\n", mainTitleDesc, flowContent.Score, unit)
// }
var reason string var reason string
commonus.GetDivisionOfResponsibility(orderId, 2) commonus.GetDivisionOfResponsibility(orderId, 2)
if flowContent.Rectification == 1 { if flowContent.Rectification == 1 {
@ -723,6 +779,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
sendUserList := strings.Join(personLiable, "|") sendUserList := strings.Join(personLiable, "|")
//获取考核项目关联项目 //获取考核项目关联项目
targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId)
fmt.Printf("%v", unit)
//一级文本处理 //一级文本处理
var title, desc string var title, desc string
if detailedRulesTitle != "" { if detailedRulesTitle != "" {
@ -740,11 +797,17 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
//获取执行结果 //获取执行结果
var mainTitleDesc string var mainTitleDesc string
mainTitleDesc = fmt.Sprintf("执行原因:%v\n", flowContent.Reason) mainTitleDesc = fmt.Sprintf("执行原因:%v\n", flowContent.Reason)
sendScore := flowContent.Score * int64(flowContent.Count)
if flowContent.PlusReduceScore == 1 { if flowContent.PlusReduceScore == 1 {
mainTitleDesc = fmt.Sprintf("%v加:%v%v\n", mainTitleDesc, flowContent.Score, unit) mainTitleDesc = fmt.Sprintf("%v考核:%v\n", mainTitleDesc, float64(sendScore)/100)
} else { } else {
mainTitleDesc = fmt.Sprintf("%v减:%v%v\n", mainTitleDesc, flowContent.Score, unit) mainTitleDesc = fmt.Sprintf("%v考核:%v\n", mainTitleDesc, float64(sendScore)/100)
} }
// if flowContent.PlusReduceScore == 1 {
// mainTitleDesc = fmt.Sprintf("%v加:%v%v\n", mainTitleDesc, flowContent.Score, unit)
// } else {
// mainTitleDesc = fmt.Sprintf("%v减:%v%v\n", mainTitleDesc, flowContent.Score, unit)
// }
var reason string var reason string
commonus.GetDivisionOfResponsibility(orderId, 2) commonus.GetDivisionOfResponsibility(orderId, 2)
if flowContent.Rectification == 1 { if flowContent.Rectification == 1 {
@ -775,6 +838,7 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
_, dutyOffUserList := commonus.GetSendMsgUserAry(16118387069540343, scoreFlowInfo.DutyDepartment) //获取职责部门内勤 _, dutyOffUserList := commonus.GetSendMsgUserAry(16118387069540343, scoreFlowInfo.DutyDepartment) //获取职责部门内勤
//获取考核项目关联项目 //获取考核项目关联项目
targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId) targettitle, detailedRulesTitle, detailedRulesInfo, unit, flowContent, _ := commonus.GetDutyAssociatedItems(orderId)
fmt.Printf("%v", unit)
//一级文本处理 //一级文本处理
var title, desc string var title, desc string
if detailedRulesTitle != "" { if detailedRulesTitle != "" {
@ -789,11 +853,17 @@ func (t *TemplateCardPush) ButtonTemplateCallBackHandleBackups(orderId, clickEnt
title = targettitle title = targettitle
} }
var subtitle string = "" var subtitle string = ""
sendScore := flowContent.Score * int64(flowContent.Count)
if flowContent.PlusReduceScore == 1 { if flowContent.PlusReduceScore == 1 {
subtitle = fmt.Sprintf("加:%v%v\n", flowContent.Score, unit) subtitle = fmt.Sprintf("考核:%v\n", float64(sendScore)/100)
} else { } else {
subtitle = fmt.Sprintf("扣除:%v%v\n", flowContent.Score, unit) subtitle = fmt.Sprintf("考核减分:%v\n", float64(sendScore)/100)
} }
// if flowContent.PlusReduceScore == 1 {
// subtitle = fmt.Sprintf("加:%v%v\n", flowContent.Score, unit)
// } else {
// subtitle = fmt.Sprintf("扣除:%v%v\n", flowContent.Score, unit)
// }
//获取责任划分 //获取责任划分
subtitle = fmt.Sprintf("%v责任划分\n", subtitle) subtitle = fmt.Sprintf("%v责任划分\n", subtitle)
var reason string var reason string

351
gin_server_admin/commonus/publichaneld.go

@ -2,6 +2,7 @@ package commonus
//公共函数类 //公共函数类
import ( import (
"bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"math" "math"
@ -18,6 +19,7 @@ import (
"github.com/flipped-aurora/gin-vue-admin/server/model/wechat" "github.com/flipped-aurora/gin-vue-admin/server/model/wechat"
"github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel" "github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel"
"github.com/mitchellh/mapstructure" "github.com/mitchellh/mapstructure"
"github.com/mozillazg/go-pinyin"
"gorm.io/gorm" "gorm.io/gorm"
) )
@ -1657,6 +1659,7 @@ func IntegrationFlowAll(flowID int64, class int) (flowAllMap string) {
oneFlowInfo.State = 2 oneFlowInfo.State = 2
oneFlowInfo.Class = 1 oneFlowInfo.Class = 1
oneFlowInfo.UserList = GetFlowNodeMan(flowID, class, 1) oneFlowInfo.UserList = GetFlowNodeMan(flowID, class, 1)
flowMap = append(flowMap, oneFlowInfo) flowMap = append(flowMap, oneFlowInfo)
// fmt.Print("Flow_log:-->%v") // fmt.Print("Flow_log:-->%v")
@ -1897,6 +1900,13 @@ func GetFlowNodeMan(flowID int64, class, style int) (manInfo []UserListFlowAll)
_, temCont := GetTeaming(userCont.Tema) _, temCont := GetTeaming(userCont.Tema)
returnUser.TemaName = temCont.Name returnUser.TemaName = temCont.Name
returnUser.Wechat = userCont.WechatId returnUser.Wechat = userCont.WechatId
// oneFlowInfo?
var logListMap LogList
logListMap.State = 2
logListMap.TimeVal = GetToDayAll()
returnUser.LogList = append(returnUser.LogList, logListMap)
manInfo = append(manInfo, returnUser) manInfo = append(manInfo, returnUser)
} }
@ -2271,8 +2281,9 @@ func GetDepartmentByUserBast(userKey []string) (userDepartmentId []string) {
@ascription 指标ID @ascription 指标ID
@columId 子指标ID @columId 子指标ID
@title 指标名称 @title 指标名称
@departMap 关联部门
*/ */
func JudgeColumn(ascription, columId, title string) (content assessmentmodel.QualitativeTarget, isTrue bool) { func JudgeColumn(ascription, columId, title, departMap string) (content assessmentmodel.QualitativeTarget, isTrue bool) {
isTrue = false isTrue = false
if columId != "" { if columId != "" {
judgeIdErr := global.GVA_DB_Performanceappraisal.Where("`q_id` = ?", columId).First(&content).Error judgeIdErr := global.GVA_DB_Performanceappraisal.Where("`q_id` = ?", columId).First(&content).Error
@ -2290,7 +2301,7 @@ func JudgeColumn(ascription, columId, title string) (content assessmentmodel.Qua
if ascriptionErr != nil { if ascriptionErr != nil {
ascriptionId = 0 ascriptionId = 0
} }
saveColum := assessmentmodel.QualitativeTarget{Title: title, ParentId: ascriptionId, State: 1, AddTime: time.Now().Unix()} saveColum := assessmentmodel.QualitativeTarget{Title: title, ParentId: ascriptionId, State: 1, AddTime: time.Now().Unix(), Depart: departMap}
addErr := global.GVA_DB_Performanceappraisal.Create(&saveColum).Error addErr := global.GVA_DB_Performanceappraisal.Create(&saveColum).Error
if addErr != nil { if addErr != nil {
return return
@ -2393,3 +2404,339 @@ func GetBranchDepartAry(departIdAry []string) (departId []int64, departAry []Dep
} }
return return
} }
//判断考核细则是否存在(新规则)
/*
参数说明
@ascription 归属指标栏目
@title 指标细则
@explain 指标说明'
@explainId 指标明细ID
@ReferenceScore 分数
@CompanyCont 单位
@sunTargetId 子栏目
*/
func JudgeDetailsCopy(ascription, title, explain, explainId, ReferenceScore, CompanyCont string, sunTargetId int64, addReduce int) (content assessmentmodel.DetailedTarget, isTrue bool) {
if addReduce == 0 {
addReduce = 1
}
var minScoreInt int64
var maxScoreInt int64
scoreAry := strings.Split(ReferenceScore, "-")
scoreLen := len(scoreAry)
fmt.Printf("ScoreAry:%v----------->%v------------>%v------------>%v\n", ReferenceScore, scoreLen, scoreAry[0], scoreAry)
if scoreLen > 0 {
if scoreLen == 1 {
maxScore, _ := strconv.ParseFloat(scoreAry[0], 64)
zhhh := maxScore * 100
zhuanStr := strconv.FormatFloat(zhhh, 'f', -1, 64)
maxScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(maxScore*100, 'f', -1, 64), 10, 64)
minScoreInt = 0
fmt.Printf("ScoreAry--1-----:%v----------->%v------------>%v------------>%v\n", maxScore, maxScoreInt, zhuanStr, zhhh)
} else {
minScore, _ := strconv.ParseFloat(scoreAry[0], 64)
maxScore, _ := strconv.ParseFloat(scoreAry[scoreLen-1], 64)
minScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(minScore*100, 'f', -1, 64), 10, 64)
maxScoreInt, _ = strconv.ParseInt(strconv.FormatFloat(maxScore*100, 'f', -1, 64), 10, 64)
}
} else {
minScoreInt = 0
maxScoreInt = 0
}
isTrue = false
if explainId != "" {
judgeIdErr := global.GVA_DB_Performanceappraisal.Where("`dt_id` = ?", explainId).First(&content).Error
if judgeIdErr == nil {
eiteCont := MapOut()
if minScoreInt > maxScoreInt {
eiteCont["dt_min_score"] = maxScoreInt
eiteCont["dt_max_score"] = minScoreInt
} else {
eiteCont["dt_min_score"] = minScoreInt
eiteCont["dt_max_score"] = maxScoreInt
}
eiteCont["dt_title"] = title
eiteCont["dt_content"] = explain
eiteCont["dt_company"] = CompanyCont
eiteCont["dt_add_reduce"] = addReduce
eiteCont["dt_time"] = time.Now().Unix()
global.GVA_DB_Performanceappraisal.Model(&content).Where("`dt_id` = ?", explainId).Updates(&eiteCont)
// fmt.Printf("echo --------------1---------->%v\n", content)
isTrue = true
return
}
}
judgeErr := global.GVA_DB_Performanceappraisal.Where("`dt_parentid` = ? AND `dt_title` = ?", ascription, title).First(&content).Error
if judgeErr == nil {
isTrue = true
eiteCont := MapOut()
if minScoreInt > maxScoreInt {
eiteCont["dt_min_score"] = maxScoreInt
eiteCont["dt_max_score"] = minScoreInt
} else {
eiteCont["dt_min_score"] = minScoreInt
eiteCont["dt_max_score"] = maxScoreInt
}
eiteCont["dt_content"] = explain
eiteCont["dt_company"] = CompanyCont
eiteCont["dt_add_reduce"] = addReduce
eiteCont["dt_time"] = time.Now().Unix()
global.GVA_DB_Performanceappraisal.Model(&content).Where("`dt_id` = ?", content.Id).Updates(&eiteCont)
// fmt.Printf("echo --------------2---------->%v\n", content)
return
}
ascriptionId, ascriptionErr := strconv.ParseInt(ascription, 10, 64)
if ascriptionErr != nil {
ascriptionId = 0
}
var minScoreIsTrue int64 = 0
var maxScoreIsTrue int64 = 0
if minScoreInt > maxScoreInt {
minScoreIsTrue = maxScoreInt
maxScoreIsTrue = minScoreInt
} else {
minScoreIsTrue = minScoreInt
maxScoreIsTrue = maxScoreInt
}
fmt.Printf("ScoreAry---KKKK:%v----------->%v------------>%v------------>%v", minScoreIsTrue, maxScoreIsTrue, minScoreIsTrue, maxScoreIsTrue)
saveColum := assessmentmodel.DetailedTarget{Title: title, Content: explain, ParentId: ascriptionId, ParentIdSun: sunTargetId, State: 1, AddTime: time.Now().Unix(), Company: CompanyCont, MinScore: minScoreIsTrue, MaxScore: maxScoreIsTrue, AddReduce: addReduce}
addErr := global.GVA_DB_Performanceappraisal.Create(&saveColum).Error
if addErr != nil {
// fmt.Printf("echo --------------3---------->%v\n", saveColum.Id)
return
}
// fmt.Printf("echo --------------4---------->%v\n", saveColum.Id)
isTrue = true
content = saveColum
return
}
//判断定性考核项目是否存在使用状态
/*
@group 集团
@dimension 维度
@target 指标
@target_sun 子栏目
@detailed 维度
*/
func JudegDutyIsUse(group, dimension, target, target_sun, detailed int64) (isTrue bool) {
isTrue = false
// var qeInfo []assessmentmodel.QualitativeEvaluation
var qeID []int64
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeEvaluation{}).Select("qe_id").Where("`State` = 1")
if group != 0 {
gormDb = gormDb.Where("`qe_group` = ?", group)
}
if dimension != 0 {
gormDb = gormDb.Where("`qe_dimension` = ?", dimension)
}
if target != 0 {
gormDb = gormDb.Where("`qe_target` = ?", target)
}
if target_sun != 0 {
gormDb = gormDb.Where("`qe_target_sun` = ?", target_sun)
}
if detailed != 0 {
gormDb = gormDb.Where("`qe_detailed_target` = ?", detailed)
}
err := gormDb.Find(&qeID).Error
if err != nil {
isTrue = true
return
}
var sfID []int64
sfErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.ScoreFlow{}).Select("sf_id").Where("`sf_reply` > 0 AND `sf_evaluation_plan` IN ?", qeID).Find(&sfID).Error
if sfErr != nil {
isTrue = true
return
}
if len(sfID) < 1 {
isTrue = true
return
}
return
}
//获取权重
/*
@group 集团
@dimension 维度
@derpatment 部门
@target 指标
@class 1定性考核2定量考核
*/
func GetWeight(group, dimension, derpatment, target string, class int64) (weightSum int64) {
gormDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("`ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?", group, derpatment, dimension)
if target != "" {
gormDb = gormDb.Where("`ddw_target` = ? AND `ddw_hierarchy` = 2", target)
} else {
gormDb = gormDb.Where("`ddw_hierarchy` = 1")
}
if class != 0 {
gormDb = gormDb.Where("`ddw_type` = ?", class)
}
err := gormDb.Pluck("COALESCE(SUM(ddw_weight), 0) as weight", &weightSum).Error
if err != nil {
weightSum = 0
}
return
}
//写入权重
/*
@group 集团
@dimension 维度
@derpatment 部门
@target 指标
@class 1定性考核2定量考核
*/
func AddWeight(group, dimension, derpatment, target string, score, class int64) (isTrue bool) {
isTrue = false
if target != "" {
var id int64
judegErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Select("ddw_id").Where("`ddw_hierarchy` = 2 AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ? AND `ddw_target` = ? AND `ddw_type` = ?", group, derpatment, dimension, target, class).First(&id).Error
if judegErr == nil {
eiteCont := MapOut()
eiteCont["ddw_time"] = time.Now().Unix()
eiteCont["ddw_weight"] = score
eiteErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("ddw_id = ?", id).Updates(&eiteCont).Error
if eiteErr == nil {
isTrue = true
}
} else {
var addCont assessmentmodel.DepartmentDimensionWeight
groupId, _ := strconv.ParseInt(group, 10, 64)
addCont.Group = groupId
derpatmentId, _ := strconv.ParseInt(derpatment, 10, 64)
addCont.DepartmentId = derpatmentId
dimensionId, _ := strconv.ParseInt(dimension, 10, 64)
addCont.Dimension = dimensionId
targetId, _ := strconv.ParseInt(target, 10, 64)
addCont.Target = targetId
addCont.Weight = score
addCont.Addtime = time.Now().Unix()
addCont.Type = class
addCont.Hierarchy = 2
addErr := global.GVA_DB_Performanceappraisal.Create(&addCont).Error
if addErr == nil {
isTrue = true
}
}
} else {
//写入维度权重
var id int64
judegErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Select("ddw_id").Where("`ddw_hierarchy` = 1 AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?", group, derpatment, dimension).First(&id).Error
if judegErr == nil {
eiteCont := MapOut()
eiteCont["ddw_time"] = time.Now().Unix()
eiteCont["ddw_weight"] = score
eiteErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("ddw_id = ?", id).Updates(&eiteCont).Error
if eiteErr == nil {
isTrue = true
}
} else {
var addCont assessmentmodel.DepartmentDimensionWeight
groupId, _ := strconv.ParseInt(group, 10, 64)
addCont.Group = groupId
derpatmentId, _ := strconv.ParseInt(derpatment, 10, 64)
addCont.DepartmentId = derpatmentId
dimensionId, _ := strconv.ParseInt(dimension, 10, 64)
addCont.Dimension = dimensionId
addCont.Target = 0
addCont.Weight = score
addCont.Addtime = time.Now().Unix()
addCont.Type = 1
addCont.Hierarchy = 1
addErr := global.GVA_DB_Performanceappraisal.Create(&addCont).Error
if addErr == nil {
isTrue = true
}
}
}
return
}
//获取定量考核目标设定
func GetQuantitativeConfig(whereData interface{}) (cont assessmentmodel.QuantitativeConfig) {
global.GVA_DB_Performanceappraisal.Where(whereData).First(&cont)
return
}
//获取定量考核时间内审批通过的考核数据
func GetTimeIntervalDuty(whereData interface{}, schemeID int64) (actual float64) {
jsonStr, _ := json.Marshal(whereData)
fmt.Printf("jsonStr------1------>%v\n", string(jsonStr))
actual = 0
//相关审批流
var flowLogList []assessmentmodel.FlowLog
err := global.GVA_DB_Performanceappraisal.Where("`fl_reply` = 3 AND FIND_IN_SET(?,`fl_evaluation_id`)", schemeID).Where(whereData).Find(&flowLogList).Error
if err != nil {
return
}
for _, v := range flowLogList {
actual = actual + GetSchemeFlowData(v.Key, schemeID)
}
return
}
//获取指定审批流方案数据
func GetSchemeFlowData(flowKwy, schemeID int64) (weightSum float64) {
weightSum = 0
global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.FlowLogData{}).Where("`fld_evaluation_id` = ? AND `fld_flow_log` = ?", schemeID, flowKwy).Pluck("COALESCE(SUM(fld_score), 0) as qe_reference_score", &weightSum)
return
}
//获取float字符串转化成Int64
func GetDuyCycle(scoreStr string, multiple int64) (scoreInt64 int64) {
coreFloat64, _ := strconv.ParseFloat(scoreStr, 64) //将字符串转换成float64
scoreFloat64ToStr := strconv.FormatFloat(coreFloat64*float64(multiple), 'f', -1, 64) //将乘以系数后的数值转换成字符串
scoreInt64, _ = strconv.ParseInt(scoreFloat64ToStr, 10, 64) //将字符串转换成int64
return
}
//获取判断定量考核时间内审批中和通过的考核数据
func GetTimeIntervalDutyJudge(whereData interface{}, schemeID int64) (actual float64) {
jsonStr, _ := json.Marshal(whereData)
fmt.Printf("jsonStr------1------>%v\n", string(jsonStr))
actual = 0
//相关审批流
var flowLogList []assessmentmodel.FlowLog
err := global.GVA_DB_Performanceappraisal.Where("`fl_reply` IN (2,3) AND FIND_IN_SET(?,`fl_evaluation_id`)", schemeID).Where(whereData).Find(&flowLogList).Error
if err != nil {
return
}
for _, v := range flowLogList {
actual = actual + GetSchemeFlowData(v.Key, schemeID)
}
return
}
//判断子栏目是否归属此部门
func JudegSunTarToDepart(sunId, departId int64) (isTrue bool) {
isTrue = false
var title string
judgeARTErr := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QualitativeTarget{}).Select("q_title").Where("`q_id` = ? AND FIND_IN_SET(?,`q_depart`)", sunId, departId).First(&title).Error
if judgeARTErr == nil {
isTrue = true
}
return
}
//中文首字母大写
func ChinaToPinYinFirstWord(wordStr string) (firstWord string) {
pinYinSub := pinyin.NewArgs()
rows := pinyin.Pinyin(wordStr, pinYinSub)
for i := 0; i < len(rows); i++ {
if len(rows[i]) != 0 {
str := rows[i][0]
pi := str[0:1]
firstWord += string(bytes.ToUpper([]byte(pi)))
}
}
return
}

8
gin_server_admin/commonus/timeSub.go

@ -166,9 +166,11 @@ func TimeStampToDate(timeStamp int64, timeType int) (dateStr string) {
dayMonth := time.Unix(timeStamp, 0).Format("01") dayMonth := time.Unix(timeStamp, 0).Format("01")
datMonthFloat, datMonthFloatErr := strconv.ParseFloat(dayMonth, 10) datMonthFloat, datMonthFloatErr := strconv.ParseFloat(dayMonth, 10)
if datMonthFloatErr == nil { if datMonthFloatErr == nil {
dateStr = strconv.FormatFloat(math.Ceil(datMonthFloat/3), 'g', 1, 64) dateStr = strconv.FormatFloat(math.Ceil(datMonthFloat/3), 'f', -1, 64)
} }
dateStr = "1" dateStr = "1"
case 14:
timeTemplate = "20060102"
default: default:
timeTemplate = "2006-01-02 15:04:05" //常规类型 timeTemplate = "2006-01-02 15:04:05" //常规类型
} }
@ -186,7 +188,7 @@ func ComputingTime(timeStamp int64, timeType int) (timeDataInt int64) {
dayMonth := time.Unix(timeStamp, 0).Format("01") //季度 dayMonth := time.Unix(timeStamp, 0).Format("01") //季度
datMonthFloat, datMonthFloatErr := strconv.ParseFloat(dayMonth, 10) datMonthFloat, datMonthFloatErr := strconv.ParseFloat(dayMonth, 10)
if datMonthFloatErr == nil { if datMonthFloatErr == nil {
timeData = strconv.FormatFloat(math.Ceil(datMonthFloat/3), 'g', 1, 64) timeData = strconv.FormatFloat(math.Ceil(datMonthFloat/3), 'f', -1, 64)
} else { } else {
timeData = "1" timeData = "1"
} }
@ -211,7 +213,7 @@ func ComputingTime(timeStamp int64, timeType int) (timeDataInt int64) {
daysAndWeeksDiffFlot, daysAndWeeksDiffFloatErr := strconv.ParseFloat(strconv.FormatInt(daysAndWeeksDiff, 10), 10) daysAndWeeksDiffFlot, daysAndWeeksDiffFloatErr := strconv.ParseFloat(strconv.FormatInt(daysAndWeeksDiff, 10), 10)
if daysAndWeeksDiffFloatErr == nil { if daysAndWeeksDiffFloatErr == nil {
daysWeeksDiffVal := math.Ceil(daysAndWeeksDiffFlot/7) + 1 daysWeeksDiffVal := math.Ceil(daysAndWeeksDiffFlot/7) + 1
timeData = strconv.FormatFloat(daysWeeksDiffVal, 'g', 1, 64) timeData = strconv.FormatFloat(daysWeeksDiffVal, 'f', -1, 64)
} else { } else {
timeData = "1" timeData = "1"
} }

90
gin_server_admin/go.mod

@ -1,6 +1,6 @@
module github.com/flipped-aurora/gin-vue-admin/server module github.com/flipped-aurora/gin-vue-admin/server
go 1.16 go 1.18
require ( require (
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
@ -14,32 +14,108 @@ require (
github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6 github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6
github.com/gin-gonic/gin v1.6.3 github.com/gin-gonic/gin v1.6.3
github.com/go-redis/redis/v8 v8.11.0 github.com/go-redis/redis/v8 v8.11.0
github.com/go-sql-driver/mysql v1.5.0 github.com/go-sql-driver/mysql v1.6.0
github.com/gookit/color v1.3.1 github.com/gookit/color v1.3.1
github.com/jordan-wright/email v0.0.0-20200824153738-3f5bafa1cd84 github.com/jordan-wright/email v0.0.0-20200824153738-3f5bafa1cd84
github.com/mitchellh/mapstructure v1.2.2 github.com/mitchellh/mapstructure v1.2.2
github.com/mojocn/base64Captcha v1.3.1 github.com/mojocn/base64Captcha v1.3.1
github.com/mozillazg/go-pinyin v0.19.0
github.com/natefinch/lumberjack v2.0.0+incompatible github.com/natefinch/lumberjack v2.0.0+incompatible
github.com/qiniu/api.v7/v7 v7.4.1 github.com/qiniu/api.v7/v7 v7.4.1
github.com/robfig/cron/v3 v3.0.1 github.com/robfig/cron/v3 v3.0.1
github.com/satori/go.uuid v1.2.0 github.com/satori/go.uuid v1.2.0
github.com/shirou/gopsutil v3.21.9+incompatible github.com/shirou/gopsutil v3.21.9+incompatible
github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc github.com/shopspring/decimal v1.2.0
github.com/songzhibin97/gkit v1.1.1 github.com/songzhibin97/gkit v1.1.1
github.com/spf13/viper v1.7.0 github.com/spf13/viper v1.7.0
github.com/stretchr/testify v1.7.0 github.com/stretchr/testify v1.7.0
github.com/swaggo/gin-swagger v1.3.0 github.com/swaggo/gin-swagger v1.3.0
github.com/swaggo/swag v1.7.0 github.com/swaggo/swag v1.7.0
github.com/tencentyun/cos-go-sdk-v5 v0.7.19 github.com/tencentyun/cos-go-sdk-v5 v0.7.19
github.com/tklauser/go-sysconf v0.3.9 // indirect
github.com/unrolled/render v1.4.0 github.com/unrolled/render v1.4.0
github.com/unrolled/secure v1.0.7 github.com/unrolled/secure v1.0.7
github.com/xuri/excelize/v2 v2.4.1 github.com/xuri/excelize/v2 v2.4.1
github.com/yanyiwu/gojieba v1.1.2 github.com/yanyiwu/gojieba v1.1.2
go.uber.org/zap v1.16.0 go.uber.org/zap v1.16.0
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gorm.io/driver/mysql v1.3.3
gorm.io/driver/mysql v1.0.1 gorm.io/gorm v1.23.4
gorm.io/gorm v1.20.11
nhooyr.io/websocket v1.8.6 nhooyr.io/websocket v1.8.6
) )
require (
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible // indirect
github.com/KyleBanks/depth v1.2.1 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
github.com/cespare/xxhash/v2 v2.1.1 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/denisenkom/go-mssqldb v0.12.0 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-ole/go-ole v1.2.4 // indirect
github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.19.6 // indirect
github.com/go-openapi/spec v0.20.3 // indirect
github.com/go-openapi/swag v0.19.15 // indirect
github.com/go-playground/locales v0.13.0 // indirect
github.com/go-playground/universal-translator v0.17.0 // indirect
github.com/go-playground/validator/v10 v10.3.0 // indirect
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188 // indirect
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/go-querystring v1.0.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
github.com/jackc/pgconn v1.11.0 // indirect
github.com/jackc/pgio v1.0.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgproto3/v2 v2.2.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect
github.com/jackc/pgtype v1.10.0 // indirect
github.com/jackc/pgx/v4 v4.15.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.10 // indirect
github.com/klauspost/compress v1.10.3 // indirect
github.com/leodido/go-urn v1.2.0 // indirect
github.com/magiconair/properties v1.8.1 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-isatty v0.0.12 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/mozillazg/go-httpheader v0.2.1 // indirect
github.com/pelletier/go-toml v1.6.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/richardlehane/mscfb v1.0.3 // indirect
github.com/richardlehane/msoleps v1.0.1 // indirect
github.com/spf13/afero v1.2.2 // indirect
github.com/spf13/cast v1.3.1 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.2.0 // indirect
github.com/tklauser/go-sysconf v0.3.9 // indirect
github.com/tklauser/numcpus v0.3.0 // indirect
github.com/ugorji/go/codec v1.1.13 // indirect
github.com/xuri/efp v0.0.0-20210322160811-ab561f5b45e3 // indirect
go.uber.org/atomic v1.6.0 // indirect
go.uber.org/multierr v1.5.0 // indirect
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect
golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb // indirect
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect
golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect
golang.org/x/tools v0.1.5 // indirect
google.golang.org/protobuf v1.26.0 // indirect
gopkg.in/ini.v1 v1.55.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
gorm.io/driver/postgres v1.3.3 // indirect
gorm.io/driver/sqlserver v1.3.2 // indirect
)

106
gin_server_admin/go.sum

@ -11,6 +11,9 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0=
github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
@ -18,6 +21,8 @@ github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=
@ -49,7 +54,6 @@ github.com/casbin/casbin/v2 v2.11.0/go.mod h1:XXtYGrs/0zlOsJMeRteEdVi/FsB0ph7KgN
github.com/casbin/gorm-adapter/v3 v3.0.2 h1:4F2VFElwPyFzvHfgwizD2JQxk2OFLwvRFZct1np0yBg= github.com/casbin/gorm-adapter/v3 v3.0.2 h1:4F2VFElwPyFzvHfgwizD2JQxk2OFLwvRFZct1np0yBg=
github.com/casbin/gorm-adapter/v3 v3.0.2/go.mod h1:mQI09sqvXfy5p6kZB5HBzZrgKWwxaJ4xMWpd5OGfHRY= github.com/casbin/gorm-adapter/v3 v3.0.2/go.mod h1:mQI09sqvXfy5p6kZB5HBzZrgKWwxaJ4xMWpd5OGfHRY=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@ -71,13 +75,15 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc h1:VRRKCwnzqk8QCaRC4os14xoKDdbHqqlJtJA0oc1ZAjg=
github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
github.com/denisenkom/go-mssqldb v0.12.0 h1:VtrkII767ttSPNRfFekePK3sctr+joXgO58stqQbtUA=
github.com/denisenkom/go-mssqldb v0.12.0/go.mod h1:iiK0YP1ZeepvmBQk/QpLEhhTNJgfzrpArPY/aFvc9yU=
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
github.com/emicklei/proto v1.9.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= github.com/emicklei/proto v1.9.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
@ -108,8 +114,10 @@ github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14=
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI=
github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
@ -143,8 +151,9 @@ github.com/go-playground/validator/v10 v10.3.0 h1:nZU+7q+yJoFmwvNgv/LnPUkwPal62+
github.com/go-playground/validator/v10 v10.3.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.3.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
github.com/go-redis/redis/v8 v8.11.0 h1:O1Td0mQ8UFChQ3N9zFQqo6kTU2cJ+/it88gDB+zg0wo= github.com/go-redis/redis/v8 v8.11.0 h1:O1Td0mQ8UFChQ3N9zFQqo6kTU2cJ+/it88gDB+zg0wo=
github.com/go-redis/redis/v8 v8.11.0/go.mod h1:DLomh7y2e3ggQXQLd1YgmvIfecPJoFl7WU5SOQ/r06M= github.com/go-redis/redis/v8 v8.11.0/go.mod h1:DLomh7y2e3ggQXQLd1YgmvIfecPJoFl7WU5SOQ/r06M=
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0=
github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
@ -152,12 +161,16 @@ github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8=
github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo=
github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw=
github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188 h1:+eHOFJl1BaXrQxKX+T06f78590z4qA2ZzBTqahsKSE4=
github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
@ -234,7 +247,6 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m
github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=
github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
@ -245,50 +257,67 @@ github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsU
github.com/jackc/pgconn v1.4.0/go.mod h1:Y2O3ZDF0q4mMacyWV3AstPJpeHXWGEetiFttmq5lahk= github.com/jackc/pgconn v1.4.0/go.mod h1:Y2O3ZDF0q4mMacyWV3AstPJpeHXWGEetiFttmq5lahk=
github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI=
github.com/jackc/pgconn v1.5.1-0.20200601181101-fa742c524853/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= github.com/jackc/pgconn v1.5.1-0.20200601181101-fa742c524853/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI=
github.com/jackc/pgconn v1.6.1 h1:lwofaXKPbIx6qEaK8mNm7uZuOwxHw+PnAFGDsDFpkRI=
github.com/jackc/pgconn v1.6.1/go.mod h1:g8mKMqmSUO6AzAvha7vy07g1rbGOlc7iF0nU0ei83hc= github.com/jackc/pgconn v1.6.1/go.mod h1:g8mKMqmSUO6AzAvha7vy07g1rbGOlc7iF0nU0ei83hc=
github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o=
github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY=
github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI=
github.com/jackc/pgconn v1.11.0 h1:HiHArx4yFbwl91X3qqIHtUFoiIfLNJXCQRsnzkiwwaQ=
github.com/jackc/pgconn v1.11.0/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI=
github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2 h1:JVX6jT/XfzNqIjye4717ITLaNwV9mWbJx0dLCpcRzdA=
github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE=
github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c=
github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc=
github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A=
github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78=
github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA=
github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg=
github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
github.com/jackc/pgproto3/v2 v2.0.2 h1:q1Hsy66zh4vuNsajBUF2PNqfAMMfxU5mk594lPE9vjY=
github.com/jackc/pgproto3/v2 v2.0.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.0.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8 h1:Q3tB+ExeflWUW7AFcAhXqk40s9mnNYLk1nOkKNZ5GnU= github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
github.com/jackc/pgproto3/v2 v2.2.0 h1:r7JypeP2D3onoQTCxWdTpCtJ4D+qpKr0TxvoyMhZ5ns=
github.com/jackc/pgproto3/v2 v2.2.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg=
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg=
github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0= github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0=
github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po= github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po=
github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ= github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ=
github.com/jackc/pgtype v1.4.0 h1:pHQfb4jh9iKqHyxPthq1fr+0HwSNIl3btYPbw2m2lbM=
github.com/jackc/pgtype v1.4.0/go.mod h1:JCULISAZBFGrHaOXIIFiyfzW5VY0GRitRr8NeJsrdig= github.com/jackc/pgtype v1.4.0/go.mod h1:JCULISAZBFGrHaOXIIFiyfzW5VY0GRitRr8NeJsrdig=
github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM=
github.com/jackc/pgtype v1.10.0 h1:ILnBWrRMSXGczYvmkYD6PsYyVFUNLTnIUJHHDLmqk38=
github.com/jackc/pgtype v1.10.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y=
github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM=
github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA= github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA=
github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o= github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o=
github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg= github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg=
github.com/jackc/pgx/v4 v4.7.1 h1:aqUSOcStk6fik+lSE+tqfFhvt/EwT8q/oMtJbP9CjXI=
github.com/jackc/pgx/v4 v4.7.1/go.mod h1:nu42q3aPjuC1M0Nak4bnoprKlXPINqopEKqbq5AZSC4= github.com/jackc/pgx/v4 v4.7.1/go.mod h1:nu42q3aPjuC1M0Nak4bnoprKlXPINqopEKqbq5AZSC4=
github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs=
github.com/jackc/pgx/v4 v4.15.0 h1:B7dTkXsdILD3MF987WGGCcg+tvLW6bZJdEcqVFeU//w=
github.com/jackc/pgx/v4 v4.15.0/go.mod h1:D/zyOyXiaM1TmVWnOM18p0xdDtdakRBa0RsVGI3U3bw=
github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.1 h1:g39TucaRWyV3dwDO++eEc6qf8TVIQ/Da48WmqjZ3i7E=
github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
github.com/jordan-wright/email v0.0.0-20200824153738-3f5bafa1cd84 h1:pS0A6cr4aHYZnYwC7Uw+rwgb39+nzkm2QhwZ+S6Gn5I= github.com/jordan-wright/email v0.0.0-20200824153738-3f5bafa1cd84 h1:pS0A6cr4aHYZnYwC7Uw+rwgb39+nzkm2QhwZ+S6Gn5I=
github.com/jordan-wright/email v0.0.0-20200824153738-3f5bafa1cd84/go.mod h1:1c7szIrayyPPB/987hsnvNzLushdWf4o/79s3P08L8A= github.com/jordan-wright/email v0.0.0-20200824153738-3f5bafa1cd84/go.mod h1:1c7szIrayyPPB/987hsnvNzLushdWf4o/79s3P08L8A=
@ -325,8 +354,9 @@ github.com/lestrrat-go/strftime v1.0.3/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR7
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.3.0 h1:/qkRGz8zljWiDcFvgpwUpwIAPu3r07TDvs3Rws+o/pU=
github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8=
github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
@ -364,12 +394,15 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
github.com/mojocn/base64Captcha v1.3.1 h1:2Wbkt8Oc8qjmNJ5GyOfSo4tgVQPsbKMftqASnq8GlT0= github.com/mojocn/base64Captcha v1.3.1 h1:2Wbkt8Oc8qjmNJ5GyOfSo4tgVQPsbKMftqASnq8GlT0=
github.com/mojocn/base64Captcha v1.3.1/go.mod h1:wAQCKEc5bDujxKRmbT6/vTnTt5CjStQ8bRfPWUuz/iY= github.com/mojocn/base64Captcha v1.3.1/go.mod h1:wAQCKEc5bDujxKRmbT6/vTnTt5CjStQ8bRfPWUuz/iY=
github.com/mozillazg/go-httpheader v0.2.1 h1:geV7TrjbL8KXSyvghnFm+NyTux/hxwueTSrwhe88TQQ= github.com/mozillazg/go-httpheader v0.2.1 h1:geV7TrjbL8KXSyvghnFm+NyTux/hxwueTSrwhe88TQQ=
github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60=
github.com/mozillazg/go-pinyin v0.19.0 h1:p+J8/kjJ558KPvVGYLvqBhxf8jbZA2exSLCs2uUVN8c=
github.com/mozillazg/go-pinyin v0.19.0/go.mod h1:iR4EnMMRXkfpFVV5FMi4FNB6wGq9NV6uDWbUuPhP4Yc=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4UpgHp07nNdFX7mqFfM= github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4UpgHp07nNdFX7mqFfM=
github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk=
@ -390,6 +423,7 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pelletier/go-toml v1.6.0 h1:aetoXYr0Tv7xRU/V4B4IZJ2QcbtMUFoNb3ORp7TzIK4= github.com/pelletier/go-toml v1.6.0 h1:aetoXYr0Tv7xRU/V4B4IZJ2QcbtMUFoNb3ORp7TzIK4=
github.com/pelletier/go-toml v1.6.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys= github.com/pelletier/go-toml v1.6.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys=
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@ -430,8 +464,9 @@ github.com/shirou/gopsutil v3.21.1+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu
github.com/shirou/gopsutil v3.21.9+incompatible h1:LTLpUnfX81MkHeCtSrwNKZwuW5Id6kCa7/P43NdcNn4= github.com/shirou/gopsutil v3.21.9+incompatible h1:LTLpUnfX81MkHeCtSrwNKZwuW5Id6kCa7/P43NdcNn4=
github.com/shirou/gopsutil v3.21.9+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v3.21.9+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc h1:jUIKcSPO9MoMJBbEoyE/RJoE8vz7Mb8AjvifMMwSyvY=
github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
@ -486,7 +521,6 @@ github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcy
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go v1.1.13 h1:nB3O5kBSQGjEQAcfe1aLUYuxmXdFKmYgBZhY32rQb6Q=
github.com/ugorji/go v1.1.13/go.mod h1:jxau1n+/wyTGLQoCkjok9r5zFa/FxT6eI5HiHKQszjc= github.com/ugorji/go v1.1.13/go.mod h1:jxau1n+/wyTGLQoCkjok9r5zFa/FxT6eI5HiHKQszjc=
github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
@ -516,15 +550,18 @@ go.opentelemetry.io/otel/sdk v1.0.0-RC2/go.mod h1:fgwHyiDn4e5k40TD9VX243rOxXR+jz
go.opentelemetry.io/otel/trace v1.0.0-RC2/go.mod h1:JPQ+z6nNw9mqEGT8o3eoPTdnNI+Aj5JcxEsVGREIAy4= go.opentelemetry.io/otel/trace v1.0.0-RC2/go.mod h1:JPQ+z6nNw9mqEGT8o3eoPTdnNI+Aj5JcxEsVGREIAy4=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk=
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM= go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM=
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@ -539,8 +576,13 @@ golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o=
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@ -563,6 +605,7 @@ golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@ -593,8 +636,10 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985 h1:4CSI6oo7cOjJKajidEljs9h+uP0rRZBPPPhcCbj5mw8= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -630,6 +675,7 @@ golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@ -647,6 +693,7 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71 h1:ikCpsnYR+Ew0vu99XlDp55lGgDJdIMx3f4a18jfse/s= golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71 h1:ikCpsnYR+Ew0vu99XlDp55lGgDJdIMx3f4a18jfse/s=
golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@ -654,8 +701,9 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@ -686,6 +734,7 @@ golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20201120155355-20be4ac4bd6e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201120155355-20be4ac4bd6e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA=
@ -764,21 +813,26 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/mysql v0.3.0/go.mod h1:A7H1JD9dKdcjeUTpTuWKEC+E1a74qzW7/zaXqKaTbfM= gorm.io/driver/mysql v0.3.0/go.mod h1:A7H1JD9dKdcjeUTpTuWKEC+E1a74qzW7/zaXqKaTbfM=
gorm.io/driver/mysql v1.0.1 h1:omJoilUzyrAp0xNoio88lGJCroGdIOen9hq2A/+3ifw=
gorm.io/driver/mysql v1.0.1/go.mod h1:KtqSthtg55lFp3S5kUXqlGaelnWpKitn4k1xZTnoiPw= gorm.io/driver/mysql v1.0.1/go.mod h1:KtqSthtg55lFp3S5kUXqlGaelnWpKitn4k1xZTnoiPw=
gorm.io/driver/postgres v0.2.6 h1:hoE6SzA5wKOo6AYxz2V7ooxnzD6S6ToLAHHDDawt+b0= gorm.io/driver/mysql v1.3.3 h1:jXG9ANrwBc4+bMvBcSl8zCfPBaVoPyBEBshA8dA93X8=
gorm.io/driver/mysql v1.3.3/go.mod h1:ChK6AHbHgDCFZyJp0F+BmVGb06PSIoh9uVYKAlRbb2U=
gorm.io/driver/postgres v0.2.6/go.mod h1:AsPyuhKFOplSmQwOPsycVKbe0dRxF8v18KZ7p9i8dIs= gorm.io/driver/postgres v0.2.6/go.mod h1:AsPyuhKFOplSmQwOPsycVKbe0dRxF8v18KZ7p9i8dIs=
gorm.io/driver/sqlserver v0.2.4 h1:AGofGL/TfzTZotzIHlaLISfxEKJpzj0ATbtXJW+ga1A= gorm.io/driver/postgres v1.3.3 h1:y6DU2kJgDNisxfAlmxRaQZOIy4ytnuYrpzpSFYnSfCY=
gorm.io/driver/postgres v1.3.3/go.mod h1:y0vEuInFKJtijuSGu9e5bs5hzzSzPK+LancpKpvbRBw=
gorm.io/driver/sqlserver v0.2.4/go.mod h1:TcPfkdce5b8qlCMgyUeUdm7HQa1ZzWUuxzI+odcueLA= gorm.io/driver/sqlserver v0.2.4/go.mod h1:TcPfkdce5b8qlCMgyUeUdm7HQa1ZzWUuxzI+odcueLA=
gorm.io/driver/sqlserver v1.3.2 h1:yYt8f/xdAKLY7lCCyXxIUEgZ/WsURos3dHrx8MKFGAk=
gorm.io/driver/sqlserver v1.3.2/go.mod h1:w25Vrx2BG+CJNUu/xKbFhaKlGxT/nzRkhWCCoptX8tQ=
gorm.io/gorm v0.2.19/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v0.2.19/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
gorm.io/gorm v0.2.23/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v0.2.23/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
gorm.io/gorm v1.9.19/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.9.19/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
gorm.io/gorm v1.20.7/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.20.7/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
gorm.io/gorm v1.20.11 h1:jYHQ0LLUViV85V8dM1TP9VBBkfzKTnuTXDjYObkI6yc= gorm.io/gorm v1.23.1/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
gorm.io/gorm v1.20.11/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.23.4 h1:1BKWM67O6CflSLcwGQR7ccfmC4ebOxQrTfOQGRE9wjg=
gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

26
gin_server_admin/model/assessmentmodel/dutyclass.go

@ -200,6 +200,7 @@ type QualitativeTarget struct {
ParentId int64 `json:"parentid" gorm:"column:q_parent_id;type:bigint(20) unsigned;default:0;not null;comment:归属指标"` ParentId int64 `json:"parentid" gorm:"column:q_parent_id;type:bigint(20) unsigned;default:0;not null;comment:归属指标"`
State int `json:"state" gorm:"column:q_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` State int `json:"state" gorm:"column:q_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
AddTime int64 `json:"addTime" gorm:"column:q_time;type:bigint(20) unsigned;default:0;not null;comment:制定时间"` AddTime int64 `json:"addTime" gorm:"column:q_time;type:bigint(20) unsigned;default:0;not null;comment:制定时间"`
Depart string `json:"depart" gorm:"column:q_depart;type:mediumtext;comment:关联部门"`
} }
func (QualitativeTarget *QualitativeTarget) TableName() string { func (QualitativeTarget *QualitativeTarget) TableName() string {
@ -215,6 +216,10 @@ type DetailedTarget struct {
ParentIdSun int64 `json:"parentidsun" gorm:"column:dt_parentid_sun;type:bigint(20) unsigned;default:0;not null;comment:归属指标子栏目"` ParentIdSun int64 `json:"parentidsun" gorm:"column:dt_parentid_sun;type:bigint(20) unsigned;default:0;not null;comment:归属指标子栏目"`
State int `json:"state" gorm:"column:dt_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"` State int `json:"state" gorm:"column:dt_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
AddTime int64 `json:"addtime" gorm:"column:dt_time;type:bigint(20) unsigned;default:0;not null;comment:制定时间"` AddTime int64 `json:"addtime" gorm:"column:dt_time;type:bigint(20) unsigned;default:0;not null;comment:制定时间"`
MinScore int64 `json:"minscore" gorm:"column:dt_min_score;type:bigint(20) unsigned;default:0;not null;comment:最小分*100保存"`
MaxScore int64 `json:"maxscore" gorm:"column:dt_max_score;type:bigint(20) unsigned;default:0;not null;comment:最大分*100保存"`
Company string `json:"company" gorm:"column:dt_company;type:varchar(20) unsigned;default:0;not null;comment:单位"`
AddReduce int `json:"addreduce" gorm:"column:dt_add_reduce;type:int(1) unsigned;default:1;not null;comment:1:减少;2:增加;3:无属性,现场确认加或减"`
} }
func (DetailedTarget *DetailedTarget) TableName() string { func (DetailedTarget *DetailedTarget) TableName() string {
@ -253,12 +258,14 @@ type QualitativeEvaluation struct {
Addtime int64 `json:"addtime" gorm:"column:qe_addtime;type:bigint(20) unsigned;default:0;not null;comment:添加时间"` Addtime int64 `json:"addtime" gorm:"column:qe_addtime;type:bigint(20) unsigned;default:0;not null;comment:添加时间"`
Eitetime int64 `json:"eitetime" gorm:"column:qe_eitetime;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"` Eitetime int64 `json:"eitetime" gorm:"column:qe_eitetime;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"`
Group int64 `json:"group" gorm:"column:qe_group;type:bigint(20) unsigned;default:0;not null;comment:归属集团"` Group int64 `json:"group" gorm:"column:qe_group;type:bigint(20) unsigned;default:0;not null;comment:归属集团"`
QualEvalId int64 `json:"qualevalid" gorm:"column:qe_qual_eval_id;type:bigint(20) unsigned;default:0;not null;comment:性质考核方案"` QualEvalId string `json:"qualevalid" gorm:"column:qe_qual_eval_id;type:varchar(200) unsigned;default:0;not null;comment:性质考核方案"`
Cycles int `json:"cycle" gorm:"column:qe_cycle;type:tinyint(1) unsigned;default:1;not null;comment:1:班;2:天;3:周;4:月;5:季度;6:年"` Cycles int `json:"cycle" gorm:"column:qe_cycle;type:tinyint(1) unsigned;default:1;not null;comment:1:班;2:天;3:周;4:月;5:季度;6:年"`
CycleAttres int `json:"cycleattr" gorm:"column:qe_cycleattr;type:int(9) unsigned;default:1;not null;comment:辅助计数"` CycleAttres int `json:"cycleattr" gorm:"column:qe_cycleattr;type:int(9) unsigned;default:1;not null;comment:辅助计数"`
AcceptEvaluation int64 `json:"acceptevaluation" gorm:"column:qe_accept_evaluation;type:bigint(20) unsigned;default:0;not null;comment:接受考核部门"` AcceptEvaluation int64 `json:"acceptevaluation" gorm:"column:qe_accept_evaluation;type:bigint(20) unsigned;default:0;not null;comment:接受考核部门"`
Operator string `json:"operator" gorm:"column:qe_operator;type:text;comment:执行人"` Operator string `json:"operator" gorm:"column:qe_operator;type:text;comment:执行人"`
Content string `json:"content" gorm:"column:qe_content;type:text;comment:补充说明"` Content string `json:"content" gorm:"column:qe_content;type:text;comment:补充说明"`
MinScore int64 `json:"minscore" gorm:"column:qe_min_score;type:bigint(20) unsigned;default:0;not null;comment:最小分*100保存"`
MaxScore int64 `json:"maxscore" gorm:"column:qe_max_score;type:bigint(20) unsigned;default:0;not null;comment:最大分*100保存"`
} }
func (QualitativeEvaluation *QualitativeEvaluation) TableName() string { func (QualitativeEvaluation *QualitativeEvaluation) TableName() string {
@ -376,3 +383,20 @@ type Assesstarget struct {
func (Assesstarget *Assesstarget) TableName() string { func (Assesstarget *Assesstarget) TableName() string {
return "assesstarget" return "assesstarget"
} }
//考核方案版本管理
type PlanVersio struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"`
Group int64 `json:"group" gorm:"column:group;type:bigint(20) unsigned;default:0;not null;comment:集团ID"`
Department int64 `json:"department" gorm:"column:department;type:bigint(20) unsigned;default:0;comment:部门ID"`
Year int64 `json:"year" gorm:"column:yeares;type:int(5) unsigned;default:0;not null;comment:年度"`
Versio string `json:"versio" gorm:"column:versio;type:varchar(20) unsigned;default:0;not null;comment:版本号"`
Key string `json:"key" gorm:"column:key;type:varchar(200) unsigned;default:0;not null;comment:编码"`
State int `json:"state" gorm:"column:state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
AddTime int64 `json:"addtime" gorm:"column:addtime;type:bigint(20) unsigned;default:0;not null;comment:创建时间"`
EiteTime int64 `json:"eitetime" gorm:"column:eitetime;type:bigint(20) unsigned;default:0;not null;comment:修改时间"`
}
func (PlanVersio *PlanVersio) TableName() string {
return "plan_versio"
}

1
gin_server_admin/model/assessmentmodel/performance_appraisal.go

@ -24,6 +24,7 @@ type ScoreFlow struct {
Reply int `json:"reply" gorm:"column:sf_reply;type:int(2) unsigned;default:1;not null;comment:状态(0:删除;1:起草;2:审批;3:通过)"` Reply int `json:"reply" gorm:"column:sf_reply;type:int(2) unsigned;default:1;not null;comment:状态(0:删除;1:起草;2:审批;3:通过)"`
Rectification int `json:"rectification" gorm:"column:sf_rectification;type:tinyint(1) unsigned;default:1;not null;comment:1、需要整改;2:无需整改"` Rectification int `json:"rectification" gorm:"column:sf_rectification;type:tinyint(1) unsigned;default:1;not null;comment:1、需要整改;2:无需整改"`
HappenTime int64 `json:"happentime" gorm:"column:sf_happen_time;type:bigint(20) unsigned;default:0;not null;comment:发生时间"` HappenTime int64 `json:"happentime" gorm:"column:sf_happen_time;type:bigint(20) unsigned;default:0;not null;comment:发生时间"`
Count int `json:"count" gorm:"column:sf_count;type:int(5) unsigned;default:1;not null;comment:发生次数"`
} }
func (ScoreFlow *ScoreFlow) TableName() string { func (ScoreFlow *ScoreFlow) TableName() string {

4
gin_server_admin/router/assessment/assessmentrouter.go

@ -202,5 +202,9 @@ func (s *AssessmentRouter) InitEvaluationRouter(Router *gin.RouterGroup) {
dutyIndexCodeRouter.POST("lookquantitativeconfig", authorityIndexApi.LookQuantitativeConfig) // 查看定量考核目标设定 dutyIndexCodeRouter.POST("lookquantitativeconfig", authorityIndexApi.LookQuantitativeConfig) // 查看定量考核目标设定
dutyIndexCodeRouter.POST("seeflowlog", authorityIndexApi.SeeFlowLog) // 流程列表 dutyIndexCodeRouter.POST("seeflowlog", authorityIndexApi.SeeFlowLog) // 流程列表
//考核新接口
dutyIndexCodeRouter.POST("newqualitative", authorityIndexApi.NewQualitative) // 新定性考核列表
dutyIndexCodeRouter.POST("newgetqualdetailedtarget", authorityIndexApi.NewGetQualDetailedTarget) //获取新定性考核详细指标
} }
} }

2
gin_server_admin/router/shiyan/sys_shiyan.go

@ -34,5 +34,7 @@ func (s *ShiyanRouter) InitShiyanRouter(Router *gin.RouterGroup) {
shiyanCodeRouter.POST("textshiyan", authorityApi.TextShiyan) //比对文本 shiyanCodeRouter.POST("textshiyan", authorityApi.TextShiyan) //比对文本
shiyanCodeRouter.POST("jiami", authorityApi.JiaMi) //比对文本 shiyanCodeRouter.POST("jiami", authorityApi.JiaMi) //比对文本
shiyanCodeRouter.POST("suntar", authorityApi.SunTar)
} }
} }

18
gin_server_admin/router/systemadmin/dutyassess.go

@ -30,6 +30,24 @@ func (a *AdminRouter) InitStaffRouter(Router *gin.RouterGroup) {
adminRouter.POST("delsuntardimeat", authorityApi.DelSunTarDimeat) //删除定性考核指标子栏目 adminRouter.POST("delsuntardimeat", authorityApi.DelSunTarDimeat) //删除定性考核指标子栏目
adminRouter.POST("adddutyrelation", authorityApi.AddDutyRelation) //添加 定性考核指标关系指定 adminRouter.POST("adddutyrelation", authorityApi.AddDutyRelation) //添加 定性考核指标关系指定
adminRouter.POST("getdutyrelationlist", authorityApi.GetDutyRelationList) //获取定性考核指标关系指定列表 adminRouter.POST("getdutyrelationlist", authorityApi.GetDutyRelationList) //获取定性考核指标关系指定列表
adminRouter.POST("lookdutytargetinfo", authorityApi.LookDutyTargetInfo) //查看定性考核项目详情
adminRouter.POST("newdeltarget", authorityApi.NewDelTarGet) //删除定性考核指标(NEW)
adminRouter.POST("getneweitedetailedtarget", authorityApi.GetNewEiteDetailedTarget) //获取被修改指标细则的详情(NEW)
adminRouter.POST("neweitedetailedtarget", authorityApi.NewEiteDetailedTarget) //修改或添加定性考核指标细则内容(NEW)
adminRouter.POST("newdeldetailedtarget", authorityApi.NewDelDetailedTarget) //删除指标细则内容(NEW)
adminRouter.POST("newdelsuntarget", authorityApi.NewDelSunTarget) //删除子栏目(NEW)
adminRouter.POST("newgerderpattarlist", authorityApi.NewGerDerpatTarList) //新的部门考核指标获取列表
adminRouter.POST("newadddepartduty", authorityApi.NewAddDepartDuty) //部门考核添加。NEW
adminRouter.POST("deldepartdutytarger", authorityApi.DelDepartDutyTarger) //删除部门考核指标(New)
adminRouter.POST("deldepartduty", authorityApi.DelDepartDuty) //删除部门考核(New)
adminRouter.POST("getdepartforduty", authorityApi.GetDepartForDuty) //获取定性考核相关部门
adminRouter.POST("eitedepartforduty", authorityApi.EiteDepartForDuty) //修改已知定性考核指标关联部门
adminRouter.POST("departdutyplanversion", authorityApi.DepartDutyPlanVersion) //部门考核方案版本列表
adminRouter.POST("adddepartdutyversio", authorityApi.AddDepartDutyVersio) //添加部门考核方案(待版本号的版本)
adminRouter.POST("lookdepartdutyversio", authorityApi.LookDepartDutyVersio) //查看考核方案(待版本号的版本)
adminRouter.POST("onoffdepartdutyversio", authorityApi.OnOffDepartDutyVersio) //启用禁用删除(待版本号的版本)
adminRouter.POST("eitedepartexplain", authorityApi.EiteDepartExplain) //修改部门考核方案内的说明(待版本号的版本)
} }
} }

2
gin_server_admin/scheduledtask/time_task.go

@ -20,7 +20,7 @@ func TimeTask() {
加载任务场景 加载任务场景
AddFunc("任务时间格式","执行的任务") AddFunc("任务时间格式","执行的任务")
*/ */
c.AddFunc("0 */10 * * * *", func() { c.AddFunc("0 0 8 * * *", func() {
fmt.Printf("执行定时任务------>%v\n", time.Now().UTC()) fmt.Printf("执行定时任务------>%v\n", time.Now().UTC())
}) //每3秒执行一个任务 }) //每3秒执行一个任务
//启动 //启动

Loading…
Cancel
Save