昨天刚刚解决了困扰好久的bug,今天果然又迎来了新的bug:
又是在生产环境下的问题,好吧,只能硬着头皮上了!
看了一下好像跟一开始第一个任务一样,都是在带宽型批量校验模板上的问题,可以直接找到上次的源文件进行分析。
定位问题
做了好久的逻辑业务资源,忽然找不到批量受理的入口了。。还是没有做好笔记的锅!
然后打开了OrderVerifyImportProcessor.java这个文件,找到对应的位置:
加上了如下的判断语句:
好了,接下来要如何测试呢?又是在生产环境下的问题。
对的,又要从数据库入手,让我们先来看看是如何跟数据库打交道的:
List<Map<String,Object>> moList = queryDeviceBySql(value); //因为账号的数据权限没有光缆专业,所以改为sql查询 private List<Map<String,Object>> queryDeviceBySql(Object value) throws Exception{ if(value==null) return null; String sql = "SELECT (SELECT S.OBD_LEVEL FROM CE_DEVICE_OBD_CCS S WHERE S.DEVICE_ID = D.ID) OBD_LEVEL," + "D.* FROM CM_DEVICE D WHERE D.SHARDING_ID = ? AND D.NAME = ?"; return metaService.query(sql, new Object[]{SecurityUtils.getCurrentShardingId(),value}); }
让我们用这条查询语句去数据库看看,在控制台可以看到是sw_sz0923数据库,在pom.xml文件中查询账户密码,进入数据库,查询对应语句:
SELECT (SELECT S.OBD_LEVEL FROM CE_DEVICE_OBD_CCS S WHERE S.DEVICE_ID = D.ID) OBD_LEVEL, D.* FROM CM_DEVICE D WHERE D.SHARDING_ID = '755' AND D.NAME = '香港VDICHINALIMITED深圳代表处用户机房/99-02';
可以看到查询到一条记录,既然想代码走我写的那个逻辑,就必须是查询到多条语句,好的方向对了,现在来准备向CM_DEVICE表中插入相同NAME,ID,Sharding_ID的一条记录。
然后在eclipse中重新设置断点,看看有没有在我写的代码中断,检测出多条记录。
在这里浪费了好多时间,数据库修改完毕之后一定要重启数据库,重启服务器,重启浏览器并清空缓存 !!!!
全部重启之后,导出结果文件,在Excel文件中出现了我写的结果。
ok,问题完成。
svn更新上传代码,在pms网站提交补丁: