From 4cd535de8ef099afa96238e5458e6866edccfea7 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 05 五月 2023 20:26:36 +0800
Subject: [PATCH] “代码整合”

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java |  619 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 536 insertions(+), 83 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 c2f8b5e..ab690db 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
@@ -20,36 +20,37 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.entity.*;
 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.mapper.*;
+import com.vci.ubcs.code.service.ICodeClassifyService;
 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.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.revision.model.TreeQueryObject;
-
-
 import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.starter.web.pagemodel.DataGrid;
 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 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.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 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.FrameWorkDefaultValueConstant.*;
 import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
 import static com.vci.ubcs.code.service.impl.CodeClassifyServiceImpl.PARENT_FIELD_NAME;
 
@@ -83,6 +84,23 @@
 	private CodeTempbuttonServiceImpl codeTempbuttonServiceImpl;
 	@Autowired(required = false)
 	private CodeClsflowtempServiceImpl codeClsflowtempServiceImpl;
+	@Autowired(required = false)
+	private CodeClsflowtempMapper codeClsflowtempMapper;
+	@Autowired(required = false)
+	private CodeTemplatePhaseMapper codeTempphaseMapper;
+	@Autowired(required = false)
+	private CodeClassifyTemplateButtonMapper codeTempbuttonMapper;
+	@Autowired(required = false)
+	private CodePhaseAttrMapper codePhaseattrMapper;
+	@Autowired(required = false)
+	private ICodeClassifyService codeClassifyService;
+	@Autowired(required = false)
+	private CodeClstemplateMapper codeClstemplateMapper;
+	@Autowired(required = false)
+	private CodePhaseattrServiceImpl codePhaseattrServiceImpl;
+
+
+
 	@Override
 	public IPage<CodeClstemplateVO> selectPlCodeClstemplatePage(IPage<CodeClstemplateVO> page, CodeClstemplateVO plCodeClstemplate) {
 		return page.setRecords(baseMapper.selectPlCodeClstemplatePage(page, plCodeClstemplate));
@@ -119,8 +137,12 @@
 //		VciParentQueryOption parentQueryOption = new VciParentQueryOption();
 //		parentQueryOption.setParentFieldName(PARENT_FIELD_NAME);
 //		queryWrapperForDO.parentQueryChild(treeQueryObject,parentQueryOption);
-		CodeClstemplateEntity codeClstemplateEntity = new CodeClstemplateEntity();
-		return baseMapper.selectList(Condition.getQueryWrapper(codeClstemplateEntity));
+//		CodeClstemplateEntity codeClstemplateEntity = new CodeClstemplateEntity();
+//		codeClstemplateEntity.set
+		return baseMapper.selectCodeClassifyTemplateDOByTree(
+			treeQueryObject.getConditionMap().get("codeclassifyoid"),
+			treeQueryObject.getConditionMap().get("lcStatus"));
+//		return baseMapper.selectList(Condition.getQueryWrapper(codeClstemplateEntity));
 //		return codeClassifyTemplateMapper.selectByWrapper(queryWrapperForDO);
 	}
 
@@ -210,19 +232,20 @@
 		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClstemplateDTO,codeClassifyTemplateDOCopyFromDTO);
 
 		//妫�鏌s
-		Map<String,Object> condition = new HashMap<>(2);
-		condition.put("oid",codeClstemplateDTO.getOid());
-		condition.put("ts",codeClstemplateDTO.getTs());
+//		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){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+			.selectById(codeClstemplateDTO.getOid());
+
+		if(!detail.getTs().toString().equals(codeClstemplateDTO.getTs().toString())){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
 			return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
 		}
 		//鏍¢獙涓嬬骇鏄惁鏈夊紩鐢�
 		if(checkChildIsLinked(codeClstemplateEntity.getOid())){
 			return R.fail(DATA_CASCADE_LINKED_NOT_DELETE);
 		}
-		return R.status(checkHasChild(codeClstemplateEntity.getOid()));
+		return R.success(String.valueOf(checkHasChild(codeClstemplateEntity.getOid())));
 	}
 
 	/**
@@ -273,6 +296,7 @@
 	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
 	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
 	 */
+	@Transactional
 	@Override
 	public R deleteCodeClassifyTemplate(CodeClstemplateDTO codeClstemplateDTO) {
 		checkIsCanDelete(codeClstemplateDTO);
@@ -362,8 +386,8 @@
 	 * 鍙傜収鏍� 鍒嗙被妯℃澘瀵硅薄
 	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
 	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず鏍�
-	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
 	 */
+	@Transactional
 	@Override
 	public List<Tree> referTree(TreeQueryObject treeQueryObject) {
 		if(treeQueryObject == null){
@@ -418,6 +442,7 @@
 	 * @param lcStatus
 	 * @return
 	 */
+	@Transactional
 	@Override
 	public R updateLcStatus( String oid, String lcStatus){
 		CodeClstemplateEntity codeClassifyTemplateDO = baseMapper.selectById(oid);
@@ -440,6 +465,7 @@
 	 * 鍗囩増
 	 * @param codeClassifyDTO
 	 */
+	@Transactional
 	@Override
 	public R Upgrade(CodeClstemplateDTO codeClassifyDTO) {
 
@@ -454,93 +480,95 @@
 		//闇�瑕佹柊澧炵殑鍗囩骇妯℃澘
 //		ClientBusinessObject clientBusinessObject_template = boService.selectCBOByOid(codeClassifyDTO.getOid(), "codeclstemplate");
 		CodeClstemplateEntity codeCls_template = baseMapper.selectById(templateOldOid);
-		CodeClstemplateEntity codeCls_template_insert = null;
+		CodeClstemplateEntity codeCls_template_insert = new CodeClstemplateEntity();
 //			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());
+//			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(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());
+		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("鍗囩増鍑洪敊");
 //		}
-//
-//
-//		CodeClassifyTemplateDO codeClassifyTemplateDO = new CodeClassifyTemplateDO();
+		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
-//		//鍗囩増鍚庝笉鑳戒娇鐢╥nsert鏂规硶锛屽洜涓洪偅涓案杩滄槸鏂板涓�鏉℃暟鎹紝
-//		//涓婃柟鍏堜粠dto杞粰do锛岀劧鍚庢妸鍗囩増鐨勫垵濮嬪寲鐨勫睘鎬ф嫹璐濈粰do锛屾渶鍚庡啀浠巇o鎷疯礉鍒癱bo涓�
+		//modify by weidy@2022-2-27
+		//鍗囩増鍚庝笉鑳戒娇鐢╥nsert鏂规硶锛屽洜涓洪偅涓案杩滄槸鏂板涓�鏉℃暟鎹紝
+		//涓婃柟鍏堜粠dto杞粰do锛岀劧鍚庢妸鍗囩増鐨勫垵濮嬪寲鐨勫睘鎬ф嫹璐濈粰do锛屾渶鍚庡啀浠巇o鎷疯礉鍒癱bo涓�
 //		WebUtil.copyValueToCboFromObj(clientBusinessObject_template_insert,codeClassifyTemplateDO);
-//		//鍗囩増杩囧悗鐨勬ā鏉縪id
-//		String templateNewOid = codeClassifyTemplateDO.getOid();
-//
-//		//闇�瑕佸鍒剁殑妯℃澘灞炴��
-//		//鏌ヨ鑰佹ā鏉夸笅杈圭殑鎵�鏈夊睘鎬э紝璧嬪�兼柊妯℃澘oid
+		//鍗囩増杩囧悗鐨勬ā鏉縪id
+		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<CodeClstempattrEntity> codeClstempattrEntities = codeClstempattrMapper.selectByMap(condition);
 //		List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrDaoI.selectByWrapper(codeClassifyTemplateAttrQuery);
-//		for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO :codeClassifyTemplateAttrDOList){
+		for (CodeClstempattrEntity codeClassifyTemplateAttrDO :codeClstempattrEntities){
 //			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);
-//
-//		//涓�璧蜂繚瀛樻暟鎹�
+			codeClassifyTemplateAttrDO.setOid(null);
+			codeClassifyTemplateAttrDO.setClassifytemplateoid(templateNewOid);
+			codeClstempattrMapper.insert(codeClassifyTemplateAttrDO);
+		}
+
+		//澶嶅埗妯℃澘娴佺▼
+		List<CodeClsflowtempEntity>  codeClassifyProcessTempDOList = copyTemplateProcess(templateOldOid,templateNewOid);
+		//澶嶅埗妯℃澘闃舵锛岄樁娈靛睘鎬�
+		Map phase_attrMap = copyTemplatePhase_attr(templateOldOid,templateNewOid);
+
+		List<CodeTemplatePhase> codeClassifyPhaseDOList = (ArrayList<CodeTemplatePhase>)phase_attrMap.get("phase");//妯℃澘闃舵
+		List<CodePhaseAttr> codePhaseAttrDOList = (ArrayList<CodePhaseAttr>)phase_attrMap.get("phaseAttr");//闃舵灞炴��
+
+		//澶嶅埗妯℃澘鎸夐挳
+		List<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOList = copyTemplateButton(templateOldOid,templateNewOid);
+
+		//涓�璧蜂繚瀛樻暟鎹�
 //		WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
-//		//淇濆瓨妯℃澘
+		//淇濆瓨妯℃澘
 //		BatchCBO batchCBOTemplate = new BatchCBO();
-//		//batchCBO淇濆瓨鐨勬椂鍊欐病鏈夎兘澶熻嚜鍔╱pdate婧愭暟鎹殑isLastR
-//		//batchCBOTemplate.getCreateCbos().add(clientBusinessObject_template_insert);
-//		//浣跨敤saveRevisionBuisnessObject鍙互瑙e喅杩欎釜闂锛岃繖閲屽厛鏆傛椂鎵ц涓ゆ淇濆瓨
+		//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);
-//		//淇濆瓨妯℃澘灞炴��
+		// end --modify by lihang @20220408
+		//codeClassifyTemplateMapper.insert(codeClassifyTemplateDO);
+		//淇濆瓨妯℃澘灞炴��
 //		if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOList)){
 //			BatchCBO batchCBOTemplateAttr = codeClassifyTemplateAttrDaoI.batchInsert(codeClassifyTemplateAttrDOList);
 //			batchCBOTemplate.copyFromOther(batchCBOTemplateAttr);
@@ -572,8 +600,433 @@
 //		WebUtil.setPersistence(true);//鎵ц淇濆瓨
 //
 //		boService.persistenceBatch(batchCBOTemplate);//涓�璧锋墽琛屼繚瀛�
-//
+
 //		return BaseResult.success("鍗囩増鎴愬姛锛�");
 		return R.success("鍗囩増鎴愬姛锛�");
 	}
+
+	@Override
+	@Transactional
+	public R copyTemplate(CodeClstemplateDTO codeClassifyDTO) {
+		//鏃х殑妯℃澘oid
+		String oldOid = codeClassifyDTO.getOid();
+		//鏂扮殑妯℃澘oid
+		String newOid = VciBaseUtil.getPk();
+		//鍒嗙被oid,澶嶅埗杩囨潵鐨勬柊鐨勫垎绫籵id
+		String codeClassifyOid = codeClassifyDTO.getCodeClassifyOid();
+
+		//澶嶅埗妯℃澘
+		CodeClstemplateEntity codeClassifyTemplateDO_old = baseMapper.selectById(oldOid);//鏃фā鏉�
+
+		//楠岃瘉锛屼笟鍔$被鍨嬫槸涓嶆槸涓�鑷�
+		CodeClassify codeClassifyDO_old = codeClassifyService.selectBtmOrParentBtm(codeClassifyTemplateDO_old.getCodeClassifyOid());
+		if(codeClassifyDO_old==null){
+			return R.fail("澶嶅埗鐨勬ā鏉挎墍灞炲垎绫讳互鍙婁笂绾ф病鏈変笟鍔$被鍨嬶紝璇烽噸鏂伴�夋嫨!");
+		}
+
+		//鎵惧綋鍓嶅垎绫讳笅鐨勪笟鍔$被鍨�
+		CodeClassify codeClassifyDO_new = codeClassifyService.selectBtmOrParentBtm(codeClassifyOid);
+		if(codeClassifyDO_new==null){
+			return R.fail("褰撳墠鍒嗙被娌℃湁涓氬姟绫诲瀷锛岃閲嶆柊閫夋嫨!");
+		}
+
+		if(!codeClassifyDO_old.getBtmTypeId().equals(codeClassifyDO_new.getBtmTypeId())){
+			return R.fail("閫夋嫨鐨勫垎绫诲拰褰撳墠鍒嗙被涓氬姟绫诲瀷涓嶄竴鑷达紝璇烽噸鏂伴�夋嫨!");
+		}
+
+		codeClassifyTemplateDO_old.setId(codeClassifyDTO.getId());//鑻辨枃鍚嶇О
+		codeClassifyTemplateDO_old.setName(codeClassifyDTO.getName());//涓枃鍚嶇О
+		codeClassifyTemplateDO_old.setDescription(codeClassifyDTO.getDescription());//鎻忚堪
+		codeClassifyTemplateDO_old.setCodeClassifyOid(codeClassifyOid);//鍒嗙被oid
+		codeClassifyTemplateDO_old.setOid(newOid);
+		List<CodeClstemplateEntity> codeClassifyTemplateDOList = new ArrayList<CodeClstemplateEntity>();
+		codeClassifyTemplateDOList.add(codeClassifyTemplateDO_old);
+
+		//澶嶅埗妯℃澘灞炴��
+		List<CodeClstempattrEntity> codeClassifyTemplateAttrDOList = copyTemplateAttr(oldOid,newOid);
+
+		//澶嶅埗妯℃澘娴佺▼
+		List<CodeClsflowtempEntity> codeClassifyProcessTempDOList = copyTemplateProcess(oldOid,newOid);
+
+		//澶嶅埗妯℃澘闃舵锛岄樁娈靛睘鎬�
+		Map  phase_attrMap = copyTemplatePhase_attr(oldOid,newOid);
+
+		List<CodeTemplatePhase> codeClassifyPhaseDOList = (ArrayList<CodeTemplatePhase>)phase_attrMap.get("phase");//妯℃澘闃舵
+		List<CodePhaseAttr> codePhaseAttrDOList = (ArrayList<CodePhaseAttr>)phase_attrMap.get("phaseAttr");//闃舵灞炴��
+
+		//澶嶅埗妯℃澘鎸夐挳
+		List<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOList = copyTemplateButton(oldOid,newOid);
+
+//		baseMapper.insert(codeClassifyTemplateDOList);
+		this.saveBatch(codeClassifyTemplateDOList);
+		codeTempbuttonServiceImpl.saveBatch(codeClassifyTemplateButtonDOList);
+		codeClsflowtempServiceImpl.saveBatch(codeClassifyProcessTempDOList);
+		codeClstempattrService.saveBatch(codeClassifyTemplateAttrDOList);
+		codeTempphaseServiceImpl.saveBatch(codeClassifyPhaseDOList);
+		codePhaseattrServiceImpl.saveBatch(codePhaseAttrDOList);
+		//涓�璧蜂繚瀛樻暟鎹�
+//		WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+//		//淇濆瓨妯℃澘
+//		BatchCBO batchCBOTemplate = codeClassifyTemplateMapper.batchInsert(codeClassifyTemplateDOList);
+//		//淇濆瓨妯℃澘灞炴��
+//		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 R.success("澶嶅埗鎴愬姛锛�");
+	}
+
+
+	private HashMap<String,Object> getVersionValue(int verRuleName) {
+		HashMap<String,Object> obj = new HashMap<>(2);
+		obj.put("VersionSeq",1);
+		if (verRuleName == 0) {
+			obj.put("VersionVal","1");
+		} else if (verRuleName == 1) {
+			obj.put("VersionVal","a");
+		} else if (verRuleName == 2) {
+			obj.put("VersionVal","0");
+		}
+
+		return obj;
+	}
+
+	/**
+	 * 澶嶅埗妯℃澘娴佺▼
+	 */
+	public List<CodeClsflowtempEntity> 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);
+		List<CodeClsflowtempEntity> codeClsflowtempEntities = codeClsflowtempMapper.selectByMap(condition);
+//		List<CodeClassifyProcessTempDO>  codeClassifyProcessTempDOList = codeClassifyProcessTempDaoI.selectByWrapper(processWrapper);//瑕佷繚瀛樼殑鏂扮殑妯℃澘娴佺▼
+		for (CodeClsflowtempEntity codeClassifyProcessTempDO:codeClsflowtempEntities){
+//			String newOid = VciBaseUtil.getPk();
+			codeClassifyProcessTempDO.setOid(null);
+			//codeClassifyProcessTempDO.setCodeClassifyOid(templateNewOid);
+			codeClassifyProcessTempDO.setClassifytemplateoid(templateNewOid);
+//			codeClsflowtempMapper.insert(codeClassifyProcessTempDO);
+			//modify by lihang - @20220406 璁剧疆妯℃澘涓婚敭浣嶇疆鍑洪敊锛屽鑷村崌鐗堢殑妯℃澘涓殑娴佺▼鏄┖鐨勩��
+		}
+		return codeClsflowtempEntities;
+	}
+
+
+	/**
+	 * 澶嶅埗妯℃澘闃舵锛屾ā鏉垮睘鎬�
+	 * @param templateOldOid
+	 * @param templateNewOid
+	 * @return map phase:(List<CodeTemplatePhaseDO>) phaseAttr:(List<CodePhaseAttrDO>)
+	 */
+	public Map copyTemplatePhase_attr(String templateOldOid,String templateNewOid){
+		//妯℃澘闃舵
+//		VciQueryWrapperForDO phaseWrapper = new VciQueryWrapperForDO(CodeTemplatePhaseDO.class);
+//		phaseWrapper.addQueryMap("codeClassifyTemplateOid",templateOldOid);
+		Map<String,Object> condition = new HashMap<>(1);
+		condition.put("codeclassifyTemplateOid",templateOldOid);
+		List<CodeTemplatePhase> codeTempphaseEntities = codeTempphaseMapper.selectByMap(condition);
+//		List<CodeTemplatePhaseDO>  codeClassifyPhaseDOList = codeTemplatePhaseDaoI.selectByWrapper(phaseWrapper);//瑕佷繚瀛樼殑鏂扮殑妯℃澘娴佺▼
+		Map<String,String> phaseKeyMap = new HashMap<String,String>();//闇�瑕佸鍒剁殑妯℃澘闃舵灞炴��,key:value,妯℃澘闃舵鑰乷id:妯℃澘灞炴�ф柊oid
+		List<String> phaseOidList = new ArrayList<String>();
+		for (CodeTemplatePhase codeTemplatePhaseDO:codeTempphaseEntities){
+			String oldoid = codeTemplatePhaseDO.getOid();
+			String newOid = VciBaseUtil.getPk();
+			codeTemplatePhaseDO.setOid(newOid);
+			codeTemplatePhaseDO.setCodeClassifyTemplateOid(templateNewOid);
+			phaseKeyMap.put(oldoid,newOid);
+			phaseOidList.add(oldoid);
+		}
+
+		//妯℃澘闃舵鐨勫睘鎬�
+		List<CodePhaseAttr> codePhaseAttrDOList = new ArrayList<CodePhaseAttr>();
+
+		if(!CollectionUtils.isEmpty(phaseOidList)){//size()==0涓嬭竟鏂规硶浼氭姤閿�
+//			Map<String,String> conditionMap =  new HashMap<>();
+//			conditionMap.put("codephaseoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(phaseOidList.toArray(new String[0])) + ")");
+//			codePhaseAttrDOList = codePhaseAttrDaoI.selectByCondition(conditionMap,new PageHelper(-1));
+			codePhaseAttrDOList = codePhaseattrMapper.selectByPhaseaIds(VciBaseUtil.toInSql(phaseOidList.toArray(new String[0])));
+		}
+		for (CodePhaseAttr codePhaseAttrDO:codePhaseAttrDOList){
+			String oldPhaseoid = codePhaseAttrDO.getCodePhaseOid();
+//			String newOid = VciBaseUtil.getPk();
+			codePhaseAttrDO.setOid(null);
+			codePhaseAttrDO.setCodePhaseOid(phaseKeyMap.get(oldPhaseoid));
+//			codePhaseattrMapper.insert(codePhaseAttrDO);
+		}
+		Map phaseMap = new HashMap();
+		phaseMap.put("phase",codeTempphaseEntities);
+		phaseMap.put("phaseAttr",codePhaseAttrDOList);
+		return phaseMap;
+	}
+
+	/**
+	 * 澶嶅埗妯℃澘鎸夐挳
+	 */
+	public List<CodeClassifyTemplateButton> copyTemplateButton(String templateOldOid,String templateNewOid){
+
+		Map<String,Object> condition = new HashMap<>(1);
+		condition.put("classifyTemplateOid",templateOldOid);
+//		VciQueryWrapperForDO buttonWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateButtonDO.class);
+//		buttonWrapper.addQueryMap("classifyTemplateOid",templateOldOid);
+		List<CodeClassifyTemplateButton> codeTempbuttonEntities = codeTempbuttonMapper.selectByMap(condition);
+//		List<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOList = codeClassifyTemplateButtonDaoI.selectByWrapper(buttonWrapper);
+		for (CodeClassifyTemplateButton codeClassifyTemplateButtonDO:codeTempbuttonEntities){
+//			String newOid = VciBaseUtil.getPk();
+			codeClassifyTemplateButtonDO.setOid(null);
+			codeClassifyTemplateButtonDO.setClassifytemplateoid(templateNewOid);
+		}
+		return codeTempbuttonEntities;
+	}
+
+
+	/**
+	 * 澶嶅埗妯℃澘灞炴��
+	 */
+	public List<CodeClstempattrEntity> copyTemplateAttr(String templateOldOid,String templateNewOid){
+
+//		VciQueryWrapperForDO codeClassifyTemplateAttrQuery = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+//		codeClassifyTemplateAttrQuery.addQueryMap("classifyTemplateOid",templateOldOid);
+
+		Map<String,Object> condition = new HashMap<>(1);
+		condition.put("classifyTemplateOid",templateOldOid);
+
+//		List<CodeClstempattrEntity> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrDaoI.selectByWrapper(codeClassifyTemplateAttrQuery);
+		List<CodeClstempattrEntity> codeClstempattrEntities = codeClstempattrMapper.selectByMap(condition);
+
+		for (CodeClstempattrEntity codeClassifyTemplateAttrDO :codeClstempattrEntities){
+//			String attrOid = VciBaseUtil.getPk();
+			codeClassifyTemplateAttrDO.setOid(null);
+			codeClassifyTemplateAttrDO.setClassifytemplateoid(templateNewOid);
+//			codeClstempattrMapper.insert(codeClassifyTemplateAttrDO);
+		}
+		return codeClstempattrEntities;
+	}
+
+
+	/**
+	 * 鍒嗙被妯℃澘鍒楄〃
+	 *
+	 * @param plCodeClstemplate 鏌ヨ鏉′欢
+	 * @param query   鍒嗛〉瀵硅薄
+	 * @return 鏄剧ず瀵硅薄
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public DataGrid<CodeClstemplateVO> gridCodeClassifyTemplate(CodeClstemplateVO plCodeClstemplate, Query query) throws VciBaseException {
+		DataGrid<CodeClstemplateVO> dataGrid=new DataGrid<CodeClstemplateVO>();
+		//娌℃湁浼犲垎绫籭d锛屼笉鎵ц鏌ヨ閫昏緫锛岀洿鎺ヨ繑鍥�
+//		if(conditionMap.size()==0){
+//			dataGrid.setData(new ArrayList<>());
+//			dataGrid.setTotal(0);
+//			return dataGrid;
+//		}
+//		if (pageHelper == null) {
+//			pageHelper = new PageHelper(-1);
+//		}
+//		pageHelper.addDefaultDesc("revisionSeq");
+
+
+
+		List<CodeClstemplateVO> doList = codeClstemplateMapper.selectPlCodeClstemplatePage(Condition.getPage(query), plCodeClstemplate);
+		if (!CollectionUtils.isEmpty(doList)) {
+//			QueryWrapper<CodeClstemplateVO> codeClstemplateVOQueryWrapper = new QueryWrapper<>();
+//			codeClstemplateVOQueryWrapper.allEq(plCodeClstemplate);
+			List<CodeClstemplateEntity> codeClstemplateEntity = new ArrayList<>();
+			BeanUtils.copyProperties(doList,codeClstemplateEntity);
+			dataGrid.setData(codeClassifyTemplateDO2VOs(codeClstemplateEntity));
+			dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClstemplateMapper.selectCount(Condition.getQueryWrapper(plCodeClstemplate)))));
+		}
+		return dataGrid;
+	}
+
+
+	/**
+	 * 澧炲姞鍒嗙被妯℃澘瀵硅薄
+	 * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public R<CodeClstemplateVO> addSave(CodeClstemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
+		VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+		//灏咲TO杞崲涓篋O
+		CodeClstemplateEntity codeClassifyTemplateDO = new CodeClstemplateEntity();
+		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDTO,codeClassifyTemplateDO);
+
+		//鏌ヨ鍒嗙被浠ュ強涓婄骇鍒嗙被鐨勪笟鍔$被鍨媌tmtypeid銆乥tmtypename
+		List<CodeClassify> codeClassifyDOList = codeClassifyService.selectAllLevelParents(codeClassifyTemplateDTO.getCodeClassifyOid());
+
+		//鎵�鏈夊垎绫婚兘娌℃湁涓氬姟绫诲瀷锛岃繑鍥炴彁绀�
+		if(codeClassifyDOList.size()==0){
+			return R.fail("娣诲姞妯℃澘娣诲姞澶辫触,鍒嗙被鍜屼笂绾у垎绫婚兘娌℃湁鍏宠仈涓氬姟绫诲瀷锛�");
+		}
+
+		//璁剧疆btmtypeid鍜宯ame
+		CodeClassify codeClassifyDO = codeClassifyDOList.get(0);
+		codeClassifyTemplateDO.setBtmTypeId(codeClassifyDO.getBtmTypeId());
+		codeClassifyTemplateDO.setBtmTypeName(codeClassifyDO.getBtmTypeName());
+		codeClassifyTemplateDO.setLcStatus(FRAMEWORK_RELEASE_EDITING);
+		codeClassifyTemplateDO.setTs(new Date());
+		codeClassifyTemplateDO.setOwner(AuthUtil.getUser().getUserName());
+		codeClassifyTemplateDO.setLctid("codeClsTempLc");
+		codeClassifyTemplateDO.setVersionValue("1");
+		codeClassifyTemplateDO.setVersionSeq(1);
+		codeClassifyTemplateDO.setRevisionValue("1");
+		codeClassifyTemplateDO.setRevisionSeq(1);
+		codeClassifyTemplateDO.setVersionRule("0");
+		codeClassifyTemplateDO.setRevisionRule("numberversionrule");
+		codeClassifyTemplateDO.setLastModifyTime(new Date());
+		codeClassifyTemplateDO.setLastModifier(AuthUtil.getUser().getUserName());
+		codeClassifyTemplateDO.setCreator(AuthUtil.getUser().getUserName());
+		codeClassifyTemplateDO.setCreateTime(new Date());
+		codeClassifyTemplateDO.setLastV("1");
+		codeClassifyTemplateDO.setLastR("1");
+		codeClassifyTemplateDO.setFirstV("1");
+		codeClassifyTemplateDO.setFirstR("1");
+		codeClassifyTemplateDO.setBtmname("codeclstemplate");
+
+		baseMapper.insert(codeClassifyTemplateDO);
+		//榛樿娣诲姞妯℃澘灞炴��
+//        List<CodeClassifyTemplateAttrDO> attrDOList = new ArrayList<>();
+
+//        CodeClassifyTemplateAttrDO codeAttr = new CodeClassifyTemplateAttrDO();
+//        codeAttr.setId("id");
+//        codeAttr.setName("浼佷笟缂栫爜");
+//        codeAttr.setAttributeDataType("VTString");
+//        codeAttr.setAttrTableWidth(150);
+//        codeAttr.setOrderNum(1);
+//        codeAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
+//        codeAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
+//        codeAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
+//        attrDOList.add(codeAttr);
+//
+//
+//        CodeClassifyTemplateAttrDO groupAttr = new CodeClassifyTemplateAttrDO();
+//        groupAttr.setId("name");
+//        groupAttr.setName("闆嗗洟鐮�");
+//        groupAttr.setAttributeDataType("VTString");
+//        groupAttr.setAttrTableWidth(150);
+//        groupAttr.setOrderNum(2);
+//        groupAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
+//        groupAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
+//        groupAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
+//        attrDOList.add(groupAttr);
+//
+//        CodeClassifyTemplateAttrDO descAttr = new CodeClassifyTemplateAttrDO();
+//        descAttr.setId("description");
+//        descAttr.setName("鎻忚堪");
+//        descAttr.setAttrTableWidth(150);
+//        descAttr.setAttributeDataType("VTString");
+//        descAttr.setOrderNum(3);
+//        descAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
+//        descAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
+//        descAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
+//        attrDOList.add(descAttr);
+//
+//        CodeClassifyTemplateAttrDO statusAttr = new CodeClassifyTemplateAttrDO();
+//        statusAttr.setId("lcstatus");
+//        statusAttr.setName("鐘舵��");
+//        statusAttr.setAttrTableWidth(70);
+//        statusAttr.setOrderNum(4);
+//        statusAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
+//        statusAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
+//        statusAttr.setAttributeDataType("VTString");
+//        statusAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
+//        attrDOList.add(statusAttr);
+//
+//
+//        CodeClassifyTemplateAttrDO secAttr = new CodeClassifyTemplateAttrDO();
+//        secAttr.setId("secretgrade");
+//        secAttr.setName("瀵嗙骇");
+//        secAttr.setAttrTableWidth(70);
+//        secAttr.setAttributeDataType(VciFieldTypeEnum.VTInteger.name());
+//        secAttr.setEnumId("Enumsecretgrade");
+//        secAttr.setEnumName("瀵嗙骇");
+//        secAttr.setOrderNum(4);
+//        secAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
+//        secAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
+//        secAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
+//        attrDOList.add(secAttr);
+
+		return R.data(codeClassifyTemplateDO2VO(codeClassifyTemplateDO));
+	}
+
+	/**
+	 * 淇敼鍒嗙被妯℃澘瀵硅薄
+	 * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public R editSave(CodeClstemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
+		VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"鏁版嵁瀵硅薄",codeClassifyTemplateDTO.getOid(),"鍒嗙被妯℃澘瀵硅薄涓婚敭");
+		//妫�鏌s
+		CodeClstemplateEntity codeClassifyTemplateDOCopyFromDTO = new CodeClstemplateEntity();
+		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDTO,codeClassifyTemplateDOCopyFromDTO);
+		CodeClstemplateEntity codeClassifyTemplateDO = null;
+		if(codeClassifyTemplateDOCopyFromDTO.getOid() == null){
+			baseMapper.insert(codeClassifyTemplateDOCopyFromDTO);
+			return R.data(codeClassifyTemplateDOCopyFromDTO);
+		}else{
+//			Map<String,Object> condition = new HashMap<>(2);
+//			condition.put("oid",codeClassifyTemplateDOCopyFromDTO.getOid());
+//			condition.put("ts",codeClassifyTemplateDOCopyFromDTO.getTs());
+			CodeClstemplateEntity detail = baseMapper
+				.selectById(codeClassifyTemplateDOCopyFromDTO.getOid());
+			//		boolean tsBoolean = boService.checkTs(codeClassifyTemplateAttrDOListemplateDOCopyFromDTO);
+			if(detail.getTs().compareTo(codeClassifyTemplateDOCopyFromDTO.getTs()) != 0){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+				return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+			}
+
+			//灏咲TO杞崲涓篋O
+			codeClassifyTemplateDO = selectByOid(codeClassifyTemplateDTO.getOid());
+			String lcstatus = codeClassifyTemplateDO.getLcStatus();
+			String versionvalue = codeClassifyTemplateDO.getVersionValue();
+
+			//鍙湁缂栬緫涓墠鑳戒慨鏀�
+			if(!CodeClassifyTemplateLC.EDITING.getValue().equals(codeClassifyTemplateDO.getLcStatus())){
+				return R.fail("鍙湁缂栬緫涓殑锛屾ā鏉挎墠鑳戒慨鏀癸紒");
+			}
+			revisionModelUtil.copyFromDTOIgnore(codeClassifyTemplateDTO,codeClassifyTemplateDO);
+			//涓嶄慨鏀圭増鏈彿鍜岀姸鎬�
+			codeClassifyTemplateDO.setLcStatus(lcstatus);
+			codeClassifyTemplateDO.setVersionValue(versionvalue);
+			codeClassifyTemplateDO.setTs(new Date());
+			codeClassifyTemplateDO.setLastModifier(AuthUtil.getUser().getUserName());
+			codeClassifyTemplateDO.setLastModifyTime(new Date());
+			baseMapper.updateById(codeClassifyTemplateDO);
+		}
+		return R.data(codeClassifyTemplateDO2VO(codeClassifyTemplateDO));
+	}
+
 }

--
Gitblit v1.9.3