来源:测试 ![](../../../../attachment/images-uuid/2fad07c59b10419b90043bb76c48fe21.png) ![](../../../../attachment/images-uuid/739fa77a5f124f189e1128060e8cd362.png) 产品查询接口 /workorder/filter/product www.baosheng03.com ## 问题一 测试环境发现客户经理提交域名配置需求工单失败:定位为空指针异常,无对应试用单。 ## 问题二 同时测试问为什么试用产品可以提单 ## 问题流程 1、背景为这个产品是非首次开通引入,但是驳回了。 ![](../../../../attachment/images-uuid/836da2af4a7a43c48953bc4d92f37d6a.jpg) 2、非首次开通收到工单的时候 ep_product_chargemode 的 product_state 存储为 3 试用中(验收反馈才会变为 4 开通)。同时会向 product_trial 及其关联表 product_trial_domain 存储域名。 3、当非首次开通退回时未处理 ep_product_chargemode 和 product_trial_domain 4、导致域名配置需求工单在企业对应产品筛查列表中筛查出响应的产品 com.cmcc.cdn.platform.selfservice.controller.NewWorkOrderController#filterProduct ![](../../../../attachment/images-uuid/8d6b13bb5da144629bb05cd895ede635.jpg) ![](../../../../attachment/images-paste/image-20240104094707432.png) ![](../../../../attachment/images-paste/image-20240117165402960.png) ![](../../../../attachment/images-paste/image-20240117170754983.png) 主要日志 ``` 2024-01-17 09:38:52 [ibs-portal:chiqingguo57.cmp11428.openpf:8088,,,,] [http-nio-8088-exec-9] WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper 137 logExceptions - SQL Error: 1048, SQLState: 23000 2024-01-17 09:38:52 [ibs-portal:chiqingguo57.cmp11428.openpf:8088,,,,] [http-nio-8088-exec-9] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper 142 logExceptions - Column 'pre_task_id' cannot be null 2024-01-17 09:38:52 [ibs-portal:chiqingguo57.cmp11428.openpf:8088,,,,] [http-nio-8088-exec-9] ERROR com.cmcc.cdn.platform.selfservice.pojo.TaskProcessTaskPack 78 excTaskAndAlarm - could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement     at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:276) ~[spring-orm-5.3.28.jar!/:5.3.28]     at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:233) ~[spring-orm-5.3.28.jar!/:5.3.28] ``` 问题根源在于入库,后边解决问题,遇到数据库异常要观察表结构。 测试库: ![](../../../../attachment/images-paste/image-20240118102616657.png) 生产库: ![](../../../../attachment/images-paste/image-20240118102644364.png) 更改字段是否为空 sql 语句 ```sql ALTER TABLE sys_task_process MODIFY pre_task_id YOUR_DATA_TYPE NULL; ``` ## 验证点 1、非首次开通,建单后 ep_charge 表不新增数据,域名配置需求工单列表查不到产品与订购,企业管理页面查不到新产品 2、阶段反馈后,下发商用话单正常 3、阶段反馈后,域名管理界面 计费时间显示为当前时间 4、验收反馈后,域名管理界面 计费时间刷新为 bpm 反馈时间 5、验收反馈后,域名配置需求工单列表能够查到新产品与订购,ep_charge 表有新数据,企业管理页面产品状态正常 6、新建域名配置需求工单,客户经理管理员审批后,下发话单正常,话单时间为 bpm 反馈时间,域名管理界面 计费时间为 bpm 反馈时间 非首次开通之前那个问题我也跑了跑。 流程交互上没问题我感觉。我看了看你改的基本上是这两个场景吧。 open_time 小于 5 分钟直接验收 ep_product_chargemode 入库。 大于 5 分钟的未来时间需要通过到时间 BBossOrderJob 执行后 ep_product_chargemode 入库。