diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/ApprovalStatusEnum.java b/shuili-system/src/main/java/com/kms/yxgh/common/ApprovalStatusEnum.java index 6d017f19..67f1d11b 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/common/ApprovalStatusEnum.java +++ b/shuili-system/src/main/java/com/kms/yxgh/common/ApprovalStatusEnum.java @@ -8,7 +8,8 @@ public enum ApprovalStatusEnum { SUBMITTING("提交中", "0"), WAITING("待审批", "1"), PASS("审批通过", "2"), - REJECT("审批驳回", "3"); + REJECT("审批驳回", "3"), + CANCEL("已撤回", "4"); private final String name; diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/controller/ApprovalAbstractController.java b/shuili-system/src/main/java/com/kms/yxgh/common/controller/ApprovalAbstractController.java index c4580906..f593f5d8 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/common/controller/ApprovalAbstractController.java +++ b/shuili-system/src/main/java/com/kms/yxgh/common/controller/ApprovalAbstractController.java @@ -49,6 +49,12 @@ public abstract class ApprovalAbstractController { } } + @PostMapping("/approval/return/{formId}") + @ApiOperation("退回") + public void returnApproval(@PathVariable("formId") String formId, @RequestBody ApprovalDetailDto dto) { + approvalService.returnApproval(formId, getApprovalType(), dto); + } + @PostMapping("/approval/{formId}") @ApiOperation("提交审批") public void submit(@PathVariable("formId") String formId) { diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalBusinessService.java b/shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalBusinessService.java index d0f80221..e7a7bc33 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalBusinessService.java +++ b/shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalBusinessService.java @@ -35,5 +35,11 @@ public interface ApprovalBusinessService { */ void updateApprovalStatus(String formId, ApprovalStatusEnum status); - + /** + * 获取表单状态 + * + * @param formId 表单id + * @return 表单状态 + */ + String formStatus(String formId); } diff --git a/shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalService.java b/shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalService.java index bad1f102..f94c3fc6 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalService.java +++ b/shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalService.java @@ -36,6 +36,12 @@ public class ApprovalService { public void submit(String formId, ApprovalTypeEnum approvalType) { ApprovalBusinessService service = approvalType.getService(); if (service != null) { + String status = service.formStatus(formId); + if (!ApprovalStatusEnum.SUBMITTING.getValue().equals(status)) { + throw new RuntimeException("不能重复提交审批"); + } + service.updateApprovalStatus(formId, ApprovalStatusEnum.WAITING); + ApprovalTask approvalTask = new ApprovalTask(); approvalTask.setFormId(formId); approvalTask.setBusinessType(approvalType.getValue()); @@ -55,23 +61,25 @@ public class ApprovalService { approvalOperatorService.saveBatch(approvalOperators); } } - - service.updateApprovalStatus(formId, ApprovalStatusEnum.WAITING); } } @Transactional(rollbackFor = Exception.class) public void rejected(String id, ApprovalTypeEnum approvalType, ApprovalDetailDto dto) { - ApprovalTask approvalTask = approvalTaskService.getById(id); - if (approvalTask != null) { - approvalTask.setStatus(ApprovalStatusEnum.REJECT.getValue()); - approvalTask.setComment(dto.getComment()); - approvalTask.setDoc(JSON.toJSONString(dto.getDoc())); - approvalTask.setOperator(getOperatorDto()); - approvalTask.setApprovalTime(new Date()); - approvalTaskService.updateById(approvalTask); - ApprovalBusinessService service = approvalType.getService(); - if (service != null) { + ApprovalBusinessService service = approvalType.getService(); + if (service != null) { + String status = service.formStatus(id); + if (!ApprovalStatusEnum.WAITING.getValue().equals(status)) { + throw new RuntimeException("不能重复审批"); + } + ApprovalTask approvalTask = approvalTaskService.getById(id); + if (approvalTask != null) { + approvalTask.setStatus(ApprovalStatusEnum.REJECT.getValue()); + approvalTask.setComment(dto.getComment()); + approvalTask.setDoc(JSON.toJSONString(dto.getDoc())); + approvalTask.setOperator(getOperatorDto()); + approvalTask.setApprovalTime(new Date()); + approvalTaskService.updateById(approvalTask); service.updateApprovalStatus(approvalTask.getFormId(), ApprovalStatusEnum.REJECT); } } @@ -79,16 +87,20 @@ public class ApprovalService { @Transactional(rollbackFor = Exception.class) public void passed(String id, ApprovalTypeEnum approvalType, ApprovalDetailDto dto) { - ApprovalTask approvalTask = approvalTaskService.getById(id); - if (approvalTask != null) { - approvalTask.setStatus(ApprovalStatusEnum.PASS.getValue()); - approvalTask.setComment(dto.getComment()); - approvalTask.setDoc(JSON.toJSONString(dto.getDoc())); - approvalTask.setOperator(getOperatorDto()); - approvalTask.setApprovalTime(new Date()); - approvalTaskService.updateById(approvalTask); - ApprovalBusinessService service = approvalType.getService(); - if (service != null) { + ApprovalBusinessService service = approvalType.getService(); + if (service != null) { + String status = service.formStatus(id); + if (!ApprovalStatusEnum.WAITING.getValue().equals(status)) { + throw new RuntimeException("不能重复审批"); + } + ApprovalTask approvalTask = approvalTaskService.getById(id); + if (approvalTask != null) { + approvalTask.setStatus(ApprovalStatusEnum.PASS.getValue()); + approvalTask.setComment(dto.getComment()); + approvalTask.setDoc(JSON.toJSONString(dto.getDoc())); + approvalTask.setOperator(getOperatorDto()); + approvalTask.setApprovalTime(new Date()); + approvalTaskService.updateById(approvalTask); service.updateApprovalStatus(approvalTask.getFormId(), ApprovalStatusEnum.PASS); } } @@ -126,4 +138,23 @@ public class ApprovalService { .collect(Collectors.toList()); return Response.ok(commentDtoList); } + + @Transactional(rollbackFor = Exception.class) + public void returnApproval(String formId, ApprovalTypeEnum approvalType, ApprovalDetailDto dto) { + ApprovalBusinessService service = approvalType.getService(); + if (service != null) { + String status = service.formStatus(formId); + if (!ApprovalStatusEnum.WAITING.getValue().equals(status)) { + throw new RuntimeException("不能回退审批"); + } + approvalTaskService.update(Wrappers.lambdaUpdate() + .eq(ApprovalTask::getFormId, formId) + .eq(ApprovalTask::getBusinessType, approvalType.getValue()) + .eq(ApprovalTask::getStatus, ApprovalStatusEnum.WAITING.getValue()) + .set(ApprovalTask::getStatus, ApprovalStatusEnum.CANCEL.getValue()) + .set(ApprovalTask::getApprovalTime, new Date()) + ); + service.updateApprovalStatus(formId, ApprovalStatusEnum.SUBMITTING); + } + } } diff --git a/shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhPlanService.java b/shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhPlanService.java index 04cfe79b..ffdab770 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhPlanService.java +++ b/shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhPlanService.java @@ -143,5 +143,17 @@ public class DfYhPlanService extends BaseService imple getBaseMapper().update(null, wp); } + @Override + public String formStatus(String formId) { + Wrapper wp = Wrappers.lambdaQuery() + .eq(DfYhPlan::getId, formId) + .select(DfYhPlan::getStatus); + DfYhPlan dfPlan = this.getBaseMapper().selectOne(wp); + if (dfPlan != null) { + return dfPlan.getStatus(); + } + return ""; + } + } diff --git a/shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhRecordService.java b/shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhRecordService.java index c8086c58..2c36f154 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhRecordService.java +++ b/shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhRecordService.java @@ -12,7 +12,6 @@ import com.kms.yxgh.common.ApprovalStatusEnum; import com.kms.yxgh.common.dto.*; import com.kms.yxgh.common.service.ApprovalBusinessService; import com.kms.yxgh.df.domain.DfYhRecord; -import com.kms.yxgh.df.dto.DfYhPlanSearchDto; import com.kms.yxgh.df.dto.DfYhRecordApprovalDto; import com.kms.yxgh.df.dto.DfYhRecordDetailDto; import com.kms.yxgh.df.dto.DfYhRecordSearchDto; @@ -150,5 +149,17 @@ public class DfYhRecordService extends BaseService getBaseMapper().update(null, wp); } + @Override + public String formStatus(String formId) { + Wrapper wp = Wrappers.lambdaQuery() + .eq(DfYhRecord::getId, formId) + .select(DfYhRecord::getStatus); + DfYhRecord record = this.getBaseMapper().selectOne(wp); + if (record != null) { + return record.getStatus(); + } + return ""; + } + } diff --git a/shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhPlanService.java b/shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhPlanService.java index 0e190846..0371001e 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhPlanService.java +++ b/shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhPlanService.java @@ -6,14 +6,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kms.system.service.SysUserService; -import com.kms.yg.sz.domain.BsSgcSzSafeJbxx; import com.kms.yg.sz.service.BsSgcSzSafeJbxxService; import com.kms.yxgh.base.DfException; import com.kms.yxgh.base.SzException; import com.kms.yxgh.common.ApprovalStatusEnum; import com.kms.yxgh.common.dto.*; import com.kms.yxgh.common.service.ApprovalBusinessService; -import com.kms.yxgh.df.domain.DfYhPlan; import com.kms.yxgh.sz.domain.SzYhPlan; import com.kms.yxgh.sz.dto.SzYhPlanDetailDto; import com.kms.yxgh.sz.dto.SzYhPlanSearchDto; @@ -144,4 +142,16 @@ public class SzYhPlanService extends BaseService imple .set(SzYhPlan::getStatus, status.getValue()); getBaseMapper().update(null, wp); } + + @Override + public String formStatus(String formId) { + Wrapper wp = Wrappers.lambdaQuery() + .eq(SzYhPlan::getId, formId) + .select(SzYhPlan::getStatus); + SzYhPlan szYhPlan = getBaseMapper().selectOne(wp); + if (szYhPlan != null) { + return szYhPlan.getStatus(); + } + return ""; + } } diff --git a/shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhRecordService.java b/shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhRecordService.java index 1f886b4a..dd695e32 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhRecordService.java +++ b/shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhRecordService.java @@ -149,5 +149,17 @@ public class SzYhRecordService extends BaseService getBaseMapper().update(null, wp); } + @Override + public String formStatus(String formId) { + Wrapper wp = Wrappers.lambdaQuery() + .eq(SzYhRecord::getId, formId) + .select(SzYhRecord::getStatus); + List list = this.getBaseMapper().selectList(wp); + if (list != null && !list.isEmpty()) { + return list.get(0).getStatus(); + } + return ""; + } + }