package jnpf.base.mapper; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import jnpf.base.entity.VisualAliasEntity; import jnpf.base.model.VisualAliasForm; import jnpf.constant.GenerateConstant; import jnpf.constant.MsgCode; import jnpf.exception.DataException; import jnpf.model.visualJson.TableFields; import jnpf.model.visualJson.TableModel; import jnpf.util.RandomUtil; import jnpf.util.StringUtil; import jnpf.util.UserProvider; import org.apache.commons.collections4.CollectionUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @author JNPF开发平台组 * @version v5.0.0 * @copyright 引迈信息技术有限公司 * @date 2024/4/13 14:03:56 */ public interface VisualAliasMapper extends SuperMapper { default List getList(String visualId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(VisualAliasEntity::getVisualId, visualId); return this.selectList(queryWrapper); } default void aliasSave(String id, VisualAliasForm form) { List tableList = form.getTableList(); List list = this.getList(id); List tableNameList = new ArrayList<>(); List listKeyword = GenerateConstant.getAllKeyWord(); String regex = "[a-zA-Z_][a-zA-Z0-9_]*"; for (TableModel tableModel : tableList) { VisualAliasEntity tableAlias = list.stream().filter(t -> tableModel.getTable().equals(t.getTableName()) && t.getFieldName() == null).findFirst().orElse(null); if (StringUtil.isNotEmpty(tableModel.getAliasName())) { if (tableNameList.contains(tableModel.getAliasName())) { throw new DataException(tableModel.getAliasName() + MsgCode.VS018.get()); } else { tableNameList.add(tableModel.getAliasName()); } if (listKeyword.contains(tableModel.getAliasName().toLowerCase())) { throw new DataException(MsgCode.SYS128.get(tableModel.getTable() + "-" + tableModel.getAliasName())); } if (!tableModel.getAliasName().matches(regex)) { throw new DataException(MsgCode.VS021.get(tableModel.getTable())); } if (twoCharactesUpperCase(tableModel.getAliasName())) { throw new DataException(MsgCode.VS026.get()); } if (tableAlias != null) { tableAlias.setAliasName(tableModel.getAliasName()); } else { tableAlias = new VisualAliasEntity(); tableAlias.setId(RandomUtil.uuId()); tableAlias.setVisualId(id); tableAlias.setTableName(tableModel.getTable()); tableAlias.setAliasName(tableModel.getAliasName()); } this.insertOrUpdate(tableAlias); } else if (tableAlias != null) { this.deleteById(tableAlias); } List fieldNameList = new ArrayList<>(); for (TableFields field : tableModel.getFields()) { VisualAliasEntity fieldAlias = list.stream().filter(t -> tableModel.getTable().equals(t.getTableName()) && t.getFieldName() != null && field.getField().equals(t.getFieldName())).findFirst().orElse(null); if (StringUtil.isNotEmpty(field.getAliasName())) { if (listKeyword.contains(field.getAliasName().toLowerCase())) { throw new DataException(MsgCode.SYS128.get(field.getField() + "-" + field.getAliasName())); } if (!field.getAliasName().matches(regex)) { throw new DataException(MsgCode.VS021.get(field.getField())); } if (twoCharactesUpperCase(field.getAliasName())) { throw new DataException(MsgCode.VS026.get()); } if (fieldNameList.contains(field.getAliasName())) { throw new DataException(field.getAliasName() + MsgCode.VS020.get()); } else { fieldNameList.add(field.getAliasName()); } if (fieldAlias != null) { fieldAlias.setAliasName(field.getAliasName()); } else { fieldAlias = new VisualAliasEntity(); fieldAlias.setId(RandomUtil.uuId()); fieldAlias.setVisualId(id); fieldAlias.setTableName(tableModel.getTable()); fieldAlias.setFieldName(field.getField()); fieldAlias.setAliasName(field.getAliasName()); } this.insertOrUpdate(fieldAlias); } else if (fieldAlias != null) { this.deleteById(fieldAlias); } } } } default void copy(String visualId, String uuid) { List list = this.getList(visualId); if (CollectionUtils.isNotEmpty(list)) { for (VisualAliasEntity entity : list) { VisualAliasEntity copy = BeanUtil.copyProperties(entity, VisualAliasEntity.class); copyEntity(copy, uuid); } } } default void copyEntity(VisualAliasEntity copy, String visualId) { copy.setId(RandomUtil.uuId()); copy.setVisualId(visualId); copy.setCreatorTime(new Date()); copy.setCreatorUserId(UserProvider.getUser().getUserId()); copy.setLastModifyUserId(null); copy.setLastModifyTime(null); this.insert(copy); } default void removeByVisualId(String visualId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(VisualAliasEntity::getVisualId, visualId); this.delete(queryWrapper); } /** * 判断前两字母是否大写 * * @return */ default boolean twoCharactesUpperCase(String name) { if (StringUtil.isEmpty(name)) { return false; } if (name.length() == 1) { return Character.isUpperCase(name.charAt(0)); } if (name.length() >= 2) { return Character.isUpperCase(name.charAt(0)) || Character.isUpperCase(name.charAt(1)); } return false; } }