|
13 | 13 | import com.codingapi.springboot.flow.record.FlowRecord; |
14 | 14 | import com.codingapi.springboot.flow.repository.*; |
15 | 15 | import com.codingapi.springboot.flow.service.FlowService; |
| 16 | +import com.codingapi.springboot.flow.trigger.OutTrigger; |
16 | 17 | import com.codingapi.springboot.flow.user.IFlowOperator; |
17 | 18 | import com.codingapi.springboot.flow.user.User; |
18 | 19 | import org.junit.jupiter.api.Test; |
@@ -1106,4 +1107,160 @@ void recallTest2() { |
1106 | 1107 |
|
1107 | 1108 |
|
1108 | 1109 | } |
| 1110 | + |
| 1111 | + /** |
| 1112 | + * 非会签审批意见测试 |
| 1113 | + */ |
| 1114 | + @Test |
| 1115 | + void noSignContentTest() { |
| 1116 | + PageRequest pageRequest = PageRequest.of(0, 1000); |
| 1117 | + |
| 1118 | + User user = new User("张飞"); |
| 1119 | + userRepository.save(user); |
| 1120 | + |
| 1121 | + User dept1 = new User("诸葛亮"); |
| 1122 | + userRepository.save(dept1); |
| 1123 | + |
| 1124 | + User dept2 = new User("黄忠"); |
| 1125 | + userRepository.save(dept2); |
| 1126 | + |
| 1127 | + User boss = new User("刘备"); |
| 1128 | + userRepository.save(boss); |
| 1129 | + |
| 1130 | + FlowWork flowWork = FlowWorkBuilder.builder(user) |
| 1131 | + .title("请假流程") |
| 1132 | + .nodes() |
| 1133 | + .node("开始节点", "start", "default", ApprovalType.UN_SIGN, OperatorMatcher.anyOperatorMatcher()) |
| 1134 | + .node("部门领导审批", "dept", "default", ApprovalType.UN_SIGN, OperatorMatcher.specifyOperatorMatcher(dept1.getUserId(), dept2.getUserId())) |
| 1135 | + .node("总经理审批", "manager", "default", ApprovalType.UN_SIGN, OperatorMatcher.specifyOperatorMatcher(boss.getUserId())) |
| 1136 | + .node("结束节点", "over", "default", ApprovalType.UN_SIGN, OperatorMatcher.anyOperatorMatcher()) |
| 1137 | + .relations() |
| 1138 | + .relation("部门领导审批", "start", "dept") |
| 1139 | + .relation("总经理审批", "dept", "manager") |
| 1140 | + .relation("结束节点", "manager", "over") |
| 1141 | + .build(); |
| 1142 | + |
| 1143 | + flowWorkRepository.save(flowWork); |
| 1144 | + |
| 1145 | + String workCode = flowWork.getCode(); |
| 1146 | + |
| 1147 | + Leave leave = new Leave("我要出去看看"); |
| 1148 | + leaveRepository.save(leave); |
| 1149 | + |
| 1150 | + // 创建流程 |
| 1151 | + flowService.startFlow(workCode, user, leave, "发起流程"); |
| 1152 | + |
| 1153 | + // 查看我的待办 |
| 1154 | + List<FlowRecord> userTodos = flowRecordRepository.findTodoByOperatorId(user.getUserId(), pageRequest).getContent(); |
| 1155 | + assertEquals(1, userTodos.size()); |
| 1156 | + |
| 1157 | + // 提交到部门经理 |
| 1158 | + FlowRecord userTodo = userTodos.get(0); |
| 1159 | + flowService.submitFlow(userTodo.getId(), user, leave, Opinion.pass("同意")); |
| 1160 | + |
| 1161 | + List<FlowRecord> dept1Todos = flowRecordRepository.findTodoByOperatorId(dept1.getUserId(), pageRequest).getContent(); |
| 1162 | + List<FlowRecord> dept2Todos = flowRecordRepository.findTodoByOperatorId(dept2.getUserId(), pageRequest).getContent(); |
| 1163 | + assertEquals(1, dept1Todos.size()); |
| 1164 | + assertEquals(1, dept2Todos.size()); |
| 1165 | + |
| 1166 | + FlowRecord dept1Todo = dept1Todos.get(0); |
| 1167 | + flowService.submitFlow(dept1Todo.getId(), dept1, leave, Opinion.pass("同意")); |
| 1168 | + |
| 1169 | + List<FlowRecord> bossTodos = flowRecordRepository.findTodoByOperatorId(boss.getUserId(), pageRequest).getContent(); |
| 1170 | + assertEquals(1, bossTodos.size()); |
| 1171 | + |
| 1172 | + List<FlowRecord> records = flowRecordRepository.findAll(pageRequest).getContent(); |
| 1173 | + assertEquals(4, records.size()); |
| 1174 | + |
| 1175 | + FlowDetail detail = flowService.detail(bossTodos.get(0).getId()); |
| 1176 | + System.out.println(detail); |
| 1177 | + |
| 1178 | + } |
| 1179 | + |
| 1180 | + |
| 1181 | + /** |
| 1182 | + * 退回与自定义退回逻辑 |
| 1183 | + */ |
| 1184 | + @Test |
| 1185 | + void rejectDefaultTest() { |
| 1186 | + PageRequest pageRequest = PageRequest.of(0, 1000); |
| 1187 | + |
| 1188 | + User user = new User("张飞"); |
| 1189 | + userRepository.save(user); |
| 1190 | + |
| 1191 | + User dept = new User("诸葛亮"); |
| 1192 | + userRepository.save(dept); |
| 1193 | + |
| 1194 | + User boss = new User("刘备"); |
| 1195 | + userRepository.save(boss); |
| 1196 | + |
| 1197 | + FlowWork flowWork = FlowWorkBuilder.builder(user) |
| 1198 | + .title("请假流程") |
| 1199 | + .nodes() |
| 1200 | + .node("开始节点", "start", "default", ApprovalType.UN_SIGN, OperatorMatcher.anyOperatorMatcher()) |
| 1201 | + .node("部门经理审批", "dept", "default", ApprovalType.UN_SIGN, OperatorMatcher.specifyOperatorMatcher(dept.getUserId())) |
| 1202 | + .node("总经理审批", "boss", "default", ApprovalType.UN_SIGN, OperatorMatcher.specifyOperatorMatcher(boss.getUserId())) |
| 1203 | + .node("结束节点", "over", "default", ApprovalType.UN_SIGN, OperatorMatcher.anyOperatorMatcher()) |
| 1204 | + .relations() |
| 1205 | + .relation("开始节点->部门经理", "start", "dept") |
| 1206 | + .relation("部门经理->总经理", "dept", "boss") |
| 1207 | + .relation("总经理退回发起人", "boss", "start", new OutTrigger( |
| 1208 | + "def run(content) { \n"+ |
| 1209 | + " def days = content.getBindData().getDays(); \n"+ |
| 1210 | + " if (days > 10) { \n" + |
| 1211 | + " return true; \n"+ |
| 1212 | + " } \n"+ |
| 1213 | + " return false; \n"+ |
| 1214 | + "}" |
| 1215 | + ),1,true) |
| 1216 | + .relation("结束节点", "boss", "over") |
| 1217 | + .build(); |
| 1218 | + |
| 1219 | + flowWorkRepository.save(flowWork); |
| 1220 | + |
| 1221 | + String workCode = flowWork.getCode(); |
| 1222 | + |
| 1223 | + Leave leave = new Leave("我要出去看看"); |
| 1224 | + leaveRepository.save(leave); |
| 1225 | + |
| 1226 | + // 创建流程 |
| 1227 | + flowService.startFlow(workCode, user, leave, "发起流程"); |
| 1228 | + |
| 1229 | + // 查看我的待办 |
| 1230 | + List<FlowRecord> userTodos = flowRecordRepository.findTodoByOperatorId(user.getUserId(), pageRequest).getContent(); |
| 1231 | + assertEquals(1, userTodos.size()); |
| 1232 | + |
| 1233 | + |
| 1234 | + FlowRecord userTodo = userTodos.get(0); |
| 1235 | + flowService.submitFlow(userTodo.getId(), user, leave, Opinion.pass("同意")); |
| 1236 | + |
| 1237 | + List<FlowRecord> deptTodos = flowRecordRepository.findTodoByOperatorId(dept.getUserId(), pageRequest).getContent(); |
| 1238 | + assertEquals(1, deptTodos.size()); |
| 1239 | + |
| 1240 | + FlowRecord deptTodo = deptTodos.get(0); |
| 1241 | + flowService.submitFlow(deptTodo.getId(), dept, leave, Opinion.pass("同意")); |
| 1242 | + |
| 1243 | + List<FlowRecord> bossTodos = flowRecordRepository.findTodoByOperatorId(boss.getUserId(), pageRequest).getContent(); |
| 1244 | + assertEquals(1, bossTodos.size()); |
| 1245 | + |
| 1246 | + FlowRecord bossTodo = bossTodos.get(0); |
| 1247 | + flowService.submitFlow(bossTodo.getId(), boss, leave, Opinion.reject("不同意")); |
| 1248 | + |
| 1249 | + deptTodos = flowRecordRepository.findTodoByOperatorId(dept.getUserId(), pageRequest).getContent(); |
| 1250 | + assertEquals(1, deptTodos.size()); |
| 1251 | + |
| 1252 | + deptTodo = deptTodos.get(0); |
| 1253 | + flowService.submitFlow(deptTodo.getId(), dept, leave, Opinion.pass("同意")); |
| 1254 | + |
| 1255 | + bossTodos = flowRecordRepository.findTodoByOperatorId(boss.getUserId(), pageRequest).getContent(); |
| 1256 | + assertEquals(1, bossTodos.size()); |
| 1257 | + |
| 1258 | + bossTodo = bossTodos.get(0); |
| 1259 | + flowService.submitFlow(bossTodo.getId(), boss, leave, Opinion.pass("同意")); |
| 1260 | + |
| 1261 | + List<FlowRecord> records = flowRecordRepository.findAll(pageRequest).getContent(); |
| 1262 | + assertEquals(5, records.size()); |
| 1263 | + assertTrue(records.stream().allMatch(FlowRecord::isFinish)); |
| 1264 | + |
| 1265 | + } |
1109 | 1266 | } |
0 commit comments