1、更新List:
在数据库中保留 新List 中的原有属性,删除已经不存在的
@Override
public boolean setPublicSubject(List<Integer> resList, List<Integer> publicList,
Integer systemGradeId) {
Integer periodId = subjectMapper.getPeriodByGrade(systemGradeId);
//选取结果去重
List<Integer> tempa = new ArrayList<>(resList).stream().distinct().collect(Collectors.toList());
List<Integer> tempb =
new ArrayList<>(publicList).stream().distinct().collect(Collectors.toList());
boolean flag = false;
// 插入新的公共科目
tempa.removeAll(publicList);
if (tempa.isEmpty() || this.saveBatch(new ArrayList<SubjectGradeEntity>() {
{
tempa.forEach(i -> {
SubjectGradeEntity s = new SubjectGradeEntity();
s.setPeriodId(periodId);
s.setSubjectId(i);
s.setSystemGradeId(systemGradeId);
add(s);
});
}
})) {
tempb.removeAll(resList);
// 删除配置过程中取消的原有公共科目
if (tempb.isEmpty() || subjectMapper.deleteBatchIds(tempb)) {
flag = true;
}
}
return flag;
}
2、通过字符串获取列表:
public R setSubjectOfVolumne(VolumneConfigVO entity) {
String resString = entity.getResString();
// resString格式为 1-1,2,3,4;2-1,2;3-1,2,3 --分别对应付父级目录-子级目录
String[] periodStr = resString.split(";");
for (String i : periodStr) {
// 获取父级
String[] subjectAndPeriod = i.split("-");
String periodId = subjectAndPeriod[0];
entity.setPeriodId(Integer.valueOf(periodId));
// 获取子级列表
String[] list = subjectAndPeriod[1].split(",");
List<Integer> resList = new ArrayList<>();
for (String s : list) {
// 得到最新List
resList.add(Integer.valueOf(s));
}
// 去重
entity.setResList(resList.stream().distinct().collect(Collectors.toList()));
QueryWrapper<VolumnePeriodsubjectEntity> q = new QueryWrapper<VolumnePeriodsubjectEntity>();
q.eq("period_id", entity.getPeriodId());
q.eq("volumne_id", entity.getVolumneId());
List<Integer