| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- package jnpf.base.util;
- import cn.hutool.core.bean.BeanUtil;
- import jnpf.constant.MsgCode;
- import jnpf.database.model.dbfield.DbFieldModel;
- import jnpf.database.model.dbfield.base.DbFieldModelBase;
- import jnpf.database.model.dbtable.DbTableFieldModel;
- import jnpf.database.source.DbBase;
- import jnpf.exception.WorkFlowException;
- import jnpf.model.visualJson.TableModel;
- import jnpf.util.TableFeildsEnum;
- import org.apache.commons.collections4.CollectionUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import java.util.List;
- @Component
- public class ConcurrencyUtils {
- @Autowired
- private ServiceBaseUtil serviceUtil;
- /**
- * 根据枚举获取字段对象
- *
- * @param
- * @return
- * @copyright 引迈信息技术有限公司
- * @date 2023/1/14
- */
- public static DbFieldModel getDbFieldModel(TableFeildsEnum tableFeildsEnum, boolean isUpperCase, boolean isLowerCase) {
- DbFieldModel dbFieldModel = new DbFieldModel();
- BeanUtil.copyProperties(tableFeildsEnum, dbFieldModel);
- String field = dbFieldModel.getField();
- field = isUpperCase ? field.toUpperCase() : isLowerCase ? field.toLowerCase() : field;
- dbFieldModel.setField(field);
- dbFieldModel.setIsPrimaryKey(tableFeildsEnum.getPrimaryKey());
- //设置租户字段默认值
- if (TableFeildsEnum.TENANTID.equals(tableFeildsEnum) || TableFeildsEnum.FLOWSTATE.equals(tableFeildsEnum)) {
- dbFieldModel.setDefaultValue("0");
- }
- return dbFieldModel;
- }
- /**
- * 创建锁字段
- *
- * @throws Exception
- */
- public void createVersion(List<DbFieldModelBase> fieldList, String type, List<DbFieldModel> addList) {
- addFeild(TableFeildsEnum.VERSION, fieldList, type, addList);
- }
- /**
- * 创建flowTaskId
- *
- * @throws Exception
- */
- public void createFlowTaskId(List<DbFieldModelBase> fieldList, String type, List<DbFieldModel> addList) {
- addFeild(TableFeildsEnum.FLOWTASKID, fieldList, type, addList);
- }
- /**
- * 创建createFlowState
- *
- * @throws Exception
- */
- public void createFlowState(List<DbFieldModelBase> fieldList, String type, List<DbFieldModel> addList) {
- addFeild(TableFeildsEnum.FLOWSTATE, fieldList, type, addList);
- }
- /**
- * 创建租户id
- *
- * @throws Exception
- */
- public void createTenantId(List<DbFieldModelBase> fieldList, String type, List<DbFieldModel> addList) {
- addFeild(TableFeildsEnum.TENANTID, fieldList, type, addList);
- }
- /**
- * 创建删除字段
- *
- * @copyright 引迈信息技术有限公司
- * @date 2023/1/14
- */
- public void creDeleteMark(List<DbFieldModelBase> fieldList, String type, List<DbFieldModel> addList) {
- addFeild(TableFeildsEnum.DELETEMARK, fieldList, type, addList);
- addFeild(TableFeildsEnum.DELETETIME, fieldList, type, addList);
- addFeild(TableFeildsEnum.DELETEUSERID, fieldList, type, addList);
- }
- /**
- * 创建流程引擎id字段
- *
- * @param
- * @return
- * @copyright 引迈信息技术有限公司
- * @date 2023/1/7
- */
- public void createFlowEngine(List<DbFieldModelBase> fieldList, String type, List<DbFieldModel> addList) {
- addFeild(TableFeildsEnum.FLOWID, fieldList, type, addList);
- }
- /**
- * 新增字段通用方法
- *
- * @param tableFeildsEnum
- * @throws Exception
- */
- private void addFeild(TableFeildsEnum tableFeildsEnum, List<DbFieldModelBase> fieldList, String type, List<DbFieldModel> fieldOneList) {
- boolean isUpperCase = (DbBase.DM.equals(type) || DbBase.ORACLE.equals(type));
- boolean isLowerCase = (DbBase.POSTGRE_SQL.equals(type) || DbBase.KINGBASE_ES.equals(type));
- DbFieldModelBase dbFieldModel = fieldList.stream().filter(f -> f.getField().equalsIgnoreCase(tableFeildsEnum.getField())).findFirst().orElse(null);
- boolean hasVersion = dbFieldModel != null;
- if (!hasVersion) {
- DbFieldModel dbTableModel1 = this.getDbFieldModel(tableFeildsEnum, isUpperCase, isLowerCase);
- fieldOneList.add(dbTableModel1);
- }
- }
- /**
- * 判断表是否是自增id
- *
- * @param primaryKeyPolicy
- * @param dbLinkId
- * @param tableList
- * @return
- * @throws Exception
- */
- public boolean checkAutoIncrement(int primaryKeyPolicy, String dbLinkId, List<TableModel> tableList) throws Exception {
- boolean isIncre = primaryKeyPolicy == 2;
- String strategy = primaryKeyPolicy == 1 ? "[雪花ID]" : "[自增长id]";
- for (TableModel tableModel : tableList) {
- List<DbFieldModel> data = serviceUtil.getFieldList(dbLinkId, tableModel.getTable());
- DbFieldModel dbFieldModel = data.stream().filter(DbFieldModel::getIsPrimaryKey).findFirst().orElse(null);
- if (dbFieldModel == null) {
- throw new WorkFlowException(MsgCode.FM011.get(tableModel.getTable()));
- }
- if (!isIncre == (dbFieldModel.getIsAutoIncrement() != null && dbFieldModel.getIsAutoIncrement())) {
- throw new WorkFlowException(MsgCode.FM012.get(strategy, tableModel.getTable()));
- }
- }
- return true;
- }
- /**
- * 执行字段添加
- * @param table
- * @param linkId
- * @param addList
- * @throws Exception
- */
- public void addFileds(String table, String linkId, List<DbFieldModel> addList) throws Exception {
- if (CollectionUtils.isNotEmpty(addList)) {
- DbTableFieldModel dbTableFieldModel = new DbTableFieldModel();
- dbTableFieldModel.setDbFieldModelList(addList);
- dbTableFieldModel.setUpdateNewTable(table);
- dbTableFieldModel.setUpdateOldTable(table);
- dbTableFieldModel.setDbLinkId(linkId);
- serviceUtil.addField(dbTableFieldModel);
- }
- }
- }
|