Compare commits

...

16 Commits

Author SHA1 Message Date
FCL
1f80be555f Merge branch 'refs/heads/zt-test' into test
# Conflicts:
#	zt-module-bpm/zt-module-bpm-server/pom.xml
2025-10-21 14:50:16 +08:00
FCL
4bf96508a1 feat:代码合并、流程回调监听 2025-10-21 14:49:12 +08:00
chenbowen
3fa9312a56 升级版本 2025-10-15 16:18:03 +08:00
chenbowen
b1edfba21c 升级版本 2025-10-15 16:15:45 +08:00
qianshijiang
912c26ce37 Merge remote-tracking branch 'origin/dev' into test 2025-10-15 14:34:11 +08:00
qianshijiang
72bca7a98d 请款单流程回调 2025-10-15 14:33:31 +08:00
qianshijiang
5a7de203df Merge remote-tracking branch 'origin/dev' into test 2025-10-15 10:43:18 +08:00
qianshijiang
fd355f29b3 请款单流程回调 2025-10-14 11:34:51 +08:00
niuhb
6d9b5b82bc Merge branch 'dev' into test 2025-10-10 15:33:02 +08:00
niuhb
82e5bb91a0 注册生产计划feign接口 2025-10-10 15:32:46 +08:00
niuhb
9453757324 Merge branch 'dev' into test 2025-10-10 14:26:32 +08:00
niuhb
3d54b2cf73 新增生产计划模块审批回调监听 2025-10-10 14:21:24 +08:00
yueyi
c44f75b2cc 修改生产管理API版本号 2025-10-10 13:47:44 +08:00
yueyi
469558c87d Merge branch 'dev' into test 2025-10-10 10:25:15 +08:00
yueyi
61c04b7f36 工艺流程审批监听 2025-10-10 10:12:43 +08:00
qianshijiang
0b50d2444c 新建dev分支 2025-09-29 10:29:13 +08:00
10 changed files with 283 additions and 15 deletions

30
pom.xml
View File

@@ -16,13 +16,13 @@
<url>https://github.com/YunaiV/ruoyi-vue-pro</url> <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
<properties> <properties>
<revision>3.0.41</revision> <revision>3.0.42</revision>
<business.supply.version>3.0.41</business.supply.version> <business.supply.version>3.0.42</business.supply.version>
<business.base.version>3.0.41</business.base.version> <business.base.version>3.0.42</business.base.version>
<business.logistic.version>3.0.41</business.logistic.version> <business.logistic.version>3.0.42</business.logistic.version>
<business.manage.version>3.0.41</business.manage.version> <business.manage.version>3.0.42</business.manage.version>
<business.qms.version>3.0.42</business.qms.version> <business.qms.version>3.0.42</business.qms.version>
<business.mes.version>3.0.41</business.mes.version> <business.mes.version>3.0.42</business.mes.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>
@@ -195,7 +195,7 @@
<name>中铜 ZStack 私服</name> <name>中铜 ZStack 私服</name>
<url>http://172.16.46.63:30708/repository/test/</url> <url>http://172.16.46.63:30708/repository/test/</url>
<releases> <releases>
<enabled>false</enabled> <enabled>true</enabled>
</releases> </releases>
</repository> </repository>
</repositories> </repositories>
@@ -244,12 +244,12 @@
<id>env-local</id> <id>env-local</id>
<properties> <properties>
<env.name>local</env.name> <env.name>local</env.name>
<!-- <config.server-addr>localhost:8848</config.server-addr>--> <config.server-addr>localhost:8848</config.server-addr>
<config.server-addr>172.16.46.63:30848</config.server-addr> <!-- <config.server-addr>172.16.46.63:30848</config.server-addr>-->
<config.namespace>local</config.namespace> <config.namespace>zgty-qms-local</config.namespace>
<config.group>DEFAULT_GROUP</config.group> <config.group>DEFAULT_GROUP</config.group>
<config.username/> <config.username>qms</config.username>
<config.password/> <config.password>1234567890</config.password>
<config.version>1.0.0</config.version> <config.version>1.0.0</config.version>
</properties> </properties>
</profile> </profile>
@@ -259,6 +259,12 @@
<config.namespace>chenbowen</config.namespace> <config.namespace>chenbowen</config.namespace>
</properties> </properties>
</profile> </profile>
<profile>
<id>qsj</id>
<properties>
<config.namespace>qsj</config.namespace>
</properties>
</profile>
</profiles> </profiles>
</project> </project>

View File

@@ -38,6 +38,16 @@
<artifactId>zt-module-capital-api</artifactId> <artifactId>zt-module-capital-api</artifactId>
<version>${business.supply.version}</version> <version>${business.supply.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.zt.plat</groupId>
<artifactId>zt-module-product-api</artifactId>
<version>${business.mes.version}</version>
</dependency>
<dependency>
<groupId>com.zt.plat</groupId>
<artifactId>zt-module-product-api</artifactId>
<version>${business.mes.version}</version>
</dependency>
<dependency> <dependency>
<groupId>com.zt.plat</groupId> <groupId>com.zt.plat</groupId>
<artifactId>zt-module-qms-api</artifactId> <artifactId>zt-module-qms-api</artifactId>

View File

@@ -1,6 +1,10 @@
package com.zt.plat.module.bpm.framework.rpc.config; package com.zt.plat.module.bpm.framework.rpc.config;
import com.zt.plat.module.capital.api.AmountCreditApplyApi; import com.zt.plat.module.capital.api.splyAmountRequest.AmountRequestApi;
import com.zt.plat.module.capital.api.splyAmtCrdtAppl.AmountCreditApplyApi;
import com.zt.plat.module.product.api.MesProcessRoutApi;
import com.zt.plat.module.product.api.plan.MesCompanyPlanApi;
import com.zt.plat.module.product.api.plan.MesFactoryPlanApi;
import com.zt.plat.module.system.api.dept.DeptApi; import com.zt.plat.module.system.api.dept.DeptApi;
import com.zt.plat.module.system.api.dept.PostApi; import com.zt.plat.module.system.api.dept.PostApi;
import com.zt.plat.module.system.api.dict.DictDataApi; import com.zt.plat.module.system.api.dict.DictDataApi;
@@ -13,6 +17,6 @@ import org.springframework.context.annotation.Configuration;
@Configuration(value = "bpmRpcConfiguration", proxyBeanMethods = false) @Configuration(value = "bpmRpcConfiguration", proxyBeanMethods = false)
@EnableFeignClients(clients = {RoleApi.class, DeptApi.class, PostApi.class, AdminUserApi.class, SmsSendApi.class, DictDataApi.class, @EnableFeignClients(clients = {RoleApi.class, DeptApi.class, PostApi.class, AdminUserApi.class, SmsSendApi.class, DictDataApi.class,
PermissionApi.class, AmountCreditApplyApi.class}) PermissionApi.class, AmountCreditApplyApi.class, MesProcessRoutApi.class, MesFactoryPlanApi.class, MesCompanyPlanApi.class, AmountRequestApi.class})
public class RpcConfiguration { public class RpcConfiguration {
} }

View File

@@ -0,0 +1,33 @@
package com.zt.plat.module.bpm.service.mes.plan;
import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEvent;
import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEventListener;
import com.zt.plat.module.product.api.dto.MesApprovalCallbackVO;
import com.zt.plat.module.product.api.plan.MesCompanyPlanApi;
import com.zt.plat.module.product.enums.plan.CompanyPlanTypeEnums;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
public class MesCompanyPlanStatusListener extends BpmProcessInstanceStatusEventListener {
@Resource
private MesCompanyPlanApi mesCompanyPlanApi;
@Override
protected List<String> getProcessDefinitionKey() {
return Arrays.stream(CompanyPlanTypeEnums.values()).map(CompanyPlanTypeEnums::getProcessKey).toList();
}
@Override
protected void onEvent(BpmProcessInstanceStatusEvent event) {
mesCompanyPlanApi.updateApprovalStatus(new MesApprovalCallbackVO()
.setInstanceId(event.getId())
.setBusinessKey(event.getBusinessKey())
.setStatus(event.getStatus())
);
}
}

View File

@@ -0,0 +1,33 @@
package com.zt.plat.module.bpm.service.mes.plan;
import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEvent;
import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEventListener;
import com.zt.plat.module.product.api.dto.MesApprovalCallbackVO;
import com.zt.plat.module.product.api.plan.MesFactoryPlanApi;
import com.zt.plat.module.product.enums.plan.FactoryPlanTypeEnums;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
public class MesFactoryPlanStatusListener extends BpmProcessInstanceStatusEventListener {
@Resource
private MesFactoryPlanApi mesFactoryPlanApi;
@Override
protected List<String> getProcessDefinitionKey() {
return Arrays.stream(FactoryPlanTypeEnums.values()).map(FactoryPlanTypeEnums::getProcessKey).toList();
}
@Override
protected void onEvent(BpmProcessInstanceStatusEvent event) {
mesFactoryPlanApi.updateApprovalStatus(new MesApprovalCallbackVO()
.setInstanceId(event.getId())
.setBusinessKey(event.getBusinessKey())
.setStatus(event.getStatus())
);
}
}

View File

@@ -0,0 +1,42 @@
package com.zt.plat.module.bpm.service.process.route.listener;
import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEvent;
import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEventListener;
import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
import com.zt.plat.module.product.api.MesProcessRoutApi;
import com.zt.plat.module.product.enums.process.ProcessConstant;
import com.zt.plat.module.product.enums.process.ProcessRouteApprovalStatusEnums;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Objects;
/**
* 工艺流程审批状态监听器
*/
@Component
public class ProcessRouteApprovalBpmListener extends BpmProcessInstanceStatusEventListener {
@Resource
private MesProcessRoutApi mesProcessRoutApi;
@Override
protected List<String> getProcessDefinitionKey() {
return List.of(ProcessConstant.APPROVAL_PROCESS_KEY);
}
@Override
protected void onEvent(BpmProcessInstanceStatusEvent event) {
Integer bpmStatus = event.getStatus();
String status = null;
if (Objects.equals(BpmProcessInstanceStatusEnum.APPROVE.getStatus(), bpmStatus)) {
status = ProcessRouteApprovalStatusEnums.Approved.getCode();
} else if (Objects.equals(BpmProcessInstanceStatusEnum.REJECT.getStatus(), bpmStatus)) {
status = ProcessRouteApprovalStatusEnums.Failed.getCode();
} else if (Objects.equals(BpmProcessInstanceStatusEnum.CANCEL.getStatus(), bpmStatus)) {
status = ProcessRouteApprovalStatusEnums.Draft.getCode();
}
mesProcessRoutApi.updateProcessRouteApprovalStatus(Long.parseLong(event.getBusinessKey()), status);
}
}

View File

@@ -0,0 +1,54 @@
package com.zt.plat.module.bpm.service.qms.listener;
import com.alibaba.fastjson.JSONObject;
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.dto.QmsBpmDTO;
import com.zt.plat.module.qms.enums.ErrorCodeConstants;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0;
/**
* QMS模块执行监听
*/
@Component
@Slf4j
public class QmsExecutionListener implements JavaDelegate {
@Autowired
private QmsApi qmsApi;
@Resource private RuntimeService runtimeService;
@Override
@Transactional(rollbackFor = Exception.class)
public void execute(DelegateExecution execution) {
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 businessKey = execution.getProcessInstanceBusinessKey();
QmsBpmDTO qmsBpmDTO = new QmsBpmDTO(insId, businessKey, jsonObject, "");
Map<String, Object> v = runtimeService.getVariables(execution.getProcessInstanceId());
// Object status = runtimeService.getVariable(execution.getProcessInstanceId(), WfProcessConstant.TASK_VARIABLE_PROCESS_TERMINATE);
CommonResult<JSONObject> result = qmsApi.bpmCallback(qmsBpmDTO);
if (!result.isSuccess()) {
log.error("[QmsExecutionListener][execution({}) 回调失败!错误码:{},错误信息:{}]", execution.getId(), result.getCode(), result.getMsg());
throw exception0(ErrorCodeConstants.ERROR_CODE_MODULE_QMS_BPM, result.getMsg());
}
}
}

View File

@@ -0,0 +1,44 @@
package com.zt.plat.module.bpm.service.qms.listener;
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.dto.QmsBpmDTO;
import com.zt.plat.module.qms.enums.ErrorCodeConstants;
import com.alibaba.fastjson.JSONObject;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0;
/**
* QMS模块任务监听
*/
@Component
@Slf4j
public class QmsTaskListener implements TaskListener {
@Autowired
private QmsApi qmsApi;
@Override
@Transactional(rollbackFor = Exception.class)
public void notify(DelegateTask delegateTask) {
log.info("[QmsTaskListener][delegateTask({})]", delegateTask);
String state = delegateTask.getState();
Map<String, Object> variables = delegateTask.getVariables();
JSONObject jsonObject = new JSONObject(variables);
String insId = delegateTask.getProcessInstanceId();
QmsBpmDTO qmsBpmDTO = new QmsBpmDTO(insId, "", jsonObject, state);
CommonResult<JSONObject> result = qmsApi.bpmCallback(qmsBpmDTO);
if (!result.isSuccess()) {
log.error("[QmsExecutionListener][execution({}) 回调失败!错误码:{},错误信息:{}]", delegateTask.getId(), result.getCode(), result.getMsg());
throw exception0(ErrorCodeConstants.ERROR_CODE_MODULE_QMS_BPM, result.getMsg());
}
}
}

View File

@@ -0,0 +1,42 @@
package com.zt.plat.module.bpm.service.supply.capital.listener;
import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEvent;
import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEventListener;
import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
import com.zt.plat.module.capital.api.splyAmountRequest.AmountRequestApi;
import com.zt.plat.module.capital.enums.AmountRequestApiStatusEnum;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* sply_amount_request_approval_process - 请款单的状态的监听器实现类
*
* @author qianshijiang
*/
@Component
public class BpmAmountRequestApprovalStatusListener extends BpmProcessInstanceStatusEventListener {
@Resource
private AmountRequestApi amountRequestApi;
@Override
protected List<String> getProcessDefinitionKey() {
return List.of(amountRequestApi.PROCESS_KEY);
}
@Override
protected void onEvent(BpmProcessInstanceStatusEvent event) {
// 将流程中的状态转换为业务的状态
Integer status = event.getStatus();
String approvalStatus = null;
if (BpmProcessInstanceStatusEnum.APPROVE.getStatus() == status) {
approvalStatus = AmountRequestApiStatusEnum.ACAS_PASS.getCode();
} else if (BpmProcessInstanceStatusEnum.REJECT.getStatus() == status) {
approvalStatus = AmountRequestApiStatusEnum.ACAS_REJECT.getCode();
}
amountRequestApi.updateAmountRequestStatus(Long.parseLong(event.getBusinessKey()),approvalStatus);
}
}

View File

@@ -3,7 +3,7 @@ package com.zt.plat.module.bpm.service.supply.capital.listener;
import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEvent; import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEvent;
import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEventListener; import com.zt.plat.module.bpm.api.event.BpmProcessInstanceStatusEventListener;
import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
import com.zt.plat.module.capital.api.AmountCreditApplyApi; import com.zt.plat.module.capital.api.splyAmtCrdtAppl.AmountCreditApplyApi;
import com.zt.plat.module.capital.enums.AmountCreditApplyApiStatusEnum; import com.zt.plat.module.capital.enums.AmountCreditApplyApiStatusEnum;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;