生成时间: 2026-08-02 · 数据来源: xnybw平台需求及工作计划.xlsx(南网在线绿能云缺陷跟踪表)· 仅针对 backup730/730backup 分支代码

新型储能类型,计划并网提交后经OMS2.0回退,回五区重新提交时报错(Excel第13行)

类型:填报问题  严重性:严重  状态:2.2.开发中(复测不通过)

基本信息

问题描述新型储能类型,计划并网提交后,用户在OMS2.0进行回退,然后再回到五区重新提交时报错
一级模块项目信息填报
二级模块/
涉及类型新型储能
所属区域五区
是否阻断流程
处理人员周小龙
复测情况复测不通过(待调整)

问题截图

row13 截图1
图1:五区重新提交计划并网时的报错

范围说明

"在OMS2.0进行回退"这一步操作本身发生在 OMS2.0(南网调度侧内网系统),不属于 xnybw5f/xnybw5b 代码范围,无法在本仓库中核实其回退逻辑。以下定位聚焦于"回到五区重新提交"这一步——这部分代码在 xnybw5f/xnybw5b 范围内,且确认存在明确的逻辑缺口。

旧代码涉及的项目文件及行数(backup730/730backup)

前端提交入口:xnybw5f / backup730 / src/views/projectNew/components/planInfo/jhbwDetail.vue 第789-1030行 handleSave(index):校验通过后调用 projectPlanApi.saveAndCreateFlow(impl) 发起"保存并提交审核"
后端流程创建逻辑:xnybw5b / 730backup / src/main/java/cn/csg/so/oms/in/newenergy/project/appservice/JhbwAppService.java 第340-396行 saveAndCreateFlow(NePjImplVO impl)
if (ProjectTypeConstant.isZYFBSXNY(impl.getType()) || ProjectTypeConstant.isSWZ(impl.getType())) {
    // 中压、生物质:有专门的"重启流程"分支
    ...
    if (StrUtil.isEmpty(impl.getFlowStatus())) {
        FlowAppService.createFlow(FlowEnum.FlowType.计划并网流程, impl.getId(), params);          // 第一次提交
    } else if (StrUtil.equals(impl.getFlowStatusStr(), "已审核")) {
        FlowAppService.reStartFlow(FlowEnum.FlowType.计划并网流程, impl.getId());                    // 归档后重新提交 —— 有对应处理
    }
} else {
    // 新型储能等其它类型走这个分支,缺少"已有flowStatus但需要重启"的对应处理
    if (StrUtil.equals(bakPstatus, "0")) {
        saveDetailAdjust(impl);
        if (StrUtil.isEmpty(impl.getFlowStatus())) {
            FlowAppService.createFlow(FlowEnum.FlowType.计划并网流程, impl.getId(), params);          // 只处理"从未提交过"
        }
        // 若 impl.getFlowStatus() 非空(即此前已提交过、流程已存在),这里什么都不做,直接跳过
    } else {
        delPlan(impl);
        savePlanAndCreateFlow(impl, params);
    }
}

修复代码涉及的项目文件及行数

JhbwAppService.java 第363-368行(else 分支,非中压/生物质类型的 bakPstatus=='0' 处理逻辑)

修复方案

根本原因:中压分布式(ZYFBSXNY)和生物质(SWZ)类型的提交逻辑里,专门处理了"该记录之前已经提交过流程、现在要再次提交"的场景(flowStatusStr=="已审核" 时调用 FlowAppService.reStartFlow() 重启流程);但新型储能等其它类型走的是紧邻的 else 分支,只处理了"impl.getFlowStatus() 为空即从未提交过"的全新提交场景,没有对应"该记录已有 flowStatus、需要重新发起"的分支。当 OMS2.0 侧执行"回退"操作后,如果五区这边该 impl 记录的 flow_status 字段没有被同步清空(回退是在 OMS2.0 内网系统完成的,跨系统状态同步是否完整无法在本仓库确认),再次点击"保存并提交审核"时,代码会因为 impl.getFlowStatus() 非空而直接跳过 createFlow(),既不创建新流程也不重启旧流程,导致后续发送流程(sendByImplId)时找不到有效可用的流程实例而报错。

} else {
    if (StrUtil.equals(bakPstatus, "0")) {
        saveDetailAdjust(impl);
        if (StrUtil.isEmpty(impl.getFlowStatus())) {
            FlowAppService.createFlow(FlowEnum.FlowType.计划并网流程, impl.getId(), params);
        } else if (StrUtil.equals(impl.getFlowStatusStr(), "已审核")
                || StrUtil.equals(impl.getFlowStatusStr(), "已退回")) {
            // 修复:补齐"已提交过、经外部系统回退/审核完成后再次提交"的重启分支,
            // 与中压/生物质分支保持一致,避免既不建流程也不重启
            FlowAppService.reStartFlow(FlowEnum.FlowType.计划并网流程, impl.getId());
        }
    } else {
        delPlan(impl);
        savePlanAndCreateFlow(impl, params);
    }
}
该修复方向的关键前提是"经 OMS2.0 回退后,五区侧该记录的 flow_status/flowStatusStr 具体会变成什么取值"——这一步的跨系统状态同步无法在 xnybw5f/xnybw5b 仓库内确认,需要结合 OmsReceiverApiController(xnybw5b / 730backup,负责接收 OMS 侧回调的接口,其中同样存在一份"复制自 jhbw/saveAndCreateFlow"的 saveAndCreateFlow 实现,第53-58行)实测或联调确认回退后该字段的真实取值,再据此调整上面 else if 的具体条件判断。