package jnpf.base.service.impl; import com.google.common.base.CaseFormat; import jnpf.base.entity.VisualAliasEntity; import jnpf.base.entity.VisualdevEntity; import jnpf.base.entity.VisualdevReleaseEntity; import jnpf.base.mapper.VisualAliasMapper; import jnpf.base.mapper.VisualdevMapper; import jnpf.base.mapper.VisualdevReleaseMapper; import jnpf.base.model.VisualAliasForm; import jnpf.base.service.SuperServiceImpl; import jnpf.base.service.VisualAliasService; import jnpf.base.util.common.AliasModel; import jnpf.constant.GenerateConstant; import jnpf.model.visualJson.TableFields; import jnpf.model.visualJson.TableModel; import jnpf.util.JsonUtil; import jnpf.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @author JNPF开发平台组 * @version v5.0.0 * @copyright 引迈信息技术有限公司 * @date 2024/4/13 14:05:48 */ @Service public class VisualAliasServiceImpl extends SuperServiceImpl implements VisualAliasService { @Autowired private VisualdevReleaseMapper visualdevReleaseMapper; @Autowired private VisualdevMapper visualdevMapper; @Override public List getList(String visualId) { return this.baseMapper.getList(visualId); } @Override public List getAliasInfo(String id) { VisualdevReleaseEntity visualdevEntity = visualdevReleaseMapper.selectById(id); List tableModels = JsonUtil.getJsonToList(visualdevEntity.getVisualTables(), TableModel.class); List list = this.getList(id); for (TableModel tableModel : tableModels) { tableModel.setComment(tableModel.getTableName()); VisualAliasEntity tableAlias = list.stream().filter(t -> tableModel.getTable().equals(t.getTableName()) && t.getFieldName() == null).findFirst().orElse(null); if (tableAlias != null) { tableModel.setAliasName(tableAlias.getAliasName()); } List fields = tableModel.getFields(); List newFields = fields.stream().filter(t -> !GenerateConstant.SYS_KEYWORD.contains(t.getField().toLowerCase())).collect(Collectors.toList()); for (TableFields field : newFields) { VisualAliasEntity fieldAlias = list.stream().filter(t -> tableModel.getTable().equals(t.getTableName()) && t.getFieldName() != null && field.getField().equals(t.getFieldName())).findFirst().orElse(null); if (fieldAlias != null) { field.setAliasName(fieldAlias.getAliasName()); } } tableModel.setFields(newFields); } return tableModels; } @Transactional @Override public void aliasSave(String id, VisualAliasForm form) { this.baseMapper.aliasSave(id, form); } @Override public Map getAllFiledsAlias(String id) { Map tableMap = new HashMap<>(); VisualdevReleaseEntity visualdevEntity = visualdevReleaseMapper.selectById(id); List tableModels = JsonUtil.getJsonToList(visualdevEntity.getVisualTables(), TableModel.class); List collect = tableModels.stream().map(TableModel::getTable).collect(Collectors.toList()); //修改时有表不存在发布里补充 VisualdevEntity ve = visualdevMapper.selectById(id); List tableModels2 = StringUtil.isNotEmpty(ve.getVisualTables()) ? JsonUtil.getJsonToList(ve.getVisualTables(), TableModel.class) : Collections.EMPTY_LIST; tableModels.addAll(tableModels2.stream().filter(t -> !collect.contains(t.getTable())).collect(Collectors.toList())); List list = this.getList(id); for (TableModel tableModel : tableModels) { AliasModel aliasModel = new AliasModel(); aliasModel.setTableName(tableModel.getTable()); VisualAliasEntity tableAlias = list.stream().filter(t -> tableModel.getTable().equals(t.getTableName()) && t.getFieldName() == null).findFirst().orElse(null); if (tableAlias != null) { aliasModel.setAliasName(tableAlias.getAliasName()); } else { aliasModel.setAliasName(tableModel.getTable()); } List fields = tableModel.getFields(); Map fieldMap = new HashMap<>(); for (TableFields field : fields) { VisualAliasEntity fieldAlias = list.stream().filter(t -> tableModel.getTable().equals(t.getTableName()) && t.getFieldName() != null && field.getField().equals(t.getFieldName())).findFirst().orElse(null); if (fieldAlias != null) { fieldMap.put(field.getField(), fieldAlias.getAliasName()); } //系统字段-以驼峰形式给别名 else if (GenerateConstant.SYS_KEYWORD.contains(field.getField().toLowerCase())) { String name = field.getField().toLowerCase(); name = name.startsWith("f_") ? name.substring(2) : name; String fieldAliasName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name); fieldMap.put(field.getField(), fieldAliasName); } else { String name = field.getField(); String fieldAliasName = twoToLowerCase(name); fieldMap.put(field.getField(), fieldAliasName); } } aliasModel.setFieldsMap(fieldMap); tableMap.put(tableModel.getTable(), aliasModel); } return tableMap; } @Override public void copy(String visualId, String uuid) { this.baseMapper.copy(visualId, uuid); } @Override public void copyEntity(VisualAliasEntity copy, String visualId) { this.baseMapper.copyEntity(copy, visualId); } @Override public void removeByVisualId(String visualId) { this.baseMapper.removeByVisualId(visualId); } /** * 两字母强制小写前 * * @return */ public String twoToLowerCase(String name) { if (StringUtil.isEmpty(name)) { return name; } name = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name); if (name.length() <= 2) { return name.toLowerCase(); } if (name.length() > 2) { return name.substring(0, 2).toLowerCase() + name.substring(2); } return name; } }