异常返回问题修复

This commit is contained in:
zjh 2025-12-03 15:15:25 +08:00
parent 8d70d7e0e5
commit 7645274ead
19 changed files with 144 additions and 119 deletions

View File

@ -0,0 +1,30 @@
package com.xdap.self_development.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
// 处理复杂错误信息返回
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyResponse {
// 报错标识
private Boolean flag;
// 报错信息
private String message;
// 模板导入的错误列表
private List<String> errors;
// 模板导入的已导入模板
private StringBuilder hasImported;
public MyResponse(Boolean flag, List<String> errors, StringBuilder hasImported) {
this.flag = flag;
this.errors = errors;
this.hasImported = hasImported;
}
}

View File

@ -1,10 +1,10 @@
package com.xdap.self_development.controller;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.definesys.mpaas.common.http.Response;
import com.xdap.self_development.controller.form.BenchmarkingReportPageForm;
import com.xdap.self_development.controller.form.HandleApprovalRequest;
import com.xdap.self_development.controller.form.SaveBenchmarkingReportForm;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.pojo.BenchmarkingReport;
import com.xdap.self_development.pojo.view.ApprovalFlowView;
import com.xdap.self_development.pojo.view.TodoAndReportView;
@ -43,7 +43,7 @@ public class BenchmarkingReportController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
benchmarkingReportService.saveBenchmarkingReport(form);
@ -58,7 +58,7 @@ public class BenchmarkingReportController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
List<TodoAndReportView> list = benchmarkingReportService
@ -74,7 +74,7 @@ public class BenchmarkingReportController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
benchmarkingReportService.handleReportApproval(request);

View File

@ -3,8 +3,6 @@ package com.xdap.self_development.controller;
import cn.hutool.core.codec.Base64;
import cn.hutool.json.JSONUtil;
import com.definesys.mpaas.common.http.Response;
import com.xdap.runtime.service.RuntimeAppContextService;
import com.xdap.runtime.service.RuntimeUserService;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.feign.ApaasMyTokenFeign;
import com.xdap.self_development.feign.dto.AppTokenDTO;
@ -30,10 +28,6 @@ import java.util.stream.Collectors;
public class DeleteController {
@Resource
private BusinessDatabase bd;
@Resource
private RuntimeAppContextService runtimeAppContextService;
@Resource
private RuntimeUserService runtimeUserService;
@Autowired
private ApaasMyTokenFeign apaasMyTokenFeign;

View File

@ -1,10 +1,10 @@
package com.xdap.self_development.controller;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.definesys.mpaas.common.http.Response;
import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.self_development.controller.form.ParameterPageForm;
import com.xdap.self_development.controller.form.UpdateParameterForm;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.pojo.Parameter;
import com.xdap.self_development.pojo.view.TemplateInfoView;
import com.xdap.self_development.service.ParameterService;
@ -28,7 +28,7 @@ public class ParameterController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
PageQueryResult<Parameter> list = parameterService.getParameterByCondition(form);
@ -44,7 +44,7 @@ public class ParameterController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
TemplateInfoView templateRowIdForm = parameterService.maintenanceParameters(form);

View File

@ -1,18 +1,15 @@
package com.xdap.self_development.controller;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.definesys.mpaas.common.http.Response;
import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.api.moudle.department.pojo.entity.XdapDepartments;
import com.xdap.api.moudle.user.pojo.XdapUsers;
import com.xdap.runtime.service.RuntimeDatasourceService;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.controller.form.DepartmentUserForm;
import com.xdap.self_development.controller.form.DeptResponsiblePageForm;
import com.xdap.self_development.controller.form.ResponsiblePersonForm;
import com.xdap.self_development.controller.form.UpdateResponsiblePersonForm;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.pojo.ResponsiblePerson;
import com.xdap.self_development.pojo.Template;
import com.xdap.self_development.pojo.view.DepartmentUserView;
import com.xdap.self_development.service.ResponsiblePersonService;
import org.springframework.validation.BindingResult;
@ -48,7 +45,7 @@ public class ResponsiblePersonController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
PageQueryResult<ResponsiblePerson> deptResponsible =
@ -64,7 +61,7 @@ public class ResponsiblePersonController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
PageQueryResult<ResponsiblePerson> deptResponsible =
@ -125,7 +122,7 @@ public class ResponsiblePersonController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
responsiblePersonService.saveResponsiblePerson(form);
@ -140,7 +137,7 @@ public class ResponsiblePersonController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
responsiblePersonService.saveFilledPerson(form);
@ -155,7 +152,7 @@ public class ResponsiblePersonController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}

View File

@ -1,10 +1,10 @@
package com.xdap.self_development.controller;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.definesys.mpaas.common.http.Response;
import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.runtime.service.RuntimeDatasourceService;
import com.xdap.self_development.controller.form.*;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.pojo.view.ApprovalFlowView;
import com.xdap.self_development.pojo.view.DepartmentUserView;
import com.xdap.self_development.pojo.view.TemplateChangeView;
@ -44,7 +44,7 @@ public class TemplateApprovalController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
return Response.ok().data(templateApprovalService.startApproval(request));
@ -58,7 +58,7 @@ public class TemplateApprovalController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
return Response.ok().data(templateApprovalService.getApprovalList(form));
@ -72,7 +72,7 @@ public class TemplateApprovalController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
templateApprovalService.handleApproval(request);
@ -87,7 +87,7 @@ public class TemplateApprovalController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
PageQueryResult<TemplateChangeView> result = templateApprovalService.getTemplateChanges(form);
@ -102,7 +102,7 @@ public class TemplateApprovalController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
ApprovalFlowView approvalFlowView = templateApprovalService.getApprovalProcess(form);

View File

@ -1,13 +1,11 @@
package com.xdap.self_development.controller;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.definesys.mpaas.common.http.Response;
import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.api.moudle.department.pojo.entity.XdapDepartments;
import com.xdap.runtime.service.RuntimeDatasourceService;
import com.xdap.self_development.common.MyResponse;
import com.xdap.self_development.controller.form.*;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.pojo.Template;
import com.xdap.self_development.pojo.view.TemplateImportProblemView;
import com.xdap.self_development.service.TemplateService;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
@ -32,7 +30,7 @@ public class TemplateController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
@ -48,7 +46,7 @@ public class TemplateController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
List<Template> list = templateService.getTemplateVersion(form);
@ -63,7 +61,7 @@ public class TemplateController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
templateService.insertTemplate(form);
@ -78,7 +76,7 @@ public class TemplateController {
@RequestPart("createBy") String createBy
) {
TemplateImportProblemView templateImportProblemView = templateService.importTemplate(file, templateRowId, createBy);
MyResponse templateImportProblemView = templateService.importTemplate(file, templateRowId, createBy);
if (templateImportProblemView.getFlag()) {
return Response.error("导入失败").data(templateImportProblemView);
} else {
@ -94,7 +92,7 @@ public class TemplateController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
templateService.updateTemplate(form);
@ -110,7 +108,7 @@ public class TemplateController {
) {
if (bindingResult.hasErrors()) {
bindingResult.getFieldErrors().forEach(error -> {
throw new MpaasBusinessException(error.getDefaultMessage());
throw new CommonException(error.getDefaultMessage());
});
}
templateService.exportTemplate(form, response);

View File

@ -0,0 +1,19 @@
package com.xdap.self_development.exception;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class CommonException extends RuntimeException {
private Object data;
public CommonException(String message) {
super(message);
}
public CommonException(String message, Object data) {
super(message);
this.data = data;
}
}

View File

@ -0,0 +1,20 @@
package com.xdap.self_development.exception;
import com.definesys.mpaas.common.http.Response;
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
// 自定义异常处理类
@RestControllerAdvice
@Order(-2)
public class MyGlobalExceptionHandler {
@ExceptionHandler(CommonException.class)
public Response handleMpaasBusinessException(CommonException e) {
if (e.getData() != null) {
return Response.error(e.getMessage()).setData(e.getData());
} else {
return Response.error(e.getMessage());
}
}
}

View File

@ -3,8 +3,8 @@ package com.xdap.self_development.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.read.listener.ReadListener;
import com.xdap.self_development.common.MyResponse;
import com.xdap.self_development.pojo.Parameter;
import com.xdap.self_development.pojo.view.TemplateImportProblemView;
import com.xdap.self_development.service.TemplateService;
import lombok.extern.slf4j.Slf4j;
@ -21,10 +21,10 @@ public class SheetDataListener implements ReadListener<Parameter> {
private final String createBy;
private List<Parameter> cachedDataList;
private String currentSheetName;
TemplateImportProblemView problems;
MyResponse problems;
public SheetDataListener(TemplateService templateService,
String templateRowId, String createBy, TemplateImportProblemView problems) {
String templateRowId, String createBy, MyResponse problems) {
this.templateService = templateService;
this.templateRowId = templateRowId;
this.createBy = createBy;

View File

@ -1,16 +0,0 @@
package com.xdap.self_development.pojo.view;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TemplateImportProblemView {
private Boolean flag;
private List<String> errors;
private StringBuilder hasImported;
}

View File

@ -1,14 +1,13 @@
package com.xdap.self_development.schedule;
import com.alibaba.fastjson2.JSON;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.pojo.ApprovalFlow;
import com.xdap.self_development.pojo.ApprovalRecord;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -20,7 +19,7 @@ import java.util.stream.Collectors;
@Service
@Slf4j
@Transactional(rollbackFor = MpaasBusinessException.class)
@Transactional(rollbackFor = CommonException.class)
public class ModifiedTodoTimer {
@Resource
private BusinessDatabase bd;

View File

@ -1,10 +1,9 @@
package com.xdap.self_development.schedule;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.pojo.view.CalculationParameterView;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -18,7 +17,7 @@ import java.util.stream.Collectors;
@Service
@Slf4j
@Transactional(rollbackFor = MpaasBusinessException.class)
@Transactional(rollbackFor = CommonException.class)
public class ParameterValueCalculationTimer {
@Resource
private BusinessDatabase bd;

View File

@ -1,10 +1,10 @@
package com.xdap.self_development.service;
import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.self_development.common.MyResponse;
import com.xdap.self_development.controller.form.*;
import com.xdap.self_development.pojo.Parameter;
import com.xdap.self_development.pojo.Template;
import com.xdap.self_development.pojo.view.TemplateImportProblemView;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
@ -14,10 +14,10 @@ import java.util.Map;
public interface TemplateService {
PageQueryResult<Template> getTemplateByCondition(TemplatePageForm form);
TemplateImportProblemView importTemplate(MultipartFile file, String templateRowId, String createBy);
MyResponse importTemplate(MultipartFile file, String templateRowId, String createBy);
void processSheetData(List<Parameter> dataList, String sheetName,
String templateRowId, String createBy, TemplateImportProblemView problems);
String templateRowId, String createBy, MyResponse problems);
void insertTemplate(InsertTemplateForm form);

View File

@ -3,12 +3,12 @@ package com.xdap.self_development.service.impl;
import cn.hutool.core.codec.Base64;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSON;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.xdap.runtime.service.RuntimeAppContextService;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.controller.form.BenchmarkingReportPageForm;
import com.xdap.self_development.controller.form.HandleApprovalRequest;
import com.xdap.self_development.controller.form.SaveBenchmarkingReportForm;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.feign.ApaasMyTokenFeign;
import com.xdap.self_development.feign.dto.AppTokenDTO;
import com.xdap.self_development.feign.dto.FileUploadDTO;
@ -59,7 +59,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
private static final int FLOW_LOCK_EXPIRE_SECONDS = 5;
@Override
@Transactional
@Transactional(rollbackFor = CommonException.class)
public void saveBenchmarkingReport(SaveBenchmarkingReportForm form) {
// 1. 创建对标报告并保存
BenchmarkingReport report = new BenchmarkingReport();
@ -190,20 +190,20 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
.eq("flow_type", 2)
.doQueryFirst(ApprovalFlow.class);
if (flow == null || !"APPROVING".equals(flow.getFlowStatus())) {
throw new MpaasBusinessException("流程不存在或已结束");
throw new CommonException("流程不存在或已结束");
}
String currentNode = flow.getCurrentNode();
// 验证当前用户是否有权限处理
if (!hasPermission(flow, currentNode, request.getUserId())) {
throw new MpaasBusinessException("无权限处理或已被处理");
throw new CommonException("无权限处理或已被处理");
}
if (!"COUNTERSIGN".equals(currentNode)) {
String lockKey = FLOW_LOCK_PREFIX + flow.getId() + ":" + currentNode;
Boolean lock = redisTemplate.opsForValue().setIfAbsent(lockKey, "1", FLOW_LOCK_EXPIRE_SECONDS, TimeUnit.SECONDS);
if (Boolean.FALSE.equals(lock)) {
throw new MpaasBusinessException("当前节点正在处理,请稍后重试");
throw new CommonException("当前节点正在处理,请稍后重试");
}
try {
// 校验抢签节点是否已被处理
@ -211,7 +211,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
long result = Optional.ofNullable(redisTemplate.opsForSet().size(processedKey))
.orElse(0L);
if (result > 0) {
throw new MpaasBusinessException("此节点已被他人处理");
throw new CommonException("此节点已被他人处理");
}
processApprovalLogic(flow, request, currentNode);
} finally {
@ -225,9 +225,8 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService
@Override
public BenchmarkingReport getReportDetail(String reportId) {
BenchmarkingReport report = bd.getBusinessDatabase().eq("id", reportId)
return bd.getBusinessDatabase().eq("id", reportId)
.doQueryFirst(BenchmarkingReport.class);
return report;
}
@Override

View File

@ -1,12 +1,11 @@
package com.xdap.self_development.service.impl;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.controller.form.ParameterForm;
import com.xdap.self_development.controller.form.ParameterPageForm;
import com.xdap.self_development.controller.form.TemplateRowIdForm;
import com.xdap.self_development.controller.form.UpdateParameterForm;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.pojo.Parameter;
import com.xdap.self_development.pojo.RevisionRecord;
import com.xdap.self_development.pojo.Template;
@ -39,7 +38,7 @@ public class ParameterServiceImpl implements ParameterService {
.doQueryFirst(Template.class);
if (template == null) {
throw new MpaasBusinessException("模板未找到");
throw new CommonException("模板未找到");
}
return bd.getBusinessDatabase()
@ -53,7 +52,7 @@ public class ParameterServiceImpl implements ParameterService {
}
@Override
@Transactional(rollbackFor = MpaasBusinessException.class)
@Transactional(rollbackFor = CommonException.class)
public TemplateInfoView maintenanceParameters(UpdateParameterForm form) {
// 公式格式检查
form.getParameterForms().forEach(parameter -> {
@ -64,7 +63,7 @@ public class ParameterServiceImpl implements ParameterService {
String errorMsg = String.format("参数 '%s' 公式格式错误: %s",
parameter.getParameterName(),
validationResult.get("errorMessage"));
throw new MpaasBusinessException(errorMsg);
throw new CommonException(errorMsg);
}
}
});
@ -243,7 +242,7 @@ public class ParameterServiceImpl implements ParameterService {
.eq("parameter_number", newParameter.getParameterNumber())
.doQuery(Parameter.class);
if (parameters != null && !parameters.isEmpty()) {
throw new MpaasBusinessException("参数编号重复");
throw new CommonException("参数编号重复");
}
}

View File

@ -1,21 +1,18 @@
package com.xdap.self_development.service.impl;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.runtime.service.RuntimeDatasourceService;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.controller.form.DeptResponsiblePageForm;
import com.xdap.self_development.controller.form.ResponsiblePersonForm;
import com.xdap.self_development.controller.form.UpdateResponsiblePersonForm;
import com.xdap.self_development.pojo.ApprovalXdapUsers;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.pojo.ResponsiblePerson;
import com.xdap.self_development.pojo.Template;
import com.xdap.self_development.service.ResponsiblePersonService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@ -35,7 +32,7 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService {
.doQuery(ResponsiblePerson.class);
if (!responsiblePeople.isEmpty()) {
throw new MpaasBusinessException("请不要重复新增责任人");
throw new CommonException("请不要重复新增责任人");
}
ResponsiblePerson responsiblePerson = new ResponsiblePerson();
@ -55,7 +52,7 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService {
.doQuery(ResponsiblePerson.class);
if (!responsiblePeople.isEmpty()) {
throw new MpaasBusinessException("请不要重复新增填写人");
throw new CommonException("请不要重复新增填写人");
}
ResponsiblePerson responsiblePerson = new ResponsiblePerson();

View File

@ -1,11 +1,11 @@
package com.xdap.self_development.service.impl;
import com.alibaba.fastjson2.JSON;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.runtime.service.RuntimeDatasourceService;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.controller.form.*;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.pojo.*;
import com.xdap.self_development.pojo.view.ApprovalFlowView;
import com.xdap.self_development.pojo.view.ApprovalNodeView;
@ -52,11 +52,11 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
.rowid("id", request.getTemplateRowId())
.doQueryFirst(Template.class);
if (template == null) {
throw new MpaasBusinessException("模板不存在");
throw new CommonException("模板不存在");
}
if (!Objects.equals("DRAFT", template.getStatus())) {
throw new MpaasBusinessException("非草稿不允许发起审批");
throw new CommonException("非草稿不允许发起审批");
}
List<ApprovalFlow> templateFlows = bd.getBusinessDatabase()
@ -64,7 +64,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
.eq("flow_type", 1)
.doQuery(ApprovalFlow.class);
if (templateFlows != null && !templateFlows.isEmpty()) {
throw new MpaasBusinessException("模板已发起审批");
throw new CommonException("模板已发起审批");
}
// 2. 创建审批流程
@ -159,20 +159,20 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
.eq("flow_type", 1)
.doQueryFirst(ApprovalFlow.class);
if (flow == null || !"APPROVING".equals(flow.getFlowStatus())) {
throw new MpaasBusinessException("流程不存在或已结束");
throw new CommonException("流程不存在或已结束");
}
String currentNode = flow.getCurrentNode();
// 验证当前用户是否有权限处理
if (!hasPermission(flow, currentNode, request.getUserId())) {
throw new MpaasBusinessException("无权限处理或已被处理");
throw new CommonException("无权限处理或已被处理");
}
if (!"COUNTERSIGN".equals(currentNode)) {
String lockKey = FLOW_LOCK_PREFIX + flow.getId() + ":" + currentNode;
Boolean lock = redisTemplate.opsForValue().setIfAbsent(lockKey, "1", FLOW_LOCK_EXPIRE_SECONDS, TimeUnit.SECONDS);
if (Boolean.FALSE.equals(lock)) {
throw new MpaasBusinessException("当前节点正在处理,请稍后重试");
throw new CommonException("当前节点正在处理,请稍后重试");
}
try {
// 校验抢签节点是否已被处理
@ -180,7 +180,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService {
long result = Optional.ofNullable(redisTemplate.opsForSet().size(processedKey))
.orElse(0L);
if (result > 0) {
throw new MpaasBusinessException("此节点已被他人处理");
throw new CommonException("此节点已被他人处理");
}
processApprovalLogic(flow, request, currentNode);
} finally {

View File

@ -1,22 +1,17 @@
package com.xdap.self_development.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelAnalysisException;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson2.JSON;
import com.definesys.mpaas.common.exception.MpaasBusinessException;
import com.definesys.mpaas.common.exception.MpaasRuntimeException;
import com.definesys.mpaas.query.db.PageQueryResult;
import com.xdap.self_development.common.MyResponse;
import com.xdap.self_development.config.BusinessDatabase;
import com.xdap.self_development.controller.form.*;
import com.xdap.self_development.exception.CommonException;
import com.xdap.self_development.listener.SheetDataListener;
import com.xdap.self_development.pojo.Parameter;
import com.xdap.self_development.pojo.RevisionRecord;
import com.xdap.self_development.pojo.Template;
import com.xdap.self_development.pojo.TemplateAndParameter;
import com.xdap.self_development.pojo.view.TemplateImportProblemView;
import com.xdap.self_development.service.TemplateService;
import com.xdap.self_development.utils.FormulaValidator;
import lombok.extern.slf4j.Slf4j;
@ -69,11 +64,11 @@ public class TemplateServiceImpl implements TemplateService {
switch (template.getStatus()) {
// 最新版本为草稿提示已有草稿
case "DRAFT":
throw new MpaasRuntimeException("最新版本已为草稿,请勿重复新增");
throw new CommonException("最新版本已为草稿,请勿重复新增");
case "APPROVING":
throw new MpaasRuntimeException("最新版本正在审核中,请勿重复新增");
throw new CommonException("最新版本正在审核中,请勿重复新增");
case "RETURNED":
throw new MpaasRuntimeException("最新版本已被退回,请重新修改模板");
throw new CommonException("最新版本已被退回,请重新修改模板");
}
// 可新增版本
newTemplate.setVersion(template.getVersion() + 1);
@ -91,7 +86,7 @@ public class TemplateServiceImpl implements TemplateService {
.doQueryFirst(Template.class);
if (template != null) {
throw new MpaasBusinessException("不可修改为已有模板");
throw new CommonException("不可修改为已有模板");
}
Template newTemplate = new Template(
@ -105,22 +100,22 @@ public class TemplateServiceImpl implements TemplateService {
}
@Override
@Transactional(rollbackFor = MpaasBusinessException.class)
public TemplateImportProblemView importTemplate(MultipartFile file, String templateRowId, String createBy) {
@Transactional(rollbackFor = CommonException.class)
public MyResponse importTemplate(MultipartFile file, String templateRowId, String createBy) {
// 验证文件是否为工作表
if (file == null || file.isEmpty()) {
throw new MpaasBusinessException("文件不能为空");
throw new CommonException("文件不能为空");
}
String filename = file.getOriginalFilename();
if (filename == null ||
!(filename.toLowerCase().endsWith(".xls") ||
filename.toLowerCase().endsWith(".xlsx"))) {
throw new MpaasBusinessException("只支持 .xls 或 .xlsx 格式的文件");
throw new CommonException("只支持 .xls 或 .xlsx 格式的文件");
}
TemplateImportProblemView problems =
new TemplateImportProblemView(false, new ArrayList<>(), new StringBuilder("已完成导入:无"));
MyResponse problems =
new MyResponse(false, new ArrayList<>(), new StringBuilder("已完成导入:无"));
try (InputStream inputStream = file.getInputStream()){
@ -131,7 +126,7 @@ public class TemplateServiceImpl implements TemplateService {
).doReadAll();
} catch (IOException e) {
throw new MpaasRuntimeException("读取文件失败");
throw new CommonException("读取文件失败");
}
return problems;
@ -180,7 +175,7 @@ public class TemplateServiceImpl implements TemplateService {
.doWrite(list);
} catch (Exception e) {
throw new MpaasRuntimeException("导出Excel失败: " + e.getMessage());
throw new CommonException("导出Excel失败: " + e.getMessage());
}
}
@ -197,7 +192,7 @@ public class TemplateServiceImpl implements TemplateService {
@Override
public void processSheetData(List<Parameter> dataList, String sheetName,
String templateRowId, String createBy, TemplateImportProblemView problems) {
String templateRowId, String createBy, MyResponse problems) {
if (dataList.isEmpty()) {
log.warn("Sheet {} 没有数据", sheetName);
return;
@ -214,7 +209,6 @@ public class TemplateServiceImpl implements TemplateService {
validationResult.get("errorMessage"));
problems.setFlag(true);
problems.getErrors().add(errorMsg);
// throw new MpaasRuntimeException(errorMsg);
return;
}
}
@ -234,7 +228,6 @@ public class TemplateServiceImpl implements TemplateService {
problems.setFlag(true);
problems.getErrors().add("Excel页名与模板名不一致");
return;
// throw new MpaasBusinessException("Excel页名不正确或模板名不正确");
}
}
@ -259,18 +252,15 @@ public class TemplateServiceImpl implements TemplateService {
problems.setFlag(true);
problems.getErrors().add("模板‘"+templateName+"’已有参数,无法导入");
return;
// throw new MpaasBusinessException("模板‘"+templateName+"’已有参数,无法导入");
}
case "APPROVING":
problems.setFlag(true);
problems.getErrors().add("模板‘"+templateName+"‘的最新版本正在审核中,无法导入");
return;
// throw new MpaasRuntimeException("模板‘"+templateName+"‘最新版本正在审核中,无法导入");
case "RETURNED":
problems.setFlag(true);
problems.getErrors().add("模板‘"+templateName+"’的最新版本已被退回,无法导入");
return;
// throw new MpaasRuntimeException("模板‘"+templateName+"’最新版本已被退回,无法导入");
// 最新版本已发布或已退回增加版本号新增
default:
lastTemplate = new Template(