Skip to content

GET /dm-store/damage/personal/cancel

触发按钮:无

入参

出参

传递对象:ResultData

前端校验规则

权限校验
└── 取消按钮权限
    └── v-auth: 'personalInventory:damage:cancel:popup'
提交拦截校验
└── cancel
    ├── 仅 row.orderStatus == 10 时可操作
    └── 二次确认通过后才允许提交;取消确认则中断提交

后端逻辑

业务流程:查询报损单 -> 校验可取消状态 -> 恢复冻结个人库存 -> 更新单据为取消 -> 取消审批流程

├── 查询报损单 :250-252
│   └── 条件
│       ├── damageOrderNo=orderNo
│       └── isDelete=0
├── 校验可取消状态 :256-257
│   └── 仅允许发起中单据取消
├── 恢复冻结个人库存 :261-275
│   ├── 查询报损明细:PersonalReportDamageOrderDetailService.list :261-263
│   ├── 按明细生成冻结恢复数量 :266-271
│   └── 恢复个人库存冻结:PersonalTransferOrdersService.recoveryPersonStore :274
│       ├── 查询个人库存:PersonalPartStoreService.getById :298
│       └── 回退冻结数量并保存:PersonalPartStoreService.updateById :302-304
├── 更新单据为取消 :277-280
│   ├── 单据状态 -> 已取消
│   ├── 审批状态 -> 已取消
│   └── 保存报损单 :280
└── 取消审批流程 :282-284
    └── 调用流程服务取消实例:FlowClient.cancelProcess :197

后端校验规则

数据存在性校验
├── 校验报损单是否存在:cancelOrder :250-255
│   └── ExceptionCode.EX100007
└── 校验明细关联的个人库存记录是否存在:recoveryPersonStore :298-301
    ├── 生效条件:存在报损明细并执行冻结恢复时逐条校验
    ├── 条件表达式:personalPartStoreService.getById != null
    └── ExceptionCode.EX90123
状态类校验
└── 校验报损单状态仅允许为发起状态:cancelOrder :256-258
    ├── 生效条件:取消报损单时
    ├── 条件表达式:order.getOrderStatus() == StockCheckEnum.PERSONAL_BS_STATUS_START.getCode()
    └── ExceptionCode.EX500028

涉及数据库表