From 5e14c952cb7161a2e2c9897d05abb32096d0c496 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Fri, 31 Jul 2026 15:07:48 +0800 Subject: [PATCH] =?UTF-8?q?yxk-20260731=20=E6=94=B9=E5=96=84=E6=8F=90?= =?UTF-8?q?=E6=A1=88-=E5=88=A0=E9=99=A4=E6=B5=81=E7=A8=8B=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=20=E4=B8=BA=E5=B7=B2=E5=8F=91=E8=B5=B7=E4=B8=94?= =?UTF-8?q?=E4=BB=8D=E5=9C=A8=E5=A4=84=E7=90=86=E4=B8=AD=E7=9A=84=E6=94=B9?= =?UTF-8?q?=E5=96=84=E6=8F=90=E6=A1=88=E5=A2=9E=E5=8A=A0=E2=80=9C=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=B5=81=E7=A8=8B=E2=80=9D=E6=93=8D=E4=BD=9C=E3=80=82?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=8E=E7=BB=88=E6=AD=A2=E5=BD=93=E5=89=8D?= =?UTF-8?q?=20Flowable=20=E5=AE=9E=E4=BE=8B=E3=80=81=E6=B8=85=E7=90=86?= =?UTF-8?q?=E6=9C=AC=E8=BD=AE=E6=B5=81=E7=A8=8B=E6=95=B0=E6=8D=AE=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=B0=86=E6=8F=90=E6=A1=88=E5=9B=9E=E9=80=80=E4=B8=BA?= =?UTF-8?q?=E8=8D=89=E7=A8=BF=EF=BC=8C=E5=85=81=E8=AE=B8=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=92=8C=E5=8F=91=E8=B5=B7=E3=80=82=20Implem?= =?UTF-8?q?entation=20Changes=20=E5=90=8E=E7=AB=AF=E6=96=B0=E5=A2=9E=20POS?= =?UTF-8?q?T=20/improvementproposal/improvementProposal/withdrawProcess=3F?= =?UTF-8?q?id=3D...=EF=BC=8C=E5=A4=8D=E7=94=A8=E7=8E=B0=E6=9C=89=20improve?= =?UTF-8?q?mentproposal:improvement=5Fproposal:delete=20=E6=9D=83=E9=99=90?= =?UTF-8?q?=E3=80=82=20=E5=9C=A8=20ImprovementProposalService=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BA=8B=E5=8A=A1=E6=96=B9=E6=B3=95=EF=BC=9A=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E4=B8=BB=E8=A1=A8=E5=90=8E=EF=BC=8C=E4=BB=85=E5=85=81?= =?UTF-8?q?=E8=AE=B8=20bpm=5Fstatus=3D'2'=20=E4=B8=94=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E4=B8=AD=E6=B5=81=E7=A8=8B=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E7=9A=84=E6=8F=90=E6=A1=88=E6=92=A4=E5=9B=9E=EF=BC=9B=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=B7=B2=E5=AE=8C=E6=88=90=E3=80=81=E5=B7=B2=E4=BD=9C?= =?UTF-8?q?=E5=BA=9F=E3=80=81=E8=8D=89=E7=A8=BF=E6=88=96=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E4=B8=8D=E5=AD=98=E5=9C=A8=E6=97=B6=E6=8B=92=E7=BB=9D=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E3=80=82=20=E5=8F=82=E8=80=83=E5=85=9A=E5=A7=94?= =?UTF-8?q?=E4=BC=9A=E7=9A=84=E6=B5=81=E7=A8=8B=E6=B8=85=E7=90=86=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E7=BB=88=E6=AD=A2=20Flowable=20=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E5=AE=9E=E4=BE=8B=E5=B9=B6=E5=88=A0=E9=99=A4=E8=AF=A5?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E7=9A=84=E5=8E=86=E5=8F=B2=E3=80=81=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E6=84=8F=E8=A7=81=E3=80=81=E6=8A=84=E9=80=81=E3=80=81?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E4=B8=AD=E9=97=B4=E6=95=B0=E6=8D=AE=E5=92=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=97=A5=E5=BF=97=EF=BC=9B=E4=B8=8D=E6=94=B9?= =?UTF-8?q?=E5=8A=A8=E5=85=A8=E5=B1=80=E6=B5=81=E7=A8=8B=E5=BC=95=E6=93=8E?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E3=80=82=20=E5=88=A0=E9=99=A4=E6=9C=AC?= =?UTF-8?q?=E8=BD=AE=20improvement=5Fdept=5Fscore=E3=80=81improvement=5Fin?= =?UTF-8?q?stitute=5Fvote=20=E6=95=B0=E6=8D=AE=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8F=91=E8=B5=B7=E5=90=8E=E5=A4=8D=E7=94=A8?= =?UTF-8?q?=E6=97=A7=E8=AF=84=E5=88=86=E3=80=81=E6=8A=95=E7=A5=A8=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E3=80=82=20=E5=B0=86=E6=B5=81=E7=A8=8B=E8=A1=8D?= =?UTF-8?q?=E7=94=9F=E5=AD=97=E6=AE=B5=E6=B8=85=E7=A9=BA=EF=BC=9A=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=9E=E4=BE=8B=E3=80=81=E5=88=9D=E5=AE=A1/?= =?UTF-8?q?=E8=AF=84=E5=88=86/=E8=B4=9F=E8=B4=A3=E4=BA=BA=E5=A5=96?= =?UTF-8?q?=E9=A1=B9=E3=80=81=E8=AF=84=E5=88=86=E6=B1=87=E6=80=BB=E3=80=81?= =?UTF-8?q?=E6=89=80=E7=BA=A7=E6=8A=95=E7=A5=A8=E4=BA=BA=E6=95=B0=E4=B8=8E?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E3=80=81=E6=9C=80=E7=BB=88=E5=A5=96=E9=A1=B9?= =?UTF-8?q?=E3=80=81=E4=BA=BA=E5=B7=A5=E7=A1=AE=E8=AE=A4=E3=80=81=E5=BD=92?= =?UTF-8?q?=E6=A1=A3=E4=BA=BA=E5=8F=8A=E5=BD=92=E6=A1=A3=E6=97=B6=E9=97=B4?= =?UTF-8?q?=EF=BC=9B=E4=BF=9D=E7=95=99=E6=8F=90=E6=A1=88=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E3=80=81=E7=BC=96=E5=8F=B7=E5=92=8C=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E9=99=84=E4=BB=B6=E3=80=82=20=E5=B0=86=E4=B8=BB?= =?UTF-8?q?=E8=A1=A8=20bpm=5Fstatus=20=E9=87=8D=E7=BD=AE=E4=B8=BA=201?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=8E=B0=E6=9C=89=E7=BC=96=E8=BE=91=E3=80=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=92=8C=E5=8F=91=E8=B5=B7=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E8=87=AA=E5=8A=A8=E6=81=A2=E5=A4=8D=E5=8F=AF?= =?UTF-8?q?=E7=94=A8=E3=80=82=20=E5=89=8D=E7=AB=AF=E5=8F=B0=E8=B4=A6?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E8=8F=9C=E5=8D=95=E5=9C=A8=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=B8=AD=E8=AE=B0=E5=BD=95=E6=98=BE=E7=A4=BA=E2=80=9C=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=B5=81=E7=A8=8B=E2=80=9D=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=98=8E=E7=A1=AE=E6=8F=90=E7=A4=BA=E2=80=9C=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=90=8E=E5=B0=86=E5=9B=9E=E9=80=80=E4=B8=BA=E8=8D=89=E7=A8=BF?= =?UTF-8?q?=EF=BC=8C=E5=BD=93=E5=89=8D=E8=AF=84=E5=88=86=E3=80=81=E6=8A=95?= =?UTF-8?q?=E7=A5=A8=E5=92=8C=E5=AE=A1=E6=89=B9=E6=95=B0=E6=8D=AE=E5=B0=86?= =?UTF-8?q?=E8=A2=AB=E6=B8=85=E7=A9=BA=E2=80=9D=EF=BC=9B=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E5=90=8E=E5=88=B7=E6=96=B0=E5=88=97=E8=A1=A8=E3=80=82=20?= =?UTF-8?q?=E4=B8=8D=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=8A=9F=E8=83=BD=EF=BC=8C=E7=8E=B0=E6=9C=89?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E4=BB=8D=E5=8F=AA=E5=A4=84?= =?UTF-8?q?=E7=90=86=E8=8D=89=E7=A8=BF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImprovementProposalController.java | 16 +++ .../service/IImprovementProposalService.java | 7 ++ .../impl/ImprovementProposalServiceImpl.java | 106 ++++++++++++++++++ 3 files changed, 129 insertions(+) diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/controller/ImprovementProposalController.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/controller/ImprovementProposalController.java index 7541d3f..e4780b9 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/controller/ImprovementProposalController.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/controller/ImprovementProposalController.java @@ -171,6 +171,22 @@ public class ImprovementProposalController { } } + /** + * 删除运行中的流程并回退草稿。提案基本信息和业务附件会保留,流程产生的评分、投票数据会清空。 + */ + @AutoLog(value = "改善提案-删除流程并回退草稿") + @Operation(summary = "改善提案-删除流程并回退草稿") + @RequiresPermissions("improvementproposal:improvement_proposal:delete") + @PostMapping(value = "/withdrawProcess") + public Result withdrawProcess(@RequestParam(name = "id") String id) { + try { + improvementProposalService.withdrawProcess(id); + return Result.OK("流程已删除,提案已回退为草稿"); + } catch (IllegalStateException e) { + return Result.error(e.getMessage()); + } + } + @PostMapping(value = "/bpm/initialReview") @Operation(summary = "保存部门精益专员初审结果") public Result saveInitialReview(@RequestBody ImprovementProposalBpmActionDTO action) { diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/service/IImprovementProposalService.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/service/IImprovementProposalService.java index 6eb58b4..bf720fc 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/service/IImprovementProposalService.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/service/IImprovementProposalService.java @@ -31,6 +31,13 @@ public interface IImprovementProposalService extends IService resetWrapper = new LambdaUpdateWrapper() + .eq(ImprovementProposal::getId, proposal.getId()) + .set(ImprovementProposal::getProcessInstanceId, null) + .set(ImprovementProposal::getBpmStatus, BPM_STATUS_DRAFT) + .set(ImprovementProposal::getInitialAward, null) + .set(ImprovementProposal::getNeedDeptScore, null) + .set(ImprovementProposal::getDeptAvgScore, null) + .set(ImprovementProposal::getSuggestedAward, null) + .set(ImprovementProposal::getLeaderFinalAward, null) + .set(ImprovementProposal::getIsneedvote, null) + .set(ImprovementProposal::getInstituteVoters, null) + .set(ImprovementProposal::getInstituteTotalVoters, null) + .set(ImprovementProposal::getInstituteAgreeCount, null) + .set(ImprovementProposal::getInstituteDisagreeCount, null) + .set(ImprovementProposal::getInstituteVoteResult, null) + .set(ImprovementProposal::getFinalAward, null) + .set(ImprovementProposal::getManualConfirmResult, null) + .set(ImprovementProposal::getArchiveBy, null) + .set(ImprovementProposal::getArchiveTime, null); + if (improvementProposalMapper.update(null, resetWrapper) != 1) { + throw new IllegalStateException("流程已删除,但提案回退草稿失败"); + } + } + + /** 清理仅属于本次流程实例的审批、抄送和日志数据,不影响提案申请附件。 */ + private void clearProcessRelatedData(String processInstanceId) { + taskApprovalOpinionService.remove(new LambdaQueryWrapper() + .eq(TaskApprovalOpinion::getProcessInstId, processInstanceId)); + extActTaskCcService.remove(new LambdaQueryWrapper() + .eq(ExtActTaskCc::getProcInstId, processInstanceId)); + extActFlowDataService.remove(new LambdaQueryWrapper() + .eq(ExtActFlowData::getProcessInstId, processInstanceId)); + + List bpmLogs = extActBpmLogService.list(new LambdaQueryWrapper() + .eq(ExtActBpmLog::getProcInstId, processInstanceId)); + if (!bpmLogs.isEmpty()) { + List bpmLogIds = new ArrayList<>(); + for (ExtActBpmLog bpmLog : bpmLogs) { + if (oConvertUtils.isNotEmpty(bpmLog.getId())) { + bpmLogIds.add(bpmLog.getId()); + } + } + if (!bpmLogIds.isEmpty()) { + extActBpmFileService.remove(new LambdaQueryWrapper() + .in(ExtActBpmFile::getBpmLogId, bpmLogIds)); + } + extActBpmLogService.remove(new LambdaQueryWrapper() + .eq(ExtActBpmLog::getProcInstId, processInstanceId)); + } + } + @Override public List getMyProposalDepartments(LoginUser loginUser) { if (loginUser == null || oConvertUtils.isEmpty(loginUser.getId())) { @@ -814,6 +903,23 @@ public class ImprovementProposalServiceImpl extends ServiceImpl