Skip to content

工程安全管理 · 建渣管理 · 详细设计文档 ​

文档版本:0.10 | 最近核对日期:2026-09-15

进展说明:详细设计已实现;边界修复已实现,代表性端到端主链路已验证,流程详情专项已复验、导出专项待确认;审查补录渣场引用生效校验、流程 JSON 路径与两级驳回路由,新增消纳场启用/停用通道及引用兼容规则。

关联:需求分析、概要设计、数据库设计、测试与验收、操作手册。

1. 后端结构 ​

包路径 com.bokun.business.czw,分层与 sqe 一致:

层类说明
controllerCzwDisposalSiteController、CzwSlagLedgerController协议边界;@SaCheckPermission 与 SYS_MENU.PERMS 逐字一致
serviceICzwDisposalSiteService/ICzwSlagLedgerService + impl业务规则、事务边界、流程接入
serviceCzwBusinessRules状态可写性、证书时效、满容、期间、剩余占比、湿渣阶段校验(纯函数,单测覆盖)
domainCzwDisposalSite、CzwSlagLedger、CzwSlagLedgerPlan + bo/voMyBatis-Plus 实体,@TableLogic 逻辑删除
mapper三个 BaseMapperPlus 接口无 XML,注解式
helperCzwWorkflowHelper草稿启动流程/退回重办;nextHandlerId 逗号拼接多人或签
workflowCzwFlowConstant、CzwProcessEventListenerczw 前缀事件回写 approvalStatus

2. 接口清单 ​

方法路径权限说明
GET/business/czw/disposalSite/listczw:disposalSite:list分页,含派生字段与 currentTaskId
GET/business/czw/disposalSite/optionsczw:disposalSite:list已生效且未停用渣场下拉(停用渣场不进新计划,已引用台账不受影响)
GET/POST/PUT/DELETE/business/czw/disposalSite[/{ids}]query/add/edit/remove详情/新增/编辑/删除(仅草稿)
POST/business/czw/disposalSite/submitczw:disposalSite:submit提交进流程
PUT/business/czw/disposalSite/current-updateczw:disposalSite:update本期更新剩余容量,仅生效单据
PUT/business/czw/disposalSite/statusczw:disposalSite:edit启用/停用切换,仅生效单据
GET/business/czw/disposalSite/process-info/{id}czw:disposalSite:query流程信息
POST/business/czw/disposalSite/exportczw:disposalSite:export导出
GET/business/czw/slagLedger/listczw:slagLedger:list分页,含当期处置计划与派生字段
GET/business/czw/slagLedger/statsczw:slagLedger:list统计卡
GET/business/czw/slagLedger/{id}/plans?period=czw:slagLedger:query指定期次处置计划
GET/POST/PUT/DELETE/business/czw/slagLedger[/{ids}]query/add/edit/remove详情/新增/编辑/删除(仅草稿,级联删计划)
POST/business/czw/slagLedger/submitczw:slagLedger:submit提交(含湿渣阶段强校验)
PUT/business/czw/slagLedger/current-updateczw:slagLedger:update本期更新:覆盖当期快照+问题情况
GET/business/czw/slagLedger/process-info/{id}czw:slagLedger:query流程信息
POST/business/czw/slagLedger/exportczw:slagLedger:export导出

说明:导出接口保留为后端协议入口;当前前端页面沿用平台下载能力直接请求导出地址,未在 API 客户端另设同名封装函数。

3. 关键业务规则实现 ​

  • 提交校验(validateSubmit):标段、施工/运输单位、渣土类别、预计完成时间、设计/剩余总量必填;剩余总量必须满足 0 ≤ remainTotal ≤ designTotal;处置计划非空且阶段/渣场必填;湿渣(wet/shield)调用 CzwBusinessRules.validateWetStageOrder 按 orderNum 排序后校验预处理先于最终消纳。草稿保存不执行计划阶段/渣场强校验,但消纳场草稿仍校验物理必填的渣场名称,避免数据库非空约束转化为 500。
  • 渣场引用生效校验(fillSiteSnapshot,新增/编辑/提交/本期更新保存计划共用):处置计划引用的消纳场必须存在且 approvalStatus=finish;新引用还必须不是 siteStatus=disabled,与前端"下拉仅已生效且未停用渣场"口径一致,避免绕过前端直连接口把计划挂到草稿、未生效或已停用渣场。服务层以该台账历史计划已有的 siteId 作为兼容范围,允许已引用的停用渣场继续写入名称/ID 快照,保证编辑和本期更新不破坏历史业务事实。
  • 草稿期次与正式快照:新增草稿计划使用当前自然月;草稿编辑沿用该台账已有最近期次并只替换该期计划;正式提交先清理该台账旧计划行,再以提交当月写入通过校验的正式快照,避免跨月编辑残留幽灵期次。
  • 编辑/提交保留快照:审批状态、更新状态、期次、填报人快照不由前端覆盖。
  • 本期更新(台账):仅 finish 可更新;bo 只携带执行类字段,校验用完整契约继承既有业务字段;更新 remainTotal/satisfyStatus/problemDesc/suggestion/otherDesc + updateStatus=updated + currentPeriod=当月;replacePlans 先删当期快照行再插入,填报人记为更新人。
  • 消纳场启用/停用(changeStatus):仅 approvalStatus=finish 可手工切换 siteStatus(enabled/disabled),草稿/退回态经编辑表单改状态;停用渣场由 options() 下拉过滤(siteStatus≠disabled 或为空),不再进入新处置计划,服务端同步拒绝新引用;状态接口只更新 SITE_STATUS,并以记录 ID、approvalStatus=finish 及读取到的旧状态作为条件,避免并发操作覆盖其他字段或逆向覆盖较新的状态;已引用台账保留快照不受影响。
  • 删除:仅草稿;消纳场删除前校验未被任何处置计划引用;删除同时 workflowService.deleteInstance 清理流程实例。
  • 派生展示在 service 填充:certStatus、displayStatus(消纳场)、remainRatio、produceCertStatus、transportCertStatus、displayUpdateStatus。

4. 流程定义 ​

  • JSON:digital-construction-modules/digital-construction-workflow/src/main/resources/flow/czw/czw_disposal_site.json、czw_slag_ledger.json;节点 start → submit → supervision_audit(${nextHandlerId}, pop,back) → owner_audit(${nextHandlerId}, back) → end;监理驳回退回 submit(申请人)、业主驳回退回 supervision_audit(同 sqe 两级驳回路由);坐标与边锚点遵循 流程图编排规范。
  • 导入/发布:管理端 POST /workflow/definition/importDef(category=2110000000000000901)+ PUT /workflow/definition/publish/{id};已发布版本不改写,后续变更复制 V(n+1)。
  • 业主审核人注入:监理办理时弹窗选人 → assigneeMap{owner_audit} → CompletePrepareComponent.setPopAssigneeMap 写 pass:owner_audit 变量。

5. 前端结构 ​

路径说明
src/api/business/czw/{index,types}.tsAPI 与类型;ID 保持 string | number
src/views/business/czw/flowSteps.ts流程展示节点、记录动作(仅草稿可删、生效可本期更新)+ spec
src/views/business/czw/disposalSite/{index,flowForm}.vue消纳场台账页与工作台
src/views/business/czw/slagLedger/{index,flowForm}.vue渣土台账页(统计卡/展开行/四页签弹窗/本期更新弹窗)与工作台(期次切换)
复用sqe useFlowWorkspace(flowKey 类型放宽为 string)、loading.ts、flow-workspace.scss;平台 NextHandlerPicker、FlowChartEntry、FileUpload、FlowActionPanel/FlowTimeline/FlowProgressDrawer

菜单路由:/czw/waste/disposalSite[/flowForm]、/czw/waste/slagLedger[/flowForm],办理菜单隐藏(VISIBLE=1)且与流程 JSON formPath 对应。

渣土台账的新增基础信息和列表筛选均不引入独立项目选择;线路直接读取工程结构树,标段递归收集所选线路下的 BID 节点,兼容线路下存在 PACKAGE 等中间层级的工程树结构。线路选项默认隐藏运营线路并提供「显示运营」开关(默认关闭,查询区与新增表单共用同一份选项,2026-09-18 起),仅切换显示层、不做运营拒绝。

6. 权限矩阵 ​

三段式 czw:{disposalSite|slagLedger}:{list|query|add|edit|remove|export|submit|update};后端 @SaCheckPermission、SYS_MENU.PERMS、前端 v-hasPermi 三处逐字一致(菜单回读见 数据库设计)。审批动作走流程任务权限,不另设业务权限。消纳场启用/停用切换(PUT /status)复用 czw:disposalSite:edit,不新增权限码与菜单按钮,故无数据库菜单变更。

台账页面还有两个跨模块读取依赖:工程树线路接口需要 business:projectNode:query、business:projectNode:list 或 business:siteMaster:list 任一权限;已生效渣场下拉需要 czw:disposalSite:list。这些依赖需纳入角色授权与页面验收;依赖失败时前端分别隔离线路筛选/新增能力、渣场下拉能力,不阻断已有列表和统计的读取。

工程数据范围由 EngineeringDataAccessHelper 对渣土台账的列表及对象入口执行专属组合校验:授权必须命中同线路、同标段、同工点的当前有效组合,或该线路的整线授权;候选标段或工点无效时拒绝访问。消纳场档案不受工程数据授权过滤。模块级浏览器端到端证据见测试报告,共享授权模型见工程基础详细设计 §4.2。