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 + + + +