@@ -15,6 +15,7 @@ import (
15
15
"github.com/actiontech/sqle/sqle/log"
16
16
"github.com/actiontech/sqle/sqle/model"
17
17
"github.com/actiontech/sqle/sqle/notification"
18
+ "github.com/actiontech/sqle/sqle/pkg/im"
18
19
"github.com/sirupsen/logrus"
19
20
)
20
21
@@ -33,13 +34,17 @@ func NewWorkflowScheduleJob(entry *logrus.Entry) ServerJob {
33
34
34
35
func (j * WorkflowScheduleJob ) WorkflowSchedule (entry * logrus.Entry ) {
35
36
st := model .GetStorage ()
37
+
38
+ entry .Error ("start WorkflowSchedule" )
36
39
workflows , err := st .GetNeedScheduledWorkflows ()
37
40
if err != nil {
38
41
entry .Errorf ("get need scheduled workflows from storage error: %v" , err )
39
42
return
40
43
}
44
+ entry .Errorf ("start WorkflowSchedule workflow:%v" , workflows )
41
45
now := time .Now ()
42
46
for _ , workflow := range workflows {
47
+ entry .Errorf ("get workflow id %v" , workflow .WorkflowId )
43
48
w , err := dms .GetWorkflowDetailByWorkflowId (string (workflow .ProjectId ), workflow .WorkflowId , st .GetWorkflowDetailWithoutInstancesByWorkflowID )
44
49
if err != nil {
45
50
entry .Errorf ("get workflow from storage error: %v" , err )
@@ -60,6 +65,17 @@ func (j *WorkflowScheduleJob) WorkflowSchedule(entry *logrus.Entry) {
60
65
needExecuteTaskIds := map [uint ]string {}
61
66
for _ , ir := range w .Record .InstanceRecords {
62
67
if ! ir .IsSQLExecuted && ir .ScheduledAt != nil && ir .ScheduledAt .Before (now ) {
68
+ if ir .NeedScheduledTaskNotify {
69
+ isOaAgree , err := getOaApproveResult (ir .TaskId , workflow )
70
+
71
+ if err != nil {
72
+ entry .Error (err )
73
+ continue
74
+ }
75
+ if ! isOaAgree {
76
+ continue
77
+ }
78
+ }
63
79
needExecuteTaskIds [ir .TaskId ] = ir .ScheduleUserId
64
80
}
65
81
}
@@ -75,6 +91,21 @@ func (j *WorkflowScheduleJob) WorkflowSchedule(entry *logrus.Entry) {
75
91
}
76
92
}
77
93
94
+ func getOaApproveResult (taskId uint , workflow * model.Workflow ) (bool , error ) {
95
+ s := model .GetStorage ()
96
+ record , err := s .GetWechatRecordByTaskId (taskId )
97
+ if err != nil {
98
+ return false , err
99
+ }
100
+ if record .SpNo == "" {
101
+ go im .CreateScheduledApprove (taskId , string (workflow .ProjectId ), workflow .WorkflowId )
102
+ return false , nil
103
+ } else if record .OaResult == model .ApproveStatusAgree {
104
+ return true , nil
105
+ }
106
+ return false , nil
107
+ }
108
+
78
109
func ExecuteWorkflow (workflow * model.Workflow , needExecTaskIdToUserId map [uint ]string ) error {
79
110
s := model .GetStorage ()
80
111
0 commit comments