flowchart LR
|
subgraph S1 [销售前端 CRM]
|
CL[线索] --> CU[客户]
|
CU --> BU[商机]
|
BU --> QU[报价单]
|
QU --> CT[合同]
|
CT --> IV[开票]
|
IV --> RK[回款]
|
CT --> PL[回款计划]
|
end
|
subgraph S2 [执行链 ERP+MES]
|
SO[销售订单] --> MP[MPS]
|
MP --> WO[工单]
|
WO --> TK[任务]
|
TK --> FB[报工]
|
FB --> PP[产品产出]
|
PR[采购申请] --> PO[采购订单]
|
PO --> AN[到货通知]
|
AN --> IR[采购入库]
|
end
|
subgraph S3 [仓储与财务]
|
ST[库存台账]
|
PS[销售出库]
|
RC[收款单]
|
PI[采购来票] --> PA[付款单]
|
end
|
CT -->|generateSaleOrder 带入客户产品折扣定金·回写orderId| SO
|
SO -->|审批通过带入 saleOrderId 行ID 数量 客户 交期| MP
|
PO -->|确认收货带入订单行物料供应商数量| AN
|
AN -->|IQC完成后生成·带入合格行| IR
|
FB -->|BOM倒冲扣减| ST
|
PP -->|IN事务入库| ST
|
IR -->|IN事务入库·回写inCount| PO
|
PS -->|OUT事务出库·回写outCount| SO
|
FB -->|最后一道工序回写已生产数量| WO
|
FB -->|ProductionFinishedEvent 回写生产状态| SO
|
IV -->|回款强制先开票| RK
|
RC -->|关联CRM客户校验| CU
|
PA -->|关联来票与供应商| PI
|
subgraph S4 [智能质检报告 qcreport]
|
RPT[报告模板] --> RPTV[模板版本]
|
RPTVSAVE[设计器保存 create 或 update] -->|写入侧闸门 规则101_006 画布安全101_009 不合格不落库| RPTV
|
RPTVSAVE -.->|只卡新写入 存量脏画布不回溯核查| CVNOTE[画布校验覆盖 tagName 属性名 整段CSS 三处注入面]
|
RPTV --> RPI[报告实例]
|
RPI --> SNAP[数据快照冻结]
|
RPI --> RHTML[HTML 渲染产物]
|
RPI --> RPDF[PDF 产物]
|
AISRC[源文件 扫描件照片·电子版PDF·Word Excel·txt csv] -->|上传走 system Storage API 取 blobId 并绑为模板附件| AIRD[AI 识别草稿]
|
AIRD -->|人工在设计器确认后保存| RPTV
|
end
|
QCDOC[质检单 IQC IPQC OQC RQC] -->|generate-from-qc·带 qcType qcId templateId| QCGATE{五道校验 类型 存在 已完成 已判定 模板类型 有检验项}
|
QCGATE -->|任一不过·按业务优先级只报第一处| QCERR[105_000~105_006]
|
QCGATE -->|通过| MESQCAPI[MesQcReportApi 四层取数·单头 判定依据行 样品 实测值]
|
MESQCAPI -->|纯函数映射器归一 含原判定 qcResult qcResultText| RPI
|
MESQCAPI -.->|分组标题跳过 指标已删 未录实测值 样品超3| QCWARN[warnings 软提示·不落库]
|
QCWARN -.-> RPI
|
RPI -.->|undecidableCount=快照 result 为空串的项·生成时弹提示| QCFE
|
RPI -.->|businessType=mes_qc_iqc 等表名 + businessId 反查·一单可出多份| QCFE
|
RPT -.->|report_type 数字字符串须等于 qcType·前端据此过滤模板列表| QCGATE
|
RPTV -->|模板停用后不再出新件·历史实例不受影响·当前版本不可停用 101_010| RPI
|
RPT -->|进入设计器带 templateId 调 AI 导入| AIRD
|
RPI -->|列表 详情 预览 打印| QCFE["前端报告页面 /qc/report-instance 已落地·iframe 渲染 render_html + 快照页签 + 导出PDF"]
|
RPDF -->|归档 附件中心 recordType=qc_report_instance| PDFARCH[system_storage_attachment]
|
AISRC -.->|归属 附件中心 recordType=qc_report_template| PDFARCH
|
AISRC -.->|同一模板重复导入按替换处理·先删旧附件·连同 blob 行与磁盘文件一起清| PDFARCH
|
QCFE -.->|权限码 qc-report:instance:query/export/delete/create 已入 system_menu| SYS1[system_menu]
|
QCGATE -.->|权限码 qc-report:instance:generate 已入 system_menu id=1075416| SYS1[system_menu]
|
QCDOC -.->|前端入口 行操作「出报告」仅 status=已完成可见·四页共用同一弹窗| UIREP[出报告弹窗·只列同类型 启用 且有生效版本的模板]
|
UIREP -->|选模板后 POST generate-from-qc| QCGATE
|
UIREP -.->|结果就地展示 reportNo itemCount 与 undecidableCount 告警| QCFE
|
QCFE -.->|进入时带 businessType+businessId 路由 query·预填搜索表单的「业务单据」字段| UIREP
|
RPT -.->|权限码 qc-report:template:ai-import 已入 system_menu| SYS1
|
subgraph S5 [独立财务报销 finance]
|
RBM[报销单 finance_reimbursement] --> RBI[报销明细 finance_reimbursement_item]
|
RBM --> RBA[发票附件 recordType=finance_reimbursement]
|
RBM --> RBS[状态 草稿0 审批中15 已通过20 已驳回35 已归档40]
|
end
|
RBM -->|create 带主表与 items 数组与 blobIds 一次性提交| RBI
|
RBI -.->|invoiceAmount 求和回填 totalAmount·用户可手改·后端不校验一致性| RBM
|
RBM -->|submit 带 id 与 processDefinitionKey 走 query| RBS
|
RBS -.->|BPM 监听器结果回写 通过20 驳回35 取消退回0| RBM
|
RBA -.->|上传与保存分离·禁在业务表存文件地址| PDFARCH
|
FINNOTE[独立模块·销售采购链条任意单据均不生成报销单·报销单亦不回写任何外部单据·唯一例外是课题经费拨付] -.-> RBM
|
subgraph S6 [独立课题管理 research]
|
RGL[课题指南 research_guideline] --> RAP[课题申报书 research_application]
|
RAP --> RRV[专家评审明细 research_topic_review]
|
RAP --> RFR[经费拨付记录 research_fund_record]
|
RAP --> RST[状态 草稿0 审批中15 已立项20 已驳回35]
|
end
|
UMSM[会员 ums_member] -->|"选会员带出 applicantName workUnit jobTitle contactPhone contactEmail·软关联无外键"| RAP
|
RGL -->|"申报时引用·要求 publishStatus=已发布20 且 现在在 applyStartTime 至 applyEndTime 内"| RAP
|
RAP -->|"category 冗余自指南·不信任前端传值"| RAP
|
RAP -->|"submit 带 id 与 processDefinitionKey 走 query·回写 processInstanceId"| RST
|
RST -.->|"BPM 监听器 ResearchApplicationStatusListener 回写 通过20 驳回35 取消退回0"| RAP
|
RAP -->|"审批通过后 approveApplication 生成 researchNo LX 与 approveTime·已有编号幂等跳过"| RAP
|
RRV -->|"recalculate: compositeScore 加权 0.3/0.3/0.2/0.2 → ranking 降序重排 → 主单 reviewAvgScore 与 reviewPass"| RAP
|
RRV -.->|"明细删空时主单汇总清为 null"| RAP
|
RAP -->|"publishNotice 生成 system_notice 公告并回写 noticeId·重复发布拦截"| SYS2[system_notice 系统公告]
|
RFR -->|"金额校验 已登记 + 本次 不得超出 budgetAmount 申请经费"| RAP
|
RFR -.->|"凭证走附件中心 recordType=research_fund_record·同一批 blob 双绑 finance_reimbursement·表内不存文件地址"| PDFARCH
|
RAP -.->|"申报附件 recordType=research_application"| PDFARCH
|
RGL -.->|"指南附件 recordType=research_guideline"| PDFARCH
|
RFR -->|"1:1 生成报销单·经 FinanceReimbursementApi 本地 Bean 建单并立即 submit·回写 reimbursement_id/reimbursement_no·台账置 15 报销审批中"| RBM
|
RBM -->|"报销单进入同一条 BPM 流程 finance_reimbursement_approve(财务审核 → 财务主管审批)·businessKey=报销单 ID"| RBS
|
RBS -.->|"BPM 监听器 ResearchFundStatusListener 回写课题台账 通过20 驳回30(+驳回原因/时间) 撤回0"| RFR
|
RESNOTE[一期已对接财务·课题台账为拨款台账·报销单为财务出账凭证·两边以 reimbursement_id 软关联无外键·财务侧直接删单会留下悬空 ID 由业务报错兜底] -.-> RFR
|