在做询价功能时,遇到的问题
1.备件和供应商是多对多的关系
2.关系图
3.因此我们在做添加的时候需要做很多的验证,下面的是里面比较难的一个验证
// 备件和供应商的关系是多对多的关系
//批量查询-根据多个备件查询备件供应商对应的信息
List<SpareSupplierVo> supplierVos= inquiryMapper.queryBySpareList(stringList);//通过备件code集合查出下面都有哪些供应商
for (String code:stringList){
//供应商集合
List<String> supplierCodeList = new ArrayList<>();
for (SpareSupplierVo spareSupplierVo:supplierVos){
if (code.equals(spareSupplierVo.getSpareCode())){
supplierCodeList.add(spareSupplierVo.getSupplierCode());
}
}
//和前端传过来的供应商判断是否存在交集。
boolean b = judgeIntersection(supplierCodeList, supplierCodes);
if (!b){
return ResultBuildVo.error("当前备件"+code+"没有可以生产它的供应商,它可以被"+supplierCodeList+"生产,请重新选择!");
}
}
return ResultBuildVo.success();
}
public boolean judgeIntersection(List<String> list1,List<String> list2){
boolean flag = false;
// 使用retainAll会改变list1的值,所以写一个替代
List<String> origin = new ArrayList<>();
origin.addAll(list1);
origin.retainAll(list2);
// 有交集
if(origin.size()>0){
flag = true;
}
return flag;
}