Compare commits
15 Commits
lims_dev
...
5cbc445cf7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5cbc445cf7 | ||
|
|
3e3cc502e3 | ||
|
|
c4968d1aea | ||
|
|
5aa83d739e | ||
|
|
c44d798e68 | ||
|
|
6ecfcf2a09 | ||
|
|
32bb22d6b6 | ||
|
|
f16243441e | ||
|
|
f06e0a4d5c | ||
|
|
39ff226c9b | ||
|
|
b4805414c5 | ||
|
|
b3b324e0d9 | ||
|
|
c327678aa4 | ||
|
|
3e88f2a647 | ||
|
|
b1920b7b47 |
@@ -27,6 +27,13 @@ spec:
|
|||||||
env:
|
env:
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: Asia/Shanghai
|
value: Asia/Shanghai
|
||||||
|
lifecycle:
|
||||||
|
preStop:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- "/bin/sh"
|
||||||
|
- "-c"
|
||||||
|
- "sleep 35"
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
path: /actuator/health
|
path: /actuator/health
|
||||||
@@ -48,7 +55,7 @@ spec:
|
|||||||
limits:
|
limits:
|
||||||
cpu: "1"
|
cpu: "1"
|
||||||
memory: "2048Mi"
|
memory: "2048Mi"
|
||||||
terminationGracePeriodSeconds: 30
|
terminationGracePeriodSeconds: 40
|
||||||
strategy:
|
strategy:
|
||||||
type: RollingUpdate
|
type: RollingUpdate
|
||||||
rollingUpdate:
|
rollingUpdate:
|
||||||
|
|||||||
25
pom.xml
25
pom.xml
@@ -16,15 +16,15 @@
|
|||||||
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<revision>3.0.45</revision>
|
<revision>3.0.46</revision>
|
||||||
<business.supply.version>3.0.44</business.supply.version>
|
<business.supply.version>3.0.46</business.supply.version>
|
||||||
<business.base.version>3.0.44</business.base.version>
|
<business.base.version>3.0.46</business.base.version>
|
||||||
<business.logistic.version>3.0.44</business.logistic.version>
|
<business.logistic.version>3.0.46</business.logistic.version>
|
||||||
<business.manage.version>3.0.44</business.manage.version>
|
<business.manage.version>3.0.46</business.manage.version>
|
||||||
<business.qms.version>3.0.44</business.qms.version>
|
<business.qms.version>3.0.46</business.qms.version>
|
||||||
<business.mes.version>3.0.44</business.mes.version>
|
<business.mes.version>3.0.46</business.mes.version>
|
||||||
<business.capital.version>3.0.44</business.capital.version>
|
<business.capital.version>3.0.46</business.capital.version>
|
||||||
<business.product.version>3.0.44</business.product.version>
|
<business.product.version>3.0.46</business.product.version>
|
||||||
<!-- Maven 相关 -->
|
<!-- Maven 相关 -->
|
||||||
<java.version>17</java.version>
|
<java.version>17</java.version>
|
||||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
@@ -269,7 +269,14 @@
|
|||||||
<profile>
|
<profile>
|
||||||
<id>qsj</id>
|
<id>qsj</id>
|
||||||
<properties>
|
<properties>
|
||||||
|
<env.name>dev</env.name>
|
||||||
|
<!--Nacos 配置-->
|
||||||
|
<config.server-addr>172.16.46.63:30848</config.server-addr>
|
||||||
<config.namespace>qsj</config.namespace>
|
<config.namespace>qsj</config.namespace>
|
||||||
|
<config.group>DEFAULT_GROUP</config.group>
|
||||||
|
<config.username>nacos</config.username>
|
||||||
|
<config.password>P@ssword25</config.password>
|
||||||
|
<config.version>1.0.0</config.version>
|
||||||
</properties>
|
</properties>
|
||||||
</profile>
|
</profile>
|
||||||
</profiles>
|
</profiles>
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
## AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性
|
## AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性
|
||||||
|
|
||||||
ARG BASE_IMAGE=172.16.46.66:10043/base-service/skywalking-agent-jre:9.7.0
|
FROM 172.16.46.66:10043/base-service/eclipse-temurin:21-jre
|
||||||
FROM ${BASE_IMAGE}
|
|
||||||
|
|
||||||
## 创建目录,并使用它作为工作目录
|
## 创建目录,并使用它作为工作目录
|
||||||
RUN mkdir -p /zt-module-bpm-server
|
RUN mkdir -p /zt-module-bpm-server
|
||||||
@@ -11,15 +10,10 @@ COPY ./target/zt-module-bpm-server.jar app.jar
|
|||||||
|
|
||||||
## 设置 TZ 时区
|
## 设置 TZ 时区
|
||||||
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
|
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
|
||||||
ENV TZ=Asia/Shanghai
|
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms512m -Xmx512m"
|
||||||
ENV JAVA_OPTS="-Xms512m -Xmx512m"
|
|
||||||
ENV SW_AGENT_HOME=/opt/skywalking/agent
|
|
||||||
ENV SW_AGENT_NAME=zt-module-bpm-server
|
|
||||||
ENV SW_AGENT_COLLECTOR_BACKEND_SERVICES=172.16.46.63:30201
|
|
||||||
ENV AGENT_JAVA_OPTS="-javaagent:${SW_AGENT_HOME}/skywalking-agent.jar -Dskywalking.agent.service_name=${SW_AGENT_NAME} -Dskywalking.collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES}"
|
|
||||||
|
|
||||||
## 暴露后端项目的 48080 端口
|
## 暴露后端项目的 48080 端口
|
||||||
EXPOSE 48083
|
EXPOSE 48083
|
||||||
|
|
||||||
## 启动后端项目
|
## 启动后端项目
|
||||||
CMD java ${AGENT_JAVA_OPTS} ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar app.jar
|
CMD java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar app.jar
|
||||||
|
|||||||
@@ -10,9 +10,11 @@ import jakarta.annotation.Resource;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.flowable.bpmn.model.FieldExtension;
|
import org.flowable.bpmn.model.FieldExtension;
|
||||||
import org.flowable.bpmn.model.FlowableListener;
|
import org.flowable.bpmn.model.FlowableListener;
|
||||||
|
import org.flowable.engine.HistoryService;
|
||||||
import org.flowable.engine.RuntimeService;
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.flowable.engine.delegate.JavaDelegate;
|
import org.flowable.engine.delegate.JavaDelegate;
|
||||||
|
import org.flowable.engine.history.HistoricActivityInstance;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -33,14 +35,28 @@ public class QmsExecutionListener implements JavaDelegate {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private QmsApi qmsApi;
|
private QmsApi qmsApi;
|
||||||
@Resource private RuntimeService runtimeService;
|
@Resource private RuntimeService runtimeService;
|
||||||
|
@Resource private HistoryService historyService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void execute(DelegateExecution execution) {
|
public void execute(DelegateExecution execution) {
|
||||||
log.info("[QmsExecutionListener][execution({}) 被调用!变量有:{}]", execution.getId(), execution.getCurrentFlowableListener().getFieldExtensions());
|
// log.info("[QmsExecutionListener][execution({}) 被调用!变量有:{}]", execution.getId(), execution.getCurrentFlowableListener().getFieldExtensions());
|
||||||
Map<String, Object> variables = execution.getVariables();
|
|
||||||
JSONObject jsonObject = new JSONObject(variables);
|
|
||||||
String insId = execution.getProcessInstanceId();
|
String insId = execution.getProcessInstanceId();
|
||||||
|
Map<String, Object> variables = execution.getVariables();
|
||||||
|
String activityId = execution.getCurrentActivityId();
|
||||||
|
|
||||||
|
List<HistoricActivityInstance> instances = historyService.createHistoricActivityInstanceQuery()
|
||||||
|
.processInstanceId(insId)
|
||||||
|
.activityId(activityId)
|
||||||
|
.orderByHistoricActivityInstanceStartTime().desc()
|
||||||
|
.list();
|
||||||
|
String currentActivityInsId = "";
|
||||||
|
if(instances != null && !instances.isEmpty())
|
||||||
|
currentActivityInsId = instances.get(0).getId();
|
||||||
|
variables.put("currentActivityInsId", currentActivityInsId);
|
||||||
|
variables.put("processInstanceId", insId);
|
||||||
|
JSONObject jsonObject = new JSONObject(variables);
|
||||||
|
// log.error("============[QmsExecutionListener][execution({})] 参数有:{}", execution.getId(), JSONObject.toJSONString(variables));
|
||||||
String businessKey = execution.getProcessInstanceBusinessKey();
|
String businessKey = execution.getProcessInstanceBusinessKey();
|
||||||
FlowableListener listener = execution.getCurrentFlowableListener();
|
FlowableListener listener = execution.getCurrentFlowableListener();
|
||||||
List<FieldExtension> fieldExtensions = listener.getFieldExtensions(); //节点执行监听里配置的扩展字段
|
List<FieldExtension> fieldExtensions = listener.getFieldExtensions(); //节点执行监听里配置的扩展字段
|
||||||
|
|||||||
@@ -5,13 +5,18 @@ import com.zt.plat.framework.common.pojo.CommonResult;
|
|||||||
import com.zt.plat.module.qms.api.task.QmsApi;
|
import com.zt.plat.module.qms.api.task.QmsApi;
|
||||||
import com.zt.plat.module.qms.api.task.dto.QmsBpmDTO;
|
import com.zt.plat.module.qms.api.task.dto.QmsBpmDTO;
|
||||||
import com.zt.plat.module.qms.enums.ErrorCodeConstants;
|
import com.zt.plat.module.qms.enums.ErrorCodeConstants;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.flowable.engine.HistoryService;
|
||||||
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.delegate.TaskListener;
|
import org.flowable.engine.delegate.TaskListener;
|
||||||
|
import org.flowable.engine.history.HistoricActivityInstance;
|
||||||
import org.flowable.task.service.delegate.DelegateTask;
|
import org.flowable.task.service.delegate.DelegateTask;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0;
|
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0;
|
||||||
@@ -23,21 +28,53 @@ import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.e
|
|||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class QmsTaskListener implements TaskListener {
|
public class QmsTaskListener implements TaskListener {
|
||||||
@Autowired
|
@Autowired private QmsApi qmsApi;
|
||||||
private QmsApi qmsApi;
|
@Resource private RuntimeService runtimeService;
|
||||||
|
@Resource private HistoryService historyService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void notify(DelegateTask delegateTask) {
|
public void notify(DelegateTask delegateTask) {
|
||||||
log.info("[QmsTaskListener][delegateTask({})]", delegateTask);
|
// log.info("[QmsTaskListener][delegateTask({})]", delegateTask);
|
||||||
String state = delegateTask.getState();
|
String state = delegateTask.getState();
|
||||||
Map<String, Object> variables = delegateTask.getVariables();
|
Map<String, Object> variables = delegateTask.getVariables();
|
||||||
|
String processInsId = delegateTask.getProcessInstanceId();
|
||||||
|
String activityId = delegateTask.getTaskDefinitionKey();
|
||||||
|
String currentActivityInsId = "";
|
||||||
|
List<HistoricActivityInstance> instances = historyService.createHistoricActivityInstanceQuery()
|
||||||
|
.processInstanceId(processInsId)
|
||||||
|
.activityId(activityId)
|
||||||
|
.orderByHistoricActivityInstanceStartTime().desc()
|
||||||
|
.list();
|
||||||
|
if(instances != null && !instances.isEmpty())
|
||||||
|
currentActivityInsId = instances.get(0).getId();
|
||||||
|
variables.put("currentActivityInsId", currentActivityInsId);
|
||||||
|
variables.put("processInstanceId", processInsId);
|
||||||
|
|
||||||
|
String rejectToFirstActivity = checkFirstActivityReject(activityId, instances);
|
||||||
|
|
||||||
|
//todo 判断退回
|
||||||
|
Map<String, Object> execVariables = runtimeService.getVariables(delegateTask.getExecutionId());
|
||||||
|
variables.put("rejectToFirstActivity", rejectToFirstActivity);
|
||||||
|
// log.error("================[QmsTaskListener][delegateTask({})] 参数有:{}", delegateTask.getId(), JSONObject.toJSONString(variables));
|
||||||
JSONObject jsonObject = new JSONObject(variables);
|
JSONObject jsonObject = new JSONObject(variables);
|
||||||
String insId = delegateTask.getProcessInstanceId();
|
QmsBpmDTO qmsBpmDTO = new QmsBpmDTO(processInsId, "", jsonObject, state);
|
||||||
QmsBpmDTO qmsBpmDTO = new QmsBpmDTO(insId, "", jsonObject, state);
|
|
||||||
CommonResult<JSONObject> result = qmsApi.bpmCallback(qmsBpmDTO);
|
CommonResult<JSONObject> result = qmsApi.bpmCallback(qmsBpmDTO);
|
||||||
if (!result.isSuccess()) {
|
if (!result.isSuccess()) {
|
||||||
log.error("[QmsExecutionListener][execution({}) 回调失败!错误码:{},错误信息:{}]", delegateTask.getId(), result.getCode(), result.getMsg());
|
log.error("[QmsExecutionListener][execution({}) 回调失败!错误码:{},错误信息:{}]", delegateTask.getId(), result.getCode(), result.getMsg());
|
||||||
throw exception0(ErrorCodeConstants.ERROR_CODE_MODULE_QMS_BPM, result.getMsg());
|
throw exception0(ErrorCodeConstants.ERROR_CODE_MODULE_QMS_BPM, result.getMsg());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 判断是否退回发起节点
|
||||||
|
* */
|
||||||
|
private String checkFirstActivityReject(String activityId, List<HistoricActivityInstance> instances){
|
||||||
|
if(!activityId.contains("001"))
|
||||||
|
return "0";
|
||||||
|
if(instances == null || instances.isEmpty())
|
||||||
|
return "0";
|
||||||
|
return "1";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,10 @@
|
|||||||
<springProperty scope="context" name="zt.info.base-package" source="zt.info.base-package"/>
|
<springProperty scope="context" name="zt.info.base-package" source="zt.info.base-package"/>
|
||||||
<!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 -->
|
<!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 -->
|
||||||
<property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
|
<property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
|
||||||
|
<!--应用名称-->
|
||||||
|
<springProperty scope="context" name="spring.application.name" source="spring.application.name"/>
|
||||||
|
<!-- 日志输出路径 -->
|
||||||
|
<property name="LOG_DIR" value="${user.home}/logs/${spring.application.name}"/>
|
||||||
|
|
||||||
<!-- 控制台 Appender -->
|
<!-- 控制台 Appender -->
|
||||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
@@ -56,18 +60,43 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
<!-- ERROR 级别日志 -->
|
||||||
|
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_DIR}-error.log</file>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<level>ERROR</level>
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_DIR}-error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<maxHistory>30</maxHistory> <!-- 保留30天的日志 -->
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!--logback的日志级别 FATAL > ERROR > WARN > INFO > DEBUG-->
|
||||||
<!-- 本地环境 -->
|
<!-- 本地环境 -->
|
||||||
<springProfile name="local">
|
<springProfile name="local,dev">
|
||||||
<root level="INFO">
|
<root level="WARN">
|
||||||
<appender-ref ref="STDOUT"/>
|
<appender-ref ref="STDOUT"/>
|
||||||
|
<appender-ref ref="ERROR"/>
|
||||||
<appender-ref ref="GRPC"/> <!-- 本地环境下,如果不想接入 SkyWalking 日志服务,可以注释掉本行 -->
|
<appender-ref ref="GRPC"/> <!-- 本地环境下,如果不想接入 SkyWalking 日志服务,可以注释掉本行 -->
|
||||||
<appender-ref ref="ASYNC"/> <!-- 本地环境下,如果不想打印日志,可以注释掉本行 -->
|
<appender-ref ref="ASYNC"/> <!-- 本地环境下,如果不想打印日志,可以注释掉本行 -->
|
||||||
</root>
|
</root>
|
||||||
|
<!--针对不同的业务路径,配置dao层的sql打印日志级别为DEBUG-->
|
||||||
|
<logger name="com.zt.plat.module.bpm.dal.mysql" level="DEBUG" additivity="false">
|
||||||
|
<appender-ref ref="STDOUT"/>
|
||||||
|
</logger>
|
||||||
</springProfile>
|
</springProfile>
|
||||||
|
|
||||||
<!-- 其它环境 -->
|
<!-- 其它环境 -->
|
||||||
<springProfile name="dev,test,stage,prod,default">
|
<springProfile name="dev,test,stage,prod,default">
|
||||||
<root level="INFO">
|
<root level="INFO">
|
||||||
<appender-ref ref="STDOUT"/>
|
<appender-ref ref="STDOUT"/>
|
||||||
|
<appender-ref ref="ERROR"/>
|
||||||
<appender-ref ref="ASYNC"/>
|
<appender-ref ref="ASYNC"/>
|
||||||
<appender-ref ref="GRPC"/>
|
<appender-ref ref="GRPC"/>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
Reference in New Issue
Block a user