ludc
2023-10-24 20ae109f6e2faabc057e70b0dbae13570c1020cd
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
@@ -16,7 +16,6 @@
 */
package com.vci.ubcs.code.service.impl;
import com.alibaba.nacos.api.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -32,6 +31,9 @@
import com.vci.ubcs.code.service.ICodeClstemplateService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.common.constant.CommonConstant;
import com.vci.ubcs.flow.core.entity.ProcessTemplate;
import com.vci.ubcs.flow.core.feign.IFlowClient;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
@@ -41,10 +43,12 @@
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.context.annotation.Lazy;
@@ -89,7 +93,7 @@
   private CodeClassifyTemplateButtonServiceImpl codeTempbuttonServiceImpl;
   @Autowired(required = false)
   private ICodeClassifyProcessTempService codeClsflowtempServiceImpl;
//   @Autowired(required = false)
   //   @Autowired(required = false)
//   private CodeClsflowtempMapper codeClsflowtempMapper;
   @Autowired(required = false)
   private CodeTemplatePhaseMapper codeTempphaseMapper;
@@ -105,6 +109,8 @@
   private CodeClassifyTemplateMapper codeClassifyTemplateMapper;
   @Autowired(required = false)
   private CodePhaseAttrServiceImpl codePhaseattrServiceImpl;
   @Autowired(required = false)
   private IFlowClient iFlowClient;
   @Override
   public IPage<CodeClassifyTemplateVO> selectPlCodeClstemplatePage(IPage<CodeClassifyTemplateVO> page, CodeClassifyTemplateVO plCodeClstemplate) {
@@ -457,16 +463,24 @@
      CodeClassifyTemplate codeClassifyTemplateDO = baseMapper.selectById(oid);
      //停用的时候,验证模板是否为已发布
      if(CodeClassifyTemplateLC.DISABLED.getValue().equals(lcStatus)){
//         CodeClstemplateEntity codeClassifyTemplateDO = baseMapper.selectById(oid);
         if(!CodeClassifyTemplateLC.RELEASED.getValue().equals(codeClassifyTemplateDO.getLcStatus())){
            return R.fail("模板未启用,不能停用!");
         }
      }
      if(lcStatus.equals(CodeClassifyTemplateLC.RELEASED.getValue())){
         QueryWrapper<CodeClassify> classifyQueryWrapper = new QueryWrapper<>();
         classifyQueryWrapper.eq("oid",codeClassifyTemplateDO.getCodeClassifyOid());
         classifyQueryWrapper.eq("lcstatus","Enabled");
         List<CodeClassify> codeClassifyList = codeClassifyService.selectByWrapper(classifyQueryWrapper);
         if(codeClassifyList.size()==0){
            return R.fail("查询到所属分类未启用,请先进行启用!!!");
         }
      }
      //启用、停用
      codeClassifyTemplateDO.setLcStatus(lcStatus);
      int u = baseMapper.updateById(codeClassifyTemplateDO);
//      codeClassifyTemplateMapper.updateLcStatus(oid,lcStatus);
      return u==0?R.fail("修改失败!"):R.success("修改成功");
   }
@@ -487,73 +501,63 @@
      }
      //需要新增的升级模板
//      ClientBusinessObject clientBusinessObject_template = boService.selectCBOByOid(codeClassifyDTO.getOid(), "codeclstemplate");
      CodeClassifyTemplate codeCls_template = baseMapper.selectById(templateOldOid);
      CodeClassifyTemplate codeCls_template_insert = new CodeClassifyTemplate();
//         ClientBusinessObject clientBusinessObject_template_insert = null;
//      try {
//         clientBusinessObject_template_insert = clientBusinessObjectOperation.reviseBusinessObject(clientBusinessObject_template, "");
         codeCls_template_insert.setOid(VciBaseUtil.getPk());
         codeCls_template_insert.setRevisionOid(VciBaseUtil.getPk());
         codeCls_template_insert.setNameOid(codeCls_template.getNameOid());
         codeCls_template_insert.setBtmname(codeCls_template.getBtmname());
         codeCls_template_insert.setLastR(String.valueOf(1));
         codeCls_template_insert.setFirstR(String.valueOf(0));
         codeCls_template_insert.setFirstV(String.valueOf(1));
         codeCls_template_insert.setLastV(String.valueOf(1));
         codeCls_template_insert.setCreator(AuthUtil.getUser().getUserName());
         codeCls_template_insert.setCreateTime(new Date());
         codeCls_template_insert.setLastModifier(AuthUtil.getUser().getUserName());
         codeCls_template_insert.setLastModifyTime(new Date());
         codeCls_template_insert.setRevisionRule(codeCls_template.getRevisionRule());
         codeCls_template_insert.setVersionRule(codeCls_template.getVersionRule());
         Map rvObj = baseMapper.getNextRevision(codeCls_template.getNameOid());
         codeCls_template_insert.setRevisionSeq(Integer.parseInt(rvObj.get("REVISIONSEQ").toString()));
         codeCls_template_insert.setRevisionValue(rvObj.get("REVISIONVAL").toString());
//         VersionValueObject versionObj = this.getVersionValue(item.verRuleName);
         codeCls_template_insert.setVersionSeq(Integer.parseInt(rvObj.get("VERSIONSEQ").toString()));
         codeCls_template_insert.setVersionValue(rvObj.get("VERSIONVAL").toString());
         codeCls_template_insert.setLctid(codeCls_template.getLctid());
         codeCls_template_insert.setLcStatus("Editing");
         codeCls_template_insert.setId(codeCls_template.getId());
         codeCls_template_insert.setName(codeCls_template.getName());
         codeCls_template_insert.setDescription(codeCls_template.getDescription());
         codeCls_template_insert.setOwner(AuthUtil.getUser().getUserName());
//         codeCls_template_insert.setCheckinBy(userName);
         codeCls_template_insert.setCopyFromVersion(codeCls_template.getOid());
//      }catch (VCIError e){
//         e.printStackTrace();
//         logger.error("===============>分类模板-升版复制出错oid: "+templateOldOid+",mes"+e.error_message);
//         return BaseResult.error("升版出错");
//      }
      codeCls_template_insert.setOid(VciBaseUtil.getPk());
      codeCls_template_insert.setRevisionOid(VciBaseUtil.getPk());
      codeCls_template_insert.setNameOid(codeCls_template.getNameOid());
      codeCls_template_insert.setBtmname(codeCls_template.getBtmname());
      codeCls_template_insert.setLastR(String.valueOf(1));
      codeCls_template_insert.setFirstR(String.valueOf(0));
      codeCls_template_insert.setFirstV(String.valueOf(1));
      codeCls_template_insert.setLastV(String.valueOf(1));
//      codeCls_template_insert.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
      codeCls_template_insert.setCreator(String.valueOf(AuthUtil.getUser().getAccount()));
      codeCls_template_insert.setCreateTime(new Date());
      codeCls_template_insert.setTs(new Date());
      // codeCls_template_insert.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
      codeCls_template_insert.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
      codeCls_template_insert.setLastModifyTime(new Date());
      codeCls_template_insert.setRevisionRule(codeCls_template.getRevisionRule());
      codeCls_template_insert.setVersionRule(codeCls_template.getVersionRule());
      codeCls_template_insert.setBtmTypeId(codeCls_template.getBtmTypeId());
      codeCls_template_insert.setBtmTypeName(codeCls_template.getBtmTypeName());
      codeCls_template_insert.setCodeClassifyOid(codeCls_template.getCodeClassifyOid());
      codeCls_template_insert.setCodeClassifyOidName(codeCls_template.getCodeClassifyOidName());
      Map rvObj = baseMapper.getNextRevision(codeCls_template.getNameOid());
      codeCls_template_insert.setRevisionSeq(Integer.parseInt(rvObj.get("REVISIONSEQ").toString()));
      codeCls_template_insert.setRevisionValue(rvObj.get("REVISIONVAL").toString());
      codeCls_template_insert.setVersionSeq(Integer.parseInt(rvObj.get("VERSIONSEQ").toString()));
      codeCls_template_insert.setVersionValue(rvObj.get("VERSIONVAL").toString());
      codeCls_template_insert.setLctid(codeCls_template.getLctid());
      codeCls_template_insert.setLcStatus("Editing");
      codeCls_template_insert.setId(codeCls_template.getId());
      codeCls_template_insert.setName(codeCls_template.getName());
      codeCls_template_insert.setDescription(codeCls_template.getDescription());
      codeCls_template_insert.setOwner(String.valueOf(AuthUtil.getUser().getUserId()));
      codeCls_template_insert.setCopyFromVersion(codeCls_template.getOid());
      int insertCount = baseMapper.insert(codeCls_template_insert);
//      CodeClstemplateEntity codeClassifyTemplateDO = new CodeClstemplateEntity();
//      BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyDTO,codeClassifyTemplateDO);
//      WebUtil.copyValueToObjectFromCbos(clientBusinessObject_template_insert,codeClassifyTemplateDO);
      //modify by weidy@2022-2-27
      //升版后不能使用insert方法,因为那个永远是新增一条数据,
      //上方先从dto转给do,然后把升版的初始化的属性拷贝给do,最后再从do拷贝到cbo上
//      WebUtil.copyValueToCboFromObj(clientBusinessObject_template_insert,codeClassifyTemplateDO);
      codeCls_template.setLastR("0");
      codeCls_template.setLastModifyTime(new Date());
      // codeCls_template.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
      codeCls_template.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
      baseMapper.updateById(codeCls_template);
      //升版过后的模板oid
      String templateNewOid = codeCls_template_insert.getOid();
      //需要复制的模板属性
      //查询老模板下边的所有属性,赋值新模板oid
//      VciQueryWrapperForDO codeClassifyTemplateAttrQuery = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
//      codeClassifyTemplateAttrQuery.addQueryMap("classifyTemplateOid",templateOldOid);
      Map<String,Object> condition = new HashMap<>(1);
      condition.put("classifyTemplateOid",templateOldOid);
      List<CodeClassifyTemplateAttr> codeClstempattrEntities = codeClstempattrMapper.selectByMap(condition);
//      List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrDaoI.selectByWrapper(codeClassifyTemplateAttrQuery);
      for (CodeClassifyTemplateAttr codeClassifyTemplateAttrDO :codeClstempattrEntities){
//         String attrOid = VciBaseUtil.getPk();
         codeClassifyTemplateAttrDO.setOid(null);
         codeClassifyTemplateAttrDO.setOid(VciBaseUtil.getPk());
         codeClassifyTemplateAttrDO.setClassifyTemplateOid(templateNewOid);
         codeClstempattrMapper.insert(codeClassifyTemplateAttrDO);
      }
      //复制模板流程
      List<CodeClassifyProcessTemp>  codeClassifyProcessTempDOList = copyTemplateProcess(templateOldOid,templateNewOid);
      List<ProcessTemplate>  codeClassifyProcessTempDOList = copyTemplateProcess(templateOldOid,templateNewOid);
      //复制模板阶段,阶段属性
      Map phase_attrMap = copyTemplatePhase_attr(templateOldOid,templateNewOid);
@@ -563,54 +567,23 @@
      //复制模板按钮
      List<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOList = copyTemplateButton(templateOldOid,templateNewOid);
      //一起保存数据
//      WebUtil.setPersistence(false);//不执行保存
      //保存模板——
//      BatchCBO batchCBOTemplate = new BatchCBO();
      //batchCBO保存的时候没有能够自动update源数据的isLastR
      //batchCBOTemplate.getCreateCbos().add(clientBusinessObject_template_insert);
      //使用saveRevisionBuisnessObject可以解决这个问题,这里先暂时执行两次保存
//      try {
//         clientBusinessObjectOperation.saveRevisionBuinessObject(clientBusinessObject_template_insert);
//      } catch (VCIError vciError) {
//         throw new VciBaseException("升版保存出错了",new String[0],vciError);
//      }
      // end --modify by lihang @20220408
      //codeClassifyTemplateMapper.insert(codeClassifyTemplateDO);
      //保存模板属性
//      if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOList)){
//         BatchCBO batchCBOTemplateAttr = codeClassifyTemplateAttrDaoI.batchInsert(codeClassifyTemplateAttrDOList);
//         batchCBOTemplate.copyFromOther(batchCBOTemplateAttr);
//      }
//
//      //保存模板流程
//      if(!CollectionUtils.isEmpty(codeClassifyProcessTempDOList)) {
//         BatchCBO batchCBOTemplateProcessAttr = codeClassifyProcessTempDaoI.batchInsert(codeClassifyProcessTempDOList);
//         batchCBOTemplate.copyFromOther(batchCBOTemplateProcessAttr);
//      }
//      //模板阶段
//      if(!CollectionUtils.isEmpty(codeClassifyPhaseDOList)) {
//         BatchCBO batchCBOTemplatePhaseAttr = codeTemplatePhaseDaoI.batchInsert(codeClassifyPhaseDOList);
//         batchCBOTemplate.copyFromOther(batchCBOTemplatePhaseAttr);
//      }
//
//      //模板阶段属性
//      if(!CollectionUtils.isEmpty(codePhaseAttrDOList)) {
//         BatchCBO batchCBOTemplatePhaseAttrAttr = codePhaseAttrDaoI.batchInsert(codePhaseAttrDOList);
//         batchCBOTemplate.copyFromOther(batchCBOTemplatePhaseAttrAttr);
//      }
//
//      //模板按钮
//      if(!CollectionUtils.isEmpty(codeClassifyTemplateButtonDOList)) {
//         BatchCBO batchCBOTemplateButtonAttr = codeClassifyTemplateButtonDaoI.batchInsert(codeClassifyTemplateButtonDOList);
//         batchCBOTemplate.copyFromOther(batchCBOTemplateButtonAttr);
//      }
//
//      WebUtil.setPersistence(true);//执行保存
//
//      boService.persistenceBatch(batchCBOTemplate);//一起执行保存
      //保存模板流程
      if(!CollectionUtils.isEmpty(codeClassifyProcessTempDOList)) {
         iFlowClient.processBatchSave(codeClassifyProcessTempDOList);
      }
      //模板阶段
      if(!CollectionUtils.isEmpty(codeClassifyPhaseDOList)) {
         codeTempphaseServiceImpl.saveBatch(codeClassifyPhaseDOList);
      }
//      return BaseResult.success("升版成功!");
      //模板阶段属性
      if(!CollectionUtils.isEmpty(codePhaseAttrDOList)) {
         codePhaseattrServiceImpl.saveBatch(codePhaseAttrDOList);
      }
//      //模板按钮
      if(!CollectionUtils.isEmpty(codeClassifyTemplateButtonDOList)) {
         codeTempbuttonServiceImpl.saveBatch(codeClassifyTemplateButtonDOList);
      }
      return R.success("升版成功!");
   }
@@ -623,6 +596,13 @@
      String newOid = VciBaseUtil.getPk();
      //分类oid,复制过来的新的分类oid
      String codeClassifyOid = codeClassifyDTO.getCodeclassifyoid();
      QueryWrapper<CodeClassifyTemplate> wrapper = new QueryWrapper<>();
      wrapper.eq("CODECLASSIFYOID",codeClassifyOid);
      Long aLong = baseMapper.selectCount(wrapper);
      if(aLong > 0){
         return R.fail("该分类下已有子模版,无法进行复制操作,仅能进行升版操作!");
      }
      //复制模板
      CodeClassifyTemplate codeClassifyTemplateDO_old = baseMapper.selectById(oldOid);//旧模板
@@ -648,14 +628,19 @@
      codeClassifyTemplateDO_old.setDescription(codeClassifyDTO.getDescription());//描述
      codeClassifyTemplateDO_old.setCodeClassifyOid(codeClassifyOid);//分类oid
      codeClassifyTemplateDO_old.setOid(newOid);
      List<CodeClassifyTemplate> codeClassifyTemplateDOList = new ArrayList<CodeClassifyTemplate>();
      codeClassifyTemplateDO_old.setTs(new Date());
      codeClassifyTemplateDO_old.setCreateTime(new Date());
      codeClassifyTemplateDO_old.setLastModifyTime(new Date());
      // 复制的模板生命周期改为编辑中
      codeClassifyDO_old.setLcStatus(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING);
      List<CodeClassifyTemplate> codeClassifyTemplateDOList = new ArrayList<>();
      codeClassifyTemplateDOList.add(codeClassifyTemplateDO_old);
      //复制模板属性
      List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOList = copyTemplateAttr(oldOid,newOid);
      //复制模板流程
      List<CodeClassifyProcessTemp> codeClassifyProcessTempDOList = copyTemplateProcess(oldOid,newOid);
      List<ProcessTemplate> codeClassifyProcessTempDOList = copyTemplateProcess(oldOid,newOid);
      //复制模板阶段,阶段属性
      Map  phase_attrMap = copyTemplatePhase_attr(oldOid,newOid);
@@ -669,7 +654,7 @@
//      baseMapper.insert(codeClassifyTemplateDOList);
      this.saveBatch(codeClassifyTemplateDOList);
      codeTempbuttonServiceImpl.saveBatch(codeClassifyTemplateButtonDOList);
      codeClsflowtempServiceImpl.saveBatch(codeClassifyProcessTempDOList);
      iFlowClient.processBatchSave(codeClassifyProcessTempDOList);
      codeClstempattrService.saveBatch(codeClassifyTemplateAttrDOList);
      codeTempphaseServiceImpl.saveBatch(codeClassifyPhaseDOList);
      codePhaseattrServiceImpl.saveBatch(codePhaseAttrDOList);
@@ -732,22 +717,17 @@
   /**
    * 复制模板流程
    */
   public List<CodeClassifyProcessTemp> copyTemplateProcess(String templateOldOid,String templateNewOid){
//      VciQueryWrapperForDO processWrapper = new VciQueryWrapperForDO(CodeClassifyProcessTempDO.class);
//      processWrapper.addQueryMap("classifyTemplateOid",templateOldOid);
//      Map<String,Object> condition = new HashMap<>(1);
//      condition.put("classifyTemplateOid",templateOldOid);
      QueryWrapper<CodeClassifyProcessTemp> wrapper = new QueryWrapper<>();
      wrapper.eq("classifyTemplateOid",templateOldOid);
      List<CodeClassifyProcessTemp> codeClsflowtempEntities = codeClsflowtempServiceImpl.list(wrapper);
//      List<CodeClassifyProcessTempDO>  codeClassifyProcessTempDOList = codeClassifyProcessTempDaoI.selectByWrapper(processWrapper);//要保存的新的模板流程
      for (CodeClassifyProcessTemp codeClassifyProcessTempDO:codeClsflowtempEntities){
//         String newOid = VciBaseUtil.getPk();
         codeClassifyProcessTempDO.setOid(null);
         //codeClassifyProcessTempDO.setCodeClassifyOid(templateNewOid);
         codeClassifyProcessTempDO.setClassifyTemplateOid(templateNewOid);
//         codeClsflowtempMapper.insert(codeClassifyProcessTempDO);
   public List<ProcessTemplate> copyTemplateProcess(String templateOldOid,String templateNewOid){
      Map<String,Object> wrapperMap = new HashMap();
      wrapperMap.put("template_id",templateOldOid);
      R<List<ProcessTemplate>> listR = iFlowClient.selectByWrapper(wrapperMap);
      if(!listR.isSuccess()){
         throw new VciBaseException("查询模板流程时出错,请重试!");
      }
      List<ProcessTemplate> codeClsflowtempEntities = listR.getData();
      for (ProcessTemplate codeClassifyProcessTempDO:codeClsflowtempEntities){
         codeClassifyProcessTempDO.setId(null);
         codeClassifyProcessTempDO.setTemplateId(templateNewOid);
         //modify by lihang - @20220406 设置模板主键位置出错,导致升版的模板中的流程是空的。
      }
      return codeClsflowtempEntities;
@@ -855,6 +835,7 @@
    * @return 显示对象
    * @throws VciBaseException 查询出错的时候会抛出异常
    */
   @Override
   public DataGrid<CodeClassifyTemplateVO> gridCodeClassifyTemplate(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
      DataGrid<CodeClassifyTemplateVO> dataGrid=new DataGrid<CodeClassifyTemplateVO>();
      //没有传分类id,不执行查询逻辑,直接返回
@@ -888,6 +869,7 @@
      if(pageHelper.getLimit() != -1){
         query.setSize(pageHelper.getLimit());
         query.setCurrent(pageHelper.getPage());
         query.setDescs("versionValue");
      }
//      List<CodeClstemplateVO> doList = codeClstemplateMapper.selectPlCodeClstemplatePage(Condition.getPage(query), codeClstemplateVO);
@@ -916,6 +898,13 @@
   @Override
   public R<CodeClassifyTemplateVO> addSave(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
      VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"需要添加的数据对象");
      QueryWrapper<CodeClassifyTemplate> wrapper = new QueryWrapper<>();
      wrapper.eq("CODECLASSIFYOID",codeClassifyTemplateDTO.getCodeclassifyoid());
      Long aLong = baseMapper.selectCount(wrapper);
      if(aLong > 0){
         return R.fail("该分类下已有子模版,无法新增,仅能进行升版操作!");
      }
      //将DTO转换为DO
      CodeClassifyTemplate codeClassifyTemplateDO = new CodeClassifyTemplate();
      BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDTO,codeClassifyTemplateDO);
@@ -925,16 +914,17 @@
      //所有分类都没有业务类型,返回提示
      if(codeClassifyDOList.size()==0){
         return R.fail("添加模板添加失败,分类和上级分类都没有关联业务类型!");
         return R.fail(DATA_OID_NOT_EXIST);
      }
      //设置btmtypeid和name
      CodeClassify codeClassifyDO = codeClassifyDOList.get(0);
      CodeClassify codeClassifyDO = codeClassifyDOList.stream().filter(s -> StringUtils.isNotBlank(s.getBtmTypeId())).findFirst().get();
      codeClassifyTemplateDO.setBtmTypeId(codeClassifyDO.getBtmTypeId());
      codeClassifyTemplateDO.setNameOid(VciBaseUtil.getPk());
      codeClassifyTemplateDO.setBtmTypeName(codeClassifyDO.getBtmTypeName());
      codeClassifyTemplateDO.setLcStatus(FRAMEWORK_RELEASE_EDITING);
      codeClassifyTemplateDO.setTs(new Date());
      codeClassifyTemplateDO.setOwner(AuthUtil.getUser().getUserName());
      codeClassifyTemplateDO.setOwner(String.valueOf(AuthUtil.getUser().getUserId()));
      codeClassifyTemplateDO.setLctid("codeClsTempLc");
      codeClassifyTemplateDO.setVersionValue("1");
      codeClassifyTemplateDO.setVersionSeq(1);
@@ -943,8 +933,10 @@
      codeClassifyTemplateDO.setVersionRule("0");
      codeClassifyTemplateDO.setRevisionRule("numberversionrule");
      codeClassifyTemplateDO.setLastModifyTime(new Date());
      codeClassifyTemplateDO.setLastModifier(AuthUtil.getUser().getUserName());
      codeClassifyTemplateDO.setCreator(AuthUtil.getUser().getUserName());
//      codeClassifyTemplateDO.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
      codeClassifyTemplateDO.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
//      codeClassifyTemplateDO.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
      codeClassifyTemplateDO.setCreator(String.valueOf(AuthUtil.getUser().getAccount()));
      codeClassifyTemplateDO.setCreateTime(new Date());
      codeClassifyTemplateDO.setLastV("1");
      codeClassifyTemplateDO.setLastR("1");
@@ -1040,7 +1032,7 @@
//         condition.put("ts",codeClassifyTemplateDOCopyFromDTO.getTs());
         CodeClassifyTemplate detail = baseMapper
            .selectById(codeClassifyTemplateDOCopyFromDTO.getOid());
   //      boolean tsBoolean = boService.checkTs(codeClassifyTemplateAttrDOListemplateDOCopyFromDTO);
         //      boolean tsBoolean = boService.checkTs(codeClassifyTemplateAttrDOListemplateDOCopyFromDTO);
         if(detail.getTs().compareTo(codeClassifyTemplateDOCopyFromDTO.getTs()) != 0){//不是最新的不让改
            return R.fail("当前数据不是最新,请刷新后再修改!");
         }
@@ -1059,7 +1051,7 @@
         codeClassifyTemplateDO.setLcStatus(lcstatus);
         codeClassifyTemplateDO.setVersionValue(versionvalue);
         codeClassifyTemplateDO.setTs(new Date());
         codeClassifyTemplateDO.setLastModifier(AuthUtil.getUser().getUserName());
         codeClassifyTemplateDO.setLastModifier(AuthUtil.getUser().getAccount());
         codeClassifyTemplateDO.setLastModifyTime(new Date());
         baseMapper.updateById(codeClassifyTemplateDO);
      }
@@ -1124,11 +1116,15 @@
         //递归找上级的模板
         CodeClassify classifyDO = codeClassifyMapper.selectById(codeClassifyOid);
//            codeClassifyDaoI.selectByPrimaryKey(codeClassifyOid);
         if(StringUtils.isBlank(classifyDO.getParentCodeClassifyOid())){
         if(Func.isEmpty(classifyDO)){
            //说明已经是顶了,也没找到的话,那就返回了
            return null;
            return new ArrayList<>();
         }
         return selectOnlyTemplateByClassifyOid(classifyDO.getParentCodeClassifyOid());
         if(StringUtils.isNotBlank(classifyDO.getParentCodeClassifyOid())) {
            return selectOnlyTemplateByClassifyOid(classifyDO.getParentCodeClassifyOid());
         }else{
            return new ArrayList<>();
         }
      }else{
         return templateDOS;
      }