轴承清洗测试及问题修改
问题1
遇到的问题:
- 轴承座号存在父节点和子节点,在调用之前写的方法的时候取得是轴承座号的父节点,但是根据这个父节点无法在清洗记录里查找到数据,一个父节点可能对应的是两个子节点或者四个父节点。
解决问题思路:
- 在装配记录中轴承座号是以父节点存在的,但清洗的时候是根据
classify
获取到轴承座号对应的子节点来进行清洗记录的创建,所以可以把调用的方法放在循环创建子节点对应的方法中,循环在cleanfrequency
创建或者新增子节点的数据。
解决措施:

- 红框1:根据父节点查找到
classify
中对应的子节点,然后进行清洗记录的新建
- 红框2:调用
CopyCleanout
方法获取子节点进行在cleanfrequency
表中的创建或更新
- 红框3:原来是想要根据子节点获取到对应的父节点,再调用
CopyCleanout
方法,但是牵扯到轴承更换的问题。轴承更换是在清洗记录里对子节点的轴承进行更换,后续要根据是否更换(isreplace)来对清洗次数和使用里程进行关操作,所以这部分代码不适用。
问题2
遇到的问题:
- 轴承更换之后根据需求要将此轴承对应的清洗记录清空,将该轴承对应的使用里程清空。
解决问题思路:
- 在轴承更换之后,将
cleanfrequency
中该轴承对应的清洗记录次数清零,轴承的使用里程稍微麻烦一点,在轴承清洗提示的时候轴承的使用里程是从assembly
中取出来,然后赋值给明细表,清洗记录里边的轴承使用里程是有明细表获取到的,所以在轴承更换之后要清空的是assembly
中的使用里程。
- 首先在
cleanout
中有一个detailid
,根据这个id可以在明细表中查询到对应的数据,然后明细表中有一个assemblyid
字段,根据这个字段又可以在assembly
中查询到对应的数据,最后进行对使用里程的清零操作就可以了。
解决措施:

补充:
- 最初要修改的使用里程错认为明细表里的使用里程,整理了一下根据现有信息从明细表里查询数据的方法。
1.
AssemblyDetailS assemblyDetailS = new AssemblyDetailS();
assemblyDetailS.setId(cleanout.getDetailid());
List<AssemblyDetail> assemblydlist = assemblyDetailS.fetchList(assemblyDetailDao, AssemblyDetail.class);
AssemblyDetail assemblyDetail = null;
if(assemblydlist!=null && assemblydlist.size()==1) {
assemblyDetail = assemblydlist.get(0);
}
if(assemblyDetail!=null) {
assemblyDetail.setUsemileage(String.valueOf(0));
}
2.
List<AssemblyDetail> assemblydlist = assemblyDetailDao.search(cleanout.getDetailid());
AssemblyDetail assemblyDetail = null;
if(assemblydlist!=null && assemblydlist.size()==1) {
assemblyDetail = assemblydlist.get(0);
}
if(assemblyDetail!=null) {
assemblyDetail.setUsemileage(String.valueOf(0));
}
3.
AssemblyDetail findshuju2 = assemblyDetailDao.findOne(cleanout.getDetailid());
问题3
遇到的问题:
- 怎么样获取轴承更换之后轴承的清洗次数?在轴承更换之后,清洗次数以及清零。但我写的sql语句是根据轴承座号获取对应清洗记录里的数据有多少条,再给
cleanfrequency
中的清洗次数赋值,但是在轴承更换之后,之前的清洗数据还会存在记录表里。
解决问题思路:
- 新建的这张数据库表就是要对创建的数据进行一个操作,从一开始调用
CopyCleanout
方法,若表中没有该轴承座号对应的数据,那么久新创建一条,如果已有该轴承座号对应的数据那么在进行判断轴承是否更换过,若更换过则给清洗次数和使用里程清零,若没有则直接对查出来的数据进行清洗次数的加1。
解决措施:
cleanfrequencyService.CopyCleanout(bearingnumber,cleanout);

- 调用的方法这里除了要传一个轴承座号之外,还需要传一个
isreplace
字段,所以增加了一个入参,而在清洗操作是调用的方法只需要传一个轴承座号,所以另一个参数置空。
- 红框2是初始化数据用到的方法,一旦要清洗的轴承座号数据在
cleanfrequency
中存在,那么只需要在清洗操作调用红框1方法是给cleantimes
增1。