From 35a36f60cdbd9ef3bf2ab7be9f418f988c93c5eb Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期五, 21 四月 2023 17:05:02 +0800
Subject: [PATCH] 1、主题库定义相关代码。 2、枚举定义相关代码移植修改。

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java |  537 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 537 insertions(+), 0 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
index 6cb26c3..632c040 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
@@ -16,13 +16,40 @@
  */
 package com.vci.ubcs.code.service.impl;
 
+import com.alibaba.nacos.api.utils.StringUtils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.bo.TreeWrapperOptions;
+import com.vci.ubcs.code.dto.CodeClstemplateDTO;
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
 import com.vci.ubcs.code.entity.CodeClstemplateEntity;
+import com.vci.ubcs.code.enumpack.CodeClassifyTemplateLC;
+import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
+import com.vci.ubcs.code.mapper.CodeClstempattrMapper;
 import com.vci.ubcs.code.mapper.CodeClstemplateMapper;
 import com.vci.ubcs.code.service.ICodeClstemplateService;
+import com.vci.ubcs.code.vo.CodeClstempattrVO;
 import com.vci.ubcs.code.vo.CodeClstemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
+import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
+import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
+import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED;
+import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.LC_STATUS;
+import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
+import static com.vci.ubcs.code.service.impl.CodeClassifyServiceImpl.PARENT_FIELD_NAME;
 
 /**
  * 缂栫爜搴撳畾涔�-妯℃澘绠$悊 鏈嶅姟瀹炵幇绫�
@@ -33,8 +60,518 @@
 @Service
 public class CodeClstemplateServiceImpl extends ServiceImpl<CodeClstemplateMapper, CodeClstemplateEntity> implements ICodeClstemplateService {
 
+	/**
+	 * 妯℃澘灞炴�х殑鏈嶅姟
+	 */
+	@Lazy
+	@Autowired(required = false)
+	CodeClstempattrServiceImpl codeClstempattrService;
+
+	/**
+	 * 瀵硅薄鐨勬搷浣�
+	 */
+	@Autowired(required = false)
+	private RevisionModelUtil revisionModelUtil;
+
+	@Autowired(required = false)
+	private CodeClstempattrMapper codeClstempattrMapper;
+	@Autowired(required = false)
+	private CodeTempphaseServiceImpl codeTempphaseServiceImpl;
+	@Autowired(required = false)
+	private CodeTempbuttonServiceImpl codeTempbuttonServiceImpl;
+	@Autowired(required = false)
+	private CodeClsflowtempServiceImpl codeClsflowtempServiceImpl;
 	@Override
 	public IPage<CodeClstemplateVO> selectPlCodeClstemplatePage(IPage<CodeClstemplateVO> page, CodeClstemplateVO plCodeClstemplate) {
 		return page.setRecords(baseMapper.selectPlCodeClstemplatePage(page, plCodeClstemplate));
 	}
+
+	/**
+	 * 鏌ヨ鍒嗙被妯℃澘瀵硅薄 鏍�
+	 * @param treeQueryObject 鏍戞煡璇㈠璞�
+	 * @return 鍒嗙被妯℃澘瀵硅薄 鏄剧ず鏍�
+	 */
+	@Override
+	public List<Tree> treeCodeClassifyTemplate(TreeQueryObject treeQueryObject) {
+		List<CodeClstemplateEntity> doList =selectCodeClassifyTemplateDOByTree(treeQueryObject);
+
+		List<CodeClstemplateVO> voList = codeClassifyTemplateDO2VOs(doList);
+		TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
+		treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
+		return revisionModelUtil.doList2Trees(voList,treeWrapperOptions,(CodeClstemplateVO s) ->{
+			//鍙互鍦ㄨ繖閲屽鐞嗘爲鑺傜偣鐨勬樉绀�
+			return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
+				.getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
+		});
+	}
+
+	/**
+	 * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
+	 *
+	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+	 * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
+	 */
+	@Override
+	public List<CodeClstemplateEntity> selectCodeClassifyTemplateDOByTree(TreeQueryObject treeQueryObject) {
+//		VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null,CodeClassifyTemplateDO.class);
+//		VciParentQueryOption parentQueryOption = new VciParentQueryOption();
+//		parentQueryOption.setParentFieldName(PARENT_FIELD_NAME);
+//		queryWrapperForDO.parentQueryChild(treeQueryObject,parentQueryOption);
+		CodeClstemplateEntity codeClstemplateEntity = new CodeClstemplateEntity();
+		return baseMapper.selectList(Condition.getQueryWrapper(codeClstemplateEntity));
+//		return codeClassifyTemplateMapper.selectByWrapper(queryWrapperForDO);
+	}
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeClassifyTemplateDOs 鏁版嵁瀵硅薄鍒楄〃
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	@Override
+	public List<CodeClstemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClstemplateEntity> codeClassifyTemplateDOs) {
+		return codeClassifyTemplateDO2VOs(codeClassifyTemplateDOs,false);
+	}
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeClassifyTemplateDOs 鏁版嵁瀵硅薄鍒楄〃
+	 * @param hasAttr 鏄惁鍖呭惈灞炴��
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	@Override
+	public List<CodeClstemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClstemplateEntity>  codeClassifyTemplateDOs,boolean hasAttr) {
+		List<CodeClstemplateVO> voList = new ArrayList<CodeClstemplateVO>();
+		if(!CollectionUtils.isEmpty(codeClassifyTemplateDOs)){
+			for(CodeClstemplateEntity s: codeClassifyTemplateDOs){
+				CodeClstemplateVO vo =  codeClassifyTemplateDO2VO(s);
+				if(vo != null){
+					voList.add(vo);
+				}
+			}
+		}
+		if(hasAttr){
+			//涓�涓垎绫婚噷闈㈡�讳笉鑳借秴杩�1000涓敓鏁堢殑鐗堟湰鍚э紒锛侊紒
+			VciBaseUtil.switchCollectionForOracleIn(voList.stream().map(CodeClstemplateVO::getOid).collect(Collectors.toList())).forEach(tempOids->{
+				List<CodeClstempattrVO> attrVOList = codeClstempattrService.listCodeClassifyTemplateAttrByTemplateOids(tempOids);
+
+				if(!CollectionUtils.isEmpty(attrVOList)){
+					Map<String, List<CodeClstempattrVO>> attrVOMap = attrVOList.stream().collect(Collectors.groupingBy(s -> s.getClassifytemplateoid()));
+
+					voList.stream().forEach(templateVO->{
+						if(attrVOMap.containsKey(templateVO.getOid())){
+							templateVO.setAttributes(attrVOMap.get(templateVO.getOid()));
+						}
+					});
+				}
+			});
+
+		}
+		return voList;
+	}
+	/**
+	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param  codeClassifyTemplateDO 鏁版嵁瀵硅薄
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	@Override
+	public  CodeClstemplateVO codeClassifyTemplateDO2VO(CodeClstemplateEntity codeClassifyTemplateDO) {
+		CodeClstemplateVO vo = new CodeClstemplateVO();
+		if(codeClassifyTemplateDO != null){
+			BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDO,vo);
+			//濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+			vo.setLcStatusText(CodeClassifyTemplateLC.getTextByValue(vo.getLcStatus()));
+
+		}
+		return vo;
+	}
+
+	/**
+	 * 妫�鏌� 鍒嗙被妯℃澘瀵硅薄鏄惁鍒犻櫎
+	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛屽繀椤昏鏈塷id鍜宼s灞炴��
+	 * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+	 */
+	@Override
+	public R checkIsCanDelete(CodeClstemplateDTO codeClstemplateDTO) {
+		VciBaseUtil.alertNotNull(codeClstemplateDTO,"鏁版嵁浼犺緭瀵硅薄",codeClstemplateDTO.getOid(),"涓婚敭");
+		CodeClstemplateEntity codeClstemplateEntity = baseMapper.selectById(codeClstemplateDTO.getOid());
+		return checkIsCanDeleteForDO(codeClstemplateDTO,codeClstemplateEntity);
+	}
+
+	/**
+	 * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+	 * @param codeClstemplateDTO 鏁版嵁浼犺緭瀵硅薄
+	 * @param codeClstemplateEntity 鏁版嵁搴撲腑鐨勬暟鎹璞�
+	 * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+	 */
+	private R checkIsCanDeleteForDO(CodeClstemplateDTO codeClstemplateDTO, CodeClstemplateEntity codeClstemplateEntity) {
+		CodeClstemplateEntity codeClassifyTemplateDOCopyFromDTO = new CodeClstemplateEntity();
+		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClstemplateDTO,codeClassifyTemplateDOCopyFromDTO);
+
+		//妫�鏌s
+		Map<String,Object> condition = new HashMap<>(2);
+		condition.put("oid",codeClstemplateDTO.getOid());
+		condition.put("ts",codeClstemplateDTO.getTs());
+		CodeClstemplateEntity detail = baseMapper
+			.selectOne(Condition.getQueryWrapper(condition,CodeClstemplateEntity.class));
+		if(detail == null){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+			return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+		}
+		//鏍¢獙涓嬬骇鏄惁鏈夊紩鐢�
+		if(checkChildIsLinked(codeClstemplateEntity.getOid())){
+			return R.fail(DATA_CASCADE_LINKED_NOT_DELETE);
+		}
+		return R.status(checkHasChild(codeClstemplateEntity.getOid()));
+	}
+
+	/**
+	 * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+	 *
+	 * @param oid 涓婚敭
+	 * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+	 */
+	@Override
+	public boolean checkChildIsLinked(String oid) {
+		VciBaseUtil.alertNotNull(oid,"涓婚敭");
+		List<String> childOids = baseMapper.selectAllLevelChildOid(oid.trim());
+		if(!CollectionUtils.isEmpty(childOids)){
+			for(String childOid: childOids){
+				if(!checkIsLinked(childOid)){
+					return false;
+				}
+			}
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * 鏍¢獙鏄惁琚紩鐢�
+	 * @param oid 涓婚敭
+	 */
+	private boolean checkIsLinked(String oid){
+		//TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+		return false;
+	}
+
+	/**
+	 * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+	 *
+	 * @param oid 涓婚敭
+	 * @return true琛ㄧず鏈変笅绾э紝false琛ㄧず娌℃湁涓嬬骇
+	 */
+	@Override
+	public boolean checkHasChild(String oid) {
+		VciBaseUtil.alertNotNull(oid,"涓婚敭");
+		return baseMapper.countAllLevelChildOid(oid.trim()) > 0;
+	}
+
+
+	/**
+	 * 鍒犻櫎鍒嗙被妯℃澘瀵硅薄
+	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+	@Override
+	public R deleteCodeClassifyTemplate(CodeClstemplateDTO codeClstemplateDTO) {
+		checkIsCanDelete(codeClstemplateDTO);
+		VciBaseUtil.alertNotNull(codeClstemplateDTO,"鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄",codeClstemplateDTO.getOid(),"鍒嗙被妯℃澘瀵硅薄鐨勪富閿�");
+
+		CodeClstemplateEntity codeClassifyTemplateDO = baseMapper.selectById(codeClstemplateDTO.getOid());
+
+		//鍙湁缂栬緫涓墠鑳藉垹
+		if(!CodeClassifyTemplateLC.EDITING.getValue().equals(codeClassifyTemplateDO.getLcStatus())){
+			return R.fail("鍙湁缂栬緫涓殑锛屾ā鏉挎墠鑳藉垹闄わ紒");
+		}
+		R baseResult = checkIsCanDeleteForDO(codeClstemplateDTO,codeClassifyTemplateDO);
+
+		//妯℃澘oid
+		String templateOid = codeClstemplateDTO.getOid();
+
+		int updateCount = 0;
+
+//		WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+//		BatchCBO batchCBO = new BatchCBO();
+
+		if(baseResult.isSuccess()) {
+			//鎵句笅绾х殑锛岃繖涓槸鍙互鍒犻櫎鐨勬椂鍊�
+			List<String> childrenOids = baseMapper.selectAllLevelChildOid(codeClassifyTemplateDO.getOid().trim());
+			if (!CollectionUtils.isEmpty(childrenOids)) {
+				Collection<Collection<String>> childrenCollections = VciBaseUtil.switchCollectionForOracleIn(childrenOids);
+				for (Collection<String> s : childrenCollections) {
+					updateCount += baseMapper.deleteBatchIds(s);
+
+//					batchCBO.copyFromOther(batchCBOi);
+				}
+			}
+		}else{
+			return baseResult;
+		}
+		//鎵ц鍒犻櫎鎿嶄綔
+
+		updateCount += baseMapper.deleteById(codeClassifyTemplateDO.getOid());
+//		batchCBO.copyFromOther(batchCBO_delete);
+
+		//鍒犻櫎妯℃澘灞炴��
+//		VciQueryWrapperForDO templateQueryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+//		templateQueryWrapper.addQueryMap("classifyTemplateOid",templateOid);
+		List<CodeClstempattrEntity> codeClstempattrEntityList = codeClstempattrMapper.selectRefByOid(templateOid);
+
+		if(!CollectionUtils.isEmpty(codeClstempattrEntityList)) {
+			List<String> templateAttrOids = new ArrayList<String>();
+			for (CodeClstempattrEntity codeClstempattrEntity:codeClstempattrEntityList){
+				templateAttrOids.add(codeClstempattrEntity.getOid());
+			}
+
+			updateCount += codeClstempattrMapper.deleteBatchIds(templateAttrOids);
+//			batchCBO.copyFromOther(batchCBO_templateAttr_delete);
+		}
+
+		//璋冪敤妯℃澘闃舵鏂规硶
+		updateCount += codeTempphaseServiceImpl.codeTemplateDeleteTrigger(templateOid);
+
+		//璋冪敤妯℃澘鎸夐挳鏂规硶
+		updateCount += codeTempbuttonServiceImpl.codeTemplateDeleteTrigger(templateOid);
+
+		//璋冪敤妯℃澘娴佺▼鏂规硶
+		updateCount += codeClsflowtempServiceImpl.codeTemplateDeleteTrigger(templateOid);
+
+		return updateCount > 0?R.success(DELETE_SUCCESS):R.fail(DELETE_FAIL);
+	}
+
+
+	/**
+	 * 涓婚敭鑾峰彇鍒嗙被妯℃澘瀵硅薄
+	 * @param oid 涓婚敭
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+	 */
+	@Override
+	public  CodeClstemplateVO getObjectByOid(String oid) {
+		return codeClassifyTemplateDO2VO(selectByOid(oid));
+	}
+
+	@Override
+	public Collection<CodeClstemplateVO> listCodeClassifyTemplateByOids(List<String> oidCollections) {
+		VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+		List<CodeClstemplateEntity> codeClassifyTemplateDOList = listCodeClassifyTemplateDOByOidCollections(oidCollections);
+		return codeClassifyTemplateDO2VOs(codeClassifyTemplateDOList);
+	}
+
+	/**
+	 * 鍙傜収鏍� 鍒嗙被妯℃澘瀵硅薄
+	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず鏍�
+	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<Tree> referTree(TreeQueryObject treeQueryObject) {
+		if(treeQueryObject == null){
+			treeQueryObject = new TreeQueryObject();
+		}
+		if(treeQueryObject.getConditionMap() == null){
+			treeQueryObject.setConditionMap(new HashMap<>());
+		}
+		if(treeQueryObject.getConditionMap().containsKey(LC_STATUS)) {
+			treeQueryObject.getConditionMap().remove(LC_STATUS);
+		}
+		treeQueryObject.getConditionMap().put(LC_STATUS,CodeClassifyTemplateLC.RELEASED.getValue());
+		return treeCodeClassifyTemplate(treeQueryObject);
+	}
+
+	/**
+	 * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+	 * @param oidCollections 涓婚敭鐨勯泦鍚�
+	 * @return 鏁版嵁瀵硅薄鍒楄〃
+	 */
+	private List<CodeClstemplateEntity> listCodeClassifyTemplateDOByOidCollections(Collection<String> oidCollections){
+		List<CodeClstemplateEntity> codeClassifyTemplateDOList = new ArrayList<CodeClstemplateEntity>();
+		if(!CollectionUtils.isEmpty(oidCollections)){
+			Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+			for(Collection<String> oids: oidCollectionsList){
+				List<CodeClstemplateEntity> tempDOList =  baseMapper.selectBatchIds(oids); //codeClassifyTemplateMapper.selectByPrimaryKeyCollection(oids);
+				if(!CollectionUtils.isEmpty(tempDOList)){
+					codeClassifyTemplateDOList.addAll(tempDOList);
+				}
+			}
+		}
+		return  codeClassifyTemplateDOList;
+	}
+
+	/**
+	 * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+	 * @param oid 涓婚敭
+	 * @return  鏁版嵁瀵硅薄
+	 */
+	private CodeClstemplateEntity  selectByOid(String oid) {
+		VciBaseUtil.alertNotNull(oid,"涓婚敭");
+		CodeClstemplateEntity codeClstemplateEntity = baseMapper.selectById(oid.trim());
+		if(codeClstemplateEntity == null || StringUtils.isBlank(codeClstemplateEntity.getOid())){
+			throw new VciBaseException(DATA_OID_NOT_EXIST);
+		}
+		return codeClstemplateEntity;
+	}
+
+	/**
+	 * 鍚敤銆佸仠鐢�
+	 * @param oid
+	 * @param lcStatus
+	 * @return
+	 */
+	@Override
+	public R updateLcStatus( String oid, String lcStatus){
+		CodeClstemplateEntity 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("妯℃澘鏈惎鐢紝涓嶈兘鍋滅敤锛�");
+			}
+		}
+		//鍚敤銆佸仠鐢�
+		codeClassifyTemplateDO.setLcStatus(lcStatus);
+		int u = baseMapper.updateById(codeClassifyTemplateDO);
+//		codeClassifyTemplateMapper.updateLcStatus(oid,lcStatus);
+
+		return u==0?R.fail("淇敼澶辫触锛�"):R.success("淇敼鎴愬姛");
+	}
+
+	/**
+	 * 鍗囩増
+	 * @param codeClassifyDTO
+	 */
+	@Override
+	public R Upgrade(CodeClstemplateDTO codeClassifyDTO) {
+
+		//鏃х殑妯℃澘oid
+		String templateOldOid = codeClassifyDTO.getOid();
+		//鍙湁宸插彂甯冪殑鎵嶈兘鍗囩増
+		CodeClstemplateEntity codeClassifyTemplateDOOld =  baseMapper.selectById(templateOldOid);
+		if(!FRAMEWORK_RELEASE_RELEASED.equals(codeClassifyTemplateDOOld.getLcStatus())){
+			return R.fail("璇ユā鏉挎湭鍙戝竷锛屼笉鑳藉崌鐗堬紒");
+		}
+
+		//闇�瑕佹柊澧炵殑鍗囩骇妯℃澘
+//		ClientBusinessObject clientBusinessObject_template = boService.selectCBOByOid(codeClassifyDTO.getOid(), "codeclstemplate");
+		CodeClstemplateEntity codeCls_template = baseMapper.selectById(templateOldOid);
+		CodeClstemplateEntity codeCls_template_insert = null;
+//			ClientBusinessObject clientBusinessObject_template_insert = null;
+//		try {
+////			clientBusinessObject_template_insert = clientBusinessObjectOperation.reviseBusinessObject(clientBusinessObject_template, "");
+////			codeCls_template_insert.setOid((new ObjectUtility()).getNewObjectID36());
+////			toBo.setRevisionid((new ObjectUtility()).getNewObjectID36());
+//			codeCls_template_insert.setNameOid(codeCls_template.getNameOid());
+//			codeCls_template_insert.setBtmname(codeCls_template.getBtmname());
+////			codeCls_template_insert.setIsLast(1);
+////			codeCls_template_insert.setIsFirstr(0);
+////			codeCls_template_insert.setIsFirstv(1);
+////			codeCls_template_insert.setIsLastV(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());
+//			RevisionValueObject rvObj = this.getNextRevision(fromBo.getBtmName(), fromBo.getNameoid(), item.revRuleName, item.revInput, revisionVal);
+//			codeCls_template_insert.setRevisionSeq(rvObj.getRevisionSeq());
+//			codeCls_template_insert.setRevisionValue(rvObj.getRevisionVal());
+//			VersionValueObject versionObj = this.getVersionValue(item.verRuleName);
+//			codeCls_template_insert.setVersionSeq(versionObj.getVersionSeq());
+//			codeCls_template_insert.setVersionValue(versionObj.getVersionVal());
+//			codeCls_template_insert.setLctId(codeCls_template.getLctId());
+//			codeCls_template_insert.setLcStatus(this.getLcFirstStatus(item.lifeCycle));
+//			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("鍗囩増鍑洪敊");
+//		}
+//
+//
+//		CodeClassifyTemplateDO codeClassifyTemplateDO = new CodeClassifyTemplateDO();
+//		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyDTO,codeClassifyTemplateDO);
+//		WebUtil.copyValueToObjectFromCbos(clientBusinessObject_template_insert,codeClassifyTemplateDO);
+//		//modify by weidy@2022-2-27
+//		//鍗囩増鍚庝笉鑳戒娇鐢╥nsert鏂规硶锛屽洜涓洪偅涓案杩滄槸鏂板涓�鏉℃暟鎹紝
+//		//涓婃柟鍏堜粠dto杞粰do锛岀劧鍚庢妸鍗囩増鐨勫垵濮嬪寲鐨勫睘鎬ф嫹璐濈粰do锛屾渶鍚庡啀浠巇o鎷疯礉鍒癱bo涓�
+//		WebUtil.copyValueToCboFromObj(clientBusinessObject_template_insert,codeClassifyTemplateDO);
+//		//鍗囩増杩囧悗鐨勬ā鏉縪id
+//		String templateNewOid = codeClassifyTemplateDO.getOid();
+//
+//		//闇�瑕佸鍒剁殑妯℃澘灞炴��
+//		//鏌ヨ鑰佹ā鏉夸笅杈圭殑鎵�鏈夊睘鎬э紝璧嬪�兼柊妯℃澘oid
+//		VciQueryWrapperForDO codeClassifyTemplateAttrQuery = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+//		codeClassifyTemplateAttrQuery.addQueryMap("classifyTemplateOid",templateOldOid);
+//		List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrDaoI.selectByWrapper(codeClassifyTemplateAttrQuery);
+//		for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO :codeClassifyTemplateAttrDOList){
+//			String attrOid = VciBaseUtil.getPk();
+//			codeClassifyTemplateAttrDO.setOid(attrOid);
+//			codeClassifyTemplateAttrDO.setClassifyTemplateOid(templateNewOid);
+//		}
+//
+//		//澶嶅埗妯℃澘娴佺▼
+//		List<CodeClassifyProcessTempDO>  codeClassifyProcessTempDOList = copyTemplateProcess(templateOldOid,templateNewOid);
+//
+//		//澶嶅埗妯℃澘闃舵锛岄樁娈靛睘鎬�
+//		Map phase_attrMap = copyTemplatePhase_attr(templateOldOid,templateNewOid);
+//
+//		List<CodeTemplatePhaseDO> codeClassifyPhaseDOList = (ArrayList<CodeTemplatePhaseDO>)phase_attrMap.get("phase");//妯℃澘闃舵
+//		List<CodePhaseAttrDO> codePhaseAttrDOList = (ArrayList<CodePhaseAttrDO>)phase_attrMap.get("phaseAttr");//闃舵灞炴��
+//
+//		//澶嶅埗妯℃澘鎸夐挳
+//		List<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOList = copyTemplateButton(templateOldOid,templateNewOid);
+//
+//		//涓�璧蜂繚瀛樻暟鎹�
+//		WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+//		//淇濆瓨妯℃澘
+//		BatchCBO batchCBOTemplate = new BatchCBO();
+//		//batchCBO淇濆瓨鐨勬椂鍊欐病鏈夎兘澶熻嚜鍔╱pdate婧愭暟鎹殑isLastR
+//		//batchCBOTemplate.getCreateCbos().add(clientBusinessObject_template_insert);
+//		//浣跨敤saveRevisionBuisnessObject鍙互瑙e喅杩欎釜闂锛岃繖閲屽厛鏆傛椂鎵ц涓ゆ淇濆瓨
+//		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);//涓�璧锋墽琛屼繚瀛�
+//
+//		return BaseResult.success("鍗囩増鎴愬姛锛�");
+		return R.success("鍗囩増鎴愬姛锛�");
+	}
 }

--
Gitblit v1.9.3