-
#1211
-
[BUG] HRM:管理端「候选人转员工」恒失败——服务端回填 channelId 与 createEmployee 隐藏字段校验互斥(1050100034)
-
[BUG] CRM/ERP:产品删除无引用校验——被业务单据引用的产品可被直接软删,留下悬空引用
-
[BUG] ERP:采购入库单反审批后订单入库进度不回退——inCount 汇总不按审核状态过滤
-
#1245#1247
-
[BUG] BPM:动态表单必填字段可绕过——OA 请假必填项全留空仍可发起成功,脏单审批时 500
-
#1247
-
CRM:修改回款(改金额)保存成功,但操作日志没有这次修改的记录
-
[ENHANCE]
-
…500(ISSUE-001)- #1223 #1223
-
[FIX] 框架:@EnableAsync 显式 proxyTargetClass=true,修 IM 写操作 getSelf() NoSuchBean 全量 500(ISSUE-001)
-
[ENHANCE] 商城:商品 SKU 五个金额字段补接口层下限校验(>=0)
-
#1219
-
[FIX] CRM:回款计划创建查最大期次改单表查询,修 Unknown column 't.contract_id'(A6)
-
getContractById 原 executeBefore=true:模板在方法执行前解析, #receivable/#receivablePlan 等 LogRecordContext 变量此时尚未绑定(方法 内部末尾才 putVariable),取值为 null 抛 SpelEvaluationException EL1007E(2026-09-21 23:50:39 实抓:LogRecordInterceptor:75 log record parse before function exception)。函数只用于日志展示合同名、无前置对比 需求,改后置相取值(与 getAdminUserById 同相,其 #clue 上下文变量后置相 解析正常)。 同修 CRM_RECEIVABLE_UPDATE_SUCCESS 模板变量名:updateReceivable 绑定的 是 oldReceivable 而非 receivable,原写法后置相仍会空引用。
-
接口发起动态表单(formType=10 流程表单)流程时,必填字段未填也能 code=0 发起成功(前后端均漏校验,A51),建成变量缺失的脏实例。 在管理端 API 发起入口(VO 路径)补动态表单必填校验:按表单字段 定义(兼容 field/key 两种字段标识、数组/对象两种 required 标记) 逐一检查变量,缺失即抛新增业务错误 1_009_004_009。 仅校验 VO 路径:内部业务链路(DTO 路径,如 OA 请假只传部分变量) 不经过本校验,避免误伤。
-
原A39修复把 selectListByOrderId 过滤成只查已审核,导致同方法内的超订单数量校验 (inCount>count 抛错)也只算已审核——未审核的超额入库单不再触发拦截,ERP-22 复验时 超额入库被误放行(回归)。现拆成两条口径:inCount 展示用已审核(反审核自然回退), 超量校验用新增 selectListAllByOrderId 查全部入库单,二者互不影响。
-
原删除链路只校验产品存在,不校验引用即软删:被引用产品删除后, 引用方明细(product_id)成悬空引用,订单/合同明细数据不一致 (2026-09-21 23:50:36 实抓:被销售单明细引用产品 DELETE 仍 code=0 放行, 载体 CRM-07/ERP-01 翻用例后预期拒绝)。 - CRM:crm_contract_product / crm_business_product 存在未删引用即拒绝, 新增错误码 1_020_008_003/004。 - ERP:采购订单/入库/退货 + 销售订单/出库/退货 共 6 张业务明细表存在 未删引用即拒绝(库存表为派生数据不纳入),新增错误码 1_030_500_002~007。 引用计数走 @TableLogic 软删过滤,已删明细不阻断。
-
商品/SKU 允许填负价格并保存成功(A19):ProductSkuSaveReqVO 的 price/marketPrice/costPrice/firstBrokeragePrice/secondBrokeragePrice 均无下限校验,管理端前端 el-input-number min=0 恰好掩盖后端缺口, 绕过前端(直接接口/H5/第三方)即可写入负价。 给五个价格字段补 @Min(0),后端校验层统一拒绝非正价格(SPU 创建/ 更新经 skus 的 @Valid 级联一并生效)。
-
采购入库单数量填 0 或负数也能保存(count 仅 @NotNull、无 >0 约束), 数量为 0 的入库单审核时 updateCountIncrement 生成空 SET 的 UPDATE, MyBatis-Plus 直接抛异常 500(A23)。 两层修复: 1. 建单/改单入口:items 补 @Valid 级联 + count 补 @DecimalMin(0, inclusive=false),0/负数量建单返回参数校验错误; 2. 审核链路:updateCountIncrement 对 count=0 直接跳过(无库存增量), 历史已落库的 0 数量单审核不再 500。
-
MPJLambdaWrapperX 会给列拼表别名前缀 t.,但 BaseMapper.selectOne 生成的 FROM 不带别名,单表查询直接 SQL 语法错误(2026-09-21 23:50:39 实抓堆栈: CrmReceivablePlanMapper.selectMaxPeriodByContractId:27 → createReceivablePlan:65 → 500 系统异常)。同文件 selectCount+MPJ 走 MPJ 自带 FROM 别名不受影响, 仅 selectOne 路径改 LambdaQueryWrapperX。
-
…未显示」互斥(1050100034)(A41)