外协人员excel导入优化

This commit is contained in:
2025-12-18 09:27:45 +08:00
parent 235b95a653
commit 4b45b69291
12 changed files with 1697 additions and 53 deletions

View File

@@ -9,8 +9,6 @@ import com.jeelowcode.service.bpm.controller.vo.instance.BpmProcessInstanceRespV
import com.jeelowcode.service.bpm.service.IBpmProcessInstanceService;
import com.jeelowcode.tool.framework.datapermission.core.annotation.DataPermission;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -25,10 +23,7 @@ public class BillApproveStatusService {
@Resource
private IDbformDataService dbformDataService;
public void afterSubmit(String processInstanceId){
Map<String,Object> map = new HashMap<>();
//流程实例id
BpmProcessInstanceRespVO vo = SpringUtils.getBean(IBpmProcessInstanceService.class).getProcessInstanceVO(processInstanceId);
//获取到的自定义表单数据id
@@ -42,12 +37,15 @@ public class BillApproveStatusService {
json.put(ApproveStatusEnum.nameField, ApproveStatusEnum.APPROVING.getDesc());
json.put("ProcessInstanceId", processInstanceId);
dbformDataService.update(formEntity.getTableName(),id,json);
// 如果是批量审批表,同步更新外协人员状态
if ("lc_outside_batch_approval".equals(formEntity.getTableName())) {
updateOutsidePersonStatusSafely(formEntity.getTableName(), id, json);
}
}
public void afterApproved(String processInstanceId){
Map<String,Object> map = new HashMap<>();
//流程实例id
BpmProcessInstanceRespVO vo = SpringUtils.getBean(IBpmProcessInstanceService.class).getProcessInstanceVO(processInstanceId);
//获取到的自定义表单数据id
@@ -60,12 +58,15 @@ public class BillApproveStatusService {
json.put(ApproveStatusEnum.codeField, ApproveStatusEnum.APPROVED.getCode());
json.put(ApproveStatusEnum.nameField, ApproveStatusEnum.APPROVED.getDesc());
dbformDataService.update(formEntity.getTableName(),id,json);
// 如果是批量审批表,同步更新外协人员状态
if ("lc_outside_batch_approval".equals(formEntity.getTableName())) {
updateOutsidePersonStatusSafely(formEntity.getTableName(), id, json);
}
}
public void afterRejected(String processInstanceId){
Map<String,Object> map = new HashMap<>();
//流程实例id
BpmProcessInstanceRespVO vo = SpringUtils.getBean(IBpmProcessInstanceService.class).getProcessInstanceVO(processInstanceId);
//获取到的自定义表单数据id
@@ -78,13 +79,16 @@ public class BillApproveStatusService {
json.put(ApproveStatusEnum.codeField, ApproveStatusEnum.REJECTED.getCode());
json.put(ApproveStatusEnum.nameField, ApproveStatusEnum.REJECTED.getDesc());
dbformDataService.update(formEntity.getTableName(),id,json);
// 如果是批量审批表,同步更新外协人员状态
if ("lc_outside_batch_approval".equals(formEntity.getTableName())) {
updateOutsidePersonStatusSafely(formEntity.getTableName(), id, json);
}
}
public void afterCancel(String processInstanceId){
Map<String,Object> map = new HashMap<>();
//流程实例id
BpmProcessInstanceRespVO vo = SpringUtils.getBean(IBpmProcessInstanceService.class).getProcessInstanceVO(processInstanceId);
//获取到的自定义表单数据id
@@ -97,6 +101,42 @@ public class BillApproveStatusService {
json.put(ApproveStatusEnum.codeField, ApproveStatusEnum.UNAPPROVED.getCode());
json.put(ApproveStatusEnum.nameField, ApproveStatusEnum.UNAPPROVED.getDesc());
dbformDataService.update(formEntity.getTableName(),id,json);
// 如果是批量审批表,同步更新外协人员状态
if ("lc_outside_batch_approval".equals(formEntity.getTableName())) {
updateOutsidePersonStatusSafely(formEntity.getTableName(), id, json);
}
}
/**
* 安全地调用 IOutsideBatchApprovalService 的方法,避免循环依赖
* 使用反射和 SpringUtils 延迟获取 Bean避免编译时依赖
*/
private void updateOutsidePersonStatusSafely(String tableName, String id, Map<String, Object> dataMap) {
try {
// 使用反射获取接口类,避免编译时依赖
Class<?> serviceClass = Class.forName("com.jeelowcode.module.biz.service.IOutsideBatchApprovalService");
// 通过 SpringUtils 获取 Bean使用 Bean 名称,默认是类名首字母小写)
Object service = SpringUtils.getBean("outsideBatchApprovalService");
if (service == null) {
// 如果通过名称获取不到,尝试通过类获取
service = SpringUtils.getBean(serviceClass);
}
if (service != null) {
// 反射调用方法
java.lang.reflect.Method method = serviceClass.getMethod("updateOutsidePersonStatus", String.class, String.class, Map.class);
method.invoke(service, tableName, id, dataMap);
log.debug("成功调用 IOutsideBatchApprovalService.updateOutsidePersonStatus");
} else {
log.warn("未找到 IOutsideBatchApprovalService Bean跳过同步外协人员状态");
}
} catch (ClassNotFoundException e) {
log.debug("IOutsideBatchApprovalService 类不存在,可能未加载该模块,跳过同步外协人员状态");
} catch (NoSuchMethodException e) {
log.warn("IOutsideBatchApprovalService.updateOutsidePersonStatus 方法不存在", e);
} catch (Exception e) {
log.error("调用 IOutsideBatchApprovalService.updateOutsidePersonStatus 失败", e);
}
}
}