dangsn
2024-12-03 d0ae279ff3b83358d1c07f4481a041c4ad335026
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java
@@ -1,13 +1,16 @@
package com.vci.starter.revision.service;
import com.vci.starter.revision.bo.TreeWrapperOptions;
import com.vci.starter.revision.model.*;
import com.vci.starter.revision.provider.*;
import com.vci.starter.revision.model.ReleasedObjDO;
import com.vci.starter.revision.model.RevisionInfo;
import com.vci.starter.revision.provider.CommonAnnotationProvider;
import com.vci.starter.revision.provider.CommonLifeCycleProvider;
import com.vci.starter.revision.provider.CommonRevisionRuleProvider;
import com.vci.starter.web.annotation.Column;
import com.vci.starter.web.annotation.VciBtmType;
import com.vci.starter.web.annotation.VciColumnDefinition;
import com.vci.starter.web.constant.RevisionConstant;
import com.vci.starter.web.constant.RegExpConstant;
import com.vci.starter.web.constant.RevisionConstant;
import com.vci.starter.web.enumpck.DataSecretEnum;
import com.vci.starter.web.enumpck.UserSecretEnum;
import com.vci.starter.web.exception.VciBaseException;
@@ -18,7 +21,6 @@
import com.vci.starter.web.pagemodel.Tree;
import com.vci.starter.web.pagemodel.TreeQueryObject;
import com.vci.starter.web.service.VciSecretServiceI;
import com.vci.starter.web.util.BeanUtil;
import com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.starter.web.util.VciDateUtil;
@@ -30,6 +32,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.lang.reflect.Field;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -195,8 +198,8 @@
        baseModel.setLastModifyTime(currentDate);
        //
        VciBtmType vciBtmType = getBtmTypeAnnotation(baseModel);
        if(StringUtils.isBlank(baseModel.getBtmname()) && vciBtmType!=null){
            baseModel.setBtmname(vciBtmType.name());
        if(StringUtils.isBlank(baseModel.getBtmName()) && vciBtmType!=null){
            baseModel.setBtmName(vciBtmType.name());
        }
        //获取包含了column注解的属性,因为不包含这个注解的时候是默认nullable为true,unique为false
        List<Field> hasColumnAnnoFields = filterHasColumnAnnoFields(baseModel);
@@ -284,9 +287,9 @@
        VciBaseUtil.alertNotNull(dto,"数据传输对象",baseModel,"数据库中的数据对象");
        //前端可能不会把默认的所有属性传递过来,所以先从数据库中的数据对象拷贝到临时的对象上
        BaseModel tempModel = new BaseModel();
        BeanUtil.convert(baseModel,tempModel);
        BeanUtil.convert(dto,baseModel);
        //BeanUtil.convert(tempModel,baseModel);
        BeanUtilForVCI.convert(baseModel,tempModel);
        BeanUtilForVCI.convert(dto,baseModel);
        //BeanUtilForVCI.convert(tempModel,baseModel);
        //不知道为啥,突然BeanUtil.convert(tempModel,baseModel);不好使了
        BeanUtilForVCI.copyPropertiesIgnoreCase(tempModel,baseModel);
        //为了防止前端没有传递默认的属性,所以得先拷贝到baseModel中,然后dto拷贝一次后,再把数据库中拷贝回来。
@@ -344,11 +347,11 @@
        wrapperForAddLink(linkModel);
        VciBaseUtil.alertNotNull(fromModel,"链接类型from端",toModel,"链接类型to端");
        linkModel.setFoid(fromModel.getOid());
        linkModel.setFbtmname(fromModel.getBtmname());
        linkModel.setFbtmname(fromModel.getBtmName());
        linkModel.setFnameoid(fromModel.getNameOid());
        linkModel.setToid(toModel.getOid());
        linkModel.setTbtmname(toModel.getBtmname());
        linkModel.setTbtmname(toModel.getBtmName());
        linkModel.setTnameoid(toModel.getNameOid());
        linkModel.setTrevisionoid(toModel.getRevisionOid());
    }
@@ -418,7 +421,7 @@
            //必须管理版本才会执行发布
            VciBaseUtil.alertNotNull( baseModel.getOid(), "数据对象的主键", baseModel.getNameOid(), "对象的主键",baseModel.getRevisionOid(),"版本的主键");
            ReleasedObjDO releasedObjDO = new ReleasedObjDO();
            BeanUtil.convert(baseModel,releasedObjDO);
            BeanUtilForVCI.convert(baseModel,releasedObjDO);
            if(StringUtils.isBlank(releasedObjDO.getBtmName())){
                releasedObjDO.setBtmName(btmType.name());
            }
@@ -516,7 +519,7 @@
        if(StringUtils.isBlank(baseModel.getOwner())) {
            baseModel.setOwner(baseModel.getCreator());
        }
        baseModel.setBtmname(btmName);
        baseModel.setBtmName(btmName);
    }
    /**
@@ -590,12 +593,12 @@
        setBtmName(newModel);
        VciBaseUtil.alertNotNull(newModel.getCopyFromVersion(),"引用老版本的主键");
        if (revisionMapper != null) {
            RevisionInfo oldRevision = revisionMapper.selectByOid(newModel.getCopyFromVersion(),VciBaseUtil.getTableName(newModel.getBtmname()));
            RevisionInfo oldRevision = revisionMapper.selectByOid(newModel.getCopyFromVersion(),VciBaseUtil.getTableName(newModel.getBtmName()));
            if(oldRevision == null || StringUtils.isBlank(oldRevision.getOid()) ){
                throw new VciBaseException("老版本在数据库中不存在");
            }
            BaseModel oldModel = new BaseModel();
            BeanUtil.convert(oldRevision,oldModel);
            BeanUtilForVCI.convert(oldRevision,oldModel);
            wrapperRevisionModel(oldModel,newModel);
        }else{
            throw new VciBaseException("没有初始化版本规则的数据操作层,请开发人员检查Maven是否引用");
@@ -610,12 +613,12 @@
    public void wrapperVersionModel(BaseModel newModel) throws VciBaseException{
        VciBaseUtil.alertNotNull(newModel,"新版次的数据对象",newModel.getCopyFromVersion(),"引用老版次的主键");
        if (revisionMapper != null) {
            RevisionInfo oldRevision = revisionMapper.selectByOid(newModel.getCopyFromVersion(),VciBaseUtil.getTableName(newModel.getBtmname()));
            RevisionInfo oldRevision = revisionMapper.selectByOid(newModel.getCopyFromVersion(),VciBaseUtil.getTableName(newModel.getBtmName()));
            if(oldRevision == null || StringUtils.isBlank(oldRevision.getOid()) ){
                throw new VciBaseException("老版次数据在数据库中不存在");
            }
            BaseModel oldModel = new BaseModel();
            BeanUtil.convert(oldRevision,oldModel);
            BeanUtilForVCI.convert(oldRevision,oldModel);
            wrapperVersionModel(oldModel,newModel);
        }else{
            throw new VciBaseException("没有初始化版本规则的数据操作层,请开发人员检查Maven是否引用");
@@ -984,7 +987,7 @@
                } else {
                    //没有这个,那就直接用oldModel去获取版本号
                    lastRevision = new RevisionInfo();
                    BeanUtil.convert(oldModel, lastRevision);
                    BeanUtilForVCI.convert(oldModel, lastRevision);
                }
                newModel.setRevisionRule(lastRevision.getRevisionRule());
                newModel.setVersionRule(lastRevision.getVersionRule());
@@ -1050,7 +1053,7 @@
                } else {
                    //没有这个,那就直接用oldModel去获取版本号
                    lastRevision = new RevisionInfo();
                    BeanUtil.convert(oldModel, lastRevision);
                    BeanUtilForVCI.convert(oldModel, lastRevision);
                }
                //版次号,就数字和字母两种
                if(oldModel.getVersionValue().matches(RegExpConstant.LETTER)){
@@ -1075,12 +1078,12 @@
     */
    private void setBtmName(BaseModel baseModel){
        VciBaseUtil.alertNotNull(baseModel,"数据对象");
        if(StringUtils.isBlank(baseModel.getBtmname())){
        if(StringUtils.isBlank(baseModel.getBtmName())){
            VciBtmType btmType = getBtmTypeAnnotation(baseModel);
            if(btmType == null){
                throw new VciBaseException("没有VciBtmType注解,无法判断业务类型");
            }
            baseModel.setBtmname(btmType.name());
            baseModel.setBtmName(btmType.name());
        }
    }
@@ -1091,8 +1094,8 @@
    public void saveOldModel(BaseModel oldModel){
        setBtmName(oldModel);
        if (revisionMapper != null) {
            revisionMapper.resetLastRevision(oldModel.getNameOid(),VciBaseUtil.getTableName(oldModel.getBtmname()));
            revisionMapper.resetOldRevision(oldModel.getOid(),VciBaseUtil.getTableName(oldModel.getBtmname()));
            revisionMapper.resetLastRevision(oldModel.getNameOid(),VciBaseUtil.getTableName(oldModel.getBtmName()));
            revisionMapper.resetOldRevision(oldModel.getOid(),VciBaseUtil.getTableName(oldModel.getBtmName()));
        }else{
            throw new VciBaseException("没有初始化版本规则的数据操作层,请开发人员检查maven是否引用");
        }
@@ -1105,8 +1108,8 @@
    public void saveOldModelVersion(BaseModel oldModel){
        setBtmName(oldModel);
        if (revisionMapper != null) {
            revisionMapper.resetLastVersion(oldModel.getNameOid(),oldModel.getRevisionOid(),VciBaseUtil.getTableName(oldModel.getBtmname()));
            revisionMapper.resetOldVersion(oldModel.getOid(),VciBaseUtil.getTableName(oldModel.getBtmname()));
            revisionMapper.resetLastVersion(oldModel.getNameOid(),oldModel.getRevisionOid(),VciBaseUtil.getTableName(oldModel.getBtmName()));
            revisionMapper.resetOldVersion(oldModel.getOid(),VciBaseUtil.getTableName(oldModel.getBtmName()));
        }else{
            throw new VciBaseException("没有初始化版本规则的数据操作层,请开发人员检查maven是否引用");
        }