From 37897fc8f7d25f2230e597fbac9d23efa131e316 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=80=E6=9E=9A=E7=A0=81=E5=86=9C?= <154040976@qq.com>
Date: Tue, 18 Apr 2023 08:36:51 +0000
Subject: [PATCH 1/9] update README.md.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: 一枚码农 <154040976@qq.com>
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index c1e402d..8e6693b 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
- 👉 http://42.192.219.164:8081👈|admin|123456
+ 👉 http://42.192.219.164👈|admin|123456
@@ -37,7 +37,7 @@ lenosp是一个基于spring boot的脚手架,并提供完善社区文档教程
# 体验
-[http://42.192.219.164:8081/login](http://42.192.219.164:8081/login)
+[http://42.192.219.164/login](http://42.192.219.164/login)
体验账户:admin,所有账户密码:123456
测试环境,所有业务增删改不会持久化,默认显示成功
--
Gitee
From 4fc80e6672e178666ddb10719b67e8adae357ff1 Mon Sep 17 00:00:00 2001
From: Star_Chen <1622997479@qq.com>
Date: Tue, 18 Apr 2023 22:42:26 +0800
Subject: [PATCH 2/9] =?UTF-8?q?=E6=89=80=E6=9C=89=E5=AD=90=E5=B7=A5?=
=?UTF-8?q?=E7=A8=8B=E4=BE=9D=E8=B5=96=E6=95=B4=E7=90=86=EF=BC=8Curl?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=EF=BC=8C=E7=BB=9F=E4=B8=80junit=E7=89=88?=
=?UTF-8?q?=E6=9C=AC=E5=8F=B7=E3=80=82=20BaseController=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=8C=E5=8F=96=E6=B6=88equals=E8=AD=A6?=
=?UTF-8?q?=E5=91=8A=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
len-activiti/pom.xml | 12 +++++-------
len-blog/pom.xml | 13 +++++++------
len-common/pom.xml | 3 +--
len-core/pom.xml | 11 ++++-------
.../src/main/java/com/len/base/BaseController.java | 8 ++++++--
len-sys/pom.xml | 9 ++-------
len-web/pom.xml | 8 +++-----
pom.xml | 10 ++++++++--
8 files changed, 36 insertions(+), 38 deletions(-)
diff --git a/len-activiti/pom.xml b/len-activiti/pom.xml
index 0c11fb5..51ae321 100644
--- a/len-activiti/pom.xml
+++ b/len-activiti/pom.xml
@@ -7,19 +7,18 @@
lenosp-2.0-SNAPSHOT
4.0.0
-
len-activiti
+ jar
len-activiti
- http://maven.apache.org
+ https://gitee.com/zzdevelop/lenosp
UTF-8
- 5.22.0
-
+
org.activiti
@@ -54,7 +53,7 @@
junit
junit
- 4.12
+ ${junit.version}
@@ -62,7 +61,7 @@
com.len
len-sys
- lenosp-2.0-SNAPSHOT
+ ${lenosp.version}
@@ -85,5 +84,4 @@
-
diff --git a/len-blog/pom.xml b/len-blog/pom.xml
index bb19071..14656f6 100644
--- a/len-blog/pom.xml
+++ b/len-blog/pom.xml
@@ -8,9 +8,15 @@
lenosp-2.0-SNAPSHOT
4.0.0
-
len-blog
+ jar
+
+ len-blog
+ https://gitee.com/zzdevelop/lenosp
+
+ UTF-8
+
@@ -21,10 +27,5 @@
com.len
len-sys
-
- junit
- junit
- 4.12
-
\ No newline at end of file
diff --git a/len-common/pom.xml b/len-common/pom.xml
index b10d339..e80f0c4 100644
--- a/len-common/pom.xml
+++ b/len-common/pom.xml
@@ -11,7 +11,6 @@
jar
len-common
-
https://gitee.com/zzdevelop/lenosp
@@ -24,7 +23,7 @@
junit
junit
- 4.11
+ ${junit.version}
test
diff --git a/len-core/pom.xml b/len-core/pom.xml
index 7fe9853..54a204f 100644
--- a/len-core/pom.xml
+++ b/len-core/pom.xml
@@ -7,12 +7,11 @@
lenosp-2.0-SNAPSHOT
4.0.0
-
len-core
-
+ jar
len-core
- http://maven.apache.org
+ https://gitee.com/zzdevelop/lenosp
UTF-8
@@ -22,7 +21,7 @@
junit
junit
- 3.8.1
+ ${junit.version}
test
@@ -30,9 +29,7 @@
javax.mail
mail
- 1.5.0-b01
+ ${mail.version}
-
-
diff --git a/len-core/src/main/java/com/len/base/BaseController.java b/len-core/src/main/java/com/len/base/BaseController.java
index 90d67c0..60a9bb7 100644
--- a/len-core/src/main/java/com/len/base/BaseController.java
+++ b/len-core/src/main/java/com/len/base/BaseController.java
@@ -25,12 +25,16 @@ import com.len.util.MsHelper;
import lombok.extern.slf4j.Slf4j;
+/**
+ * 控制器基础抽象类
+ * @author https://gitee.com/zzdevelop/lenosp 自行补充
+ */
@Slf4j
public abstract class BaseController {
private static boolean isAjaxRequest(HttpServletRequest request) {
String requestedWith = request.getHeader("x-requested-with");
- return requestedWith != null && requestedWith.equalsIgnoreCase("XMLHttpRequest");
+ return "XMLHttpRequest".equalsIgnoreCase(requestedWith);
}
@InitBinder
@@ -41,7 +45,7 @@ public abstract class BaseController {
}
@ExceptionHandler({UnauthorizedException.class, AuthorizationException.class})
- public String authorizationException(HttpServletRequest request, HttpServletResponse response) {
+ public String authorizationException(HttpServletRequest request) {
if (isAjaxRequest(request)) {
Map map = Maps.newHashMap();
map.put("code", "403");
diff --git a/len-sys/pom.xml b/len-sys/pom.xml
index a70b196..03e3e3e 100644
--- a/len-sys/pom.xml
+++ b/len-sys/pom.xml
@@ -7,11 +7,11 @@
lenosp-2.0-SNAPSHOT
4.0.0
-
len-sys
+ jar
len-sys
- http://maven.apache.org
+ https://gitee.com/zzdevelop/lenosp
UTF-8
@@ -22,10 +22,5 @@
com.len
len-core
-
- junit
- junit
- 4.12
-
diff --git a/len-web/pom.xml b/len-web/pom.xml
index d9482f5..e9aed51 100644
--- a/len-web/pom.xml
+++ b/len-web/pom.xml
@@ -8,18 +8,17 @@
4.0.0
len-web
- len-web
- http://maven.apache.org
jar
+ len-web
+ https://gitee.com/zzdevelop/lenosp
-
org.mybatis.generator
mybatis-generator-core
- 1.3.5
+ ${mybatis-generator-core.version}
org.springframework.boot
@@ -42,7 +41,6 @@
com.len
len-blog
- lenosp-2.0-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index ba6542b..5855161 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,6 +8,8 @@
lenosp
pom
lenosp-2.0-SNAPSHOT
+ https://gitee.com/zzdevelop/lenosp
+
org.springframework.boot
spring-boot-starter-parent
@@ -20,13 +22,14 @@
1.8
lenosp-2.0-SNAPSHOT
+ 1.2.8
3.5.3
3.2.0
- 5.1.6
- 1.2.8
+ 5.22.0
1.2.5
2.5.0
2.3.0
+ 5.1.6
2.1.9.RELEASE
1.3.2
@@ -42,6 +45,8 @@
3.7
1.3.2
+ 4.12
+ 1.5.0-b01
4.0.12
1.16.10
2.7.0
@@ -49,6 +54,7 @@
1.2.41
1.7.25
2.0.1.Final
+ 1.3.5
6.0.10.Final
3.0.0
--
Gitee
From 8b09e8903b1d18d175a214d59be9a12ba9d50ba5 Mon Sep 17 00:00:00 2001
From: linht12 <343773342@qq.com>
Date: Thu, 20 Apr 2023 10:53:59 +0800
Subject: [PATCH 3/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dsonar=E6=BC=8F=E6=B4=9E?=
=?UTF-8?q?=E5=92=8C=E9=98=BF=E9=87=8C=E8=A7=84=E7=BA=A6=E6=89=AB=E6=8F=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/len/util/AnimatedGifEncoder.java | 147 +++++++++++-------
.../activiti/FilterServletOutputStream.java | 10 +-
.../org/activiti/GenericResponseWrapper.java | 10 +-
.../org/activiti/JsonpCallbackFilter.java | 12 +-
.../image/HMProcessDiagramGenerator.java | 21 +--
.../impl/DefaultProcessDiagramCanvas.java | 25 +--
.../impl/DefaultProcessDiagramGenerator.java | 90 +++++------
...rocessDefinitionDiagramLayoutResource.java | 66 ++++----
.../service/impl/BlogArticleServiceImpl.java | 11 +-
.../src/main/java/com/len/util/JdbcUtil.java | 10 --
.../java/com/len/util/VerifyCodeUtils.java | 23 +--
.../com/len/core/filter/VerifyCodeUtils.java | 23 +--
.../com/len/core/listener/LenospInit.java | 2 +-
.../core/quartz/CustomQuartz/DataSchdule.java | 8 +-
len-web/src/main/java/test/ActivitiDemo.java | 26 ++--
.../src/main/java/test/ActivitiGateWay.java | 18 ++-
16 files changed, 270 insertions(+), 232 deletions(-)
diff --git a/len-activiti/src/main/java/com/len/util/AnimatedGifEncoder.java b/len-activiti/src/main/java/com/len/util/AnimatedGifEncoder.java
index 98ef705..4398039 100644
--- a/len-activiti/src/main/java/com/len/util/AnimatedGifEncoder.java
+++ b/len-activiti/src/main/java/com/len/util/AnimatedGifEncoder.java
@@ -164,8 +164,9 @@ public class AnimatedGifEncoder {
* Flushes any pending data and closes output file. If writing to an OutputStream, the stream is not closed.
*/
public boolean finish() {
- if (!started)
+ if (!started) {
return false;
+ }
boolean ok = true;
started = false;
try {
@@ -212,8 +213,9 @@ public class AnimatedGifEncoder {
* @return
*/
public void setQuality(int quality) {
- if (quality < 1)
+ if (quality < 1) {
quality = 1;
+ }
sample = quality;
}
@@ -224,14 +226,17 @@ public class AnimatedGifEncoder {
* @param h int frame width.
*/
public void setSize(int w, int h) {
- if (started && !firstFrame)
+ if (started && !firstFrame) {
return;
+ }
width = w;
height = h;
- if (width < 1)
+ if (width < 1) {
width = 320;
- if (height < 1)
+ }
+ if (height < 1) {
height = 240;
+ }
sizeSet = true;
}
@@ -242,8 +247,9 @@ public class AnimatedGifEncoder {
* @return false if initial write failed.
*/
public boolean start(OutputStream os) {
- if (os == null)
+ if (os == null) {
return false;
+ }
boolean ok = true;
closeStream = false;
out = os;
@@ -311,8 +317,9 @@ public class AnimatedGifEncoder {
*
*/
protected int findClosest(Color c) {
- if (colorTab == null)
+ if (colorTab == null) {
return -1;
+ }
int r = c.getRed();
int g = c.getGreen();
int b = c.getBlue();
@@ -528,7 +535,7 @@ class LZWEncoder {
// for the decompressor. Late addition: construct the table according to
// file size for noticeable speed improvement on small files. Please direct
// questions about this implementation to ames!jaw.
- int masks[] = {0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF,
+ int[] masks = {0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF,
0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF};
// Number of characters so far in this 'packet'
int a_count;
@@ -567,8 +574,9 @@ class LZWEncoder {
// characters, flush the packet to disk.
void char_out(byte c, OutputStream outs) throws IOException {
accum[a_count++] = c;
- if (a_count >= 254)
+ if (a_count >= 254) {
flush_char(outs);
+ }
}
// Clear out the hash table
@@ -584,8 +592,9 @@ class LZWEncoder {
// reset code table
void cl_hash(int hsize) {
- for (int i = 0; i < hsize; ++i)
+ for (int i = 0; i < hsize; ++i) {
htab[i] = -1;
+ }
}
void compress(int init_bits, OutputStream outs) throws IOException {
@@ -614,8 +623,9 @@ class LZWEncoder {
ent = nextPixel();
hshift = 0;
- for (fcode = hsize; fcode < 65536; fcode *= 2)
+ for (fcode = hsize; fcode < 65536; fcode *= 2) {
++hshift;
+ }
hshift = 8 - hshift; // set hash code range bound
hsize_reg = hsize;
@@ -634,11 +644,13 @@ class LZWEncoder {
} else if (htab[i] >= 0) // non-empty slot
{
disp = hsize_reg - i; // secondary hash (after G. Knott)
- if (i == 0)
+ if (i == 0) {
disp = 1;
+ }
do {
- if ((i -= disp) < 0)
+ if ((i -= disp) < 0) {
i += hsize_reg;
+ }
if (htab[i] == fcode) {
ent = codetab[i];
@@ -651,8 +663,9 @@ class LZWEncoder {
if (free_ent < maxmaxcode) {
codetab[i] = free_ent++; // code -> hashtable
htab[i] = fcode;
- } else
+ } else {
cl_block(outs);
+ }
}
// Put out the final code.
output(ent, outs);
@@ -688,9 +701,9 @@ class LZWEncoder {
// Return the next pixel from the image
// ----------------------------------------------------------------------------
private int nextPixel() {
- if (remaining == 0)
+ if (remaining == 0) {
return EOF;
-
+ }
--remaining;
byte pix = pixAry[curPixel++];
@@ -701,11 +714,11 @@ class LZWEncoder {
void output(int code, OutputStream outs) throws IOException {
cur_accum &= masks[cur_bits];
- if (cur_bits > 0)
+ if (cur_bits > 0) {
cur_accum |= (code << cur_bits);
- else
+ }else {
cur_accum = code;
-
+ }
cur_bits += n_bits;
while (cur_bits >= 8) {
@@ -722,10 +735,11 @@ class LZWEncoder {
clear_flg = false;
} else {
++n_bits;
- if (n_bits == maxbits)
+ if (n_bits == maxbits) {
maxcode = maxmaxcode;
- else
+ }else {
maxcode = MAXCODE(n_bits);
+ }
}
}
@@ -892,8 +906,9 @@ class NeuQuant {
public byte[] colorMap() {
byte[] map = new byte[3 * netsize];
int[] index = new int[netsize];
- for (int i = 0; i < netsize; i++)
+ for (int i = 0; i < netsize; i++) {
index[network[i][3]] = i;
+ }
int k = 0;
for (int i = 0; i < netsize; i++) {
int j = index[i];
@@ -949,15 +964,17 @@ class NeuQuant {
/* smallval entry is now in position i */
if (smallval != previouscol) {
netindex[previouscol] = (startpos + i) >> 1;
- for (j = previouscol + 1; j < smallval; j++)
+ for (j = previouscol + 1; j < smallval; j++) {
netindex[j] = i;
+ }
previouscol = smallval;
startpos = i;
}
}
netindex[previouscol] = (startpos + maxnetpos) >> 1;
- for (j = previouscol + 1; j < 256; j++)
+ for (j = previouscol + 1; j < 256; j++) {
netindex[j] = maxnetpos; /* really 256 */
+ }
}
/*
@@ -970,8 +987,9 @@ class NeuQuant {
byte[] p;
int pix, lim;
- if (lengthcount < minpicturebytes)
+ if (lengthcount < minpicturebytes) {
samplefac = 1;
+ }
alphadec = 30 + ((samplefac - 1) / 3);
p = thepicture;
pix = 0;
@@ -982,25 +1000,27 @@ class NeuQuant {
radius = initradius;
rad = radius >> radiusbiasshift;
- if (rad <= 1)
+ if (rad <= 1) {
rad = 0;
- for (i = 0; i < rad; i++)
+ }
+ for (i = 0; i < rad; i++) {
radpower[i] = alpha * (((rad * rad - i * i) * radbias) / (rad * rad));
-
+ }
// fprintf(stderr,"beginning 1D learning: initial radius=%d\n", rad);
- if (lengthcount < minpicturebytes)
+ if (lengthcount < minpicturebytes) {
step = 3;
- else if ((lengthcount % prime1) != 0)
+ } else if ((lengthcount % prime1) != 0) {
step = 3 * prime1;
- else {
- if ((lengthcount % prime2) != 0)
+ }else {
+ if ((lengthcount % prime2) != 0){
step = 3 * prime2;
- else {
- if ((lengthcount % prime3) != 0)
+ }else {
+ if ((lengthcount % prime3) != 0) {
step = 3 * prime3;
- else
+ }else {
step = 3 * prime4;
+ }
}
}
@@ -1012,24 +1032,27 @@ class NeuQuant {
j = contest(b, g, r);
altersingle(alpha, j, b, g, r);
- if (rad != 0)
+ if (rad != 0) {
alterneigh(rad, j, b, g, r); /* alter neighbours */
-
+ }
pix += step;
- if (pix >= lim)
+ if (pix >= lim) {
pix -= lengthcount;
-
+ }
i++;
- if (delta == 0)
+ if (delta == 0) {
delta = 1;
+ }
if (i % delta == 0) {
alpha -= alpha / alphadec;
radius -= radius / radiusdec;
rad = radius >> radiusbiasshift;
- if (rad <= 1)
+ if (rad <= 1) {
rad = 0;
- for (j = 0; j < rad; j++)
+ }
+ for (j = 0; j < rad; j++) {
radpower[j] = alpha * (((rad * rad - j * j) * radbias) / (rad * rad));
+ }
}
}
// fprintf(stderr,"finished 1D learning: final alpha=%f
@@ -1056,20 +1079,23 @@ class NeuQuant {
if (i < netsize) {
p = network[i];
dist = p[1] - g; /* inx key */
- if (dist >= bestd)
+ if (dist >= bestd) {
i = netsize; /* stop iter */
- else {
+ }else {
i++;
- if (dist < 0)
+ if (dist < 0) {
dist = -dist;
+ }
a = p[0] - b;
- if (a < 0)
+ if (a < 0) {
a = -a;
+ }
dist += a;
if (dist < bestd) {
a = p[2] - r;
- if (a < 0)
+ if (a < 0) {
a = -a;
+ }
dist += a;
if (dist < bestd) {
bestd = dist;
@@ -1081,20 +1107,24 @@ class NeuQuant {
if (j >= 0) {
p = network[j];
dist = g - p[1]; /* inx key - reverse dif */
- if (dist >= bestd)
+ if (dist >= bestd) {
j = -1; /* stop iter */
+ }
else {
j--;
- if (dist < 0)
+ if (dist < 0) {
dist = -dist;
+ }
a = p[0] - b;
- if (a < 0)
+ if (a < 0) {
a = -a;
+ }
dist += a;
if (dist < bestd) {
a = p[2] - r;
- if (a < 0)
+ if (a < 0) {
a = -a;
+ }
dist += a;
if (dist < bestd) {
bestd = dist;
@@ -1139,11 +1169,13 @@ class NeuQuant {
int[] p;
lo = i - rad;
- if (lo < -1)
+ if (lo < -1) {
lo = -1;
+ }
hi = i + rad;
- if (hi > netsize)
+ if (hi > netsize) {
hi = netsize;
+ }
j = i + 1;
k = i - 1;
@@ -1206,15 +1238,18 @@ class NeuQuant {
for (i = 0; i < netsize; i++) {
n = network[i];
dist = n[0] - b;
- if (dist < 0)
+ if (dist < 0) {
dist = -dist;
+ }
a = n[1] - g;
- if (a < 0)
+ if (a < 0) {
a = -a;
+ }
dist += a;
a = n[2] - r;
- if (a < 0)
+ if (a < 0) {
a = -a;
+ }
dist += a;
if (dist < bestd) {
bestd = dist;
diff --git a/len-activiti/src/main/java/org/activiti/FilterServletOutputStream.java b/len-activiti/src/main/java/org/activiti/FilterServletOutputStream.java
index c351445..abf1fa0 100644
--- a/len-activiti/src/main/java/org/activiti/FilterServletOutputStream.java
+++ b/len-activiti/src/main/java/org/activiti/FilterServletOutputStream.java
@@ -15,23 +15,23 @@ public class FilterServletOutputStream extends ServletOutputStream {
public FilterServletOutputStream(OutputStream output) {
stream = new DataOutputStream(output);
}
-
+ @Override
public void write(int b) throws IOException {
stream.write(b);
}
-
+ @Override
public void write(byte[] b) throws IOException {
stream.write(b);
}
-
+ @Override
public void write(byte[] b, int off, int len) throws IOException {
stream.write(b, off, len);
}
-
+ @Override
public void setWriteListener(WriteListener writeListener) {
this.writeListener = writeListener;
}
-
+ @Override
public boolean isReady() {
return true;
}
diff --git a/len-activiti/src/main/java/org/activiti/GenericResponseWrapper.java b/len-activiti/src/main/java/org/activiti/GenericResponseWrapper.java
index 2856f39..322b52e 100644
--- a/len-activiti/src/main/java/org/activiti/GenericResponseWrapper.java
+++ b/len-activiti/src/main/java/org/activiti/GenericResponseWrapper.java
@@ -20,11 +20,11 @@ public class GenericResponseWrapper extends HttpServletResponseWrapper {
public byte[] getData() {
return output.toByteArray();
}
-
+ @Override
public ServletOutputStream getOutputStream() {
return new FilterServletOutputStream(output);
}
-
+ @Override
public PrintWriter getWriter() {
return new PrintWriter(getOutputStream(), true);
}
@@ -32,16 +32,16 @@ public class GenericResponseWrapper extends HttpServletResponseWrapper {
public int getContentLength() {
return contentLength;
}
-
+ @Override
public void setContentLength(int length) {
this.contentLength = length;
super.setContentLength(length);
}
-
+ @Override
public String getContentType() {
return contentType;
}
-
+ @Override
public void setContentType(String type) {
this.contentType = type;
super.setContentType(type);
diff --git a/len-activiti/src/main/java/org/activiti/JsonpCallbackFilter.java b/len-activiti/src/main/java/org/activiti/JsonpCallbackFilter.java
index e787a2c..14e4325 100644
--- a/len-activiti/src/main/java/org/activiti/JsonpCallbackFilter.java
+++ b/len-activiti/src/main/java/org/activiti/JsonpCallbackFilter.java
@@ -15,9 +15,9 @@ import lombok.extern.slf4j.Slf4j;
@WebFilter("/service/*")
@Slf4j
public class JsonpCallbackFilter implements Filter {
-
+ @Override
public void init(FilterConfig fConfig) throws ServletException {}
-
+ @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest)request;
@@ -26,9 +26,9 @@ public class JsonpCallbackFilter implements Filter {
Map parms = httpRequest.getParameterMap();
if (parms.containsKey("callback")) {
- if (log.isDebugEnabled())
+ if (log.isDebugEnabled()) {
log.debug("Wrapping response with JSONP callback '" + parms.get("callback")[0] + "'");
-
+ }
OutputStream out = httpResponse.getOutputStream();
GenericResponseWrapper wrapper = new GenericResponseWrapper(httpResponse);
@@ -40,7 +40,7 @@ public class JsonpCallbackFilter implements Filter {
outputStream.write(new String(parms.get("callback")[0] + "(").getBytes());
outputStream.write(wrapper.getData());
outputStream.write(new String(");").getBytes());
- byte jsonpResponse[] = outputStream.toByteArray();
+ byte[] jsonpResponse = outputStream.toByteArray();
wrapper.setContentType("text/javascript;charset=UTF-8");
wrapper.setContentLength(jsonpResponse.length);
@@ -53,6 +53,6 @@ public class JsonpCallbackFilter implements Filter {
chain.doFilter(request, response);
}
}
-
+ @Override
public void destroy() {}
}
diff --git a/len-activiti/src/main/java/org/activiti/image/HMProcessDiagramGenerator.java b/len-activiti/src/main/java/org/activiti/image/HMProcessDiagramGenerator.java
index f896c0a..d574517 100644
--- a/len-activiti/src/main/java/org/activiti/image/HMProcessDiagramGenerator.java
+++ b/len-activiti/src/main/java/org/activiti/image/HMProcessDiagramGenerator.java
@@ -36,6 +36,7 @@ public interface HMProcessDiagramGenerator extends ProcessDiagramGenerator {
* @param annotationFontName override the default annotation font
* @param customClassLoader provide a custom classloader for retrieving icon images
*/
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities,
List highLightedFlows, String activityFontName, String labelFontName, String annotationFontName,
ClassLoader customClassLoader, double scaleFactor);
@@ -52,31 +53,33 @@ public interface HMProcessDiagramGenerator extends ProcessDiagramGenerator {
* @param highLightedActivities activities to highlight
* @param highLightedFlows flows to highlight
*/
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities,
List highLightedFlows);
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities,
List highLightedFlows, double scaleFactor);
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities);
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities,
double scaleFactor);
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, String activityFontName,
String labelFontName, String annotationFontName, ClassLoader customClassLoader);
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, String activityFontName,
String labelFontName, String annotationFontName, ClassLoader customClassLoader, double scaleFactor);
+ @Override
public InputStream generatePngDiagram(BpmnModel bpmnModel);
-
+ @Override
public InputStream generatePngDiagram(BpmnModel bpmnModel, double scaleFactor);
-
+ @Override
public InputStream generateJpgDiagram(BpmnModel bpmnModel);
-
+ @Override
public InputStream generateJpgDiagram(BpmnModel bpmnModel, double scaleFactor);
-
+ @Override
public BufferedImage generatePngImage(BpmnModel bpmnModel, double scaleFactor);
}
diff --git a/len-activiti/src/main/java/org/activiti/image/impl/DefaultProcessDiagramCanvas.java b/len-activiti/src/main/java/org/activiti/image/impl/DefaultProcessDiagramCanvas.java
index 2d318bb..98227d4 100644
--- a/len-activiti/src/main/java/org/activiti/image/impl/DefaultProcessDiagramCanvas.java
+++ b/len-activiti/src/main/java/org/activiti/image/impl/DefaultProcessDiagramCanvas.java
@@ -517,8 +517,9 @@ public class DefaultProcessDiagramCanvas {
g.fill(outerCircle);
g.setPaint(EVENT_BORDER_COLOR);
- if (isInterrupting == false)
+ if (isInterrupting == false) {
g.setStroke(NON_INTERRUPTING_EVENT_STROKE);
+ }
g.draw(outerCircle);
g.setStroke(originalStroke);
g.setPaint(originalPaint);
@@ -610,9 +611,9 @@ public class DefaultProcessDiagramCanvas {
public void drawSequenceflow(int srcX, int srcY, int targetX, int targetY, boolean conditional, boolean highLighted,
double scaleFactor) {
Paint originalPaint = g.getPaint();
- if (highLighted)
+ if (highLighted) {
g.setPaint(HIGHLIGHT_COLOR);
-
+ }
Line2D.Double line = new Line2D.Double(srcX, srcY, targetX, targetY);
g.draw(line);
drawArrowHead(line, scaleFactor);
@@ -621,8 +622,9 @@ public class DefaultProcessDiagramCanvas {
drawConditionalSequenceFlowIndicator(line, scaleFactor);
}
- if (highLighted)
+ if (highLighted) {
g.setPaint(originalPaint);
+ }
}
public void drawAssociation(int[] xPoints, int[] yPoints, AssociationDirection associationDirection,
@@ -645,7 +647,7 @@ public class DefaultProcessDiagramCanvas {
Stroke originalStroke = g.getStroke();
g.setPaint(CONNECTION_COLOR);
- if (connectionType.equals("association")) {
+ if ("association".equals(connectionType)) {
g.setStroke(ASSOCIATION_STROKE);
} else if (highLighted) {
g.setPaint(HIGHLIGHT_COLOR);
@@ -693,8 +695,9 @@ public class DefaultProcessDiagramCanvas {
public void drawSequenceflowWithoutArrow(int srcX, int srcY, int targetX, int targetY, boolean conditional,
boolean highLighted, double scaleFactor) {
Paint originalPaint = g.getPaint();
- if (highLighted)
+ if (highLighted) {
g.setPaint(HIGHLIGHT_COLOR);
+ }
Line2D.Double line = new Line2D.Double(srcX, srcY, targetX, targetY);
g.draw(line);
@@ -703,8 +706,9 @@ public class DefaultProcessDiagramCanvas {
drawConditionalSequenceFlowIndicator(line, scaleFactor);
}
- if (highLighted)
+ if (highLighted) {
g.setPaint(originalPaint);
+ }
}
public void drawArrowHead(Line2D.Double line, double scaleFactor) {
@@ -757,8 +761,9 @@ public class DefaultProcessDiagramCanvas {
}
public void drawConditionalSequenceFlowIndicator(Line2D.Double line, double scaleFactor) {
- if (scaleFactor > 1.0)
+ if (scaleFactor > 1.0) {
return;
+ }
int horizontal = (int)(CONDITIONAL_INDICATOR_WIDTH * 0.7);
int halfOfHorizontal = horizontal / 2;
int halfOfVertical = CONDITIONAL_INDICATOR_WIDTH / 2;
@@ -839,9 +844,9 @@ public class DefaultProcessDiagramCanvas {
// g.setPaint(TASK_BOX_COLOR);
g.setPaint(new Color(144, 238, 144));
int arcR = 6;
- if (thickBorder)
+ if (thickBorder) {
arcR = 3;
-
+ }
// shape
RoundRectangle2D rect = new RoundRectangle2D.Double(x, y, width, height, arcR, arcR);
g.fill(rect);
diff --git a/len-activiti/src/main/java/org/activiti/image/impl/DefaultProcessDiagramGenerator.java b/len-activiti/src/main/java/org/activiti/image/impl/DefaultProcessDiagramGenerator.java
index 9ffbcec..71852ba 100644
--- a/len-activiti/src/main/java/org/activiti/image/impl/DefaultProcessDiagramGenerator.java
+++ b/len-activiti/src/main/java/org/activiti/image/impl/DefaultProcessDiagramGenerator.java
@@ -44,7 +44,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
public DefaultProcessDiagramGenerator(final double scaleFactor) {
// start event
activityDrawInstructions.put(StartEvent.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
StartEvent startEvent = (StartEvent)flowNode;
@@ -69,7 +69,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// signal catch
activityDrawInstructions.put(IntermediateCatchEvent.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
IntermediateCatchEvent intermediateCatchEvent = (IntermediateCatchEvent)flowNode;
@@ -90,7 +90,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// signal throw
activityDrawInstructions.put(ThrowEvent.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
ThrowEvent throwEvent = (ThrowEvent)flowNode;
@@ -110,7 +110,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// end event
activityDrawInstructions.put(EndEvent.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
EndEvent endEvent = (EndEvent)flowNode;
@@ -128,7 +128,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// task
activityDrawInstructions.put(Task.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawTask(flowNode.getName(), graphicInfo);
@@ -137,7 +137,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// user task
activityDrawInstructions.put(UserTask.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawUserTask(flowNode.getName(), graphicInfo, scaleFactor);
@@ -146,7 +146,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// script task
activityDrawInstructions.put(ScriptTask.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawScriptTask(flowNode.getName(), graphicInfo, scaleFactor);
@@ -155,7 +155,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// service task
activityDrawInstructions.put(ServiceTask.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
ServiceTask serviceTask = (ServiceTask)flowNode;
@@ -171,7 +171,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// receive task
activityDrawInstructions.put(ReceiveTask.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawReceiveTask(flowNode.getName(), graphicInfo, scaleFactor);
@@ -180,7 +180,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// send task
activityDrawInstructions.put(SendTask.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawSendTask(flowNode.getName(), graphicInfo, scaleFactor);
@@ -189,7 +189,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// manual task
activityDrawInstructions.put(ManualTask.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawManualTask(flowNode.getName(), graphicInfo, scaleFactor);
@@ -198,7 +198,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// businessRuleTask task
activityDrawInstructions.put(BusinessRuleTask.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawBusinessRuleTask(flowNode.getName(), graphicInfo, scaleFactor);
@@ -207,7 +207,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// exclusive gateway
activityDrawInstructions.put(ExclusiveGateway.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawExclusiveGateway(graphicInfo, scaleFactor);
@@ -216,7 +216,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// inclusive gateway
activityDrawInstructions.put(InclusiveGateway.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawInclusiveGateway(graphicInfo, scaleFactor);
@@ -225,7 +225,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// parallel gateway
activityDrawInstructions.put(ParallelGateway.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawParallelGateway(graphicInfo, scaleFactor);
@@ -234,7 +234,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// event based gateway
activityDrawInstructions.put(EventGateway.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawEventBasedGateway(graphicInfo, scaleFactor);
@@ -243,7 +243,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// Boundary timer
activityDrawInstructions.put(BoundaryEvent.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
BoundaryEvent boundaryEvent = (BoundaryEvent)flowNode;
@@ -277,7 +277,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// subprocess
activityDrawInstructions.put(SubProcess.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
if (graphicInfo.getExpanded() != null && !graphicInfo.getExpanded()) {
@@ -290,7 +290,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// Event subprocess
activityDrawInstructions.put(EventSubProcess.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
if (graphicInfo.getExpanded() != null && !graphicInfo.getExpanded()) {
@@ -303,7 +303,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// call activity
activityDrawInstructions.put(CallActivity.class, new ActivityDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId());
processDiagramCanvas.drawCollapsedCallActivity(flowNode.getName(), graphicInfo);
@@ -312,7 +312,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// text annotation
artifactDrawInstructions.put(TextAnnotation.class, new ArtifactDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, Artifact artifact) {
GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(artifact.getId());
TextAnnotation textAnnotation = (TextAnnotation)artifact;
@@ -322,7 +322,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
// association
artifactDrawInstructions.put(Association.class, new ArtifactDrawInstruction() {
-
+ @Override
public void draw(DefaultProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, Artifact artifact) {
Association association = (Association)artifact;
String sourceRef = association.getSourceRef();
@@ -340,8 +340,8 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
List graphicInfoList = bpmnModel.getFlowLocationGraphicInfo(artifact.getId());
graphicInfoList = connectionPerfectionizer(processDiagramCanvas, bpmnModel, sourceElement,
targetElement, graphicInfoList);
- int xPoints[] = new int[graphicInfoList.size()];
- int yPoints[] = new int[graphicInfoList.size()];
+ int[] xPoints = new int[graphicInfoList.size()];
+ int[] yPoints = new int[graphicInfoList.size()];
for (int i = 1; i < graphicInfoList.size(); i++) {
GraphicInfo graphicInfo = graphicInfoList.get(i);
GraphicInfo previousGraphicInfo = graphicInfoList.get(i - 1);
@@ -405,8 +405,8 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
protected static GraphicInfo getLineCenter(List graphicInfoList) {
GraphicInfo gi = new GraphicInfo();
- int xPoints[] = new int[graphicInfoList.size()];
- int yPoints[] = new int[graphicInfoList.size()];
+ int[] xPoints = new int[graphicInfoList.size()];
+ int[] yPoints = new int[graphicInfoList.size()];
double length = 0;
double[] lengths = new double[graphicInfoList.size()];
@@ -635,7 +635,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
}
return flowNodes;
}
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities,
List highLightedFlows, String activityFontName, String labelFontName, String annotationFontName,
ClassLoader customClassLoader, double scaleFactor) {
@@ -643,7 +643,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
return generateProcessDiagram(bpmnModel, imageType, highLightedActivities, highLightedFlows, activityFontName,
labelFontName, annotationFontName, customClassLoader, scaleFactor).generateImage(imageType);
}
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities,
List highLightedFlows, String activityFontName, String labelFontName, String annotationFontName,
ClassLoader customClassLoader, double scaleFactor, List highLightedCurrentActivities) {
@@ -652,55 +652,55 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
labelFontName, annotationFontName, customClassLoader, scaleFactor, highLightedCurrentActivities)
.generateImage(imageType);
}
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities,
List highLightedFlows) {
return generateDiagram(bpmnModel, imageType, highLightedActivities, highLightedFlows, null, null, null, null,
1.0);
}
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities,
List highLightedFlows, double scaleFactor) {
return generateDiagram(bpmnModel, imageType, highLightedActivities, highLightedFlows, null, null, null, null,
scaleFactor);
}
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities) {
return generateDiagram(bpmnModel, imageType, highLightedActivities, Collections.emptyList());
}
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List highLightedActivities,
double scaleFactor) {
return generateDiagram(bpmnModel, imageType, highLightedActivities, Collections.emptyList(),
scaleFactor);
}
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, String activityFontName,
String labelFontName, String annotationFontName, ClassLoader customClassLoader) {
return generateDiagram(bpmnModel, imageType, Collections.emptyList(), Collections.emptyList(),
activityFontName, labelFontName, annotationFontName, customClassLoader, 1.0);
}
-
+ @Override
public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, String activityFontName,
String labelFontName, String annotationFontName, ClassLoader customClassLoader, double scaleFactor) {
return generateDiagram(bpmnModel, imageType, Collections.emptyList(), Collections.emptyList(),
activityFontName, labelFontName, annotationFontName, customClassLoader, scaleFactor);
}
-
+ @Override
public InputStream generatePngDiagram(BpmnModel bpmnModel) {
return generatePngDiagram(bpmnModel, 1.0);
}
-
+ @Override
public InputStream generatePngDiagram(BpmnModel bpmnModel, double scaleFactor) {
return generateDiagram(bpmnModel, "png", Collections.emptyList(), Collections.emptyList(),
scaleFactor);
}
-
+ @Override
public InputStream generateJpgDiagram(BpmnModel bpmnModel) {
return generateJpgDiagram(bpmnModel, 1.0);
}
-
+ @Override
public InputStream generateJpgDiagram(BpmnModel bpmnModel, double scaleFactor) {
return generateDiagram(bpmnModel, "jpg", Collections.emptyList(), Collections.emptyList());
}
@@ -719,7 +719,7 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
return generateImage(bpmnModel, imageType, highLightedActivities, highLightedFlows, null, null, null, null,
scaleFactor);
}
-
+ @Override
public BufferedImage generatePngImage(BpmnModel bpmnModel, double scaleFactor) {
return generateImage(bpmnModel, "png", Collections.emptyList(), Collections.emptyList(),
scaleFactor);
@@ -957,8 +957,8 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
if (graphicInfoList != null && graphicInfoList.size() > 0) {
graphicInfoList = connectionPerfectionizer(processDiagramCanvas, bpmnModel, sourceElement,
targetElement, graphicInfoList);
- int xPoints[] = new int[graphicInfoList.size()];
- int yPoints[] = new int[graphicInfoList.size()];
+ int[] xPoints = new int[graphicInfoList.size()];
+ int[] yPoints = new int[graphicInfoList.size()];
for (int i = 1; i < graphicInfoList.size(); i++) {
GraphicInfo graphicInfo = graphicInfoList.get(i);
@@ -1039,9 +1039,9 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
}
if (highLightedExecutedActivities.contains(flowNode.getId())) {
- processDiagramCanvas.HIGHLIGHT_COLOR = Color.RED;
+ DefaultProcessDiagramCanvas.HIGHLIGHT_COLOR = Color.RED;
drawColorHighLight(processDiagramCanvas, bpmnModel.getGraphicInfo(flowNode.getId()), Color.RED);
- processDiagramCanvas.HIGHLIGHT_COLOR = Color.GREEN;
+ DefaultProcessDiagramCanvas.HIGHLIGHT_COLOR = Color.GREEN;
}
}
@@ -1071,8 +1071,8 @@ public class DefaultProcessDiagramGenerator implements HMProcessDiagramGenerator
if (graphicInfoList != null && graphicInfoList.size() > 0) {
graphicInfoList = connectionPerfectionizer(processDiagramCanvas, bpmnModel, sourceElement,
targetElement, graphicInfoList);
- int xPoints[] = new int[graphicInfoList.size()];
- int yPoints[] = new int[graphicInfoList.size()];
+ int[] xPoints = new int[graphicInfoList.size()];
+ int[] yPoints = new int[graphicInfoList.size()];
for (int i = 1; i < graphicInfoList.size(); i++) {
GraphicInfo graphicInfo = graphicInfoList.get(i);
diff --git a/len-activiti/src/main/java/org/activiti/rest/diagram/services/BaseProcessDefinitionDiagramLayoutResource.java b/len-activiti/src/main/java/org/activiti/rest/diagram/services/BaseProcessDefinitionDiagramLayoutResource.java
index 41a39a2..0314ac1 100644
--- a/len-activiti/src/main/java/org/activiti/rest/diagram/services/BaseProcessDefinitionDiagramLayoutResource.java
+++ b/len-activiti/src/main/java/org/activiti/rest/diagram/services/BaseProcessDefinitionDiagramLayoutResource.java
@@ -117,8 +117,9 @@ public class BaseProcessDefinitionDiagramLayoutResource {
activityArray.add(activityName);
}
- for (String flow : highLightedFlows)
+ for (String flow : highLightedFlows) {
flowsArray.add(flow);
+ }
responseJSON.set("highLightedActivities", activityArray);
responseJSON.set("highLightedFlows", flowsArray);
@@ -185,8 +186,9 @@ public class BaseProcessDefinitionDiagramLayoutResource {
laneSetArray.add(laneSetJSON);
}
- if (laneSetArray.size() > 0)
+ if (laneSetArray.size() > 0) {
responseJSON.set("laneSets", laneSetArray);
+ }
}
ArrayNode sequenceFlowArray = new ObjectMapper().createArrayNode();
@@ -289,12 +291,15 @@ public class BaseProcessDefinitionDiagramLayoutResource {
flowJSON.put("flow", "(" + sequenceFlow.getSource().getId() + ")--" + sequenceFlow.getId() + "-->("
+ sequenceFlow.getDestination().getId() + ")");
- if (isConditional)
+ if (isConditional) {
flowJSON.put("isConditional", isConditional);
- if (isDefault)
+ }
+ if (isDefault) {
flowJSON.put("isDefault", isDefault);
- if (isHighLighted)
+ }
+ if (isHighLighted) {
flowJSON.put("isHighLighted", isHighLighted);
+ }
flowJSON.set("xPointArray", xPointArray);
flowJSON.set("yPointArray", yPointArray);
@@ -312,13 +317,13 @@ public class BaseProcessDefinitionDiagramLayoutResource {
ObjectNode propertiesJSON = new ObjectMapper().createObjectNode();
for (String key : properties.keySet()) {
Object prop = properties.get(key);
- if (prop instanceof String)
- propertiesJSON.put(key, (String)properties.get(key));
- else if (prop instanceof Integer)
- propertiesJSON.put(key, (Integer)properties.get(key));
- else if (prop instanceof Boolean)
- propertiesJSON.put(key, (Boolean)properties.get(key));
- else if ("initial".equals(key)) {
+ if (prop instanceof String) {
+ propertiesJSON.put(key, (String) properties.get(key));
+ } else if (prop instanceof Integer) {
+ propertiesJSON.put(key, (Integer) properties.get(key));
+ }else if (prop instanceof Boolean) {
+ propertiesJSON.put(key, (Boolean) properties.get(key));
+ }else if ("initial".equals(key)) {
ActivityImpl act = (ActivityImpl)properties.get(key);
propertiesJSON.put(key, act.getId());
} else if ("timerDeclarations".equals(key)) {
@@ -326,14 +331,14 @@ public class BaseProcessDefinitionDiagramLayoutResource {
(ArrayList)properties.get(key);
ArrayNode timerDeclarationArray = new ObjectMapper().createArrayNode();
- if (timerDeclarations != null)
+ if (timerDeclarations != null) {
for (TimerDeclarationImpl timerDeclaration : timerDeclarations) {
ObjectNode timerDeclarationJSON = new ObjectMapper().createObjectNode();
timerDeclarationJSON.put("isExclusive", timerDeclaration.isExclusive());
- if (timerDeclaration.getRepeat() != null)
+ if (timerDeclaration.getRepeat() != null) {
timerDeclarationJSON.put("repeat", timerDeclaration.getRepeat());
-
+ }
timerDeclarationJSON.put("retries", String.valueOf(timerDeclaration.getRetries()));
timerDeclarationJSON.put("type", timerDeclaration.getJobHandlerType());
timerDeclarationJSON.put("configuration", timerDeclaration.getJobHandlerConfiguration());
@@ -341,8 +346,10 @@ public class BaseProcessDefinitionDiagramLayoutResource {
timerDeclarationArray.add(timerDeclarationJSON);
}
- if (timerDeclarationArray.size() > 0)
+ }
+ if (timerDeclarationArray.size() > 0) {
propertiesJSON.set(key, timerDeclarationArray);
+ }
// TODO: implement getting description
} else if ("eventDefinitions".equals(key)) {
ArrayList eventDefinitions =
@@ -353,8 +360,9 @@ public class BaseProcessDefinitionDiagramLayoutResource {
for (EventSubscriptionDeclaration eventDefinition : eventDefinitions) {
ObjectNode eventDefinitionJSON = new ObjectMapper().createObjectNode();
- if (eventDefinition.getActivityId() != null)
+ if (eventDefinition.getActivityId() != null) {
eventDefinitionJSON.put("activityId", eventDefinition.getActivityId());
+ }
eventDefinitionJSON.put("eventName", eventDefinition.getEventName());
eventDefinitionJSON.put("eventType", eventDefinition.getEventType());
@@ -364,8 +372,9 @@ public class BaseProcessDefinitionDiagramLayoutResource {
}
}
- if (eventDefinitionsArray.size() > 0)
+ if (eventDefinitionsArray.size() > 0) {
propertiesJSON.set(key, eventDefinitionsArray);
+ }
// TODO: implement it
} else if ("errorEventDefinitions".equals(key)) {
@@ -377,19 +386,20 @@ public class BaseProcessDefinitionDiagramLayoutResource {
for (ErrorEventDefinition errorEventDefinition : errorEventDefinitions) {
ObjectNode errorEventDefinitionJSON = new ObjectMapper().createObjectNode();
- if (errorEventDefinition.getErrorCode() != null)
+ if (errorEventDefinition.getErrorCode() != null) {
errorEventDefinitionJSON.put("errorCode", errorEventDefinition.getErrorCode());
- else
+ }else {
errorEventDefinitionJSON.putNull("errorCode");
-
+ }
errorEventDefinitionJSON.put("handlerActivityId", errorEventDefinition.getHandlerActivityId());
errorEventDefinitionsArray.add(errorEventDefinitionJSON);
}
}
- if (errorEventDefinitionsArray.size() > 0)
+ if (errorEventDefinitionsArray.size() > 0) {
propertiesJSON.set(key, errorEventDefinitionsArray);
+ }
}
}
@@ -445,14 +455,18 @@ public class BaseProcessDefinitionDiagramLayoutResource {
activityJSON.put("activityId", activity.getId());
activityJSON.set("properties", propertiesJSON);
- if (multiInstance != null)
+ if (multiInstance != null) {
activityJSON.put("multiInstance", multiInstance);
- if (collapsed)
+ }
+ if (collapsed) {
activityJSON.put("collapsed", collapsed);
- if (nestedActivityArray.size() > 0)
+ }
+ if (nestedActivityArray.size() > 0) {
activityJSON.set("nestedActivities", nestedActivityArray);
- if (isInterrupting != null)
+ }
+ if (isInterrupting != null) {
activityJSON.put("isInterrupting", isInterrupting);
+ }
activityJSON.put("x", activity.getX());
activityJSON.put("y", activity.getY());
diff --git a/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java b/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java
index 5d673f0..5ed2714 100644
--- a/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java
+++ b/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java
@@ -1,5 +1,7 @@
package com.len.service.impl;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -27,7 +29,7 @@ import com.len.util.LenResponse;
@Service
public class BlogArticleServiceImpl extends BaseServiceImpl
implements BlogArticleService {
-
+ private Random rand = SecureRandom.getInstanceStrong();
private static final Pattern IMG = Pattern.compile("<(img)(.*?)(/>|>|>)");
private static final Pattern SRC = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)");
@Autowired
@@ -41,6 +43,9 @@ public class BlogArticleServiceImpl extends BaseServiceImpl blogArticleQueryWrapper = new QueryWrapper<>();
@@ -167,10 +172,10 @@ public class BlogArticleServiceImpl extends BaseServiceImpl 255)
+ if (fc > 255) {
fc = 255;
- if (bc > 255)
+ }
+ if (bc > 255) {
bc = 255;
+ }
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
@@ -270,15 +270,6 @@ public class VerifyCodeUtils {
}
- public static void main(String[] args) throws IOException {
- File dir = new File("F:/verifies");
- int w = 200, h = 80;
- for (int i = 0; i < 50; i++) {
- String verifyCode = generateVerifyCode(4);
- File file = new File(dir, verifyCode + ".jpg");
- outputImage(w, h, file, verifyCode);
- }
- }
/**
* 验证码对象
diff --git a/len-sys/src/main/java/com/len/core/filter/VerifyCodeUtils.java b/len-sys/src/main/java/com/len/core/filter/VerifyCodeUtils.java
index ef5ad64..8017c67 100644
--- a/len-sys/src/main/java/com/len/core/filter/VerifyCodeUtils.java
+++ b/len-sys/src/main/java/com/len/core/filter/VerifyCodeUtils.java
@@ -134,7 +134,6 @@ public class VerifyCodeUtils {
public static void outputImage(int w, int h, OutputStream os, String code) throws IOException {
int verifySize = code.length();
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- Random rand = new Random();
Graphics2D g2 = image.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
Color[] colors = new Color[5];
@@ -142,8 +141,8 @@ public class VerifyCodeUtils {
Color.ORANGE, Color.PINK, Color.YELLOW};
float[] fractions = new float[colors.length];
for (int i = 0; i < colors.length; i++) {
- colors[i] = colorSpaces[rand.nextInt(colorSpaces.length)];
- fractions[i] = rand.nextFloat();
+ colors[i] = colorSpaces[random.nextInt(colorSpaces.length)];
+ fractions[i] = random.nextFloat();
}
Arrays.sort(fractions);
@@ -155,7 +154,6 @@ public class VerifyCodeUtils {
g2.fillRect(0, 2, w, h - 4);
// 绘制干扰线
- Random random = new Random();
g2.setColor(getRandColor(160, 200));// 设置线条的颜色
for (int i = 0; i < 20; i++) {
int x = random.nextInt(w - 1);
@@ -184,7 +182,7 @@ public class VerifyCodeUtils {
char[] chars = code.toCharArray();
for (int i = 0; i < verifySize; i++) {
AffineTransform affine = new AffineTransform();
- affine.setToRotation(Math.PI / 4 * rand.nextDouble() * (rand.nextBoolean() ? 1 : -1),
+ affine.setToRotation(Math.PI / 4 * random.nextDouble() * (random.nextBoolean() ? 1 : -1),
(w / verifySize) * i + fontSize / 2, h / 2);
g2.setTransform(affine);
g2.drawChars(chars, i, 1, ((w - 10) / verifySize) * i + 5, h / 2 + fontSize / 2 - 10);
@@ -195,10 +193,12 @@ public class VerifyCodeUtils {
}
private static Color getRandColor(int fc, int bc) {
- if (fc > 255)
+ if (fc > 255) {
fc = 255;
- if (bc > 255)
+ }
+ if (bc > 255) {
bc = 255;
+ }
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
@@ -270,15 +270,6 @@ public class VerifyCodeUtils {
}
- public static void main(String[] args) throws IOException {
- File dir = new File("F:/verifies");
- int w = 200, h = 80;
- for (int i = 0; i < 50; i++) {
- String verifyCode = generateVerifyCode(4);
- File file = new File(dir, verifyCode + ".jpg");
- outputImage(w, h, file, verifyCode);
- }
- }
/**
* 验证码对象
diff --git a/len-sys/src/main/java/com/len/core/listener/LenospInit.java b/len-sys/src/main/java/com/len/core/listener/LenospInit.java
index 9476b47..9cd25c2 100644
--- a/len-sys/src/main/java/com/len/core/listener/LenospInit.java
+++ b/len-sys/src/main/java/com/len/core/listener/LenospInit.java
@@ -12,7 +12,7 @@ import com.len.core.init.job.JobExecuteImpl;
*/
@Component
public class LenospInit implements ApplicationListener {
-
+ @Override
public void onApplicationEvent(ContextRefreshedEvent event) {
init(event);
}
diff --git a/len-sys/src/main/java/com/len/core/quartz/CustomQuartz/DataSchdule.java b/len-sys/src/main/java/com/len/core/quartz/CustomQuartz/DataSchdule.java
index 28f3f29..735466f 100644
--- a/len-sys/src/main/java/com/len/core/quartz/CustomQuartz/DataSchdule.java
+++ b/len-sys/src/main/java/com/len/core/quartz/CustomQuartz/DataSchdule.java
@@ -21,14 +21,16 @@ public class DataSchdule {
@Log(type = Log.LOG_TYPE.UPDATE, desc = "定时还原数据库")
public static void restData() throws IOException, InterruptedException {
// SQL文件路径
- try {
+ String sqlPath = "G:\\os\\sql\\lenos_test.sql";
+ try(
+ BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(sqlPath), "utf-8"));
+ ) {
Runtime rt = Runtime.getRuntime();
- String sqlPath = "G:\\os\\sql\\lenos_test.sql";
+
Process process = rt.exec(
"D:\\java\\mysql-5.7.21-winx64\\mysql-5.7.21-winx64\\bin\\mysql.exe -hlocalhost -uroot -ppassword --default-character-set=utf8 "
+ "lenos_test");
OutputStream outputStream = process.getOutputStream();
- BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(sqlPath), "utf-8"));
String str = null;
StringBuffer sb = new StringBuffer();
while ((str = br.readLine()) != null) {
diff --git a/len-web/src/main/java/test/ActivitiDemo.java b/len-web/src/main/java/test/ActivitiDemo.java
index 6e84915..f444f35 100644
--- a/len-web/src/main/java/test/ActivitiDemo.java
+++ b/len-web/src/main/java/test/ActivitiDemo.java
@@ -306,16 +306,15 @@ public class ActivitiDemo {
@Test
public void imageById() throws Exception {
InputStream inputStream = repositoryService.getResourceAsStream("12501", "bpmn/leave.png");
- FileOutputStream outputStream = new FileOutputStream("F:/a.png");
- byte[] b = new byte[1024];
- int red = inputStream.read(b);
- while (red != -1) {
- outputStream.write(b, 0, red);
- red = inputStream.read(b);
- }
- outputStream.write(b);
- inputStream.close();
- outputStream.close();
+ try(FileOutputStream outputStream = new FileOutputStream("F:/a.png");) {
+ byte[] b = new byte[1024];
+ int red = inputStream.read(b);
+ while (red != -1) {
+ outputStream.write(b, 0, red);
+ red = inputStream.read(b);
+ }
+ outputStream.write(b);
+ }
}
@Test
@@ -341,9 +340,10 @@ public class ActivitiDemo {
processEngine.getProcessEngineConfiguration().getLabelFontName(), "宋体", null, 1.0);
byte[] b = new byte[1024];
int len;
- FileOutputStream outputStream = new FileOutputStream("F:/1.png");
- while ((len = imageStream.read(b, 0, 1024)) != -1) {
- outputStream.write(b, 0, len);
+ try(FileOutputStream outputStream = new FileOutputStream("F:/1.png");) {
+ while ((len = imageStream.read(b, 0, 1024)) != -1) {
+ outputStream.write(b, 0, len);
+ }
}
}
diff --git a/len-web/src/main/java/test/ActivitiGateWay.java b/len-web/src/main/java/test/ActivitiGateWay.java
index 4c4d084..a8eb95e 100644
--- a/len-web/src/main/java/test/ActivitiGateWay.java
+++ b/len-web/src/main/java/test/ActivitiGateWay.java
@@ -160,17 +160,19 @@ public class ActivitiGateWay {
*/
@Test
public void imageById() throws Exception {
+ try(
InputStream inputStream = repositoryService.getResourceAsStream("12501", "bpmn/leave2.png");
FileOutputStream outputStream = new FileOutputStream("F:/a.png");
- byte[] b = new byte[1024];
- int red = inputStream.read(b);
- while (red != -1) {
- outputStream.write(b, 0, red);
- red = inputStream.read(b);
+ ) {
+ byte[] b = new byte[1024];
+ int red = inputStream.read(b);
+ while (red != -1) {
+ outputStream.write(b, 0, red);
+ red = inputStream.read(b);
+ }
+ outputStream.write(b);
+
}
- outputStream.write(b);
- inputStream.close();
- outputStream.close();
}
}
--
Gitee
From 1a8426edd083c42b7975e0290d9d1baeb860f4d8 Mon Sep 17 00:00:00 2001
From: Frank7Zeng
Date: Thu, 20 Apr 2023 11:25:29 +0000
Subject: [PATCH 4/9] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20pom.xml=20=E4=B8=ADcom?=
=?UTF-8?q?mons-fileupload=E4=BE=9D=E8=B5=96=E7=9A=84=E7=89=88=E6=9C=AC?=
=?UTF-8?q?=EF=BC=8C=E4=BB=A5=E4=BF=AE=E5=A4=8DRCE=E6=BC=8F=E6=B4=9E=20Apa?=
=?UTF-8?q?che=20Commons=20FileUpload=20before=201.3.3=20DiskFileItem=20Fi?=
=?UTF-8?q?le=20Manipulation=20Remote=20Code=20Execution.=20=E6=BC=8F?=
=?UTF-8?q?=E6=B4=9E=E7=BC=96=E5=8F=B7=EF=BC=9ACVE-2016-1000031?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Frank7Zeng
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 5855161..1f0f86c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,7 +43,7 @@
2.5
3.7
- 1.3.2
+ 1.3.3
4.12
1.5.0-b01
--
Gitee
From 93395f99e70b68a8fa230b704e713c30fff09c36 Mon Sep 17 00:00:00 2001
From: Future-StarFire <1622997479@qq.com>
Date: Tue, 25 Apr 2023 23:33:50 +0800
Subject: [PATCH 5/9] =?UTF-8?q?1.log=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?=
=?UTF-8?q?=EF=BC=8C=E6=B6=88=E9=99=A4=E8=AD=A6=E5=91=8A=E3=80=82=202.?=
=?UTF-8?q?=E5=90=AF=E5=8A=A8=E7=B1=BB=E5=8E=BB=E6=8E=89ComponentScan?=
=?UTF-8?q?=E6=B3=A8=E8=A7=A3=EF=BC=8C=E6=B6=88=E9=99=A4=E8=AD=A6=E5=91=8A?=
=?UTF-8?q?=E3=80=82=203.=E8=A7=A3=E5=86=B3log4j:WARN=20No=20appenders=20c?=
=?UTF-8?q?ould=20be=20found=20for=20logger=20(freemarker.cache).=E8=AD=A6?=
=?UTF-8?q?=E5=91=8A=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/len/core/annotation/Log.java | 8 ++-
.../com/len/core/annotation/LogAspect.java | 55 +++++++++++--------
.../src/main/java/com/len/LenApplication.java | 12 ++--
len-web/src/main/resources/log4j.properties | 4 +-
4 files changed, 45 insertions(+), 34 deletions(-)
diff --git a/len-sys/src/main/java/com/len/core/annotation/Log.java b/len-sys/src/main/java/com/len/core/annotation/Log.java
index e1fb2e2..6679e5b 100644
--- a/len-sys/src/main/java/com/len/core/annotation/Log.java
+++ b/len-sys/src/main/java/com/len/core/annotation/Log.java
@@ -4,6 +4,7 @@ import java.lang.annotation.*;
/**
* 记录日志
+ * @author star
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@@ -15,14 +16,15 @@ public @interface Log {
*/
String desc();
- ;
-
/**
* 类型 curd
*/
LOG_TYPE type() default LOG_TYPE.ATHOR;
- public enum LOG_TYPE {
+ enum LOG_TYPE {
+ /**
+ * 日志操作类型
+ */
ADD, UPDATE, DEL, SELECT, ATHOR
}
}
diff --git a/len-sys/src/main/java/com/len/core/annotation/LogAspect.java b/len-sys/src/main/java/com/len/core/annotation/LogAspect.java
index a7fc824..11c6586 100644
--- a/len-sys/src/main/java/com/len/core/annotation/LogAspect.java
+++ b/len-sys/src/main/java/com/len/core/annotation/LogAspect.java
@@ -2,6 +2,7 @@ package com.len.core.annotation;
import java.lang.reflect.Method;
import java.util.Date;
+import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
@@ -12,7 +13,8 @@ import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.ui.Model;
import org.springframework.web.context.request.RequestAttributes;
@@ -29,41 +31,45 @@ import com.len.util.IpUtil;
/**
*
* 为增删改添加监控
+ *
+ * @author star
*/
@Aspect
@Component
public class LogAspect {
- @Autowired
- private SysLogMapper logMapper;
+ private static final Logger log = LoggerFactory.getLogger(LogAspect.class);
- @Pointcut("@annotation(com.len.core.annotation.Log)")
- private void pointcut() {
+ private final SysLogMapper logMapper;
+ public LogAspect(SysLogMapper logMapper) {
+ this.logMapper = logMapper;
}
+ @Pointcut("@annotation(com.len.core.annotation.Log)")
+ private void pointcut() { /* 织入点无需方法体 */ }
+
@After("pointcut()")
- public void insertLogSuccess(JoinPoint jp) {
+ public void insertLogSuccess(JoinPoint jp) throws InterruptedException {
addLog(jp, getDesc(jp));
}
- private void addLog(JoinPoint jp, String text) {
+ private void addLog(JoinPoint jp, String text) throws InterruptedException {
Log.LOG_TYPE type = getType(jp);
- SysLog log = new SysLog();
+ SysLog sysLog = new SysLog();
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
// 一些系统监控
if (requestAttributes != null) {
- HttpServletRequest request =
- ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
+ HttpServletRequest request = ((ServletRequestAttributes)requestAttributes).getRequest();
String ip = IpUtil.getIp(request);
- log.setIp(ip);
+ sysLog.setIp(ip);
}
- log.setCreateTime(new Date());
- log.setType(type.toString());
- log.setText(text);
+ sysLog.setCreateTime(new Date());
+ sysLog.setType(type.toString());
+ sysLog.setText(text);
Object[] obj = jp.getArgs();
- StringBuffer buffer = new StringBuffer();
+ StringBuilder buffer = new StringBuilder();
if (obj != null) {
for (int i = 0; i < obj.length; i++) {
buffer.append("[参数").append(i + 1).append(":");
@@ -71,36 +77,37 @@ public class LogAspect {
if (o instanceof Model) {
continue;
}
- String parameter;
+ String parameter = null;
try {
parameter = JSON.toJSONString(o);
} catch (Exception e) {
- continue;
+ TimeUnit.MILLISECONDS.sleep(0);
}
buffer.append(parameter);
buffer.append("]");
}
}
- log.setParam(buffer.toString());
+ sysLog.setParam(buffer.toString());
try {
CurrentUser currentUser = Principal.getCurrentUse();
if (currentUser != null) {
- log.setUserName(currentUser.getUsername());
+ sysLog.setUserName(currentUser.getUsername());
}
} catch (UnavailableSecurityManagerException e) {
+ log.error(e.getMessage());
}
- logMapper.insert(log);
+ logMapper.insert(sysLog);
}
/**
* 记录异常
*
- * @param joinPoint
- * @param e
+ * @param joinPoint 连接点对象
+ * @param e 异常对象
*/
@AfterThrowing(value = "pointcut()", throwing = "e")
- public void afterException(JoinPoint joinPoint, Exception e) {
- System.out.print("-----------afterException:" + e.getMessage());
+ public void afterException(JoinPoint joinPoint, Exception e) throws InterruptedException {
+ log.error("-----------afterException:{}", e.getMessage());
addLog(joinPoint, getDesc(joinPoint) + e.getMessage());
}
diff --git a/len-web/src/main/java/com/len/LenApplication.java b/len-web/src/main/java/com/len/LenApplication.java
index c21eb2c..46568d9 100644
--- a/len-web/src/main/java/com/len/LenApplication.java
+++ b/len-web/src/main/java/com/len/LenApplication.java
@@ -4,21 +4,21 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
-import org.springframework.context.annotation.ComponentScan;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
/**
* 项目启动类
+ *
+ * @author lenosp https://gitee.com/zzdevelop/lenosp
*/
-
@EnableWebMvc
@EnableTransactionManagement
-@ComponentScan({"com.len", "org.activiti"})
@MapperScan(basePackages = {"com.len.mapper"})
-@SpringBootApplication(exclude = {RedisAutoConfiguration.class,
- org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
- org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class})
+@SpringBootApplication(scanBasePackages = {"com.len", "org.activiti"},
+ exclude = {RedisAutoConfiguration.class,
+ org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
+ org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class})
public class LenApplication {
public static void main(String[] args) {
diff --git a/len-web/src/main/resources/log4j.properties b/len-web/src/main/resources/log4j.properties
index 23a8c45..ca1fd7a 100644
--- a/len-web/src/main/resources/log4j.properties
+++ b/len-web/src/main/resources/log4j.properties
@@ -1,2 +1,4 @@
log4j.rootLogger=debug
-log4j.appender.appenderNam=org.apache.log4j.DailyRollingFileAppender
\ No newline at end of file
+log4j.logger.freemarker.cache=ERROR
+log4j.logger.freemarker.beans=ERROR
+log4j.appender.appenderNam=org.apache.log4j.DailyRollingFileAppender
--
Gitee
From bacdab20e6c6788532cac658426e78934f30453c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=80=E6=9E=9A=E7=A0=81=E5=86=9C?= <154040976@qq.com>
Date: Fri, 5 May 2023 02:40:29 +0000
Subject: [PATCH 6/9] update README.md.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: 一枚码农 <154040976@qq.com>
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 8e6693b..151096b 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+# 重要重要通知:强烈欢迎你的参与和贡献,保姆式引导你参与lenosp项目开源,联系组织管理,感兴趣的话非常欢迎你的加入,技术无所谓。真真的!!
👉 http://42.192.219.164👈|admin|123456
--
Gitee
From b719cce1273e3c1013b868b0180c21664f59bb5c Mon Sep 17 00:00:00 2001
From: zhongmengfei_ext
Date: Fri, 5 May 2023 14:36:28 +0800
Subject: [PATCH 7/9] =?UTF-8?q?len-common=201=E3=80=81=E7=94=9F=E6=88=90?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AD=97=E5=85=B8=E5=B7=A5=E5=85=B7=EF=BC=8C?=
=?UTF-8?q?=E5=BC=80=E7=AE=B1=E5=8D=B3=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
len-common/pom.xml | 5 +
.../java/com/len/util/GenerateDocument.java | 103 ++++++++++++++++++
2 files changed, 108 insertions(+)
create mode 100644 len-common/src/main/java/com/len/util/GenerateDocument.java
diff --git a/len-common/pom.xml b/len-common/pom.xml
index e80f0c4..5e184d5 100644
--- a/len-common/pom.xml
+++ b/len-common/pom.xml
@@ -26,6 +26,11 @@
${junit.version}
test
+
+ cn.smallbun.screw
+ screw-core
+ 1.0.5
+
diff --git a/len-common/src/main/java/com/len/util/GenerateDocument.java b/len-common/src/main/java/com/len/util/GenerateDocument.java
new file mode 100644
index 0000000..5ed04b2
--- /dev/null
+++ b/len-common/src/main/java/com/len/util/GenerateDocument.java
@@ -0,0 +1,103 @@
+package com.len.util;
+
+import cn.smallbun.screw.core.Configuration;
+import cn.smallbun.screw.core.engine.EngineConfig;
+import cn.smallbun.screw.core.engine.EngineFileType;
+import cn.smallbun.screw.core.engine.EngineTemplateType;
+import cn.smallbun.screw.core.execute.DocumentationExecute;
+import cn.smallbun.screw.core.process.ProcessConfig;
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+
+import javax.sql.DataSource;
+import java.util.ArrayList;
+
+/**
+ * @Title: GenerateDocument
+ * @Author zhongmengfei
+ * @Package com
+ * @Date 2023/4/24 10:32
+ * @description: 生成数据字典
+ */
+public class GenerateDocument {
+ public static void main(String[] args) {
+ String fileOutputDir = "D:/";
+ documentGeneration(fileOutputDir);
+ }
+
+ /**
+ * 文档生成
+ *
+ * @param fileOutputDir 生成文件路径
+ * @methodName: documentGeneration
+ * @return: void
+ * @author: ybw
+ * @date: 2023/2/9
+ **/
+ static void documentGeneration(String fileOutputDir) {
+ //数据源
+ HikariConfig hikariConfig = new HikariConfig();
+ hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
+ hikariConfig.setJdbcUrl("jdbc:mysql://ipxxxx:3306/nsshabi");
+ hikariConfig.setUsername("root");
+ hikariConfig.setPassword("xxxx密码@");
+ //设置可以获取tables remarks信息
+ hikariConfig.addDataSourceProperty("useInformationSchema", "true");
+ hikariConfig.setMinimumIdle(2);
+ hikariConfig.setMaximumPoolSize(5);
+ DataSource dataSource = new HikariDataSource(hikariConfig);
+ //生成配置
+ EngineConfig engineConfig = EngineConfig.builder()
+ //生成文件路径
+ .fileOutputDir(fileOutputDir)
+ //打开目录
+ .openOutputDir(true)
+ //文件类型
+ .fileType(EngineFileType.WORD)
+ //生成模板实现
+ .produceType(EngineTemplateType.freemarker)
+ //自定义文件名称
+ .fileName("测试库").build();
+
+ //忽略表
+ ArrayList ignoreTableName = new ArrayList<>();
+ ignoreTableName.add("test_user");
+ ignoreTableName.add("test_group");
+ //忽略表前缀
+ ArrayList ignorePrefix = new ArrayList<>();
+ ignorePrefix.add("test_");
+ //忽略表后缀
+ ArrayList ignoreSuffix = new ArrayList<>();
+ ignoreSuffix.add("_test");
+ ProcessConfig processConfig = ProcessConfig.builder()
+ //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
+ //根据名称指定表生成
+ .designatedTableName(new ArrayList<>())
+ //根据表前缀生成
+ .designatedTablePrefix(new ArrayList<>())
+ //根据表后缀生成
+ .designatedTableSuffix(new ArrayList<>())
+ //忽略表名
+ .ignoreTableName(ignoreTableName)
+ //忽略表前缀
+ .ignoreTablePrefix(ignorePrefix)
+ //忽略表后缀
+ .ignoreTableSuffix(ignoreSuffix).build();
+ //配置
+ Configuration config = Configuration.builder()
+ //版本
+ .version("1.0.0")
+ //描述
+ .description("数据库设计文档生成")
+ //数据源
+ .dataSource(dataSource)
+ //生成配置
+ .engineConfig(engineConfig)
+ //生成配置
+ .produceConfig(processConfig)
+ .build();
+ //执行生成
+ new DocumentationExecute(config).execute();
+ }
+
+}
--
Gitee
From 55ab45a2b6a83f326bb9b3e05fec0232ac6a76a5 Mon Sep 17 00:00:00 2001
From: Future-StarFire <1622997479@qq.com>
Date: Sun, 7 May 2023 12:05:22 +0800
Subject: [PATCH 8/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=AF=E5=8A=A8bug?=
=?UTF-8?q?=E3=80=82https://gitee.com/zzdevelop/lenosp/issues/I70XK6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
len-web/src/main/java/com/len/LenApplication.java | 4 ++--
len-web/src/main/java/com/len/config/LogConfig.java | 7 ++++---
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/len-web/src/main/java/com/len/LenApplication.java b/len-web/src/main/java/com/len/LenApplication.java
index 46568d9..efd87ca 100644
--- a/len-web/src/main/java/com/len/LenApplication.java
+++ b/len-web/src/main/java/com/len/LenApplication.java
@@ -9,8 +9,8 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
/**
* 项目启动类
- *
- * @author lenosp https://gitee.com/zzdevelop/lenosp
+ *
+ * @author lenosp
*/
@EnableWebMvc
@EnableTransactionManagement
diff --git a/len-web/src/main/java/com/len/config/LogConfig.java b/len-web/src/main/java/com/len/config/LogConfig.java
index 957606e..d1e969e 100644
--- a/len-web/src/main/java/com/len/config/LogConfig.java
+++ b/len-web/src/main/java/com/len/config/LogConfig.java
@@ -1,5 +1,6 @@
package com.len.config;
+import com.len.mapper.SysLogMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -7,13 +8,13 @@ import com.len.core.annotation.LogAspect;
/**
* 日志拦截配置
+ * @author lenosp
*/
@Configuration
public class LogConfig {
@Bean(name = "logAspect")
- public LogAspect getLogAspect() {
- return new LogAspect();
+ public LogAspect getLogAspect(SysLogMapper logMapper) {
+ return new LogAspect(logMapper);
}
-
}
--
Gitee
From e52becbd2c0a73a27d942526421e8e33fd7b55ce Mon Sep 17 00:00:00 2001
From: Future-StarFire <1622997479@qq.com>
Date: Sat, 13 May 2023 18:56:27 +0800
Subject: [PATCH 9/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0userLeaveController?=
=?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=9B=20=E4=BF=AE=E5=A4=8Dservices?=
=?UTF-8?q?=E7=9A=84translational=E7=9A=84=E8=AD=A6=E5=91=8A=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
len-activiti/pom.xml | 7 +-
.../len/controller/UserLeaveController.java | 370 +++++++++++++-----
.../java/com/len/util/CastClassUtils.java | 51 +++
.../service/impl/BlogArticleServiceImpl.java | 4 +-
4 files changed, 335 insertions(+), 97 deletions(-)
create mode 100644 len-activiti/src/main/java/com/len/util/CastClassUtils.java
diff --git a/len-activiti/pom.xml b/len-activiti/pom.xml
index 51ae321..0a8c8f4 100644
--- a/len-activiti/pom.xml
+++ b/len-activiti/pom.xml
@@ -12,7 +12,6 @@
len-activiti
https://gitee.com/zzdevelop/lenosp
-
UTF-8
@@ -55,6 +54,12 @@
junit
${junit.version}
+
+ org.jetbrains
+ annotations
+ RELEASE
+ compile
+
diff --git a/len-activiti/src/main/java/com/len/controller/UserLeaveController.java b/len-activiti/src/main/java/com/len/controller/UserLeaveController.java
index cde019d..8cefedf 100644
--- a/len-activiti/src/main/java/com/len/controller/UserLeaveController.java
+++ b/len-activiti/src/main/java/com/len/controller/UserLeaveController.java
@@ -20,7 +20,7 @@ import java.util.*;
import java.util.List;
import javax.imageio.ImageIO;
-import javax.servlet.http.HttpServletRequest;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletResponse;
import org.activiti.bpmn.model.BpmnModel;
@@ -39,9 +39,9 @@ import org.activiti.engine.task.Task;
import org.activiti.image.HMProcessDiagramGenerator;
import org.activiti.spring.ProcessEngineFactoryBean;
import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
+import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import com.alibaba.fastjson.JSON;
@@ -62,70 +62,108 @@ import com.len.service.RoleUserService;
import com.len.service.UserLeaveService;
import com.len.util.*;
-import sun.misc.BASE64Encoder;
-
/**
+ * 请假流程 控制器
+ *
* @author zhuxiaomeng
* @date 2018/1/21.
* @email lenospmiller@gmail.com
*
* 请假流程示例
+ *
*/
@Controller
@RequestMapping("/leave")
public class UserLeaveController extends BaseController {
- @Autowired
- UserLeaveService leaveService;
-
- @Autowired
- RuntimeService runtimeService;
+ /**
+ * 请假服务层
+ */
+ private final UserLeaveService leaveService;
- @Autowired
- TaskService taskService;
+ /**
+ * activiti的运行时服务注入,用于查询实例等操作
+ */
+ private final RuntimeService runtimeService;
- @Autowired
- IdentityService identityService;
+ /**
+ * activiti的任务服务注入,用于查询任务相关变量
+ */
+ private final TaskService taskService;
- @Autowired
- RepositoryService repositoryService;
+ /**
+ * activiti的仓库服务注入,用于获取流程详细定义
+ */
+ private final RepositoryService repositoryService;
- @Autowired
- ProcessEngineFactoryBean processEngine;
+ /**
+ * activiti的流程引擎服务注入,用于获取引擎配置
+ */
+ private final ProcessEngineFactoryBean processEngine;
- @Autowired
- ProcessEngineConfiguration processEngineConfiguration;
+ /**
+ * 用户与角色服务层,获取当前用户的角色列表
+ */
+ private final RoleUserService roleUserService;
- @Autowired
- RoleUserService roleUserService;
- @Autowired
- HistoryService historyService;
- private String leaveOpinionList = "leaveOpinionList";
+ /**
+ * activiti的历史流程/任务服务注入,用于查询历史数据变量等信息
+ */
+ private final HistoryService historyService;
- @GetMapping(value = "showMain")
- public String showMain(Model model) {
- return "/dashboard/dashboard";
- }
+ /**
+ * 请假列表 变量名
+ */
+ private static final String LEAVE_OPINION_LIST = "leaveOpinionList";
- @GetMapping(value = "showMain2")
- public String showMain2(Model model) {
- return "/dashboard/dashboard2";
+ /**
+ * 任务基础 变量名
+ */
+ private static final String BASE_TASK = "baseTask";
+
+ public UserLeaveController(UserLeaveService leaveService, RuntimeService runtimeService, TaskService taskService,
+ RepositoryService repositoryService, ProcessEngineFactoryBean processEngine, RoleUserService roleUserService,
+ HistoryService historyService) {
+ this.leaveService = leaveService;
+ this.runtimeService = runtimeService;
+ this.taskService = taskService;
+ this.repositoryService = repositoryService;
+ this.processEngine = processEngine;
+ this.roleUserService = roleUserService;
+ this.historyService = historyService;
}
+ /**
+ * 请假流程主页面
+ *
+ * @return 视图地址
+ */
@GetMapping(value = "showLeave")
- public String showUser(Model model) {
+ public String showUser() {
return "/act/leave/leaveList";
}
+ /**
+ * 分页查询请假列表数据
+ *
+ * @param userLeave 查询条件包装
+ * @param page 页码
+ * @param limit 条数
+ * @return 响应结果(json)
+ */
@GetMapping(value = "showLeaveList")
@ResponseBody
public ReType showLeaveList(UserLeave userLeave, String page, String limit) {
+ // 获取当前用户id
String userId = CommonUtil.getUser().getId();
userLeave.setUserId(userId);
List tList = null;
+ // 分页
Page tPage = PageHelper.startPage(Integer.valueOf(page), Integer.valueOf(limit));
try {
+ // 查询请假列表
tList = leaveService.selectListByPage(userLeave);
+ // 回显任务名
for (UserLeave leave : tList) {
ProcessInstance instance = runtimeService.createProcessInstanceQuery()
.processInstanceId(leave.getProcessInstanceId()).singleResult();
@@ -145,71 +183,102 @@ public class UserLeaveController extends BaseController {
/**
* 根据 执行对象id获取审批信息
*
- * @param model
- * @param processId
- * @return
+ * @param model 视图
+ * @param processId 流程id
+ * @return 流程详情页
*/
@GetMapping("leaveDetail")
public String leaveDetail(Model model, String processId) {
+ // 根据流程id查询
ProcessInstance instance =
runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult();
- // 保证运行ing
List leaveList = null;
+ // 保证运行ing
if (instance != null) {
+ // 获取当前任务
Task task = this.taskService.createTaskQuery().processInstanceId(processId).singleResult();
Map variables = taskService.getVariables(task.getId());
- Object o = variables.get(leaveOpinionList);
- if (o != null) {
+ Object o = variables.get(LEAVE_OPINION_LIST);
+ if (Objects.nonNull(o)) {
/*获取历史审核信息*/
- leaveList = (List)o;
+ leaveList = CastClassUtils.castList(o, LeaveOpinion.class);
}
} else {
+ // 未运行,从历史详情信息中获取
leaveList = new ArrayList<>();
List list = historyService.createHistoricDetailQuery().processInstanceId(processId).list();
- HistoricVariableUpdate variable = null;
+ HistoricVariableUpdate variable;
for (HistoricDetail historicDetail : list) {
variable = (HistoricVariableUpdate)historicDetail;
- if (leaveOpinionList.equals(variable.getVariableName())) {
+ if (LEAVE_OPINION_LIST.equals(variable.getVariableName())) {
leaveList.clear();
- leaveList.addAll((List)variable.getValue());
+ leaveList.addAll(CastClassUtils.castList(variable.getValue(), LeaveOpinion.class));
}
}
}
+ // 传参
model.addAttribute("leaveDetail", JSON.toJSONString(leaveList));
return "/act/leave/leaveDetail";
}
+ /**
+ * 去新增请假页面
+ *
+ * @return 新增页面
+ */
@GetMapping("addLeave")
public String addLeave() {
return "/act/leave/add-leave";
}
+ /**
+ * 去请假编辑页面
+ *
+ * @param model 模型对象
+ * @param taskId 任务ID
+ * @return 编辑页面
+ */
@GetMapping("updateLeave/{taskId}")
public String updateLeave(Model model, @PathVariable String taskId) {
Map variables = taskService.getVariables(taskId);
- BaseTask baseTask = (BaseTask)variables.get("baseTask");
+ BaseTask baseTask = (BaseTask)variables.get(BASE_TASK);
+ // 根据任务id获取请假详情
UserLeave leave = leaveService.getById(baseTask.getId());
+ // 传参
model.addAttribute("leave", leave);
model.addAttribute("taskId", taskId);
return "/act/leave/update-leave";
}
+ /**
+ * 编辑请假信息
+ *
+ * @param leave 请假对象
+ * @param taskId 任务id
+ * @param id 请假id
+ * @param flag true:重新提交请假 | false:取消请假
+ * @return 响应操作结果
+ */
@PostMapping("updateLeave/updateLeave/{taskId}/{id}/{flag}")
@ResponseBody
public LenResponse updateLeave(UserLeave leave, @PathVariable String taskId, @PathVariable String id,
@PathVariable boolean flag) {
LenResponse j = new LenResponse();
try {
- UserLeave oldLeave = leaveService.getById(leave.getId());
+ // 此处修改了id获取方式为路径中的id,实际传入的参数就是leave.getId()
+ UserLeave oldLeave = leaveService.getById(id);
+ // 赋值
BeanUtil.copyNotNullBean(leave, oldLeave);
+ // 更新Dao层
QueryWrapper userLeaveQueryWrapper = new QueryWrapper<>(oldLeave);
leaveService.update(userLeaveQueryWrapper);
- Map variables = taskService.getVariables(taskId);
Map map = new HashMap<>();
+ // 重新提交请假
if (flag) {
map.put("flag", true);
} else {
+ // 取消请假
map.put("flag", false);
}
taskService.complete(taskId, map);
@@ -222,6 +291,12 @@ public class UserLeaveController extends BaseController {
return j;
}
+ /**
+ * 新建请假
+ *
+ * @param userLeave 请假实体
+ * @return 响应结果
+ */
@PostMapping("addLeave")
@ResponseBody
public LenResponse addLeave(UserLeave userLeave) {
@@ -232,6 +307,7 @@ public class UserLeaveController extends BaseController {
long beginTime = userLeave.getBeginTime().getTime();
long endTime = userLeave.getEndTime().getTime();
int days = 1;
+ // 计算请假天数
if (endTime != beginTime) {
days += (int)((endTime - beginTime) / (1000 * 60 * 60 * 24));
}
@@ -240,23 +316,35 @@ public class UserLeaveController extends BaseController {
}
userLeave.setDays(days);
+ // 设置用户信息
CurrentUser user = CommonUtil.getUser();
userLeave.setUserId(user.getId());
userLeave.setUserName(user.getUsername());
+ // 设置实例id
userLeave.setProcessInstanceId("2018");
+ // 保存Dao层
leaveService.save(userLeave);
Map map = new HashMap<>();
userLeave.setUrlpath("/leave/readOnlyLeave/" + userLeave.getId());
- map.put("baseTask", userLeave);
+ map.put(BASE_TASK, userLeave);
map.put("day", days);
+ // 启动请假流程实例,保存实例的id
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process_leave", map);
userLeave.setProcessInstanceId(processInstance.getId());
userLeave.setUrlpath("/leave/readOnlyLeave/" + userLeave.getId());
+ // 更新Dao
leaveService.updateById(userLeave);
j.setMsg("请假申请成功");
return j;
}
+ /**
+ * 读取请假实例,回显到编辑页面
+ *
+ * @param model 模型层
+ * @param billId 实例id
+ * @return 请假编辑页面
+ */
@GetMapping("readOnlyLeave/{billId}")
public String readOnlyLeave(Model model, @PathVariable String billId) {
UserLeave leave = leaveService.getById(billId);
@@ -268,13 +356,21 @@ public class UserLeaveController extends BaseController {
* ---------我的任务---------
*/
@GetMapping(value = "showTask")
- public String showTask(Model model) {
+ public String showTask() {
return "/act/task/taskList";
}
+ /**
+ * 分页查询任务列表
+ *
+ * @param page 页码
+ * @param limit 条数
+ * @return 查询结果
+ */
@GetMapping(value = "showTaskList")
@ResponseBody
- public String showTaskList(Model model, com.len.entity.Task task, String page, String limit) {
+ public String showTaskList(String page, String limit) {
+ // 查询当前用户的角色
CurrentUser user = CommonUtil.getUser();
SysRoleUser sysRoleUser = new SysRoleUser();
sysRoleUser.setUserId(user.getId());
@@ -284,11 +380,15 @@ public class UserLeaveController extends BaseController {
for (SysRoleUser sru : userRoles) {
roleString.add(sru.getRoleId());
}
+ // 根据当前用户查询相关任务列表
List taskList = taskService.createTaskQuery().taskCandidateUser(user.getId()).list();
+ // 查询当前用户负责的任务列表
List assigneeList = taskService.createTaskQuery().taskAssignee(user.getId()).list();
+ // 根据当前用户角色查询任务列表
List candidateGroup = taskService.createTaskQuery().taskCandidateGroupIn(roleString).list();
taskList.addAll(assigneeList);
taskList.addAll(candidateGroup);
+ // 手动分页
int count = taskList.size();
Integer index = (Integer.valueOf(page) - 1) * Integer.valueOf(limit);
taskList = taskList.subList(index, taskList.size() > index + 10 ? index + 10 : taskList.size());
@@ -299,17 +399,21 @@ public class UserLeaveController extends BaseController {
Map> mapMap = new HashMap<>();
Map objectMap;
- Set taskSet = new HashSet();
+ Set taskSet = new HashSet<>();
for (Task task1 : taskList) {
objectMap = new HashMap<>();
String taskId = task1.getId();
+
+ // 跳过重复任务
if (taskSet.contains(taskId)) {
continue;
}
+ // 查询任务的详细信息
map = taskService.getVariables(taskId);
- BaseTask userLeave = (BaseTask)map.get("baseTask");
+ BaseTask userLeave = (BaseTask)map.get(BASE_TASK);
+ // 回显用户名,请假原因,详情url
taskEntity = new com.len.entity.Task(task1);
taskEntity.setUserName(userLeave.getUserName());
taskEntity.setReason(userLeave.getReason());
@@ -328,34 +432,54 @@ public class UserLeaveController extends BaseController {
} else {
objectMap.put("flag", false);
}
+ // 添加{任务id,flag标记}的map
mapMap.put(taskEntity.getId(), objectMap);
+ // 返回的任务列表
tasks.add(taskEntity);
+ // 跳过重复的任务
taskSet.add(taskId);
}
return ReType.jsonStrng(count, tasks, mapMap, "id");
}
+ /**
+ * 跳转任务审批页面
+ *
+ * @param model 模型层
+ * @param taskId 任务id
+ * @return 审批页面
+ */
@GetMapping("agent/{id}")
public String agent(Model model, @PathVariable("id") String taskId) {
+ // 根据id获取任务详细信息
Map variables = taskService.getVariables(taskId);
- BaseTask baseTask = (BaseTask)variables.get("baseTask");
- // UserLeave userLeave = leaveService.selectByPrimaryKey(baseTask.getId());
+ BaseTask baseTask = (BaseTask)variables.get(BASE_TASK);
+ // 设置请假详细的url,用在Iframe中
model.addAttribute("leaveUrl", baseTask.getUrlpath());
model.addAttribute("taskId", taskId);
return "/act/task/task-agent-iframe";
}
+ /**
+ * 审批动作处理
+ *
+ * @param op 审批信息
+ * @return 响应结果
+ */
@PostMapping("agent/complete")
@ResponseBody
- public LenResponse complete(LeaveOpinion op, HttpServletRequest request) {
+ public LenResponse complete(LeaveOpinion op) {
+ // 获取任务详细
Map variables = taskService.getVariables(op.getTaskId());
+ // 获取当前用户,设置操作时间,用户id,用户名
CurrentUser user = Principal.getCurrentUse();
op.setCreateTime(new Date());
op.setOpId(user.getId());
op.setOpName(user.getRealName());
LenResponse j = new LenResponse();
Map map = new HashMap<>();
+ // 是否通过审批
map.put("flag", op.isFlag());
// 判断节点是否已经拒绝过一次了
@@ -371,16 +495,18 @@ public class UserLeaveController extends BaseController {
}
// 审批信息叠加
List leaveList = new ArrayList<>();
- Object o = variables.get(leaveOpinionList);
+ Object o = variables.get(LEAVE_OPINION_LIST);
if (o != null) {
- leaveList = (List)o;
+ leaveList = CastClassUtils.castList(o, LeaveOpinion.class);
}
leaveList.add(op);
- UserLeave userLeave = (UserLeave)variables.get("baseTask");
+ // 封装审批数据
+ UserLeave userLeave = (UserLeave)variables.get(BASE_TASK);
map.put("day", userLeave.getDays());
- map.put(leaveOpinionList, leaveList);
+ map.put(LEAVE_OPINION_LIST, leaveList);
j.setMsg(
"审核成功" + (op.isFlag() ? "[通过]" : "[未通过]"));
+ // 完成任务,设置审批信息与请假天数
taskService.complete(op.getTaskId(), map);
return j;
}
@@ -388,36 +514,48 @@ public class UserLeaveController extends BaseController {
/**
* 追踪图片成图 增加历史流程
*
- * @param request
- * @param resp
- * @param processInstanceId
- * @throws IOException
+ * @param resp 响应对象
+ * @param processInstanceId 实例id
+ * @throws IOException 可能发生文件IO异常
*/
@GetMapping("getProcImage")
- public void getProcImage(HttpServletRequest request, HttpServletResponse resp, String processInstanceId)
- throws IOException {
- InputStream imageStream = generateStream(request, resp, processInstanceId, true);
+ public void getProcImage(HttpServletResponse resp, String processInstanceId) throws IOException {
+ // 需要处于活动状态节点信息
+ InputStream imageStream = generateStream(processInstanceId, true);
+ // 生成失败
if (imageStream == null) {
return;
}
- InputStream imageNoCurrentStream = generateStream(request, resp, processInstanceId, false);
+ // 不带当前活动节点高亮出图
+ InputStream imageNoCurrentStream = generateStream(processInstanceId, false);
if (imageNoCurrentStream == null) {
return;
}
+ // 生成gif
AnimatedGifEncoder e = new AnimatedGifEncoder();
+ // 设置背景颜色
e.setTransparent(Color.BLACK);
+ // 设置帧播放次数 0为无限循环播放
e.setRepeat(0);
+ // 设置颜色质量
e.setQuality(19);
+ // 设置输出流
e.start(resp.getOutputStream());
- BufferedImage current = ImageIO.read(imageStream); // 读入需要播放的jpg文件
- e.addFrame(current); // 添加到帧中
+ // 读入需要播放的jpg文件
+ BufferedImage current = ImageIO.read(imageStream);
+ // 添加到帧中
+ e.addFrame(current);
- e.setDelay(200); // 设置播放的延迟时间
- BufferedImage nocurrent = ImageIO.read(imageNoCurrentStream); // 读入需要播放的jpg文件
- e.addFrame(nocurrent); // 添加到帧中
+ // 设置播放的延迟时间
+ e.setDelay(200);
+ // 读入需要播放的jpg文件
+ BufferedImage nocurrent = ImageIO.read(imageNoCurrentStream);
+ // 添加到帧中
+ e.addFrame(nocurrent);
+ // 输出图像
e.finish();
// byte[] b = new byte[1024];
@@ -427,66 +565,100 @@ public class UserLeaveController extends BaseController {
// }
}
- // 只读图片页面
+ /**
+ * 只读图片页面
+ *
+ * @param model 模型层
+ * @param processInstanceId 流程实例id
+ * @return 流程图页面
+ */
@GetMapping("shinePics/{processInstanceId}")
public String shinePics(Model model, @PathVariable String processInstanceId) {
model.addAttribute("processInstanceId", processInstanceId);
return "/act/leave/shinePics";
}
+ /**
+ * 根据流程实例id获取高亮处理后的图像
+ *
+ * @param processInstanceId 流程实例id
+ * @return 结果
+ * @throws IOException 可能发生文件操作异常
+ */
@GetMapping("getShineProcImage")
@ResponseBody
- public String getShineProcImage(HttpServletRequest request, HttpServletResponse resp, String processInstanceId)
- throws IOException {
+ public String getShineProcImage(String processInstanceId) throws IOException {
+ // 定义返回结构
JSONObject result = new JSONObject();
+ // 图像数组,取得高亮当前的活动节点,高亮历史节点的图像
JSONArray shineProImages = new JSONArray();
- BASE64Encoder encoder = new BASE64Encoder();
- InputStream imageStream = generateStream(request, resp, processInstanceId, true);
+ // 高亮当前活动节点
+ InputStream imageStream = generateStream(processInstanceId, true);
if (imageStream != null) {
+ // 将图像base64编码存储到json
String imageCurrentNode = Base64Utils.ioToBase64(imageStream);
if (StringUtils.isNotBlank(imageCurrentNode)) {
shineProImages.add(imageCurrentNode);
}
}
- InputStream imageNoCurrentStream = generateStream(request, resp, processInstanceId, false);
+ // 高亮历史节点
+ InputStream imageNoCurrentStream = generateStream(processInstanceId, false);
if (imageNoCurrentStream != null) {
+ // 将图像的base64编码存储到json
String imageNoCurrentNode = Base64Utils.ioToBase64(imageNoCurrentStream);
if (StringUtils.isNotBlank(imageNoCurrentNode)) {
shineProImages.add(imageNoCurrentNode);
}
}
+ // 响应结果
result.put("id", UUID.randomUUID().toString());
result.put("errorNo", 0);
result.put("images", shineProImages);
return result.toJSONString();
}
- public InputStream generateStream(HttpServletRequest request, HttpServletResponse resp, String processInstanceId,
- boolean needCurrent) {
+ /**
+ * 根据流程id生成图片文件流对象
+ *
+ * @param processInstanceId 实例id
+ * @param needCurrent 是否需要高亮当前活动节点
+ * @return 流对象
+ */
+ public InputStream generateStream(String processInstanceId, boolean needCurrent) {
+ ProcessEngineConfiguration processEngineConfiguration;
+ // 查询实例数据
ProcessInstance processInstance =
runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
HistoricProcessInstance historicProcessInstance =
historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
String processDefinitionId = null;
- List executedActivityIdList = new ArrayList();
+ // 历史活动信息id集合
+ List executedActivityIdList = new ArrayList<>();
+ // 当前处于活动状态的任务节点id集合
List currentActivityIdList = new ArrayList<>();
+ // 历史活动任务信息实例集合
List historicActivityInstanceList = new ArrayList<>();
if (processInstance != null) {
processDefinitionId = processInstance.getProcessDefinitionId();
+ // 是否需要当前活动节点id数据
if (needCurrent) {
currentActivityIdList = this.runtimeService.getActiveActivityIds(processInstance.getId());
}
}
if (historicProcessInstance != null) {
+ // 获取历史已完成流程定义id
processDefinitionId = historicProcessInstance.getProcessDefinitionId();
+ // 获取流程实例的历史活动信息,按历史活动id升序
historicActivityInstanceList = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(processInstanceId).orderByHistoricActivityInstanceId().asc().list();
for (HistoricActivityInstance activityInstance : historicActivityInstanceList) {
+ // 添加到历史信息id集合中
executedActivityIdList.add(activityInstance.getActivityId());
}
}
- if (StringUtils.isEmpty(processDefinitionId) || executedActivityIdList.isEmpty()) {
+ // 如果流程实例Definition id未获取到,或者没有已完成的历史流程任务
+ if (StringUtils.isEmpty(processDefinitionId) || CollectionUtils.isEmpty(executedActivityIdList)) {
return null;
}
@@ -495,43 +667,52 @@ public class UserLeaveController extends BaseController {
(ProcessDefinitionEntity)repositoryService.getProcessDefinition(processDefinitionId);
List highLightedFlows = getHighLightedFlows(definitionEntity, historicActivityInstanceList);
+ // 获取bpmn模型对象
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
// List activeActivityIds = runtimeService.getActiveActivityIds(processInstanceId);
+ // 获取流程引擎的配置
processEngineConfiguration = processEngine.getProcessEngineConfiguration();
+ // 设置当前上下文的引擎相关配置
Context.setProcessEngineConfiguration((ProcessEngineConfigurationImpl)processEngineConfiguration);
+ // 获取流程图生成器
HMProcessDiagramGenerator diagramGenerator =
(HMProcessDiagramGenerator)processEngineConfiguration.getProcessDiagramGenerator();
// List activeIds = this.runtimeService.getActiveActivityIds(processInstance.getId());
- InputStream imageStream = diagramGenerator.generateDiagram(bpmnModel, "png", executedActivityIdList,
- highLightedFlows, processEngine.getProcessEngineConfiguration().getActivityFontName(),
+ // 根据流程定义生成流程图像
+ return diagramGenerator.generateDiagram(bpmnModel, "png", executedActivityIdList, highLightedFlows,
+ processEngine.getProcessEngineConfiguration().getActivityFontName(),
processEngine.getProcessEngineConfiguration().getLabelFontName(), "宋体", null, 1.0, currentActivityIdList);
-
- return imageStream;
}
/**
* 获取需要高亮的线
*
- * @param processDefinitionEntity
- * @param historicActivityInstances
- * @return
+ * @param processDefinitionEntity 流程定义对象实体
+ * @param historicActivityInstances 历史流程实例集合
+ * @return 结果
*/
private List getHighLightedFlows(ProcessDefinitionEntity processDefinitionEntity,
List historicActivityInstances) {
+ // 用以保存高亮的线flowId
+ List highFlows = new ArrayList<>();
- List highFlows = new ArrayList();// 用以保存高亮的线flowId
- for (int i = 0; i < historicActivityInstances.size() - 1; i++) {// 对历史流程节点进行遍历
+ // 对历史流程节点进行遍历
+ for (int i = 0; i < historicActivityInstances.size() - 1; i++) {
+ // 得到节点定义的详细信息
ActivityImpl activityImpl =
- processDefinitionEntity.findActivity(historicActivityInstances.get(i).getActivityId());// 得到节点定义的详细信息
- List sameStartTimeNodes = new ArrayList();// 用以保存后需开始时间相同的节点
+ processDefinitionEntity.findActivity(historicActivityInstances.get(i).getActivityId());
+ // 用以保存后需开始时间相同的节点
+ List sameStartTimeNodes = new ArrayList<>();
ActivityImpl sameActivityImpl1 =
processDefinitionEntity.findActivity(historicActivityInstances.get(i + 1).getActivityId());
// 将后面第一个节点放在时间相同节点的集合里
sameStartTimeNodes.add(sameActivityImpl1);
for (int j = i + 1; j < historicActivityInstances.size() - 1; j++) {
- HistoricActivityInstance activityImpl1 = historicActivityInstances.get(j);// 后续第一个节点
- HistoricActivityInstance activityImpl2 = historicActivityInstances.get(j + 1);// 后续第二个节点
+ // 后续第一个节点
+ HistoricActivityInstance activityImpl1 = historicActivityInstances.get(j);
+ // 后续第二个节点
+ HistoricActivityInstance activityImpl2 = historicActivityInstances.get(j + 1);
if (activityImpl1.getStartTime().equals(activityImpl2.getStartTime())) {
// 如果第一个节点和第二个节点开始时间相同保存
ActivityImpl sameActivityImpl2 =
@@ -542,7 +723,8 @@ public class UserLeaveController extends BaseController {
break;
}
}
- List pvmTransitions = activityImpl.getOutgoingTransitions();// 取出节点的所有出去的线
+ // 取出节点的所有出去的线
+ List pvmTransitions = activityImpl.getOutgoingTransitions();
for (PvmTransition pvmTransition : pvmTransitions) {
// 对所有的线进行遍历
ActivityImpl pvmActivityImpl = (ActivityImpl)pvmTransition.getDestination();
diff --git a/len-activiti/src/main/java/com/len/util/CastClassUtils.java b/len-activiti/src/main/java/com/len/util/CastClassUtils.java
new file mode 100644
index 0000000..e839ab3
--- /dev/null
+++ b/len-activiti/src/main/java/com/len/util/CastClassUtils.java
@@ -0,0 +1,51 @@
+package com.len.util;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 类型转换工具
+ *
+ * @author chenxing
+ */
+public class CastClassUtils {
+
+ private CastClassUtils() {
+ throw new IllegalStateException("Utility class");
+ }
+
+ /**
+ * 将Object转为目标类型的List集合,如果无法转换则返回空集合(非null)
+ *
+ * @param obj 需要转换的object
+ * @param clazz 需要转换的类型
+ * @return 结果
+ * @param 泛型控制
+ */
+ public static List castList(Object obj, Class clazz) {
+ if (obj instanceof List>) {
+ List> list = (List>)obj;
+ return list.stream().map(clazz::cast).collect(Collectors.toList());
+ }
+ return Collections.emptyList();
+ }
+
+ /**
+ * 将Object转为目标类型的Map集合,如果无法转换则返回空集合(非null)
+ *
+ * @param obj 需要转换的对象
+ * @param kClass key 对应的类型
+ * @param vClass value对应的类类型
+ * @return 转换后的结果
+ */
+ public static Map castMap(Object obj, Class kClass, Class vClass) {
+ HashMap result = new HashMap<>();
+ if (obj instanceof Map, ?>) {
+ Map, ?> map = (Map, ?>)(obj);
+ for (Map.Entry, ?> entry : map.entrySet()) {
+ result.put(kClass.cast(entry.getKey()), vClass.cast(entry.getValue()));
+ }
+ }
+ return result;
+ }
+}
diff --git a/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java b/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java
index 5ed2714..13001ba 100644
--- a/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java
+++ b/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java
@@ -189,7 +189,7 @@ public class BlogArticleServiceImpl extends BaseServiceImpl categoryIds, List tags) {
article.setUpdateBy(LenUser.getPrincipal().getUserId());
article.setUpdateDate(new Date());
--
Gitee