| | |
| | | package com.vci.starter.revision.service; |
| | | |
| | | import com.sun.org.apache.xpath.internal.operations.Bool; |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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); |
| | |
| | | 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拷贝一次后,再把数据库中拷贝回来。 |
| | |
| | | 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()); |
| | | } |
| | |
| | | //必须管理版本才会执行发布 |
| | | 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()); |
| | | } |
| | |
| | | if(StringUtils.isBlank(baseModel.getOwner())) { |
| | | baseModel.setOwner(baseModel.getCreator()); |
| | | } |
| | | baseModel.setBtmname(btmName); |
| | | baseModel.setBtmName(btmName); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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是否引用"); |
| | |
| | | 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是否引用"); |
| | |
| | | } else { |
| | | //没有这个,那就直接用oldModel去获取版本号 |
| | | lastRevision = new RevisionInfo(); |
| | | BeanUtil.convert(oldModel, lastRevision); |
| | | BeanUtilForVCI.convert(oldModel, lastRevision); |
| | | } |
| | | newModel.setRevisionRule(lastRevision.getRevisionRule()); |
| | | newModel.setVersionRule(lastRevision.getVersionRule()); |
| | |
| | | } else { |
| | | //没有这个,那就直接用oldModel去获取版本号 |
| | | lastRevision = new RevisionInfo(); |
| | | BeanUtil.convert(oldModel, lastRevision); |
| | | BeanUtilForVCI.convert(oldModel, lastRevision); |
| | | } |
| | | //版次号,就数字和字母两种 |
| | | if(oldModel.getVersionValue().matches(RegExpConstant.LETTER)){ |
| | |
| | | */ |
| | | 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()); |
| | | } |
| | | } |
| | | |
| | |
| | | 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是否引用"); |
| | | } |
| | |
| | | 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是否引用"); |
| | | } |