批量分配网页将当前所有网页删除时的处理方法
修改测试任务将测试所包含的网页全部去掉提交空的网页List时存在bug,完成bug修复并测试正常;
/**
* 完成批量的分配网页
* @param principalId
* @param projectionId
*/
@Transactional(propagation=Propagation.REQUIRED, readOnly = false)
public void batchCompleteDeliveryPage(Long testId, Long[] pageId){
//获取该测试员者本测试任务已拥有的测试网页列表
List<TestToPage> pages = this.getNotOverTestPage(testId);
List<Long> idList= new ArrayList<Long>();//测试员原有的网页
List<Long> newIdList= new ArrayList<Long>();//测试员现分配的网页
String timeStr=DateFormatUtils.format(Calendar.getInstance(), "yyyy-MM-dd HH:mm:ss");
for(TestToPage page:pages){
idList.add(page.getPage().getId());
}
if(pageId!=null && pageId.length>0){[雨林木风1]
for(int i=0;i< pageId.length();i++){
newIdList.add(pageId[i]);
}
}
//从现有网页List移除保持不变的,得出需要被移除的网页
List<Long> removeIdList = ListUtil.removeAll(idList, newIdList);//需要被移除的网页
//从现有的分配网页里面移除测试任务原有的网页,得出需要添加入测试任务的网页
List<Long> addIdList = ListUtil.removeAll(newIdList, idList);//需要被添加的网页
Test test = testerDAOImpl.getTestInforById(testId);
//移除所有需要被移除的网页
for(TestToPage tpage:pages){
if(removeIdList.contains(tpage.getPage().getId())){
Page page=testerDAOImpl.getPage(tpage.getPage().getId());
page.setStatus(0);
page.setUpdatedTime(timeStr);
testerDAOImpl.updatePage(page);
testerDAOImpl.deleteTestPage(tpage);
test.setUpdatedTime(timeStr);
}
}
//添加所有需要别分配的网页
for(Long id: addIdList){
Page page=testerDAOImpl.getPage(id);
page.setStatus(1);
test.setUpdatedTime(timeStr);
TestToPage tpage=new TestToPage();
tpage.setPage(page);
tpage.setTest(test);
testerDAOImpl.addTestPage(tpage);
}
testerDAOImpl.updateTest(test);
}
[雨林木风1]判断新添加的网页列表是否为空,若为空则无需进行下一步操作,否则将其一一放入测试员现分配的网页列表中。