feat(declare): 同一申报项目进行中只允许一条申报

- 新增 DeclareGuardService:按已通过/未处理驳回/待审核数判重,申报项目行加锁防连点
- 9 张申报表补 declare_id / declare_status / declare_remark,提交时写入并随审核结果回写
- 新增撤回、作废(强制放行)接口;挑战杯团队成员按手机号判重
- 申报项目支持配置允许重复提交与最多同时条数
- 迁移脚本 sql/20261102_add_declare_uniqueness.sql(含存量回填与重复清单)
This commit is contained in:
2026-11-02 19:28:56 +08:00
parent 76c9edd4be
commit 0e4986330a
28 changed files with 1089 additions and 15 deletions
@@ -26,6 +26,9 @@ import com.gxwebsoft.gxmu.param.WxxzxMaterialUpdateParam;
import com.gxwebsoft.gxmu.param.WxxzxFormParam;
import com.gxwebsoft.gxmu.service.QmgcFormService;
import com.gxwebsoft.gxmu.service.ReviewFlowStarterService;
import com.gxwebsoft.gxmu.model.DeclareCheckResult;
import com.gxwebsoft.gxmu.service.DeclareGuardService;
import org.springframework.transaction.annotation.Transactional;
import com.gxwebsoft.gxmu.service.SjqnFormService;
import com.gxwebsoft.gxmu.service.SjtbzbsjFormService;
import com.gxwebsoft.gxmu.service.TzbcyFormService;
@@ -115,6 +118,8 @@ public class WxxzxFormController extends BaseController {
@Resource
private ReviewFlowStarterService reviewFlowStarterService;
@Resource
private DeclareGuardService declareGuardService;
@Resource
private FileRecordService fileRecordService;
@Value("${config.upload-path}")
@@ -243,11 +248,21 @@ public class WxxzxFormController extends BaseController {
@OperationLog
@ApiOperation("添加未来学术之星课题申报表")
@PostMapping()
@Transactional(rollbackFor = Exception.class)
public ApiResult<?> save(@RequestBody WxxzxForm wxxzxForm) {
User loginUser = getLoginUser();
if (loginUser != null) {
wxxzxForm.setUserId(loginUser.getUserId());
}
DeclareCheckResult declareCheck = declareGuardService.checkBeforeCreate("gxmu_wxxzx_project",
wxxzxForm.getDeclareId(), wxxzxForm.getYear(), wxxzxForm.getUserId());
if (declareCheck.isRejected()) {
return fail(declareCheck.getError());
}
if (declareCheck.getDeclareId() != null) {
wxxzxForm.setDeclareId(declareCheck.getDeclareId());
}
wxxzxForm.setDeclareStatus(1);
if (wxxzxFormService.save(wxxzxForm)) {
reviewFlowStarterService.startReview("gxmu_wxxzx_project", wxxzxForm.getId());
return success("添加成功");
@@ -889,4 +904,4 @@ public class WxxzxFormController extends BaseController {
return suggestion;
}
}
}
}