Skip to content

Commit 4c663c3

Browse files
committed
update 2.9.17
1 parent ac787c1 commit 4c663c3

File tree

25 files changed

+672
-441
lines changed

25 files changed

+672
-441
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
<groupId>com.codingapi.springboot</groupId>
1717
<artifactId>springboot-parent</artifactId>
18-
<version>2.9.16</version>
18+
<version>2.9.17</version>
1919

2020
<url>https://github.com/codingapi/springboot-framewrok</url>
2121
<name>springboot-parent</name>

springboot-starter-data-authorization/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.9.16</version>
9+
<version>2.9.17</version>
1010
</parent>
1111

1212
<artifactId>springboot-starter-data-authorization</artifactId>

springboot-starter-data-fast/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-parent</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>2.9.16</version>
8+
<version>2.9.17</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

springboot-starter-flow/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<artifactId>springboot-parent</artifactId>
88
<groupId>com.codingapi.springboot</groupId>
9-
<version>2.9.16</version>
9+
<version>2.9.17</version>
1010
</parent>
1111

1212
<name>springboot-starter-flow</name>

springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/build/FlowWorkBuilder.java

+5
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ public FlowWorkBuilder postponedMax(int postponedMax) {
4141
return this;
4242
}
4343

44+
public FlowWorkBuilder skipIfSameApprover(boolean skipIfSameApprover) {
45+
this.work.setSkipIfSameApprover(skipIfSameApprover);
46+
return this;
47+
}
48+
4449
public FlowWorkBuilder title(String title) {
4550
this.work.setTitle(title);
4651
return this;

springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/domain/FlowWork.java

+8
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ public class FlowWork {
6060
*/
6161
private boolean enable;
6262

63+
/**
64+
* 是否跳过相同审批人,默认为false
65+
*/
66+
@Setter
67+
private boolean skipIfSameApprover;
68+
6369
/**
6470
* 最大延期次数
6571
*/
@@ -122,6 +128,7 @@ public FlowWork copy(){
122128
flowWork.setTitle(this.getTitle());
123129
flowWork.setCode(RandomGenerator.randomString(8));
124130
flowWork.setPostponedMax(this.getPostponedMax());
131+
flowWork.setSkipIfSameApprover(this.isSkipIfSameApprover());
125132
flowWork.schema(schema);
126133
return flowWork;
127134
}
@@ -225,6 +232,7 @@ public FlowWorkSerializable toSerializable() {
225232
createUser.getUserId(),
226233
createTime,
227234
updateTime,
235+
skipIfSameApprover,
228236
enable,
229237
postponedMax,
230238
schema,

springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/pojo/FlowResult.java

+12
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import com.codingapi.springboot.flow.domain.FlowWork;
44
import com.codingapi.springboot.flow.record.FlowRecord;
5+
import com.codingapi.springboot.flow.user.IFlowOperator;
56
import lombok.Getter;
67

78
import java.util.ArrayList;
89
import java.util.List;
10+
import java.util.stream.Collectors;
911

1012
@Getter
1113
public class FlowResult {
@@ -23,4 +25,14 @@ public FlowResult(FlowWork flowWork,FlowRecord flowRecord) {
2325
this.records = new ArrayList<>();
2426
this.records.add(flowRecord);
2527
}
28+
29+
30+
/**
31+
* 匹配操作者的记录
32+
* @param operator 操作者
33+
* @return 记录
34+
*/
35+
public List<FlowRecord> matchRecordByOperator(IFlowOperator operator){
36+
return records.stream().filter(record -> record.isOperator(operator)).collect(Collectors.toList());
37+
}
2638
}

springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/serializable/FlowWorkSerializable.java

+8
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@ public class FlowWorkSerializable implements Serializable {
6363
* 更新时间
6464
*/
6565
private long updateTime;
66+
67+
/**
68+
* 是否跳过相同审批人,默认为false
69+
*/
70+
@Setter
71+
private boolean skipIfSameApprover;
72+
6673
/**
6774
* 是否启用
6875
*/
@@ -140,6 +147,7 @@ public FlowWork toFlowWork(FlowOperatorRepository flowOperatorRepository) {
140147
createTime,
141148
updateTime,
142149
enable,
150+
skipIfSameApprover,
143151
postponedMax,
144152
flowNodes,
145153
relations.stream().map((item) -> item.toFlowRelation(flowNodes)).collect(Collectors.toList()),

springboot-starter-flow/src/main/java/com/codingapi/springboot/flow/service/FlowRecordVerifyService.java

+53-38
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.codingapi.springboot.flow.record.FlowRecord;
66
import com.codingapi.springboot.flow.repository.FlowProcessRepository;
77
import com.codingapi.springboot.flow.repository.FlowRecordRepository;
8+
import com.codingapi.springboot.flow.repository.FlowWorkRepository;
89
import com.codingapi.springboot.flow.user.IFlowOperator;
910
import lombok.Getter;
1011

@@ -16,37 +17,58 @@
1617
public class FlowRecordVerifyService {
1718

1819
// constructor params
19-
private final long recordId;
2020
@Getter
2121
private final IFlowOperator currentOperator;
2222

2323
// register repository
2424
final FlowRecordRepository flowRecordRepository;
2525
final FlowProcessRepository flowProcessRepository;
26+
final FlowWorkRepository flowWorkRepository;
2627

2728
// load Object
2829
@Getter
2930
private FlowWork flowWork;
3031
@Getter
3132
private FlowNode flowNode;
3233
@Getter
33-
private FlowRecord flowRecord;
34+
private final FlowRecord flowRecord;
35+
36+
public FlowRecordVerifyService(
37+
FlowWorkRepository flowWorkRepository,
38+
FlowRecordRepository flowRecordRepository,
39+
FlowProcessRepository flowProcessRepository,
40+
long recordId,
41+
IFlowOperator currentOperator) {
42+
this.flowWorkRepository = flowWorkRepository;
43+
this.flowRecordRepository = flowRecordRepository;
44+
this.flowProcessRepository = flowProcessRepository;
3445

35-
public FlowRecordVerifyService(FlowRecordRepository flowRecordRepository,
46+
this.currentOperator = currentOperator;
47+
FlowRecord flowRecord = flowRecordRepository.getFlowRecordById(recordId);
48+
if (flowRecord == null) {
49+
throw new IllegalArgumentException("flow record not found");
50+
}
51+
this.flowRecord = flowRecord;
52+
}
53+
54+
public FlowRecordVerifyService(FlowWorkRepository flowWorkRepository,
55+
FlowRecordRepository flowRecordRepository,
3656
FlowProcessRepository flowProcessRepository,
37-
long recordId,
57+
FlowRecord flowRecord,
58+
FlowWork flowWork,
3859
IFlowOperator currentOperator) {
60+
this.flowWorkRepository = flowWorkRepository;
3961
this.flowRecordRepository = flowRecordRepository;
4062
this.flowProcessRepository = flowProcessRepository;
4163

4264
this.currentOperator = currentOperator;
43-
this.recordId = recordId;
65+
this.flowRecord = flowRecord;
66+
this.flowWork = flowWork;
4467
}
4568

4669

47-
4870
/**
49-
* 校验流程记录是否已提交状态
71+
* 校验流程记录是否已提交状态
5072
*/
5173
public void verifyFlowRecordSubmitState() {
5274
flowRecord.submitStateVerify();
@@ -56,13 +78,13 @@ public void verifyFlowRecordSubmitState() {
5678
* 校验流程是否当前操作者可操作的
5779
*/
5880
public void verifyFlowRecordCurrentOperator() {
59-
if(!currentOperator.isFlowManager()) {
81+
if (!currentOperator.isFlowManager()) {
6082
flowRecord.matcherOperator(currentOperator);
6183
}
6284
}
6385

6486
/**
65-
* 校验流程是否已审批
87+
* 校验流程是否已审批
6688
*/
6789
public void verifyFlowRecordNotDone() {
6890
if (flowRecord.isDone()) {
@@ -72,7 +94,7 @@ public void verifyFlowRecordNotDone() {
7294

7395

7496
/**
75-
* 校验流程是否已审批
97+
* 校验流程是否已审批
7698
*/
7799
public void verifyFlowRecordIsDone() {
78100
if (!flowRecord.isDone()) {
@@ -81,20 +103,19 @@ public void verifyFlowRecordIsDone() {
81103
}
82104

83105

84-
85106
/**
86-
* 校验流程是否未审批
107+
* 校验流程是否未审批
87108
*/
88109
public void verifyFlowRecordNotTodo() {
89110
if (flowRecord.isTodo()) {
90-
if(!flowRecord.isStartRecord()) {
111+
if (!flowRecord.isStartRecord()) {
91112
throw new IllegalArgumentException("flow record is todo");
92113
}
93114
}
94115
}
95116

96117
/**
97-
* 校验流程是未审批
118+
* 校验流程是未审批
98119
*/
99120
public void verifyFlowRecordIsTodo() {
100121
if (!flowRecord.isTodo()) {
@@ -103,7 +124,7 @@ public void verifyFlowRecordIsTodo() {
103124
}
104125

105126
/**
106-
* 校验流程是否已完成
127+
* 校验流程是否已完成
107128
*/
108129
public void verifyFlowRecordNotFinish() {
109130
if (flowRecord.isFinish()) {
@@ -112,7 +133,7 @@ public void verifyFlowRecordNotFinish() {
112133
}
113134

114135
/**
115-
* 校验流程节点是否可编辑
136+
* 校验流程节点是否可编辑
116137
*/
117138
public void verifyFlowNodeEditableState(boolean editable) {
118139
// 流程节点不可编辑时,不能保存
@@ -123,41 +144,35 @@ public void verifyFlowNodeEditableState(boolean editable) {
123144

124145

125146
/**
126-
* 校验转办人员不能是当前操作者
147+
* 校验转办人员不能是当前操作者
127148
*/
128149
public void verifyTargetOperatorIsNotCurrentOperator(IFlowOperator targetOperator) {
129-
if(currentOperator.getUserId() == targetOperator.getUserId()){
150+
if (currentOperator.getUserId() == targetOperator.getUserId()) {
130151
throw new IllegalArgumentException("current operator is target operator");
131152
}
132153
}
133154

134155

135156
/**
136-
* 获取流程记录对象
137-
*/
138-
public void loadFlowRecord() {
139-
FlowRecord flowRecord = flowRecordRepository.getFlowRecordById(recordId);
140-
if (flowRecord == null) {
141-
throw new IllegalArgumentException("flow record not found");
142-
}
143-
this.flowRecord = flowRecord;
144-
}
145-
146-
/**
147-
* 获取流程设计对象
157+
* 获取流程设计对象
148158
*/
149159
public void loadFlowWork() {
150-
FlowWork flowWork = flowProcessRepository.getFlowWorkByProcessId(flowRecord.getProcessId());
151-
if (flowWork == null) {
152-
throw new IllegalArgumentException("flow work not found");
160+
if (this.flowWork == null) {
161+
FlowWork flowWork = flowProcessRepository.getFlowWorkByProcessId(flowRecord.getProcessId());
162+
if (flowWork == null) {
163+
flowWork = flowWorkRepository.getFlowWorkByCode(flowRecord.getWorkCode());
164+
}
165+
if (flowWork == null) {
166+
throw new IllegalArgumentException("flow work not found");
167+
}
168+
flowWork.enableValidate();
169+
this.flowWork = flowWork;
153170
}
154-
flowWork.enableValidate();
155-
this.flowWork = flowWork;
156171
}
157172

158173

159174
/**
160-
* 获取流程节点对象
175+
* 获取流程节点对象
161176
*/
162177
public void loadFlowNode() {
163178
FlowNode flowNode = flowWork.getNodeByCode(flowRecord.getNodeCode());
@@ -168,11 +183,11 @@ public void loadFlowNode() {
168183
}
169184

170185
/**
171-
* 标记流程为已读状态
186+
* 标记流程为已读状态
172187
*/
173188
public void setFlowRecordRead() {
174189
if (currentOperator != null) {
175-
if(flowRecord.isOperator(currentOperator)) {
190+
if (flowRecord.isOperator(currentOperator)) {
176191
if (!flowRecord.isRead()) {
177192
flowRecord.read();
178193
flowRecordRepository.update(flowRecord);

0 commit comments

Comments
 (0)