From 915581eba1d2b785ce49c638b1d54516f1ad350f Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Thu, 30 Jul 2026 15:51:15 +0800 Subject: [PATCH] =?UTF-8?q?yxk-20260730=20=E6=94=B9=E5=96=84=E6=8F=90?= =?UTF-8?q?=E6=A1=88=20=E6=99=AE=E9=80=9A=E6=96=B0=E5=A2=9E=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E4=B8=8D=E5=86=8D=E9=A2=84=E7=94=9F=E6=88=90=E6=B5=81?= =?UTF-8?q?=E6=B0=B4=E5=8F=B7=E3=80=82=E6=8F=90=E6=A1=88=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E5=9C=A8=E7=82=B9=E5=87=BB=E4=BF=9D=E5=AD=98=E6=97=B6=E7=94=B1?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E7=94=9F=E6=88=90=EF=BC=8C=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E4=BB=85=E5=B1=95=E7=A4=BA=E2=80=9C=E4=BF=9D=E5=AD=98=E5=90=8E?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E2=80=9D=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E5=B9=B6=E5=8F=91=E9=87=8D=E5=A4=8D=E3=80=82=20Implem?= =?UTF-8?q?entation=20Changes=20=E6=96=B0=E5=A2=9E=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=97=B6=E4=B8=8D=E5=86=8D=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E5=B9=B4=E5=BA=A6=E6=B5=81=E6=B0=B4=E5=8F=B7=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E4=B9=9F=E4=B8=8D=E5=86=8D=E6=8B=BC=E6=8E=A5?= =?UTF-8?q?=E6=8F=90=E6=A1=88=E7=BC=96=E5=8F=B7=E3=80=82=20=E6=8F=90?= =?UTF-8?q?=E6=A1=88=E7=BC=96=E5=8F=B7=E8=BE=93=E5=85=A5=E6=A1=86=E7=BB=A7?= =?UTF-8?q?=E7=BB=AD=E5=8F=AA=E8=AF=BB=EF=BC=9B=E6=96=B0=E5=A2=9E=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=98=BE=E7=A4=BA=E2=80=9C=E4=BF=9D=E5=AD=98=E5=90=8E?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E2=80=9D=E5=8D=A0=E4=BD=8D?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E3=80=82=20=E5=90=8E=E7=AB=AF=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=B8=93=E7=94=A8=E5=88=9B=E5=BB=BA=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E5=9C=A8=E4=BF=9D=E5=AD=98=E4=BA=8B=E5=8A=A1=E5=86=85?= =?UTF-8?q?=EF=BC=9A=E5=8E=9F=E5=AD=90=E9=80=92=E5=A2=9E=E5=B9=B4=E5=BA=A6?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E8=A1=A8=E3=80=82=20=E6=8C=89=20=E6=8F=90?= =?UTF-8?q?=E6=A1=88=E9=83=A8=E9=97=A8=E5=90=8D=E7=A7=B0-YYYY=E5=B9=B4-?= =?UTF-8?q?=E5=9B=9B=E4=BD=8D=E6=B5=81=E6=B0=B4=E5=8F=B7=20=E7=94=9F?= =?UTF-8?q?=E6=88=90=E7=BC=96=E5=8F=B7=E3=80=82=20=E8=A6=86=E7=9B=96?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BC=A0=E5=85=A5=E7=9A=84=20proposalNo=20?= =?UTF-8?q?=E5=90=8E=E4=BF=9D=E5=AD=98=E4=B8=BB=E8=A1=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增接口返回 { id, proposalNo };前端附件仍使用返回的 id 关联。 新增年度序列表及历史编号初始化 SQL,保证首次上线从当前最大流水号继续递增。 --- .../ImprovementProposalController.java | 9 +++--- .../mapper/ImprovementProposalMapper.java | 7 +++++ .../mapper/xml/ImprovementProposalMapper.xml | 14 +++++++++ .../service/IImprovementProposalService.java | 7 +++++ .../impl/ImprovementProposalServiceImpl.java | 31 +++++++++++++++++++ 5 files changed, 64 insertions(+), 4 deletions(-) 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 0a4c040..09f7dbd 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 @@ -105,11 +105,12 @@ public class ImprovementProposalController { ImprovementProposal improvementProposal = new ImprovementProposal(); BeanUtils.copyProperties(improvementProposalPage, improvementProposal); improvementProposal.setBpmStatus("1"); - // 新增申请阶段只创建主表,评分和投票子表由后续流程节点维护。 - improvementProposalService.saveMain(improvementProposal, null, null); - // 附件需要使用主表 ID 关联,不能让前端从成功提示文本中猜测新增记录的 ID。 - Map result = new HashMap<>(1); + // 新增申请在保存事务内分配年度流水号,避免前端预取号产生并发重复。 + improvementProposalService.createNewProposal(improvementProposal); + // 附件必须使用已落库的主表 ID 关联,不能使用响应成功文案。 + Map result = new HashMap<>(2); result.put("id", improvementProposal.getId()); + result.put("proposalNo", improvementProposal.getProposalNo()); return Result.OK("添加成功!", result); } diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/mapper/ImprovementProposalMapper.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/mapper/ImprovementProposalMapper.java index 6a633c9..8206aeb 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/mapper/ImprovementProposalMapper.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/mapper/ImprovementProposalMapper.java @@ -16,6 +16,13 @@ import java.util.List; public interface ImprovementProposalMapper extends BaseMapper { String selectLatestProposalNoByYear(@Param("year") Integer year); + + /** 原子递增指定年度的提案流水号,首次使用该年度时从 1 开始。 */ + int incrementProposalYearSequence(@Param("year") Integer year); + + /** 在当前事务内锁定并读取指定年度的最新提案流水号。 */ + Integer selectProposalYearSequenceForUpdate(@Param("year") Integer year); + /** * 锁定提案主表,串行化流程发起、编辑和删除操作,避免同一提案生成多个流程实例。 */ diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/mapper/xml/ImprovementProposalMapper.xml b/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/mapper/xml/ImprovementProposalMapper.xml index 1b7e498..985aacc 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/mapper/xml/ImprovementProposalMapper.xml +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/improvementproposal/mapper/xml/ImprovementProposalMapper.xml @@ -10,6 +10,20 @@ LIMIT 1 + + + INSERT INTO improvement_proposal_year_sequence (sequence_year, current_sequence) + VALUES (#{year}, 1) + ON DUPLICATE KEY UPDATE current_sequence = current_sequence + 1 + + + +