|
|
@ -1,6 +1,5 @@ |
|
|
package com.xujie.sys.modules.grid.service.impl; |
|
|
package com.xujie.sys.modules.grid.service.impl; |
|
|
|
|
|
|
|
|
import com.xujie.sys.datasource.annotation.DataSource; |
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
|
import com.xujie.sys.modules.grid.dao.GridTableUserDao; |
|
|
import com.xujie.sys.modules.grid.dao.GridTableUserDao; |
|
|
import com.xujie.sys.modules.grid.entity.GridTableUser; |
|
|
import com.xujie.sys.modules.grid.entity.GridTableUser; |
|
|
@ -10,7 +9,12 @@ import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
|
|
import java.util.Comparator; |
|
|
|
|
|
import java.util.HashSet; |
|
|
|
|
|
import java.util.ArrayList; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Set; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
@Service("gridTableUser") |
|
|
@Service("gridTableUser") |
|
|
|
|
|
|
|
|
@ -20,31 +24,23 @@ public class GridTableUserServiceImpl extends ServiceImpl<GridTableUserDao, Grid |
|
|
private GridTableUserDao gridTableUserDao; |
|
|
private GridTableUserDao gridTableUserDao; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional |
|
|
public void saveGridTableUserList(List<GridTableUser> gridTableUsers){ |
|
|
public void saveGridTableUserList(List<GridTableUser> gridTableUsers){ |
|
|
if (gridTableUsers.size()>0) { |
|
|
|
|
|
GridTableUser gridTableUser = gridTableUsers.get(0); |
|
|
|
|
|
List<GridTableUser> gridTableUserList = lambdaQuery() |
|
|
|
|
|
.eq(GridTableUser::getUserId,gridTableUser.getUserId()) |
|
|
|
|
|
.eq(GridTableUser::getFunctionId, gridTableUser.getFunctionId()) |
|
|
|
|
|
.eq(GridTableUser::getTableId,gridTableUser.getTableId()) |
|
|
|
|
|
.orderByAsc(GridTableUser::getSortLv).list(); |
|
|
|
|
|
if (gridTableUserList.size()>0){ // 修改 |
|
|
|
|
|
for (GridTableUser tableUser : gridTableUsers) { |
|
|
|
|
|
boolean update = lambdaUpdate().eq(GridTableUser::getUserId, tableUser.getUserId()) |
|
|
|
|
|
.eq(GridTableUser::getFunctionId, tableUser.getFunctionId()) |
|
|
|
|
|
.eq(GridTableUser::getTableId, tableUser.getTableId()) |
|
|
|
|
|
.eq(GridTableUser::getColumnProp, tableUser.getColumnProp()) |
|
|
|
|
|
.update(tableUser); |
|
|
|
|
|
System.out.println(update); |
|
|
|
|
|
|
|
|
if (gridTableUsers == null || gridTableUsers.isEmpty()) { |
|
|
|
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
}else { // 保存 |
|
|
|
|
|
|
|
|
GridTableUser first = gridTableUsers.get(0); |
|
|
|
|
|
// 用“整组替换”代替逐行 update,减少锁竞争和死锁概率 |
|
|
|
|
|
lambdaUpdate() |
|
|
|
|
|
.eq(GridTableUser::getUserId, first.getUserId()) |
|
|
|
|
|
.eq(GridTableUser::getFunctionId, first.getFunctionId()) |
|
|
|
|
|
.eq(GridTableUser::getTableId, first.getTableId()) |
|
|
|
|
|
.remove(); |
|
|
|
|
|
|
|
|
|
|
|
gridTableUsers.sort(Comparator.comparing(GridTableUser::getSortLv, Comparator.nullsLast(Integer::compareTo))); |
|
|
this.saveBatch(gridTableUsers); |
|
|
this.saveBatch(gridTableUsers); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public List<GridTableUser> getTableUserList(GridTableUser gridTableUser) { |
|
|
public List<GridTableUser> getTableUserList(GridTableUser gridTableUser) { |
|
|
@ -79,20 +75,96 @@ public class GridTableUserServiceImpl extends ServiceImpl<GridTableUserDao, Grid |
|
|
@Transactional |
|
|
@Transactional |
|
|
public List<GridTableUser> getTableUserListLanguage(GridTableUserQuery gridTableUserQuery) { |
|
|
public List<GridTableUser> getTableUserListLanguage(GridTableUserQuery gridTableUserQuery) { |
|
|
List<GridTableUser> result = gridTableUserDao.getTableUserListLanguage(gridTableUserQuery); |
|
|
List<GridTableUser> result = gridTableUserDao.getTableUserListLanguage(gridTableUserQuery); |
|
|
|
|
|
List<GridTableUser> defaultColumns = gridTableUserDao.getTableUserListLanguageDefault(gridTableUserQuery); |
|
|
if(result.size()==0){ |
|
|
if(result.size()==0){ |
|
|
result=gridTableUserDao.getTableUserListLanguageDefault(gridTableUserQuery); |
|
|
|
|
|
if(result.size()>0){ |
|
|
|
|
|
saveGridTableUserList(result); |
|
|
|
|
|
|
|
|
if(defaultColumns.size()>0){ |
|
|
|
|
|
saveGridTableUserList(defaultColumns); |
|
|
} |
|
|
} |
|
|
|
|
|
return defaultColumns; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (defaultColumns.size() == 0) { |
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// @Override |
|
|
|
|
|
// public List<GridTableUser> getTableUserListLanguage(GridTableUserQuery gridTableUserQuery) { |
|
|
|
|
|
// return gridTableUserDao.getTableUserListLanguage(gridTableUserQuery); |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
Set<String> existingColumnProps = new HashSet<>(); |
|
|
|
|
|
Integer maxSortLv = 0; |
|
|
|
|
|
for (GridTableUser gridTableUser : result) { |
|
|
|
|
|
existingColumnProps.add(gridTableUser.getColumnProp()); |
|
|
|
|
|
if (gridTableUser.getSortLv() != null && gridTableUser.getSortLv() > maxSortLv) { |
|
|
|
|
|
maxSortLv = gridTableUser.getSortLv(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int appendSortLv = maxSortLv; |
|
|
|
|
|
List<GridTableUser> appendColumns = new ArrayList<>(); |
|
|
|
|
|
for (GridTableUser defaultColumn : defaultColumns) { |
|
|
|
|
|
if (existingColumnProps.contains(defaultColumn.getColumnProp())) { |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
GridTableUser appendColumn = new GridTableUser(); |
|
|
|
|
|
appendColumn.setUserId(gridTableUserQuery.getUserId()); |
|
|
|
|
|
appendColumn.setFunctionId(defaultColumn.getFunctionId()); |
|
|
|
|
|
appendColumn.setTableId(defaultColumn.getTableId()); |
|
|
|
|
|
appendColumn.setTableName(defaultColumn.getTableName()); |
|
|
|
|
|
appendColumn.setColumnProp(defaultColumn.getColumnProp()); |
|
|
|
|
|
appendColumn.setColumnLabel(defaultColumn.getColumnLabel()); |
|
|
|
|
|
// 新增补丁列默认可被展示控制(不锁死为隐藏) |
|
|
|
|
|
appendColumn.setColumnHidden(false); |
|
|
|
|
|
appendColumn.setColumnImage(defaultColumn.getColumnImage()); |
|
|
|
|
|
appendColumn.setColumnSortable(defaultColumn.getColumnSortable()); |
|
|
|
|
|
appendColumn.setColumnWidth(defaultColumn.getColumnWidth()); |
|
|
|
|
|
appendColumn.setFormat(defaultColumn.getFormat()); |
|
|
|
|
|
appendSortLv++; |
|
|
|
|
|
appendColumn.setSortLv(appendSortLv); |
|
|
|
|
|
// 旧用户自动补齐的新列默认隐藏,避免直接打乱用户既有视图 |
|
|
|
|
|
appendColumn.setStatus(false); |
|
|
|
|
|
appendColumn.setFixed(defaultColumn.getFixed()); |
|
|
|
|
|
appendColumn.setSerialNumber(defaultColumn.getSerialNumber()); |
|
|
|
|
|
appendColumn.setColumnType(defaultColumn.getColumnType()); |
|
|
|
|
|
appendColumn.setAlign(defaultColumn.getAlign()); |
|
|
|
|
|
appendColumn.setHeaderAlign(defaultColumn.getHeaderAlign()); |
|
|
|
|
|
result.add(appendColumn); |
|
|
|
|
|
appendColumns.add(appendColumn); |
|
|
|
|
|
existingColumnProps.add(defaultColumn.getColumnProp()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!appendColumns.isEmpty()) { |
|
|
|
|
|
saveMissingGridTableColumns(appendColumns); |
|
|
|
|
|
} |
|
|
|
|
|
result.sort(Comparator.comparing(GridTableUser::getSortLv, Comparator.nullsLast(Integer::compareTo))); |
|
|
|
|
|
return result; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void saveMissingGridTableColumns(List<GridTableUser> appendColumns) { |
|
|
|
|
|
if (appendColumns == null || appendColumns.isEmpty()) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
GridTableUser first = appendColumns.get(0); |
|
|
|
|
|
List<String> appendColumnProps = appendColumns.stream() |
|
|
|
|
|
.map(GridTableUser::getColumnProp) |
|
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
|
|
List<GridTableUser> exists = lambdaQuery() |
|
|
|
|
|
.eq(GridTableUser::getUserId, first.getUserId()) |
|
|
|
|
|
.eq(GridTableUser::getFunctionId, first.getFunctionId()) |
|
|
|
|
|
.eq(GridTableUser::getTableId, first.getTableId()) |
|
|
|
|
|
.in(GridTableUser::getColumnProp, appendColumnProps) |
|
|
|
|
|
.list(); |
|
|
|
|
|
|
|
|
|
|
|
Set<String> existsColumnPropSet = exists.stream() |
|
|
|
|
|
.map(GridTableUser::getColumnProp) |
|
|
|
|
|
.collect(Collectors.toSet()); |
|
|
|
|
|
|
|
|
|
|
|
List<GridTableUser> toInsert = appendColumns.stream() |
|
|
|
|
|
.filter(item -> !existsColumnPropSet.contains(item.getColumnProp())) |
|
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
|
|
if (!toInsert.isEmpty()) { |
|
|
|
|
|
toInsert.sort(Comparator.comparing(GridTableUser::getSortLv, Comparator.nullsLast(Integer::compareTo))); |
|
|
|
|
|
this.saveBatch(toInsert); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public void removerDefault(GridTableUserQuery gridTableUser) { |
|
|
public void removerDefault(GridTableUserQuery gridTableUser) { |
|
|
|