正在显示
21 个修改的文件
包含
366 行增加
和
59 行删除
pkg/application/notify/app_message_test.go
0 → 100644
1 | package notify | 1 | package notify |
2 | 2 | ||
3 | -import "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | 3 | +import ( |
4 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | ||
6 | +) | ||
4 | 7 | ||
5 | // 执行定时任务检查是否发送短信通知 | 8 | // 执行定时任务检查是否发送短信通知 |
6 | var taskSmsNotify *notifySms | 9 | var taskSmsNotify *notifySms |
@@ -11,6 +14,7 @@ func RunTaskSmsNotify() { | @@ -11,6 +14,7 @@ func RunTaskSmsNotify() { | ||
11 | taskSmsNotify.init() | 14 | taskSmsNotify.init() |
12 | taskSmsNotify.regist(notifyStaffAssess{}) | 15 | taskSmsNotify.regist(notifyStaffAssess{}) |
13 | taskSmsNotify.regist(notifySummaryEvaluation{}) | 16 | taskSmsNotify.regist(notifySummaryEvaluation{}) |
17 | + taskSmsNotify.regist(notifyConfirmEvaluationScore{}) | ||
14 | taskSmsNotify.runTask() | 18 | taskSmsNotify.runTask() |
15 | } | 19 | } |
16 | 20 | ||
@@ -27,3 +31,33 @@ func AddNotifySummaryEvaluation(param *domain.SummaryEvaluation) { | @@ -27,3 +31,33 @@ func AddNotifySummaryEvaluation(param *domain.SummaryEvaluation) { | ||
27 | newSms := newNotify.makeNotify(param) | 31 | newSms := newNotify.makeNotify(param) |
28 | taskSmsNotify.addTask(newSms) | 32 | taskSmsNotify.addTask(newSms) |
29 | } | 33 | } |
34 | + | ||
35 | +// 确认周期评估短信提醒 ,预创建待发送的短信消息 | ||
36 | +func AddNotifyConfirmEvaluationScore(param *domain.SummaryEvaluation) error { | ||
37 | + newNotify := notifyConfirmEvaluationScore{} | ||
38 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
39 | + if err != nil { | ||
40 | + return err | ||
41 | + } | ||
42 | + if err := transactionContext.StartTransaction(); err != nil { | ||
43 | + return err | ||
44 | + } | ||
45 | + defer func() { | ||
46 | + _ = transactionContext.RollbackTransaction() | ||
47 | + }() | ||
48 | + logSmsRepo := factory.CreateLogSmsRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
49 | + | ||
50 | + cnt, _, err := logSmsRepo.Find(map[string]interface{}{"from": newNotify.from(), "index": param.Id, "limit": 1}) | ||
51 | + if err != nil { | ||
52 | + return err | ||
53 | + } | ||
54 | + if cnt > 0 { | ||
55 | + return nil | ||
56 | + } | ||
57 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
58 | + return err | ||
59 | + } | ||
60 | + | ||
61 | + newSms := newNotify.makeNotify(param) | ||
62 | + return taskSmsNotify.addTask(newSms) | ||
63 | +} |
@@ -36,17 +36,22 @@ func (notices *notifySms) regist(ifsend notifySendOrNot) { | @@ -36,17 +36,22 @@ func (notices *notifySms) regist(ifsend notifySendOrNot) { | ||
36 | notices.sendOrNot[ifsend.from()] = ifsend | 36 | notices.sendOrNot[ifsend.from()] = ifsend |
37 | } | 37 | } |
38 | 38 | ||
39 | -func (notices *notifySms) addTask(task *domain.LogSms) { | 39 | +func (notices *notifySms) addTask(task *domain.LogSms) error { |
40 | // notices.newSms <- task | 40 | // notices.newSms <- task |
41 | err := notices.addNewSms(task) | 41 | err := notices.addNewSms(task) |
42 | if err != nil { | 42 | if err != nil { |
43 | e := fmt.Sprintf("添加短信通知任务:%+v %s", task, err) | 43 | e := fmt.Sprintf("添加短信通知任务:%+v %s", task, err) |
44 | log.Logger.Error(e) | 44 | log.Logger.Error(e) |
45 | + return fmt.Errorf("添加短信通知任务:%s", err) | ||
45 | } | 46 | } |
47 | + return nil | ||
46 | } | 48 | } |
47 | 49 | ||
48 | // RunTask 执行短信通知任务 | 50 | // RunTask 执行短信通知任务 |
49 | func (notices *notifySms) runTask() { | 51 | func (notices *notifySms) runTask() { |
52 | + if constant.Env != "prd" { | ||
53 | + return | ||
54 | + } | ||
50 | timer := time.NewTimer(notices.interval) | 55 | timer := time.NewTimer(notices.interval) |
51 | for { | 56 | for { |
52 | select { | 57 | select { |
@@ -108,8 +113,9 @@ func (notices *notifySms) checkSendSms() error { | @@ -108,8 +113,9 @@ func (notices *notifySms) checkSendSms() error { | ||
108 | nowDay := dayZeroTime(nowTime) | 113 | nowDay := dayZeroTime(nowTime) |
109 | _, logSmsList, err := logSmsRepo.Find(map[string]interface{}{ | 114 | _, logSmsList, err := logSmsRepo.Find(map[string]interface{}{ |
110 | "status": string(domain.SmsWait), | 115 | "status": string(domain.SmsWait), |
111 | - "executeAtBegin": nowDay, | ||
112 | "executeAtEnd": nowTime, | 116 | "executeAtEnd": nowTime, |
117 | + "executeAtBegin": nowDay, | ||
118 | + "limit": 1000, | ||
113 | }) | 119 | }) |
114 | if err != nil { | 120 | if err != nil { |
115 | return err | 121 | return err |
@@ -130,9 +136,7 @@ func (notices *notifySms) checkSendSms() error { | @@ -130,9 +136,7 @@ func (notices *notifySms) checkSendSms() error { | ||
130 | 136 | ||
131 | // sendSms 发送短信消息 | 137 | // sendSms 发送短信消息 |
132 | func (notices *notifySms) sendSms(param *domain.LogSms) error { | 138 | func (notices *notifySms) sendSms(param *domain.LogSms) error { |
133 | - if constant.Env != "prd" { | ||
134 | - return nil | ||
135 | - } | 139 | + |
136 | //单开处理 数据保存操作,发一条短信更新一条数据 | 140 | //单开处理 数据保存操作,发一条短信更新一条数据 |
137 | transactionContext, err := factory.CreateTransactionContext(nil) | 141 | transactionContext, err := factory.CreateTransactionContext(nil) |
138 | if err != nil { | 142 | if err != nil { |
@@ -151,6 +155,7 @@ func (notices *notifySms) sendSms(param *domain.LogSms) error { | @@ -151,6 +155,7 @@ func (notices *notifySms) sendSms(param *domain.LogSms) error { | ||
151 | if ok { | 155 | if ok { |
152 | ok, err := sendOrNot.ifSend(param.Index) | 156 | ok, err := sendOrNot.ifSend(param.Index) |
153 | if err != nil { | 157 | if err != nil { |
158 | + log.Logger.Error("检查短信是否发送" + err.Error()) | ||
154 | param.Result = err.Error() | 159 | param.Result = err.Error() |
155 | } | 160 | } |
156 | sendOk = ok | 161 | sendOk = ok |
@@ -163,6 +168,7 @@ func (notices *notifySms) sendSms(param *domain.LogSms) error { | @@ -163,6 +168,7 @@ func (notices *notifySms) sendSms(param *domain.LogSms) error { | ||
163 | sms := serviceGateway.SmsService{} | 168 | sms := serviceGateway.SmsService{} |
164 | err = sms.SendNoticeSms(param.Phone, param.TemplateId, param.Value) | 169 | err = sms.SendNoticeSms(param.Phone, param.TemplateId, param.Value) |
165 | if err != nil { | 170 | if err != nil { |
171 | + log.Logger.Error("短信发送出错" + err.Error()) | ||
166 | param.Result = err.Error() | 172 | param.Result = err.Error() |
167 | param.Status = domain.SmsSuccess | 173 | param.Status = domain.SmsSuccess |
168 | } else { | 174 | } else { |
1 | +package notify | ||
2 | + | ||
3 | +import ( | ||
4 | + "time" | ||
5 | + | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | ||
8 | +) | ||
9 | + | ||
10 | +// 短信提醒确认周期评估成绩 | ||
11 | +// 条件:上级提交评估后 到10号晚23:59前,对未确认的被评估人每隔6个小时进行提醒(23:00-7:00期间不提醒),直到确认 | ||
12 | +type notifyConfirmEvaluationScore struct { | ||
13 | +} | ||
14 | + | ||
15 | +var _ notifySendOrNot = (*notifyConfirmEvaluationScore)(nil) | ||
16 | + | ||
17 | +func (notices notifyConfirmEvaluationScore) from() string { | ||
18 | + return "ConfirmEvaluationScore" | ||
19 | +} | ||
20 | + | ||
21 | +func (notices notifyConfirmEvaluationScore) makeNotify(param *domain.SummaryEvaluation) *domain.LogSms { | ||
22 | + newSms := domain.LogSms{ | ||
23 | + Id: 0, | ||
24 | + Phone: param.Executor.Account, | ||
25 | + TemplateId: 5634326, | ||
26 | + Template: "您好,#name#,#periodName#成绩已出,请前往绩效系统PC端进行确认哦,超时未确认可能会影响当月绩效工资哦~ ", | ||
27 | + Value: map[string]string{ | ||
28 | + "name": param.Executor.UserName, | ||
29 | + "periodName": param.CycleName, | ||
30 | + }, | ||
31 | + Result: "", | ||
32 | + Status: domain.SmsWait, | ||
33 | + From: notices.from(), | ||
34 | + Index: param.Id, | ||
35 | + ExecuteAt: notices.getTimeExecuteAt(time.Now()), | ||
36 | + CreatedAt: time.Now(), | ||
37 | + } | ||
38 | + return &newSms | ||
39 | +} | ||
40 | + | ||
41 | +// 适配规则:上级提交评估后 到10号晚23:59前,可以发送 | ||
42 | +// 适配规则 对未确认的被评估人每隔6个小时进行提醒(23:00-7:00期间不提醒),直到确认 | ||
43 | +func (notices notifyConfirmEvaluationScore) ifSend(index int) (bool, error) { | ||
44 | + | ||
45 | + //检查时间 | ||
46 | + nowTime := time.Now() | ||
47 | + if nowTime.Day() > 10 { | ||
48 | + return false, nil | ||
49 | + } | ||
50 | + | ||
51 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
52 | + if err != nil { | ||
53 | + return false, err | ||
54 | + } | ||
55 | + if err := transactionContext.StartTransaction(); err != nil { | ||
56 | + return false, err | ||
57 | + } | ||
58 | + defer func() { | ||
59 | + _ = transactionContext.RollbackTransaction() | ||
60 | + }() | ||
61 | + summaryEvaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
62 | + summaryEvaluationData, err := summaryEvaluationRepo.FindOne(map[string]interface{}{"id": index}) | ||
63 | + if err != nil { | ||
64 | + return false, err | ||
65 | + } | ||
66 | + if summaryEvaluationData.Types == domain.EvaluationFinish { | ||
67 | + return false, nil | ||
68 | + } | ||
69 | + //已确认 成绩,不在发送成绩 | ||
70 | + if summaryEvaluationData.CheckResult == domain.EvaluationCheckCompleted { | ||
71 | + return false, nil | ||
72 | + } | ||
73 | + | ||
74 | + //检查数据 SummaryEvaluation ,types=5,并添加短信数据 | ||
75 | + //计算下一条短信 | ||
76 | + smsMessage := notices.makeNotify(summaryEvaluationData) | ||
77 | + | ||
78 | + nextTime := nowTime.Add(6 * time.Hour) | ||
79 | + smsMessage.ExecuteAt = notices.getTimeExecuteAt(nextTime) | ||
80 | + logSmsRepo := factory.CreateLogSmsRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
81 | + err = logSmsRepo.Save(smsMessage) | ||
82 | + if err != nil { | ||
83 | + return true, err | ||
84 | + } | ||
85 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
86 | + return false, err | ||
87 | + } | ||
88 | + | ||
89 | + return true, nil | ||
90 | +} | ||
91 | + | ||
92 | +// 输入的时间为基础微调短信的执行时间 | ||
93 | +// 适配规则 :每隔6个小时进行提醒(23:00-7:00期间不提醒) | ||
94 | +func (notices notifyConfirmEvaluationScore) getTimeExecuteAt(nowTime time.Time) time.Time { | ||
95 | + nowHour := nowTime.Local().Hour() | ||
96 | + if nowHour < 23 && nowHour >= 7 { | ||
97 | + return nowTime | ||
98 | + } | ||
99 | + t1 := nowTime.Add(6 * time.Hour) | ||
100 | + hour1 := t1.Local().Hour() | ||
101 | + if hour1 < 23 && hour1 >= 7 { | ||
102 | + return t1 | ||
103 | + } | ||
104 | + | ||
105 | + return t1.Add(6 * time.Hour) | ||
106 | + | ||
107 | +} |
@@ -11,6 +11,8 @@ import ( | @@ -11,6 +11,8 @@ import ( | ||
11 | type notifyStaffAssess struct { | 11 | type notifyStaffAssess struct { |
12 | } | 12 | } |
13 | 13 | ||
14 | +var _ notifySendOrNot = (*notifyStaffAssess)(nil) | ||
15 | + | ||
14 | func (notices notifyStaffAssess) from() string { | 16 | func (notices notifyStaffAssess) from() string { |
15 | return "StaffAssess" | 17 | return "StaffAssess" |
16 | } | 18 | } |
@@ -12,6 +12,8 @@ import ( | @@ -12,6 +12,8 @@ import ( | ||
12 | type notifySummaryEvaluation struct { | 12 | type notifySummaryEvaluation struct { |
13 | } | 13 | } |
14 | 14 | ||
15 | +var _ notifySendOrNot = (*notifySummaryEvaluation)(nil) | ||
16 | + | ||
15 | func (notices notifySummaryEvaluation) from() string { | 17 | func (notices notifySummaryEvaluation) from() string { |
16 | return "SummaryEvaluation" | 18 | return "SummaryEvaluation" |
17 | } | 19 | } |
@@ -205,7 +205,10 @@ func (e *exportData3) FormatListValue(param []dao.DataStaffAssessContent2) { | @@ -205,7 +205,10 @@ func (e *exportData3) FormatListValue(param []dao.DataStaffAssessContent2) { | ||
205 | e.data[key] = &strings.Builder{} | 205 | e.data[key] = &strings.Builder{} |
206 | e.data[key].WriteString(val.Value + "\n") //填写的等级 | 206 | e.data[key].WriteString(val.Value + "\n") //填写的等级 |
207 | for _, vv := range val.Remark { | 207 | for _, vv := range val.Remark { |
208 | - e.data[key].WriteString(vv.Title + "\n") | 208 | + vv.Title = strings.TrimSpace(vv.Title) |
209 | + if vv.Title != "填写自评反馈" { | ||
210 | + e.data[key].WriteString(vv.Title + "\n") | ||
211 | + } | ||
209 | e.data[key].WriteString(vv.RemarkText + "\n") | 212 | e.data[key].WriteString(vv.RemarkText + "\n") |
210 | } | 213 | } |
211 | dayKey := val.TargetUserId + val.EvaluationProjectId + val.BeginDay | 214 | dayKey := val.TargetUserId + val.EvaluationProjectId + val.BeginDay |
@@ -174,7 +174,10 @@ func (e *exportData2) setData(param []dao.ExportData1) { | @@ -174,7 +174,10 @@ func (e *exportData2) setData(param []dao.ExportData1) { | ||
174 | e.data[key] = &strings.Builder{} | 174 | e.data[key] = &strings.Builder{} |
175 | e.data[key].WriteString(v.Value + "\n") | 175 | e.data[key].WriteString(v.Value + "\n") |
176 | for _, v2 := range v.Remark { | 176 | for _, v2 := range v.Remark { |
177 | - e.data[key].WriteString(v2.Title + "\n") | 177 | + v2.Title = strings.TrimSpace(v2.Title) |
178 | + if v2.Title != "填写自评反馈" { | ||
179 | + e.data[key].WriteString(v2.Title + "\n") | ||
180 | + } | ||
178 | e.data[key].WriteString(v2.RemarkText + "\n") | 181 | e.data[key].WriteString(v2.RemarkText + "\n") |
179 | } | 182 | } |
180 | } | 183 | } |
@@ -7,6 +7,7 @@ type EvaluationSuperListAdapter struct { | @@ -7,6 +7,7 @@ type EvaluationSuperListAdapter struct { | ||
7 | EvaluationStatus string `json:"evaluationStatus"` //上级评估完成状态 | 7 | EvaluationStatus string `json:"evaluationStatus"` //上级评估完成状态 |
8 | EndTime string `json:"endTime"` //截止时间 | 8 | EndTime string `json:"endTime"` //截止时间 |
9 | TotalScoreSelf string `json:"totalScoreSelf"` //综合自评总分 | 9 | TotalScoreSelf string `json:"totalScoreSelf"` //综合自评总分 |
10 | + TotalScoreSuper string `json:"totalScoreSuper"` //综合自评总分 | ||
10 | Department string `json:"department"` //部门 | 11 | Department string `json:"department"` //部门 |
11 | Position string `json:"position"` //职位 | 12 | Position string `json:"position"` //职位 |
12 | EntryTime string `json:"entryTime"` //入职时间 | 13 | EntryTime string `json:"entryTime"` //入职时间 |
@@ -50,18 +50,18 @@ func (srv *SummaryEvaluationService) ExportAllEvaluationFinish(param *command.Qu | @@ -50,18 +50,18 @@ func (srv *SummaryEvaluationService) ExportAllEvaluationFinish(param *command.Qu | ||
50 | positionRepo := factory.CreatePositionRepository(map[string]interface{}{ | 50 | positionRepo := factory.CreatePositionRepository(map[string]interface{}{ |
51 | "transactionContext": transactionContext, | 51 | "transactionContext": transactionContext, |
52 | }) | 52 | }) |
53 | - limit := param.PageSize | ||
54 | - offset := (param.PageNumber - 1) * param.PageSize | 53 | + // limit := param.PageSize |
54 | + // offset := (param.PageNumber - 1) * param.PageSize | ||
55 | 55 | ||
56 | //获取评估列表信息 | 56 | //获取评估列表信息 |
57 | condition1 := map[string]interface{}{ | 57 | condition1 := map[string]interface{}{ |
58 | "cycleId": param.CycleId, | 58 | "cycleId": param.CycleId, |
59 | "types": int(domain.EvaluationFinish), | 59 | "types": int(domain.EvaluationFinish), |
60 | - "limit": limit, | ||
61 | - } | ||
62 | - if offset > 0 { | ||
63 | - condition1["offset"] = offset | 60 | + "limit": 5000, |
64 | } | 61 | } |
62 | + // if offset > 0 { | ||
63 | + // condition1["offset"] = offset | ||
64 | + // } | ||
65 | if len(param.TargetUserName) > 0 { | 65 | if len(param.TargetUserName) > 0 { |
66 | condition1["targetUserName"] = "%" + param.TargetUserName + "%" | 66 | condition1["targetUserName"] = "%" + param.TargetUserName + "%" |
67 | } | 67 | } |
@@ -147,6 +147,8 @@ func (srv *SummaryEvaluationService) ExportAllEvaluationFinish(param *command.Qu | @@ -147,6 +147,8 @@ func (srv *SummaryEvaluationService) ExportAllEvaluationFinish(param *command.Qu | ||
147 | firstSheetName := xlsxFile.GetSheetName(sheetIndex) | 147 | firstSheetName := xlsxFile.GetSheetName(sheetIndex) |
148 | tableHead := []string{"姓名", "部门", "职位", "最终绩效得分"} | 148 | tableHead := []string{"姓名", "部门", "职位", "最终绩效得分"} |
149 | tableHead = append(tableHead, ratingHeader...) | 149 | tableHead = append(tableHead, ratingHeader...) |
150 | + // 最后一列 | ||
151 | + tableHead = append(tableHead, "备注") | ||
150 | if len(evaluationList) > 0 { | 152 | if len(evaluationList) > 0 { |
151 | xlsxFile.SetSheetRow(firstSheetName, "A1", &[]string{evaluationList[0].CycleName + "最终成绩"}) | 153 | xlsxFile.SetSheetRow(firstSheetName, "A1", &[]string{evaluationList[0].CycleName + "最终成绩"}) |
152 | if len(tableHead) > 1 { | 154 | if len(tableHead) > 1 { |
@@ -171,7 +173,7 @@ func (srv *SummaryEvaluationService) ExportAllEvaluationFinish(param *command.Qu | @@ -171,7 +173,7 @@ func (srv *SummaryEvaluationService) ExportAllEvaluationFinish(param *command.Qu | ||
171 | } | 173 | } |
172 | } | 174 | } |
173 | } | 175 | } |
174 | - dataRaw := []string{ | 176 | + dataRow := []string{ |
175 | v.TargetUser.UserName, | 177 | v.TargetUser.UserName, |
176 | departmentName, | 178 | departmentName, |
177 | positinName, | 179 | positinName, |
@@ -179,12 +181,18 @@ func (srv *SummaryEvaluationService) ExportAllEvaluationFinish(param *command.Qu | @@ -179,12 +181,18 @@ func (srv *SummaryEvaluationService) ExportAllEvaluationFinish(param *command.Qu | ||
179 | } | 181 | } |
180 | for _, v2 := range ratingHeader { | 182 | for _, v2 := range ratingHeader { |
181 | if num, ok := evaluationRatingMap[v.Id][v2]; ok { | 183 | if num, ok := evaluationRatingMap[v.Id][v2]; ok { |
182 | - dataRaw = append(dataRaw, fmt.Sprintf("%d", num)) | 184 | + dataRow = append(dataRow, fmt.Sprintf("%d", num)) |
183 | } else { | 185 | } else { |
184 | - dataRaw = append(dataRaw, "0") | 186 | + dataRow = append(dataRow, "0") |
185 | } | 187 | } |
186 | } | 188 | } |
187 | - xlsxFile.SetSheetRow(firstSheetName, fmt.Sprintf("A%d", i+firstDataRow), &dataRaw) | 189 | + if v.CheckResult == domain.EvaluationCheckCompleted { |
190 | + dataRow = append(dataRow, "已确认") | ||
191 | + } else { | ||
192 | + dataRow = append(dataRow, "未确认") | ||
193 | + } | ||
194 | + //最后一列 | ||
195 | + xlsxFile.SetSheetRow(firstSheetName, fmt.Sprintf("A%d", i+firstDataRow), &dataRow) | ||
188 | } | 196 | } |
189 | return xlsxFile, nil | 197 | return xlsxFile, nil |
190 | } | 198 | } |
@@ -10,6 +10,7 @@ import ( | @@ -10,6 +10,7 @@ import ( | ||
10 | "github.com/linmadan/egglib-go/core/application" | 10 | "github.com/linmadan/egglib-go/core/application" |
11 | "github.com/linmadan/egglib-go/utils/tool_funs" | 11 | "github.com/linmadan/egglib-go/utils/tool_funs" |
12 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | 12 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" |
13 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/notify" | ||
13 | roleService "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role" | 14 | roleService "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role" |
14 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/adapter" | 15 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/adapter" |
15 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" | 16 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" |
@@ -647,7 +648,7 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluationSelf(param *domain. | @@ -647,7 +648,7 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluationSelf(param *domain. | ||
647 | if len(evaluationList) == 0 { | 648 | if len(evaluationList) == 0 { |
648 | //没有上级评估、360评估、hrbp 评估 | 649 | //没有上级评估、360评估、hrbp 评估 |
649 | //直接进入考核结果阶段 | 650 | //直接进入考核结果阶段 |
650 | - _, evaluationList, err = evaluationRepo.Find(map[string]interface{}{ | 651 | + _, evaluationFinishList, err := evaluationRepo.Find(map[string]interface{}{ |
651 | "targetUserId": param.TargetUser.UserId, | 652 | "targetUserId": param.TargetUser.UserId, |
652 | "typesList": []int{int(domain.EvaluationFinish)}, | 653 | "typesList": []int{int(domain.EvaluationFinish)}, |
653 | "cycleId": param.CycleId, | 654 | "cycleId": param.CycleId, |
@@ -656,12 +657,14 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluationSelf(param *domain. | @@ -656,12 +657,14 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluationSelf(param *domain. | ||
656 | if err != nil { | 657 | if err != nil { |
657 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 658 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
658 | } | 659 | } |
659 | - if len(evaluationList) > 0 { | 660 | + if len(evaluationFinishList) > 0 { |
660 | //进入考核结果 | 661 | //进入考核结果 |
661 | //自评的结束时间 | 662 | //自评的结束时间 |
662 | - evaluationList[0].BeginTime = param.EndTime | ||
663 | - evaluationList[0].Status = domain.EvaluationCompleted | ||
664 | - err = evaluationRepo.Save(evaluationList[0]) | 663 | + if evaluationFinishList[0].BeginTime.After(nowTime) { |
664 | + evaluationFinishList[0].BeginTime = nowTime | ||
665 | + } | ||
666 | + evaluationFinishList[0].Status = domain.EvaluationCompleted | ||
667 | + err = evaluationRepo.Save(evaluationFinishList[0]) | ||
665 | if err != nil { | 668 | if err != nil { |
666 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) | 669 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) |
667 | } | 670 | } |
@@ -746,7 +749,7 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluation360Hrbp(param *doma | @@ -746,7 +749,7 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluation360Hrbp(param *doma | ||
746 | if len(evaluationList) == 0 { | 749 | if len(evaluationList) == 0 { |
747 | //没有上级评估 | 750 | //没有上级评估 |
748 | //直接进入考核结果阶段 | 751 | //直接进入考核结果阶段 |
749 | - _, evaluationList, err = evaluationRepo.Find(map[string]interface{}{ | 752 | + _, evaluationFinishList, err := evaluationRepo.Find(map[string]interface{}{ |
750 | "targetUserId": param.TargetUser.UserId, | 753 | "targetUserId": param.TargetUser.UserId, |
751 | "typesList": []int{int(domain.EvaluationFinish)}, | 754 | "typesList": []int{int(domain.EvaluationFinish)}, |
752 | "cycleId": param.CycleId, | 755 | "cycleId": param.CycleId, |
@@ -755,11 +758,12 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluation360Hrbp(param *doma | @@ -755,11 +758,12 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluation360Hrbp(param *doma | ||
755 | if err != nil { | 758 | if err != nil { |
756 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 759 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
757 | } | 760 | } |
758 | - if len(evaluationList) > 0 { | ||
759 | - //360评估的结束时间 | ||
760 | - evaluationList[0].BeginTime = param.EndTime | ||
761 | - evaluationList[0].Status = domain.EvaluationCompleted | ||
762 | - err = evaluationRepo.Save(evaluationList[0]) | 761 | + if len(evaluationFinishList) > 0 { |
762 | + if evaluationFinishList[0].BeginTime.After(nowTime) { | ||
763 | + evaluationFinishList[0].BeginTime = nowTime | ||
764 | + } | ||
765 | + evaluationFinishList[0].Status = domain.EvaluationCompleted | ||
766 | + err = evaluationRepo.Save(evaluationFinishList[0]) | ||
763 | if err != nil { | 767 | if err != nil { |
764 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) | 768 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) |
765 | } | 769 | } |
@@ -810,16 +814,26 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluationSuper(param *domain | @@ -810,16 +814,26 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluationSuper(param *domain | ||
810 | 814 | ||
811 | if len(evaluationList) > 0 { | 815 | if len(evaluationList) > 0 { |
812 | //上级评估的结束时间 | 816 | //上级评估的结束时间 |
813 | - evaluationList[0].BeginTime = param.EndTime | 817 | + // evaluationList[0].BeginTime = param.EndTime |
818 | + nowTime := time.Now() | ||
819 | + if evaluationList[0].BeginTime.After(nowTime) { | ||
820 | + evaluationList[0].BeginTime = nowTime | ||
821 | + } | ||
814 | evaluationList[0].Status = domain.EvaluationCompleted | 822 | evaluationList[0].Status = domain.EvaluationCompleted |
815 | err = evaluationRepo.Save(evaluationList[0]) | 823 | err = evaluationRepo.Save(evaluationList[0]) |
816 | if err != nil { | 824 | if err != nil { |
817 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) | 825 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) |
818 | } | 826 | } |
819 | } | 827 | } |
828 | + | ||
820 | if err := transactionContext.CommitTransaction(); err != nil { | 829 | if err := transactionContext.CommitTransaction(); err != nil { |
821 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 830 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
822 | } | 831 | } |
832 | + //添加确认绩效成绩提醒短信提醒 | ||
833 | + err = notify.AddNotifyConfirmEvaluationScore(param) | ||
834 | + if err != nil { | ||
835 | + return application.ThrowError(application.TRANSACTION_ERROR, "创建短信提醒失败"+err.Error()) | ||
836 | + } | ||
823 | return nil | 837 | return nil |
824 | } | 838 | } |
825 | 839 | ||
@@ -907,7 +921,7 @@ func (srv *SummaryEvaluationService) CountEvaluationSelfLevel(param *command.Que | @@ -907,7 +921,7 @@ func (srv *SummaryEvaluationService) CountEvaluationSelfLevel(param *command.Que | ||
907 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 921 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
908 | } | 922 | } |
909 | if len(evaluationList) == 0 { | 923 | if len(evaluationList) == 0 { |
910 | - return nil, nil | 924 | + return &adapter.EvaluationInfoCountCodeAdapter{}, nil |
911 | } | 925 | } |
912 | evaluationData := evaluationList[0] | 926 | evaluationData := evaluationList[0] |
913 | levelCodeCountList, err := assessDao.CountAssessContentLevelCode(evaluationData.EvaluationProjectId, param.TargetUserId, domain.AssessSelf, param.CycleId) | 927 | levelCodeCountList, err := assessDao.CountAssessContentLevelCode(evaluationData.EvaluationProjectId, param.TargetUserId, domain.AssessSelf, param.CycleId) |
@@ -1007,22 +1021,21 @@ func (srv *SummaryEvaluationService) GetEvaluationSuper(param *command.QueryEval | @@ -1007,22 +1021,21 @@ func (srv *SummaryEvaluationService) GetEvaluationSuper(param *command.QueryEval | ||
1007 | itemValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{ | 1021 | itemValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{ |
1008 | "transactionContext": transactionContext, | 1022 | "transactionContext": transactionContext, |
1009 | }) | 1023 | }) |
1010 | - // permissionRepository := factory.CreatePermissionRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
1011 | - // 获取权限配置 | ||
1012 | - // _, permissionList, err := permissionRepository.Find(map[string]interface{}{"companyId": param.CompanyId}) | ||
1013 | - // if err != nil { | ||
1014 | - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
1015 | - // } | 1024 | + |
1016 | permissinData, err := getPermission(int64(param.CompanyId)) | 1025 | permissinData, err := getPermission(int64(param.CompanyId)) |
1017 | if err != nil { | 1026 | if err != nil { |
1018 | return nil, err | 1027 | return nil, err |
1019 | } | 1028 | } |
1020 | - evaluationData, err := evaluationRepo.FindOne(map[string]interface{}{ | ||
1021 | - "id": param.SummaryEvaluationId, | 1029 | + _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ |
1030 | + "id": []int{param.SummaryEvaluationId}, | ||
1022 | }) | 1031 | }) |
1023 | if err != nil { | 1032 | if err != nil { |
1024 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 1033 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
1025 | } | 1034 | } |
1035 | + if len(evaluationList) == 0 { | ||
1036 | + return &adapter.EvaluationInfoSuperAdapter{}, nil | ||
1037 | + } | ||
1038 | + evaluationData := evaluationList[0] | ||
1026 | if evaluationData.Types != domain.EvaluationSuper { | 1039 | if evaluationData.Types != domain.EvaluationSuper { |
1027 | return nil, application.ThrowError(application.BUSINESS_ERROR, "没有操作权限") | 1040 | return nil, application.ThrowError(application.BUSINESS_ERROR, "没有操作权限") |
1028 | } | 1041 | } |
@@ -1113,10 +1126,22 @@ func (srv *SummaryEvaluationService) GetEvaluationSuperForAdmin(param *command.Q | @@ -1113,10 +1126,22 @@ func (srv *SummaryEvaluationService) GetEvaluationSuperForAdmin(param *command.Q | ||
1113 | evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) | 1126 | evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) |
1114 | evaluationItemRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{"transactionContext": transactionContext}) | 1127 | evaluationItemRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{"transactionContext": transactionContext}) |
1115 | itemValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{"transactionContext": transactionContext}) | 1128 | itemValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{"transactionContext": transactionContext}) |
1116 | - evaluationData, err := evaluationRepo.FindOne(map[string]interface{}{"id": param.SummaryEvaluationId}) | 1129 | + // evaluationData, err := evaluationRepo.FindOne(map[string]interface{}{"id": param.SummaryEvaluationId}) |
1130 | + // if err != nil { | ||
1131 | + // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
1132 | + // } | ||
1133 | + | ||
1134 | + _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
1135 | + "id": []int{param.SummaryEvaluationId}, | ||
1136 | + }) | ||
1117 | if err != nil { | 1137 | if err != nil { |
1118 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 1138 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
1119 | } | 1139 | } |
1140 | + if len(evaluationList) == 0 { | ||
1141 | + return &adapter.EvaluationInfoSuperAdapter{}, nil | ||
1142 | + } | ||
1143 | + evaluationData := evaluationList[0] | ||
1144 | + | ||
1120 | if evaluationData.CompanyId != param.CompanyId { | 1145 | if evaluationData.CompanyId != param.CompanyId { |
1121 | return nil, application.ThrowError(application.BUSINESS_ERROR, "没有操作权限") | 1146 | return nil, application.ThrowError(application.BUSINESS_ERROR, "没有操作权限") |
1122 | } | 1147 | } |
@@ -1568,6 +1593,7 @@ func (srv *SummaryEvaluationService) ListExecutorEvaluationSuper(param *command. | @@ -1568,6 +1593,7 @@ func (srv *SummaryEvaluationService) ListExecutorEvaluationSuper(param *command. | ||
1568 | Department: "", | 1593 | Department: "", |
1569 | Position: "", | 1594 | Position: "", |
1570 | EntryTime: "", | 1595 | EntryTime: "", |
1596 | + TotalScoreSuper: v.TotalScore, | ||
1571 | } | 1597 | } |
1572 | for _, dep := range v.TargetDepartment { | 1598 | for _, dep := range v.TargetDepartment { |
1573 | item.Department += dep.DepartmentName + " " | 1599 | item.Department += dep.DepartmentName + " " |
@@ -1705,10 +1731,12 @@ func (srv *SummaryEvaluationService) ConfirmScoreEvaluation(param *command.Confi | @@ -1705,10 +1731,12 @@ func (srv *SummaryEvaluationService) ConfirmScoreEvaluation(param *command.Confi | ||
1705 | for i := range itemList { | 1731 | for i := range itemList { |
1706 | result.ResetTotalRating(itemList[i]) | 1732 | result.ResetTotalRating(itemList[i]) |
1707 | } | 1733 | } |
1708 | - if err := result.EvaluationTotalScore(itemValues); err != nil { | ||
1709 | - return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 1734 | + //存在 超级管理员直接修改填写 总分的情况,此时不重新计算总分 |
1735 | + if result.TotalScore == "0" || result.TotalScore == "" { | ||
1736 | + if err := result.EvaluationTotalScore(itemValues); err != nil { | ||
1737 | + return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
1738 | + } | ||
1710 | } | 1739 | } |
1711 | - | ||
1712 | result.CheckResult = domain.EvaluationCheckCompleted | 1740 | result.CheckResult = domain.EvaluationCheckCompleted |
1713 | if err := evaluationRepo.Save(result); err != nil { | 1741 | if err := evaluationRepo.Save(result); err != nil { |
1714 | return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 1742 | return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
@@ -1791,9 +1819,6 @@ func (srv *SummaryEvaluationService) GetTargetEvaluationResult(param *command.Qu | @@ -1791,9 +1819,6 @@ func (srv *SummaryEvaluationService) GetTargetEvaluationResult(param *command.Qu | ||
1791 | if err != nil { | 1819 | if err != nil { |
1792 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 1820 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
1793 | } | 1821 | } |
1794 | - // if err := transactionContext.StartTransaction(); err != nil { | ||
1795 | - // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
1796 | - // } | ||
1797 | defer func() { | 1822 | defer func() { |
1798 | _ = transactionContext.RollbackTransaction() | 1823 | _ = transactionContext.RollbackTransaction() |
1799 | }() | 1824 | }() |
@@ -1823,10 +1848,12 @@ func (srv *SummaryEvaluationService) GetTargetEvaluationResult(param *command.Qu | @@ -1823,10 +1848,12 @@ func (srv *SummaryEvaluationService) GetTargetEvaluationResult(param *command.Qu | ||
1823 | continue | 1848 | continue |
1824 | } | 1849 | } |
1825 | } | 1850 | } |
1851 | + // if result == nil { | ||
1852 | + // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有找到符合条件的数据") | ||
1853 | + // } | ||
1826 | if result == nil { | 1854 | if result == nil { |
1827 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有找到符合条件的数据") | 1855 | + return &adapter.EvaluationInfoSuperAdapter{}, nil |
1828 | } | 1856 | } |
1829 | - | ||
1830 | // 评估内容和值 | 1857 | // 评估内容和值 |
1831 | var itemList []*domain.EvaluationItemUsed | 1858 | var itemList []*domain.EvaluationItemUsed |
1832 | var itemValues []*domain.SummaryEvaluationValue | 1859 | var itemValues []*domain.SummaryEvaluationValue |
@@ -1879,8 +1906,11 @@ func (srv *SummaryEvaluationService) GetTargetEvaluationResult(param *command.Qu | @@ -1879,8 +1906,11 @@ func (srv *SummaryEvaluationService) GetTargetEvaluationResult(param *command.Qu | ||
1879 | for i := range itemList { | 1906 | for i := range itemList { |
1880 | result.ResetTotalRating(itemList[i]) | 1907 | result.ResetTotalRating(itemList[i]) |
1881 | } | 1908 | } |
1882 | - if err = result.EvaluationTotalScore(itemValues); err != nil { | ||
1883 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 1909 | + //存在 超级管理员直接修改填写 总分的情况,此时不重新计算总分 |
1910 | + if result.TotalScore == "0" || result.TotalScore == "" { | ||
1911 | + if err = result.EvaluationTotalScore(itemValues); err != nil { | ||
1912 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
1913 | + } | ||
1884 | } | 1914 | } |
1885 | } | 1915 | } |
1886 | 1916 |
@@ -371,6 +371,20 @@ func (srv *SummaryEvaluationService) EditEvaluation360(param *command.EditEvalua | @@ -371,6 +371,20 @@ func (srv *SummaryEvaluationService) EditEvaluation360(param *command.EditEvalua | ||
371 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | 371 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") |
372 | } | 372 | } |
373 | 373 | ||
374 | + _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
375 | + "targetUserId": summaryEvaluation.TargetUser.UserId, | ||
376 | + "typesList": []int{int(domain.EvaluationFinish)}, | ||
377 | + "cycleId": summaryEvaluation.CycleId, | ||
378 | + "limit": 1, | ||
379 | + }) | ||
380 | + if err != nil { | ||
381 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
382 | + } | ||
383 | + // 如果目标员工已经确认考核结果,就不能在进行评估编辑 | ||
384 | + if len(evaluationList) > 0 && evaluationList[0].CheckResult == domain.EvaluationCheckCompleted { | ||
385 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "用户已经确认该周期的考核结果,不能在编辑!") | ||
386 | + } | ||
387 | + | ||
374 | // 自评评估内容(自评模板、筛选项目评估人) | 388 | // 自评评估内容(自评模板、筛选项目评估人) |
375 | _, itemList, err := itemUsedRepo.Find(map[string]interface{}{ | 389 | _, itemList, err := itemUsedRepo.Find(map[string]interface{}{ |
376 | "evaluationProjectId": summaryEvaluation.EvaluationProjectId, | 390 | "evaluationProjectId": summaryEvaluation.EvaluationProjectId, |
@@ -757,6 +771,20 @@ func (srv *SummaryEvaluationService) EditEvaluationHRBP(param *command.EditEvalu | @@ -757,6 +771,20 @@ func (srv *SummaryEvaluationService) EditEvaluationHRBP(param *command.EditEvalu | ||
757 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | 771 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") |
758 | } | 772 | } |
759 | 773 | ||
774 | + _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
775 | + "targetUserId": summaryEvaluation.TargetUser.UserId, | ||
776 | + "typesList": []int{int(domain.EvaluationFinish)}, | ||
777 | + "cycleId": summaryEvaluation.CycleId, | ||
778 | + "limit": 1, | ||
779 | + }) | ||
780 | + if err != nil { | ||
781 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
782 | + } | ||
783 | + // 如果目标员工已经确认考核结果,就不能在进行评估编辑 | ||
784 | + if len(evaluationList) > 0 && evaluationList[0].CheckResult == domain.EvaluationCheckCompleted { | ||
785 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "用户已经确认该周期的考核结果,不能在编辑!") | ||
786 | + } | ||
787 | + | ||
760 | // 自评评估内容(自评模板、筛选项目评估人) | 788 | // 自评评估内容(自评模板、筛选项目评估人) |
761 | _, itemList, err := itemUsedRepo.Find(map[string]interface{}{ | 789 | _, itemList, err := itemUsedRepo.Find(map[string]interface{}{ |
762 | "evaluationProjectId": summaryEvaluation.EvaluationProjectId, | 790 | "evaluationProjectId": summaryEvaluation.EvaluationProjectId, |
@@ -871,3 +899,31 @@ func (srv *SummaryEvaluationService) ModifyFinishScore(param *command.ModifyFini | @@ -871,3 +899,31 @@ func (srv *SummaryEvaluationService) ModifyFinishScore(param *command.ModifyFini | ||
871 | } | 899 | } |
872 | return nil | 900 | return nil |
873 | } | 901 | } |
902 | + | ||
903 | +// GetUnconfirmedCycleList 获取未确认绩效成绩的周期列表 | ||
904 | +func (srv *SummaryEvaluationService) GetUnconfirmedCycleList(companyId int, userId int) (map[string]interface{}, error) { | ||
905 | + transactionContext, err := factory.StartTransaction() | ||
906 | + if err != nil { | ||
907 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
908 | + } | ||
909 | + defer func() { | ||
910 | + _ = transactionContext.RollbackTransaction() | ||
911 | + }() | ||
912 | + evaluationDao := dao.NewSummaryEvaluationDao(map[string]interface{}{"transactionContext": transactionContext}) | ||
913 | + | ||
914 | + cycles, err := evaluationDao.TargetUnconfirmedCycleList(companyId, userId) | ||
915 | + if err != nil { | ||
916 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取周期列表"+err.Error()) | ||
917 | + } | ||
918 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
919 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
920 | + } | ||
921 | + var cycleList []adapter.CycleListAdapter | ||
922 | + for _, v := range cycles { | ||
923 | + cycleList = append(cycleList, adapter.CycleListAdapter{ | ||
924 | + CycleId: v.CycleId, | ||
925 | + CycleName: v.CycleName, | ||
926 | + }) | ||
927 | + } | ||
928 | + return tool_funs.SimpleWrapGridMap(int64(len(cycleList)), cycleList), nil | ||
929 | +} |
@@ -50,6 +50,7 @@ const ( | @@ -50,6 +50,7 @@ const ( | ||
50 | type EvaluationStatus string | 50 | type EvaluationStatus string |
51 | 51 | ||
52 | const ( | 52 | const ( |
53 | + // EvaluationEditTotalScore EvaluationStatus = "completed_by_edit_score" //通过超级管理员直接修改分数完成的 | ||
53 | EvaluationUncompleted EvaluationStatus = "uncompleted" //未提交填写的内容 | 54 | EvaluationUncompleted EvaluationStatus = "uncompleted" //未提交填写的内容 |
54 | EvaluationCompleted EvaluationStatus = "completed" //已提交填写的内容 | 55 | EvaluationCompleted EvaluationStatus = "completed" //已提交填写的内容 |
55 | ) | 56 | ) |
@@ -104,13 +104,13 @@ where 1=1 | @@ -104,13 +104,13 @@ where 1=1 | ||
104 | and staff_assess.cycle_id =? and "types" ='self' | 104 | and staff_assess.cycle_id =? and "types" ='self' |
105 | and staff_assess.evaluation_project_id in ( | 105 | and staff_assess.evaluation_project_id in ( |
106 | select t_project_4.project_id from t_project_4 | 106 | select t_project_4.project_id from t_project_4 |
107 | -) ` | 107 | +) ` |
108 | condition := []interface{}{cycleId} | 108 | condition := []interface{}{cycleId} |
109 | if len(exportUserIds) > 0 { | 109 | if len(exportUserIds) > 0 { |
110 | sqlStr += ` and staff_assess.target_user->>'userId' in(?) ` | 110 | sqlStr += ` and staff_assess.target_user->>'userId' in(?) ` |
111 | condition = append(condition, pg.In(exportUserIds)) | 111 | condition = append(condition, pg.In(exportUserIds)) |
112 | } | 112 | } |
113 | - sqlStr = withSql + sqlStr | 113 | + sqlStr = withSql + sqlStr + " order by evaluation_item_used.sort_by " |
114 | result := []DataEvaluationItemUsed2{} | 114 | result := []DataEvaluationItemUsed2{} |
115 | tx := d.transactionContext.PgTx | 115 | tx := d.transactionContext.PgTx |
116 | _, err := tx.Query(&result, sqlStr, condition...) | 116 | _, err := tx.Query(&result, sqlStr, condition...) |
1 | package dao | 1 | package dao |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | ||
4 | "time" | 5 | "time" |
5 | 6 | ||
6 | "github.com/go-pg/pg/v10" | 7 | "github.com/go-pg/pg/v10" |
@@ -138,6 +139,28 @@ func (d *SummaryEvaluationDao) CountTargetUserCycleList(executorId int, evaluati | @@ -138,6 +139,28 @@ func (d *SummaryEvaluationDao) CountTargetUserCycleList(executorId int, evaluati | ||
138 | return cnt, err | 139 | return cnt, err |
139 | } | 140 | } |
140 | 141 | ||
142 | +// TargetUnconfirmedCycleList 用户【未确认绩效成绩】的周期列表 | ||
143 | +func (d *SummaryEvaluationDao) TargetUnconfirmedCycleList(companyId int, executorId int) ([]TargetUserCycle, error) { | ||
144 | + sqlStr := `select | ||
145 | + summary_evaluation.cycle_id, | ||
146 | + summary_evaluation.begin_time, | ||
147 | + summary_evaluation.cycle_name | ||
148 | + from summary_evaluation | ||
149 | + where summary_evaluation.deleted_at isnull | ||
150 | + and summary_evaluation.company_id='?' | ||
151 | + and summary_evaluation.target_user ->>'userId'='?' | ||
152 | + and summary_evaluation.types='?' | ||
153 | + and summary_evaluation.status=? | ||
154 | + and summary_evaluation.check_result=? | ||
155 | + ` | ||
156 | + tx := d.transactionContext.PgTx | ||
157 | + condition := []interface{}{companyId, executorId, domain.EvaluationFinish, domain.EvaluationCompleted, domain.EvaluationCheckUncompleted} | ||
158 | + sqlStr += ` order by summary_evaluation.begin_time desc;` | ||
159 | + result := make([]TargetUserCycle, 0) | ||
160 | + _, err := tx.Query(&result, sqlStr, condition...) | ||
161 | + return result, err | ||
162 | +} | ||
163 | + | ||
141 | func (d *SummaryEvaluationDao) UpdateBeginTime(ids []int, beginTime time.Time) error { | 164 | func (d *SummaryEvaluationDao) UpdateBeginTime(ids []int, beginTime time.Time) error { |
142 | if len(ids) == 0 { | 165 | if len(ids) == 0 { |
143 | return nil | 166 | return nil |
@@ -291,8 +291,8 @@ func (d *TaskDao) CountTaskAnomalyNotHrbp(param ListTaskCondition) (int, error) | @@ -291,8 +291,8 @@ func (d *TaskDao) CountTaskAnomalyNotHrbp(param ListTaskCondition) (int, error) | ||
291 | from task | 291 | from task |
292 | join t_task_1 on task.id =t_task_1.id | 292 | join t_task_1 on task.id =t_task_1.id |
293 | where 1=1 | 293 | where 1=1 |
294 | - and task.anomaly>0 and task.deleted_at isnull ` | ||
295 | - condition := []interface{}{} | 294 | + and task.anomaly>0 and company_id=? and task.deleted_at isnull ` |
295 | + condition := []interface{}{param.CompanyId} | ||
296 | whereSql := `` | 296 | whereSql := `` |
297 | if param.OnlyMy { | 297 | if param.OnlyMy { |
298 | condition = append(condition, param.UserId) | 298 | condition = append(condition, param.UserId) |
@@ -317,7 +317,7 @@ func (d *TaskDao) CountTaskAnomalyByHrbp(param ListTaskCondition) (int, error) { | @@ -317,7 +317,7 @@ func (d *TaskDao) CountTaskAnomalyByHrbp(param ListTaskCondition) (int, error) { | ||
317 | )select count(*) | 317 | )select count(*) |
318 | from task | 318 | from task |
319 | left join t_task_ignore on t_task_ignore.task_id=task.id | 319 | left join t_task_ignore on t_task_ignore.task_id=task.id |
320 | - where 1=1 and task.anomaly>0 and task.company_id=? and task.deleted_at isnull` | 320 | + where 1=1 and task.anomaly>0 and task.company_id=? and t_task_ignore.id isnull and task.deleted_at isnull` |
321 | condition := []interface{}{param.UserId, param.CompanyId} | 321 | condition := []interface{}{param.UserId, param.CompanyId} |
322 | whereSql := `` | 322 | whereSql := `` |
323 | if param.OnlyMy { | 323 | if param.OnlyMy { |
@@ -68,7 +68,12 @@ func (repo *LogSmsRepository) Find(queryOptions map[string]interface{}) (int, [] | @@ -68,7 +68,12 @@ func (repo *LogSmsRepository) Find(queryOptions map[string]interface{}) (int, [] | ||
68 | if v, ok := queryOptions["executeAtEnd"]; ok { | 68 | if v, ok := queryOptions["executeAtEnd"]; ok { |
69 | query.Where("execute_at<=?", v) | 69 | query.Where("execute_at<=?", v) |
70 | } | 70 | } |
71 | - | 71 | + if v, ok := queryOptions["from"]; ok { |
72 | + query.Where(`"from"=?`, v) | ||
73 | + } | ||
74 | + if v, ok := queryOptions["index"]; ok { | ||
75 | + query.Where("index=?", v) | ||
76 | + } | ||
72 | count, err := query.SelectAndCount() | 77 | count, err := query.SelectAndCount() |
73 | if err != nil { | 78 | if err != nil { |
74 | return 0, nil, err | 79 | return 0, nil, err |
@@ -5,9 +5,18 @@ import "testing" | @@ -5,9 +5,18 @@ import "testing" | ||
5 | func TestPushInfo(t *testing.T) { | 5 | func TestPushInfo(t *testing.T) { |
6 | //测试消息推送 | 6 | //测试消息推送 |
7 | c := NewHttplibMmmOpenApiServiceGateway() | 7 | c := NewHttplibMmmOpenApiServiceGateway() |
8 | - resp, err := c.PushInfo(0, "mmm.ability.performance", []int64{3422174102828544}, "ceshi推送一个消息233", "消息内容xxxx332") | 8 | + //3436890424617728 |
9 | + //3422173870118400 | ||
10 | + resp, err := c.PushInfo(0, "mmm.ability.performance", []int64{3422173870118400}, "ceshi推送一个消息233", "消息内容xxxx332") | ||
9 | if err != nil { | 11 | if err != nil { |
10 | t.Error(err) | 12 | t.Error(err) |
11 | } | 13 | } |
12 | t.Logf("%v", resp) | 14 | t.Logf("%v", resp) |
13 | } | 15 | } |
16 | + | ||
17 | +func TestSms(t *testing.T) { | ||
18 | + c := SmsService{} | ||
19 | + err := c.SendNoticeSms("18060823798", 5475050, map[string]string{ | ||
20 | + "name": "名字1"}) | ||
21 | + t.Log(err) | ||
22 | +} |
@@ -28,6 +28,13 @@ func (c *SummaryEvaluationController) GetExecutorCycleList() { | @@ -28,6 +28,13 @@ func (c *SummaryEvaluationController) GetExecutorCycleList() { | ||
28 | c.Response(data, err) | 28 | c.Response(data, err) |
29 | } | 29 | } |
30 | 30 | ||
31 | +func (c *SummaryEvaluationController) GetUnconfirmedScoreCycleList() { | ||
32 | + srv := service.NewSummaryEvaluationService() | ||
33 | + userReq := middlewares.GetUser(c.Ctx) | ||
34 | + data, err := srv.GetUnconfirmedCycleList(int(userReq.CompanyId), int(userReq.UserId)) | ||
35 | + c.Response(data, err) | ||
36 | +} | ||
37 | + | ||
31 | func (c *SummaryEvaluationController) GetMenu() { | 38 | func (c *SummaryEvaluationController) GetMenu() { |
32 | srv := service.NewSummaryEvaluationService() | 39 | srv := service.NewSummaryEvaluationService() |
33 | paramReq := &command.QueryMenu{} | 40 | paramReq := &command.QueryMenu{} |
@@ -332,7 +339,6 @@ func (c *SummaryEvaluationController) GetTargetEvaluationResult() { | @@ -332,7 +339,6 @@ func (c *SummaryEvaluationController) GetTargetEvaluationResult() { | ||
332 | c.Response(data, err) | 339 | c.Response(data, err) |
333 | } | 340 | } |
334 | 341 | ||
335 | -// 按周期获取上级评估列表 | ||
336 | func (c *SummaryEvaluationController) ListAllEvaluationFinish() { | 342 | func (c *SummaryEvaluationController) ListAllEvaluationFinish() { |
337 | srv := service.NewSummaryEvaluationService() | 343 | srv := service.NewSummaryEvaluationService() |
338 | param := &command.QueryEvaluationList{} | 344 | param := &command.QueryEvaluationList{} |
@@ -33,7 +33,7 @@ func init() { | @@ -33,7 +33,7 @@ func init() { | ||
33 | web.NSCtrlPut("/info-cache", (*controllers.StaffAssessController).SaveAssessCache), //通用保存员工评估的详情(缓存) | 33 | web.NSCtrlPut("/info-cache", (*controllers.StaffAssessController).SaveAssessCache), //通用保存员工评估的详情(缓存) |
34 | web.NSCtrlPost("/summary", (*controllers.StaffAssessController).QuerySummary), //员工绩效-项目管理-总览 | 34 | web.NSCtrlPost("/summary", (*controllers.StaffAssessController).QuerySummary), //员工绩效-项目管理-总览 |
35 | web.NSCtrlPost("/summary/users", (*controllers.StaffAssessController).QueryMemberSummary), //员工绩效-综合管理-成员列表 | 35 | web.NSCtrlPost("/summary/users", (*controllers.StaffAssessController).QueryMemberSummary), //员工绩效-综合管理-成员列表 |
36 | - web.NSCtrlPost("/summary/users-indicator", (*controllers.StaffAssessController).QueryMemberPerformanceIndicator), //员工绩效-综合管理-绩效导出指标 | 36 | + web.NSCtrlPost("/summary/users-indicator", (*controllers.StaffAssessController).QueryMemberPerformanceIndicator), //员工绩效-综合管理-绩效指标 |
37 | web.NSCtrlPost("/summary/export-indicator", (*controllers.StaffAssessController).ExportPerformanceIndicator), //员工绩效-综合管理-绩效导出指标 | 37 | web.NSCtrlPost("/summary/export-indicator", (*controllers.StaffAssessController).ExportPerformanceIndicator), //员工绩效-综合管理-绩效导出指标 |
38 | web.NSCtrlPost("/target_user/self/cycle", (*controllers.StaffAssessController).ListTargetUserSelfCycle), //获取员工自评的周期下拉列表 | 38 | web.NSCtrlPost("/target_user/self/cycle", (*controllers.StaffAssessController).ListTargetUserSelfCycle), //获取员工自评的周期下拉列表 |
39 | web.NSCtrlPost("/target_user/self/summary", (*controllers.StaffAssessController).GetStaffAsessSelfCountLevel), //获取员工每日自评小结 | 39 | web.NSCtrlPost("/target_user/self/summary", (*controllers.StaffAssessController).GetStaffAsessSelfCountLevel), //获取员工每日自评小结 |
@@ -11,6 +11,7 @@ func init() { | @@ -11,6 +11,7 @@ func init() { | ||
11 | summaryNS := web.NewNamespace("/v1/summary-evaluation", | 11 | summaryNS := web.NewNamespace("/v1/summary-evaluation", |
12 | web.NSBefore(filters.AllowCors(), middlewares.CheckFontToken()), | 12 | web.NSBefore(filters.AllowCors(), middlewares.CheckFontToken()), |
13 | web.NSCtrlPost("/executor/cycle/list", (*controllers.SummaryEvaluationController).GetExecutorCycleList), | 13 | web.NSCtrlPost("/executor/cycle/list", (*controllers.SummaryEvaluationController).GetExecutorCycleList), |
14 | + web.NSCtrlPost("/executor/cycle/unconfirmed-score", (*controllers.SummaryEvaluationController).GetUnconfirmedScoreCycleList), | ||
14 | web.NSCtrlPost("/target_user/cycle/list", (*controllers.SummaryEvaluationController).GetTargetUserCycleList), | 15 | web.NSCtrlPost("/target_user/cycle/list", (*controllers.SummaryEvaluationController).GetTargetUserCycleList), |
15 | web.NSCtrlPost("/cycle/menu", (*controllers.SummaryEvaluationController).GetMenu), | 16 | web.NSCtrlPost("/cycle/menu", (*controllers.SummaryEvaluationController).GetMenu), |
16 | web.NSCtrlPost("/evaluation-self", (*controllers.SummaryEvaluationController).GetEvaluationSelf), | 17 | web.NSCtrlPost("/evaluation-self", (*controllers.SummaryEvaluationController).GetEvaluationSelf), |
-
请 注册 或 登录 后发表评论