ye1023
bc0ec8f354
yxk-20260727
改善提案
重构 ImprovementProposalBPMForm.vue 为“基本信息”和“流程办理”两个区域。节点识别统一使用 formData.taskDefKey,不通过 PC 表单 URL 参数判断节点;URL 参数仅保留给将来固定开关类需求。
奖项字段统一按 金奖=0、银奖=1、铜奖=2、参与奖=3 存储,页面展示中文。need_dept_score、isneedvote 均使用字符串 1/0。
Key Changes
基本信息区域在所有流程节点统一展示,使用只读组件展示提案申请字段、改善前后说明及三个附件分组;不复用生成式编辑表单,也不允许流程办理人修改申请内容。
流程办理区域仅在运行中的待办显示:formBpm=true、PROCESS_TAB_TYPE='run' 且存在 taskId。提取统一 processInfo,包含 taskId、taskDefKey、processInstanceId、mainId。
继续使用 TaskHandleInnerContent 的 beforeHandle 钩子;按当前 taskDefKey 完成节点专属数据校验、保存和流程变量写入后,再调用通用提交办理。
Task_improve001:
提供初步评定奖项 initial_award 必填选择。
金奖、银奖自动保存 need_dept_score='1';铜奖、参与奖保存 '0'。
后端在同一节点保存接口中更新主表,并通过 Flowable runtimeService.setVariable 写入全局流程变量 need_dept_score。
BPMN 排他网关配置:${need_dept_score == '1'} 流向 Task_improve002,${need_dept_score == '0'} 流向 Task_improve003。
Task_improve002:
展示部门评分记录及“打分”入口,入口按当前登录评委定位其 improvement_dept_score 记录。
本轮仅建立评分弹窗/页面入口和子表查询展示;四维度录入、加权计算、全部评委完成校验、平均分和建议奖项计算留待下一轮实现。
Task_improve003:
只读展示初步奖项;存在评分结果时展示 dept_avg_score、suggested_award。
部门负责人必选 leader_final_award;金奖写入 isneedvote='1',其他奖项写入 '0',并同步为全局流程变量。
BPMN 排他网关配置:${isneedvote == '1'} 流向 Task_improve004,${isneedvote == '0'} 流向 Task_improve006。
Task_improve004:
本轮预留“所级评议人员”办理区域和投票名单展示,不开发专用选人组件及投票记录初始化。
后续选人功能负责创建每位评委一条 improvement_institute_vote 待投票记录,并设置 institute_total_voters;流程需同时配置所级投票任务的多实例人员集合。
Task_improve005:
提供“同意”“不同意”操作,按当前登录用户更新其已有的待投票记录,写入 vote_result、vote_status='voted'、vote_time 与当前 process_task_id。
不信任前端传入的投票人 ID;后端以登录用户定位记录,并禁止非名单人员、重复投票或已完成记录再次修改。
提交办理前校验当前评委已投票。投票统计和三分之二结果计算留待选人及多实例规则完成后统一实现。
Task_improve006:
展示部门负责人确认奖项;如经过所级投票,同时展示投票统计和投票结果。
经办人必须选择 final_award。若金奖所级投票未通过,同时将 manual_confirm_result 固定保存为 confirmed,表示已由经办人手动确认最终奖项。
后端新增流程节点专用 DTO 与接口,分别处理初审奖项、负责人奖项、归档最终奖项和个人投票;接口校验主表、流程实例、活动任务定义键及当前办理人,避免通过普通 /edit 篡改流程数据。
不使用生成代码的 updateMain 保存流程数据,避免删除并重建评分、投票子表,也避免草稿状态校验阻断流程办理。
补齐数据库定义:在 improvement_proposal 增加 isneedvote char(1),同步建表 SQL、数据库 Markdown 与实体注释;将 need_dept_score 的说明统一改为 1/0。为已建库环境提供单独的增量 ALTER TABLE 脚本。
2026-07-27 15:06:10 +08:00
..
2026-07-27 15:06:10 +08:00
2026-05-15 16:39:11 +08:00