@@ -207,6 +207,85 @@ public void before() {
207207 user = loginUser ;
208208 }
209209
210+ @ Test ()
211+ public void testCopyworkflowLogicalNodeSwitch () {
212+ long projectCode = 128645169571296L ;
213+ String codes = "128645230604768" ;
214+ long targetProjectCode = 128645169571296L ;
215+ long shellTaskDefinitionCode = 128645175846368L ;
216+ long switchTaskDefinitionCode = 128645191546336L ;
217+
218+ Map <String , Object > result = new HashMap <>();
219+ putMsg (result , Status .SUCCESS );
220+
221+ Set <Long > definitionCodes = new HashSet <>();
222+ for (String code : String .valueOf (codes ).split (Constants .COMMA )) {
223+ try {
224+ long parse = Long .parseLong (code );
225+ definitionCodes .add (parse );
226+ } catch (NumberFormatException e ) {
227+ Assertions .fail ();
228+ }
229+ }
230+
231+ WorkflowDefinition workflowDefinition = new WorkflowDefinition ();
232+ workflowDefinition .setId (1 );
233+ workflowDefinition .setCode (Long .parseLong (codes ));
234+ workflowDefinition .setName ("workflow_switch" );
235+ workflowDefinition .setDescription ("" );
236+ workflowDefinition .setVersion (1 );
237+ workflowDefinition .setReleaseState (ReleaseState .OFFLINE );
238+ workflowDefinition .setProjectCode (projectCode );
239+ workflowDefinition .setUserId (user .getId ());
240+ List <WorkflowDefinition > workflowDefinitionList = new ArrayList <>();
241+ workflowDefinitionList .add (workflowDefinition );
242+
243+ Project project = new Project ();
244+ project .setCode (projectCode );
245+ project .setId (1 );
246+ project .setName ("project_switch" );
247+ project .setUserId (user .getId ());
248+
249+ List <WorkflowTaskRelation > workflowTaskRelations = new ArrayList <>();
250+ WorkflowTaskRelation workflowTaskRelationShell = getWorkflowTaskRelation (1 , 1 , projectCode ,
251+ workflowDefinition .getCode (), 0L , 1 , switchTaskDefinitionCode , 1 );
252+ WorkflowTaskRelation workflowTaskRelationSwitch = getWorkflowTaskRelation (2 , 1 , projectCode ,
253+ workflowDefinition .getCode (), switchTaskDefinitionCode , 1 , shellTaskDefinitionCode , 1 );
254+
255+ workflowTaskRelations .add (workflowTaskRelationShell );
256+ workflowTaskRelations .add (workflowTaskRelationSwitch );
257+
258+ String taskDefinitionLogJson =
259+ "[{\" id\" :1,\" code\" :128645175846368,\" name\" :\" shellA\" ,\" version\" :1,\" description\" :\" \" ,\" projectCode\" :128645169571296,\" userId\" :1,\" taskType\" :\" SHELL\" ,"
260+ +
261+ "\" taskParams\" :{\" localParams\" :[],\" rawScript\" :\" echo 'A'\" ,\" resourceList\" :[]},\" flag\" :\" YES\" ,\" taskPriority\" :\" MEDIUM\" ,\" workerGroup\" :\" default\" ,\" environmentCode\" :-1,"
262+ +
263+ "\" failRetryTimes\" :0,\" failRetryInterval\" :1,\" timeoutFlag\" :\" CLOSE\" ,\" timeout\" :0,\" delayTime\" :0,\" createTime\" :\" 2024-12-25 01:15:08\" ,\" updateTime\" :\" 2024-12-25 01:15:08\" ,"
264+ +
265+ "\" taskGroupId\" :0,\" taskGroupPriority\" :0,\" cpuQuota\" :-1,\" memoryMax\" :-1,\" taskExecuteType\" :\" BATCH\" },{\" id\" :2,\" code\" :128645191546336,\" name\" :\" switchA\" ,\" version\" :1,"
266+ +
267+ "\" description\" :\" \" ,\" projectCode\" :128645169571296,\" userId\" :1,\" taskType\" :\" SWITCH\" ," +
268+ "\" taskParams\" :{\" localParams\" :[],\" rawScript\" :\" \" ,\" resourceList\" :[],\" switchResult\" :{\" dependTaskList\" :[{\" condition\" :\" ${value} == 'A'\" ,\" nextNode\" :128645175846368}],"
269+ +
270+ "\" nextNode\" :128645175846368}},\" flag\" :\" YES\" ,\" taskPriority\" :\" MEDIUM\" ,\" workerGroup\" :\" default\" ,\" environmentCode\" :-1,\" failRetryTimes\" :0,\" failRetryInterval\" :1,\" timeoutFlag\" :\" CLOSE\" ,"
271+ +
272+ "\" timeout\" :0,\" delayTime\" :0,\" createTime\" :\" 2024-12-25 01:15:08\" ,\" updateTime\" :\" 2024-12-25 01:15:08\" ,\" taskGroupId\" :0,\" taskGroupPriority\" :0,\" cpuQuota\" :-1,\" memoryMax\" :-1,\" taskExecuteType\" :\" BATCH\" }]" ;
273+
274+ List <TaskDefinitionLog > taskDefinitionLogs = JSONUtils .toList (taskDefinitionLogJson , TaskDefinitionLog .class );
275+
276+ when (projectMapper .queryByCode (projectCode )).thenReturn (project );
277+ when (projectService .checkProjectAndAuth (user , project , projectCode , WORKFLOW_BATCH_COPY )).thenReturn (result );
278+ when (workflowDefinitionMapper .queryByCodes (definitionCodes )).thenReturn (workflowDefinitionList );
279+ when (workflowTaskRelationMapper .queryByWorkflowDefinitionCode (Long .parseLong (codes )))
280+ .thenReturn (workflowTaskRelations );
281+ when (taskDefinitionLogDao .queryTaskDefineLogList (workflowTaskRelations )).thenReturn (taskDefinitionLogs );
282+ when (processService .saveTaskDefine (user , projectCode , taskDefinitionLogs , true )).thenReturn (1 );
283+ when (processService .saveWorkflowDefine (user , workflowDefinition , true , true )).thenReturn (1 );
284+ Map <String , Object > successRes =
285+ processDefinitionService .batchCopyWorkflowDefinition (user , projectCode , codes , targetProjectCode );
286+ Assertions .assertEquals (Status .SUCCESS , successRes .get (Constants .STATUS ));
287+
288+ }
210289 @ Test
211290 public void testQueryWorkflowDefinitionList () {
212291 when (projectMapper .queryByCode (projectCode )).thenReturn (getProject (projectCode ));
@@ -1122,6 +1201,22 @@ private List<WorkflowTaskRelation> getProcessTaskRelation() {
11221201 return workflowTaskRelations ;
11231202 }
11241203
1204+ private WorkflowTaskRelation getWorkflowTaskRelation (int id , int workflowDefinitionVersion , long projectCode ,
1205+ long workflowDefinitionCode , long preTaskCode ,
1206+ int preTaskVersion ,
1207+ long postTaskCode , int postTaskVersion ) {
1208+ WorkflowTaskRelation workflowTaskRelation = new WorkflowTaskRelation ();
1209+ workflowTaskRelation .setId (id );
1210+ workflowTaskRelation .setWorkflowDefinitionVersion (workflowDefinitionVersion );
1211+ workflowTaskRelation .setProjectCode (projectCode );
1212+ workflowTaskRelation .setWorkflowDefinitionCode (workflowDefinitionCode );
1213+ workflowTaskRelation .setPreTaskCode (preTaskCode );
1214+ workflowTaskRelation .setPreTaskVersion (preTaskVersion );
1215+ workflowTaskRelation .setPostTaskCode (postTaskCode );
1216+ workflowTaskRelation .setPostTaskVersion (postTaskVersion );
1217+ return workflowTaskRelation ;
1218+ }
1219+
11251220 /**
11261221 * get mock schedule
11271222 *
0 commit comments