Browse Source

新加字段也可以显示

master
han\hanst 4 days ago
parent
commit
aadb01d892
  1. 134
      src/main/java/com/xujie/sys/modules/grid/service/impl/GridTableUserServiceImpl.java
  2. 19
      src/main/resources/mapper/pms/EamProjectMapper.xml

134
src/main/java/com/xujie/sys/modules/grid/service/impl/GridTableUserServiceImpl.java

@ -1,6 +1,5 @@
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.xujie.sys.modules.grid.dao.GridTableUserDao;
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.transaction.annotation.Transactional;
import java.util.Comparator;
import java.util.HashSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service("gridTableUser")
@ -20,29 +24,21 @@ public class GridTableUserServiceImpl extends ServiceImpl<GridTableUserDao, Grid
private GridTableUserDao gridTableUserDao;
@Transactional
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);
}
}else { // 保存
this.saveBatch(gridTableUsers);
}
if (gridTableUsers == null || gridTableUsers.isEmpty()) {
return;
}
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);
}
@ -78,21 +74,97 @@ public class GridTableUserServiceImpl extends ServiceImpl<GridTableUserDao, Grid
@Override
@Transactional
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){
result=gridTableUserDao.getTableUserListLanguageDefault(gridTableUserQuery);
if(result.size()>0){
saveGridTableUserList(result);
if(defaultColumns.size()>0){
saveGridTableUserList(defaultColumns);
}
return defaultColumns;
}
if (defaultColumns.size() == 0) {
return result;
}
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;
}
// @Override
// public List<GridTableUser> getTableUserListLanguage(GridTableUserQuery gridTableUserQuery) {
// return gridTableUserDao.getTableUserListLanguage(gridTableUserQuery);
// }
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
public void removerDefault(GridTableUserQuery gridTableUser) {

19
src/main/resources/mapper/pms/EamProjectMapper.xml

@ -425,8 +425,11 @@
<select id="eamProjectPartSearch" resultType="com.xujie.sys.modules.pms.data.EamProjectPartInfoData">
SELECT
a.*,
isnull(a.sqeme_engineer, b.sqeme_engineer) as sqeme_engineer,
isnull(a.sqeee_engineer, b.sqeee_engineer) as sqeee_engineer,
isnull(a.qc_engineer, b.qc_engineer) as qcEngineer,
isnull(a.pe_engineer, b.pe_engineer) as peEngineer,
isnull(a.ee_engineer, b.ee_engineer) as eeEngineer,
isnull(a.sqeme_engineer, b.sqeme_engineer) as sqemeEngineer,
isnull(a.sqeee_engineer, b.sqeee_engineer) as sqeeeEngineer,
a.id as projectPartId,
b.project_no,
b.project_desc,
@ -530,8 +533,11 @@
<select id="queryEamProjectPart" resultType="com.xujie.sys.modules.pms.data.EamProjectPartInfoData">
SELECT
a.*,
isnull(a.sqeme_engineer, b.sqeme_engineer) as sqeme_engineer,
isnull(a.sqeee_engineer, b.sqeee_engineer) as sqeee_engineer,
isnull(a.qc_engineer, b.qc_engineer) as qcEngineer,
isnull(a.pe_engineer, b.pe_engineer) as peEngineer,
isnull(a.ee_engineer, b.ee_engineer) as eeEngineer,
isnull(a.sqeme_engineer, b.sqeme_engineer) as sqemeEngineer,
isnull(a.sqeee_engineer, b.sqeee_engineer) as sqeeeEngineer,
a.id as projectPartId,
b.project_no,
b.project_desc,
@ -723,7 +729,10 @@
SET test_part_no = #{testPartNo},part_desc = #{partDesc},update_date = GETDATE(),update_by = #{updateBy},
build_date = #{buildDate}, priority = #{priority}, project_category = #{projectCategory}, need_date =
#{needDate}, project_manager = #{projectManager}, project_owner = #{projectOwner}, engineer = #{engineer}, c_quality_engineer1 = #{cQualityEngineer1}, c_quality_engineer2 = #{cQualityEngineer2}, c_quality_engineer3 = #{cQualityEngineer3}, c_quality_engineer4 = #{cQualityEngineer4}, c_quality_engineer5 = #{cQualityEngineer5}, c_quality_engineer6 = #{cQualityEngineer6}, c_manufacture_engineer = #{cManufactureEngineer},doc_engineer = #{docEngineer},doc_engineer2 = #{docEngineer2},ipqc_hard_tag = #{ipqcHardTag},
c_quality_engineer7 = #{cQualityEngineer7},qc_engineer = #{qcEngineer},pe_engineer = #{peEngineer},ee_engineer = #{eeEngineer},
c_quality_engineer7 = #{cQualityEngineer7},
qc_engineer = CASE WHEN #{qcEngineer} IS NOT NULL THEN #{qcEngineer} ELSE qc_engineer END,
pe_engineer = CASE WHEN #{peEngineer} IS NOT NULL THEN #{peEngineer} ELSE pe_engineer END,
ee_engineer = CASE WHEN #{eeEngineer} IS NOT NULL THEN #{eeEngineer} ELSE ee_engineer END,
sqeme_engineer = CASE WHEN #{sqemeEngineer} IS NOT NULL THEN #{sqemeEngineer} ELSE sqeme_engineer END,
sqeee_engineer = CASE WHEN #{sqeeeEngineer} IS NOT NULL THEN #{sqeeeEngineer} ELSE sqeee_engineer END,remark = #{remark},
status = CASE WHEN #{status} IS NOT NULL THEN #{status} ELSE status END,customer_no = #{customerNo},

Loading…
Cancel
Save