yxk-20260728
改善提案 在 Task_improve003 部门负责人审核节点,负责人只能选择基准奖项本档或更低档奖项,不允许升档。基准奖项按是否经过部门评议确定: need_dept_score='1':以 suggested_award 为基准。 未经过部门评议:以 initial_award 为基准。 奖项编码保持现有顺序:0=金奖、1=银奖、2=铜奖、3=参与奖;编码数值大于等于基准编码即为本档或降档。
This commit is contained in:
+24
-1
@@ -300,6 +300,10 @@ public class ImprovementProposalServiceImpl extends ServiceImpl<ImprovementPropo
|
||||
public void saveLeaderAward(ImprovementProposalBpmActionDTO action, LoginUser loginUser) {
|
||||
validateAward(action.getLeaderFinalAward());
|
||||
ImprovementProposal proposal = validateRunningTask(action, loginUser, TASK_LEADER_AWARD);
|
||||
String awardBase = resolveLeaderAwardBase(proposal);
|
||||
if (awardRank(action.getLeaderFinalAward()) < awardRank(awardBase)) {
|
||||
throw new IllegalStateException("负责人确认奖项只能选择当前档位或降档奖项");
|
||||
}
|
||||
String needInstituteVote = AWARD_GOLD.equals(action.getLeaderFinalAward()) ? "1" : "0";
|
||||
ImprovementProposal update = new ImprovementProposal();
|
||||
update.setId(proposal.getId());
|
||||
@@ -497,11 +501,30 @@ public class ImprovementProposalServiceImpl extends ServiceImpl<ImprovementPropo
|
||||
}
|
||||
|
||||
private void validateAward(String award) {
|
||||
if (!AWARD_GOLD.equals(award) && !AWARD_SILVER.equals(award) && !AWARD_BRONZE.equals(award) && !AWARD_PARTICIPATION.equals(award)) {
|
||||
if (!isValidAward(award)) {
|
||||
throw new IllegalStateException("请选择有效的奖项");
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isValidAward(String award) {
|
||||
return AWARD_GOLD.equals(award) || AWARD_SILVER.equals(award) || AWARD_BRONZE.equals(award) || AWARD_PARTICIPATION.equals(award);
|
||||
}
|
||||
|
||||
/**
|
||||
* 负责人只能在当前评定档位内确认或降档:经过评分时以系统建议奖项为准,未评分时以初评奖项为准。
|
||||
*/
|
||||
private String resolveLeaderAwardBase(ImprovementProposal proposal) {
|
||||
String awardBase = "1".equals(proposal.getNeedDeptScore()) ? proposal.getSuggestedAward() : proposal.getInitialAward();
|
||||
if (!isValidAward(awardBase)) {
|
||||
throw new IllegalStateException("部门评议建议奖项尚未生成,不能确认负责人奖项");
|
||||
}
|
||||
return awardBase;
|
||||
}
|
||||
|
||||
private int awardRank(String award) {
|
||||
return Integer.parseInt(award);
|
||||
}
|
||||
|
||||
private boolean needsDeptScore(String award) {
|
||||
return AWARD_GOLD.equals(award) || AWARD_SILVER.equals(award);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user