From 08fa27dc5a9dde9ef6dde7f78e5adc20cc9ee139 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Mon, 11 Dec 2023 15:03:41 +0800 Subject: [PATCH 1/5] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-I?= =?UTF-8?q?T=E6=9C=8D=E5=8A=A1=E8=B7=A8=E7=8E=AF=E5=A2=83=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=86=8D=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031708374171648]后端-IT服务跨环境导出再导入 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031708374171648 --- .../ProcessCommentTemplateGetApi.java | 26 ++---- .../ProcessCommentTemplateSaveApi.java | 58 +++---------- .../CommentTemplateImportExportHandler.java | 83 +++++++++++++++++++ .../ProcessCommentTemplateService.java | 10 +++ .../ProcessCommentTemplateServiceImpl.java | 78 +++++++++++++++++ 5 files changed, 188 insertions(+), 67 deletions(-) create mode 100644 src/main/java/neatlogic/module/process/importexport/handler/CommentTemplateImportExportHandler.java create mode 100644 src/main/java/neatlogic/module/process/service/ProcessCommentTemplateService.java create mode 100644 src/main/java/neatlogic/module/process/service/ProcessCommentTemplateServiceImpl.java diff --git a/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateGetApi.java b/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateGetApi.java index 3eee22b7e..66c1827e0 100755 --- a/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateGetApi.java +++ b/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateGetApi.java @@ -1,33 +1,29 @@ package neatlogic.module.process.api.commenttemplate; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.auth.core.AuthAction; import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.process.auth.PROCESS_BASE; -import neatlogic.framework.process.dao.mapper.ProcessCommentTemplateMapper; -import neatlogic.framework.process.dto.ProcessCommentTemplateAuthVo; import neatlogic.framework.process.dto.ProcessCommentTemplateVo; import neatlogic.framework.process.exception.commenttemplate.ProcessCommentTemplateNotFoundException; -import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.annotation.Input; import neatlogic.framework.restful.annotation.OperationType; import neatlogic.framework.restful.annotation.Output; import neatlogic.framework.restful.annotation.Param; +import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; -import com.alibaba.fastjson.JSONObject; -import org.springframework.beans.factory.annotation.Autowired; +import neatlogic.module.process.service.ProcessCommentTemplateService; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import javax.annotation.Resource; @Service @AuthAction(action = PROCESS_BASE.class) @OperationType(type = OperationTypeEnum.SEARCH) public class ProcessCommentTemplateGetApi extends PrivateApiComponentBase { - @Autowired - private ProcessCommentTemplateMapper commentTemplateMapper; + @Resource + private ProcessCommentTemplateService processCommentTemplateService; @Override public String getToken() { @@ -50,18 +46,10 @@ public class ProcessCommentTemplateGetApi extends PrivateApiComponentBase { public Object myDoService(JSONObject jsonObj) throws Exception { JSONObject returnObj = new JSONObject(); Long id = jsonObj.getLong("id"); - ProcessCommentTemplateVo vo = commentTemplateMapper.getTemplateById(id); + ProcessCommentTemplateVo vo = processCommentTemplateService.getTemplateById(id); if(vo == null){ throw new ProcessCommentTemplateNotFoundException(id); } - if (ProcessCommentTemplateVo.TempalteType.SYSTEM.getValue().equals(vo.getType())) { - List authList = new ArrayList<>(); - List authVoList = commentTemplateMapper.getProcessCommentTemplateAuthListByCommentTemplateId(id); - for (ProcessCommentTemplateAuthVo authVo : authVoList) { - authList.add(authVo.getType() + "#" + authVo.getUuid()); - } - vo.setAuthList(authList); - } returnObj.put("template", vo); return returnObj; } diff --git a/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateSaveApi.java b/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateSaveApi.java index f5662b185..224543076 100644 --- a/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateSaveApi.java +++ b/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateSaveApi.java @@ -1,21 +1,17 @@ package neatlogic.module.process.api.commenttemplate; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.asynchronization.threadlocal.UserContext; import neatlogic.framework.auth.core.AuthAction; import neatlogic.framework.auth.core.AuthActionChecker; import neatlogic.framework.common.constvalue.ApiParamType; -import neatlogic.framework.common.constvalue.GroupSearch; import neatlogic.framework.dto.FieldValidResultVo; import neatlogic.framework.exception.type.PermissionDeniedException; import neatlogic.framework.process.auth.PROCESS_BASE; import neatlogic.framework.process.auth.PROCESS_COMMENT_TEMPLATE_MODIFY; import neatlogic.framework.process.dao.mapper.ProcessCommentTemplateMapper; -import neatlogic.framework.process.dto.ProcessCommentTemplateAuthVo; import neatlogic.framework.process.dto.ProcessCommentTemplateVo; -import neatlogic.framework.process.exception.commenttemplate.ProcessCommentTemplateNotFoundException; import neatlogic.framework.process.exception.commenttemplate.ProcessCommentTemplateNameRepeatException; +import neatlogic.framework.process.exception.commenttemplate.ProcessCommentTemplateNotFoundException; import neatlogic.framework.restful.annotation.Input; import neatlogic.framework.restful.annotation.OperationType; import neatlogic.framework.restful.annotation.Output; @@ -23,13 +19,11 @@ import neatlogic.framework.restful.annotation.Param; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.IValid; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; -import org.apache.commons.collections4.CollectionUtils; +import neatlogic.module.process.service.ProcessCommentTemplateService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; @Service @Transactional @@ -40,6 +34,9 @@ public class ProcessCommentTemplateSaveApi extends PrivateApiComponentBase { @Resource private ProcessCommentTemplateMapper commentTemplateMapper; + @Resource + private ProcessCommentTemplateService processCommentTemplateService; + @Override public String getToken() { return "process/comment/template/save"; @@ -68,16 +65,7 @@ public class ProcessCommentTemplateSaveApi extends PrivateApiComponentBase { public Object myDoService(JSONObject jsonObj) throws Exception { JSONObject returnObj = new JSONObject(); Long id = jsonObj.getLong("id"); - String type = jsonObj.getString("type"); - JSONArray authList = jsonObj.getJSONArray("authList"); - - ProcessCommentTemplateVo vo = jsonObj.toJavaObject(ProcessCommentTemplateVo.class); - if (commentTemplateMapper.checkTemplateNameIsRepeat(vo) > 0) { - throw new ProcessCommentTemplateNameRepeatException(vo.getName()); - } - if (id != null) { - ProcessCommentTemplateVo _vo = commentTemplateMapper.getTemplateById(id); if (_vo == null) { throw new ProcessCommentTemplateNotFoundException(id); @@ -86,42 +74,16 @@ public class ProcessCommentTemplateSaveApi extends PrivateApiComponentBase { if (ProcessCommentTemplateVo.TempalteType.SYSTEM.getValue().equals(_vo.getType()) && !AuthActionChecker.check(PROCESS_COMMENT_TEMPLATE_MODIFY.class.getSimpleName())) { throw new PermissionDeniedException(PROCESS_COMMENT_TEMPLATE_MODIFY.class); } -// vo.setType(_vo.getType()); - commentTemplateMapper.updateTemplate(vo); - commentTemplateMapper.deleteTemplateAuthority(id); } else { - vo.setType(type); + String type = jsonObj.getString("type"); /** 没有权限则不允许创建系统模版 */ - if (ProcessCommentTemplateVo.TempalteType.SYSTEM.getValue().equals(vo.getType()) && !AuthActionChecker.check(PROCESS_COMMENT_TEMPLATE_MODIFY.class.getSimpleName())) { + if (ProcessCommentTemplateVo.TempalteType.SYSTEM.getValue().equals(type) && !AuthActionChecker.check(PROCESS_COMMENT_TEMPLATE_MODIFY.class.getSimpleName())) { throw new PermissionDeniedException(PROCESS_COMMENT_TEMPLATE_MODIFY.class); } - vo.setFcu(UserContext.get().getUserUuid(true)); - commentTemplateMapper.insertTemplate(vo); - } - List list = new ArrayList<>(); - if (ProcessCommentTemplateVo.TempalteType.SYSTEM.getValue().equals(vo.getType()) && CollectionUtils.isNotEmpty(authList)) { - for (Object obj : authList) { - String[] split = obj.toString().split("#"); - if (GroupSearch.getGroupSearch(split[0]) != null) { - ProcessCommentTemplateAuthVo auth = new ProcessCommentTemplateAuthVo(); - auth.setCommentTemplateId(vo.getId()); - auth.setType(split[0]); - auth.setUuid(split[1]); - list.add(auth); - } - } - } else if (ProcessCommentTemplateVo.TempalteType.CUSTOM.getValue().equals(vo.getType())) { - ProcessCommentTemplateAuthVo auth = new ProcessCommentTemplateAuthVo(); - auth.setCommentTemplateId(vo.getId()); - auth.setType(GroupSearch.USER.getValue()); - auth.setUuid(UserContext.get().getUserUuid()); - list.add(auth); - } - if (CollectionUtils.isNotEmpty(list)) { - commentTemplateMapper.batchInsertAuthority(list); } - - returnObj.put("id", vo.getId()); + ProcessCommentTemplateVo template = jsonObj.toJavaObject(ProcessCommentTemplateVo.class); + processCommentTemplateService.saveTemplate(template); + returnObj.put("id", template.getId()); return returnObj; } diff --git a/src/main/java/neatlogic/module/process/importexport/handler/CommentTemplateImportExportHandler.java b/src/main/java/neatlogic/module/process/importexport/handler/CommentTemplateImportExportHandler.java new file mode 100644 index 000000000..b5dd06aa7 --- /dev/null +++ b/src/main/java/neatlogic/module/process/importexport/handler/CommentTemplateImportExportHandler.java @@ -0,0 +1,83 @@ +package neatlogic.module.process.importexport.handler; + +import neatlogic.framework.importexport.core.ImportExportHandlerBase; +import neatlogic.framework.importexport.core.ImportExportHandlerType; +import neatlogic.framework.importexport.dto.ImportExportBaseInfoVo; +import neatlogic.framework.importexport.dto.ImportExportPrimaryChangeVo; +import neatlogic.framework.importexport.dto.ImportExportVo; +import neatlogic.framework.process.constvalue.ProcessImportExportHandlerType; +import neatlogic.framework.process.dao.mapper.ProcessCommentTemplateMapper; +import neatlogic.framework.process.dto.ProcessCommentTemplateVo; +import neatlogic.framework.process.exception.commenttemplate.ProcessCommentTemplateNotFoundException; +import neatlogic.module.process.service.ProcessCommentTemplateService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.zip.ZipOutputStream; + +@Component +public class CommentTemplateImportExportHandler extends ImportExportHandlerBase { + + @Resource + private ProcessCommentTemplateMapper commentTemplateMapper; + + @Resource + private ProcessCommentTemplateService processCommentTemplateService; + + @Override + public ImportExportHandlerType getType() { + return ProcessImportExportHandlerType.COMMENT_TEMPLATE; + } + + @Override + public boolean checkImportAuth(ImportExportVo importExportVo) { + return true; + } + + @Override + public boolean checkExportAuth(Object primaryKey) { + return true; + } + + @Override + public boolean checkIsExists(ImportExportBaseInfoVo importExportBaseInfoVo) { + return commentTemplateMapper.getTemplateByName(importExportBaseInfoVo.getName()) != null; + } + + @Override + public Object getPrimaryByName(ImportExportVo importExportVo) { + ProcessCommentTemplateVo template = commentTemplateMapper.getTemplateByName(importExportVo.getName()); + if (template == null) { + throw new ProcessCommentTemplateNotFoundException(importExportVo.getName()); + } + return template.getId(); + } + + @Override + public Object importData(ImportExportVo importExportVo, List primaryChangeList) { + ProcessCommentTemplateVo template = importExportVo.getData().toJavaObject(ProcessCommentTemplateVo.class); + ProcessCommentTemplateVo oldTemplate = commentTemplateMapper.getTemplateByName(template.getName()); + if (oldTemplate != null) { + template.setId(oldTemplate.getId()); + } else { + if (commentTemplateMapper.getTemplateById(template.getId()) != null) { + template.setId(null); + } + } + processCommentTemplateService.saveTemplate(template); + return template.getId(); + } + + @Override + protected ImportExportVo myExportData(Object primaryKey, List dependencyList, ZipOutputStream zipOutputStream) { + Long id = (Long) primaryKey; + ProcessCommentTemplateVo template = processCommentTemplateService.getTemplateById(id); + if(template == null){ + throw new ProcessCommentTemplateNotFoundException(id); + } + ImportExportVo importExportVo = new ImportExportVo(this.getType().getValue(), primaryKey, template.getName()); + importExportVo.setDataWithObject(template); + return importExportVo; + } +} diff --git a/src/main/java/neatlogic/module/process/service/ProcessCommentTemplateService.java b/src/main/java/neatlogic/module/process/service/ProcessCommentTemplateService.java new file mode 100644 index 000000000..60c94a0fd --- /dev/null +++ b/src/main/java/neatlogic/module/process/service/ProcessCommentTemplateService.java @@ -0,0 +1,10 @@ +package neatlogic.module.process.service; + +import neatlogic.framework.process.dto.ProcessCommentTemplateVo; + +public interface ProcessCommentTemplateService { + + ProcessCommentTemplateVo getTemplateById(Long id); + + void saveTemplate(ProcessCommentTemplateVo template); +} diff --git a/src/main/java/neatlogic/module/process/service/ProcessCommentTemplateServiceImpl.java b/src/main/java/neatlogic/module/process/service/ProcessCommentTemplateServiceImpl.java new file mode 100644 index 000000000..e3d55c582 --- /dev/null +++ b/src/main/java/neatlogic/module/process/service/ProcessCommentTemplateServiceImpl.java @@ -0,0 +1,78 @@ +package neatlogic.module.process.service; + +import neatlogic.framework.asynchronization.threadlocal.UserContext; +import neatlogic.framework.common.constvalue.GroupSearch; +import neatlogic.framework.process.dao.mapper.ProcessCommentTemplateMapper; +import neatlogic.framework.process.dto.ProcessCommentTemplateAuthVo; +import neatlogic.framework.process.dto.ProcessCommentTemplateVo; +import neatlogic.framework.process.exception.commenttemplate.ProcessCommentTemplateNameRepeatException; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +@Service +public class ProcessCommentTemplateServiceImpl implements ProcessCommentTemplateService{ + + @Resource + private ProcessCommentTemplateMapper commentTemplateMapper; + + @Override + public ProcessCommentTemplateVo getTemplateById(Long id) { + ProcessCommentTemplateVo vo = commentTemplateMapper.getTemplateById(id); + if(vo == null){ + return null; + } + if (ProcessCommentTemplateVo.TempalteType.SYSTEM.getValue().equals(vo.getType())) { + List authList = new ArrayList<>(); + List authVoList = commentTemplateMapper.getProcessCommentTemplateAuthListByCommentTemplateId(id); + for (ProcessCommentTemplateAuthVo authVo : authVoList) { + authList.add(authVo.getType() + "#" + authVo.getUuid()); + } + vo.setAuthList(authList); + } + return vo; + } + + @Override + public void saveTemplate(ProcessCommentTemplateVo template) { + if (commentTemplateMapper.checkTemplateNameIsRepeat(template) > 0) { + throw new ProcessCommentTemplateNameRepeatException(template.getName()); + } + ProcessCommentTemplateVo oldTemplate = commentTemplateMapper.getTemplateById(template.getId()); + if (oldTemplate != null) { + template.setType(oldTemplate.getType()); + template.setLcu(UserContext.get().getUserUuid(true)); + commentTemplateMapper.updateTemplate(template); + commentTemplateMapper.deleteTemplateAuthority(template.getId()); + } else { + template.setFcu(UserContext.get().getUserUuid(true)); + commentTemplateMapper.insertTemplate(template); + } + List list = new ArrayList<>(); + List authList = template.getAuthList(); + if (ProcessCommentTemplateVo.TempalteType.SYSTEM.getValue().equals(template.getType()) && CollectionUtils.isNotEmpty(authList)) { + for (String auth : authList) { + String[] split = auth.split("#"); + if (GroupSearch.getGroupSearch(split[0]) != null) { + ProcessCommentTemplateAuthVo authVo = new ProcessCommentTemplateAuthVo(); + authVo.setCommentTemplateId(template.getId()); + authVo.setType(split[0]); + authVo.setUuid(split[1]); + list.add(authVo); + } + } + } else if (ProcessCommentTemplateVo.TempalteType.CUSTOM.getValue().equals(template.getType())) { + ProcessCommentTemplateAuthVo auth = new ProcessCommentTemplateAuthVo(); + auth.setCommentTemplateId(template.getId()); + auth.setType(GroupSearch.USER.getValue()); + auth.setUuid(UserContext.get().getUserUuid()); + list.add(auth); + } + if (CollectionUtils.isNotEmpty(list)) { + commentTemplateMapper.batchInsertAuthority(list); + } + } +} -- Gitee From f097aff04f8a6cbe3a30c3cb49a22780aaaa6298 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Mon, 11 Dec 2023 15:07:14 +0800 Subject: [PATCH 2/5] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-I?= =?UTF-8?q?T=E6=9C=8D=E5=8A=A1=E8=B7=A8=E7=8E=AF=E5=A2=83=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=86=8D=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031708374171648]后端-IT服务跨环境导出再导入 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031708374171648 --- .../api/score/ScoreTemplateSaveApi.java | 35 +++----- .../ScoreTemplateImportExportHandler.java | 83 +++++++++++++++++++ .../process/service/ScoreTemplateService.java | 8 ++ .../service/ScoreTemplateServiceImpl.java | 36 ++++++++ 4 files changed, 140 insertions(+), 22 deletions(-) create mode 100644 src/main/java/neatlogic/module/process/importexport/handler/ScoreTemplateImportExportHandler.java create mode 100644 src/main/java/neatlogic/module/process/service/ScoreTemplateService.java create mode 100644 src/main/java/neatlogic/module/process/service/ScoreTemplateServiceImpl.java diff --git a/src/main/java/neatlogic/module/process/api/score/ScoreTemplateSaveApi.java b/src/main/java/neatlogic/module/process/api/score/ScoreTemplateSaveApi.java index 586269373..69d253d44 100755 --- a/src/main/java/neatlogic/module/process/api/score/ScoreTemplateSaveApi.java +++ b/src/main/java/neatlogic/module/process/api/score/ScoreTemplateSaveApi.java @@ -1,6 +1,8 @@ package neatlogic.module.process.api.score; -import neatlogic.framework.asynchronization.threadlocal.UserContext; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.auth.core.AuthAction; import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.dto.FieldValidResultVo; @@ -18,13 +20,11 @@ import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.IValid; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; import neatlogic.framework.util.RegexUtils; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import org.springframework.beans.factory.annotation.Autowired; +import neatlogic.module.process.service.ScoreTemplateService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; @AuthAction(action = SCORE_TEMPLATE_MODIFY.class) @@ -33,9 +33,12 @@ import java.util.List; @OperationType(type = OperationTypeEnum.CREATE) public class ScoreTemplateSaveApi extends PrivateApiComponentBase { - @Autowired + @Resource private ScoreTemplateMapper scoreTemplateMapper; + @Resource + private ScoreTemplateService scoreTemplateService; + @Override public String getToken() { return "score/template/save"; @@ -75,28 +78,16 @@ public class ScoreTemplateSaveApi extends PrivateApiComponentBase { scoreTemplateVo.setName(name); scoreTemplateVo.setDescription(description); scoreTemplateVo.setIsActive(isActive); - scoreTemplateVo.setLcu(UserContext.get().getUserUuid(true)); - + scoreTemplateVo.setDimensionList(dimensionList); if (id != null){ if(scoreTemplateMapper.checkScoreTemplateExistsById(id) == null){ throw new ScoreTemplateNotFoundException(id); } - if(scoreTemplateMapper.checkScoreTemplateNameIsRepeat(scoreTemplateVo) > 0) { - throw new ScoreTemplateNameRepeatException(scoreTemplateVo.getName()); - } - scoreTemplateMapper.updateScoreTemplate(scoreTemplateVo); - scoreTemplateMapper.deleteScoreTemplateDimension(scoreTemplateVo.getId()); - }else { - scoreTemplateVo.setFcu(UserContext.get().getUserUuid(true)); - if(scoreTemplateMapper.checkScoreTemplateNameIsRepeat(scoreTemplateVo) > 0) { - throw new ScoreTemplateNameRepeatException(scoreTemplateVo.getName()); - } - scoreTemplateMapper.insertScoreTemplate(scoreTemplateVo); } - for(ScoreTemplateDimensionVo vo : dimensionList){ - vo.setScoreTemplateId(scoreTemplateVo.getId()); - scoreTemplateMapper.insertScoreTemplateDimension(vo); + if(scoreTemplateMapper.checkScoreTemplateNameIsRepeat(scoreTemplateVo) > 0) { + throw new ScoreTemplateNameRepeatException(scoreTemplateVo.getName()); } + scoreTemplateService.saveScoreTemplate(scoreTemplateVo); returnObj.put("scoreTemplate", scoreTemplateVo); return returnObj; } diff --git a/src/main/java/neatlogic/module/process/importexport/handler/ScoreTemplateImportExportHandler.java b/src/main/java/neatlogic/module/process/importexport/handler/ScoreTemplateImportExportHandler.java new file mode 100644 index 000000000..9dd677338 --- /dev/null +++ b/src/main/java/neatlogic/module/process/importexport/handler/ScoreTemplateImportExportHandler.java @@ -0,0 +1,83 @@ +package neatlogic.module.process.importexport.handler; + +import neatlogic.framework.importexport.core.ImportExportHandlerBase; +import neatlogic.framework.importexport.core.ImportExportHandlerType; +import neatlogic.framework.importexport.dto.ImportExportBaseInfoVo; +import neatlogic.framework.importexport.dto.ImportExportPrimaryChangeVo; +import neatlogic.framework.importexport.dto.ImportExportVo; +import neatlogic.framework.process.constvalue.ProcessImportExportHandlerType; +import neatlogic.framework.process.dao.mapper.score.ScoreTemplateMapper; +import neatlogic.framework.process.dto.score.ScoreTemplateVo; +import neatlogic.framework.process.exception.score.ScoreTemplateNotFoundException; +import neatlogic.module.process.service.ScoreTemplateService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.zip.ZipOutputStream; + +@Component +public class ScoreTemplateImportExportHandler extends ImportExportHandlerBase { + + @Resource + private ScoreTemplateMapper scoreTemplateMapper; + + @Resource + private ScoreTemplateService scoreTemplateService; + + @Override + public ImportExportHandlerType getType() { + return ProcessImportExportHandlerType.SCORE_TEMPLATE; + } + + @Override + public boolean checkImportAuth(ImportExportVo importExportVo) { + return true; + } + + @Override + public boolean checkExportAuth(Object primaryKey) { + return true; + } + + @Override + public boolean checkIsExists(ImportExportBaseInfoVo importExportBaseInfoVo) { + return scoreTemplateMapper.getScoreTemplateByName(importExportBaseInfoVo.getName()) != null; + } + + @Override + public Object getPrimaryByName(ImportExportVo importExportVo) { + ScoreTemplateVo template = scoreTemplateMapper.getScoreTemplateByName(importExportVo.getName()); + if (template == null) { + throw new ScoreTemplateNotFoundException(importExportVo.getName()); + } + return template.getId(); + } + + @Override + public Object importData(ImportExportVo importExportVo, List primaryChangeList) { + ScoreTemplateVo template = importExportVo.getData().toJavaObject(ScoreTemplateVo.class); + ScoreTemplateVo oldTemplate = scoreTemplateMapper.getScoreTemplateByName(importExportVo.getName()); + if (oldTemplate != null) { + template.setId(oldTemplate.getId()); + } else { + if (scoreTemplateMapper.checkScoreTemplateExistsById(template.getId()) != null) { + template.setId(null); + } + } + scoreTemplateService.saveScoreTemplate(template); + return template.getId(); + } + + @Override + protected ImportExportVo myExportData(Object primaryKey, List dependencyList, ZipOutputStream zipOutputStream) { + Long id = (Long) primaryKey; + ScoreTemplateVo template = scoreTemplateMapper.getScoreTemplateById(id); + if(template == null) { + throw new ScoreTemplateNotFoundException(id); + } + ImportExportVo importExportVo = new ImportExportVo(this.getType().getValue(), primaryKey, template.getName()); + importExportVo.setDataWithObject(template); + return importExportVo; + } +} diff --git a/src/main/java/neatlogic/module/process/service/ScoreTemplateService.java b/src/main/java/neatlogic/module/process/service/ScoreTemplateService.java new file mode 100644 index 000000000..66bb63ef0 --- /dev/null +++ b/src/main/java/neatlogic/module/process/service/ScoreTemplateService.java @@ -0,0 +1,8 @@ +package neatlogic.module.process.service; + +import neatlogic.framework.process.dto.score.ScoreTemplateVo; + +public interface ScoreTemplateService { + + void saveScoreTemplate(ScoreTemplateVo template); +} diff --git a/src/main/java/neatlogic/module/process/service/ScoreTemplateServiceImpl.java b/src/main/java/neatlogic/module/process/service/ScoreTemplateServiceImpl.java new file mode 100644 index 000000000..e8ebbf5b7 --- /dev/null +++ b/src/main/java/neatlogic/module/process/service/ScoreTemplateServiceImpl.java @@ -0,0 +1,36 @@ +package neatlogic.module.process.service; + +import neatlogic.framework.asynchronization.threadlocal.UserContext; +import neatlogic.framework.process.dao.mapper.score.ScoreTemplateMapper; +import neatlogic.framework.process.dto.score.ScoreTemplateDimensionVo; +import neatlogic.framework.process.dto.score.ScoreTemplateVo; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class ScoreTemplateServiceImpl implements ScoreTemplateService { + + @Resource + private ScoreTemplateMapper scoreTemplateMapper; + + @Override + public void saveScoreTemplate(ScoreTemplateVo template) { + ScoreTemplateVo oldTemplate = scoreTemplateMapper.checkScoreTemplateExistsById(template.getId()); + if (oldTemplate != null){ + template.setLcu(UserContext.get().getUserUuid(true)); + scoreTemplateMapper.updateScoreTemplate(template); + scoreTemplateMapper.deleteScoreTemplateDimension(template.getId()); + }else { + template.setFcu(UserContext.get().getUserUuid(true)); + scoreTemplateMapper.insertScoreTemplate(template); + } + List dimensionList = template.getDimensionList(); + for(ScoreTemplateDimensionVo vo : dimensionList){ + vo.setScoreTemplateId(template.getId()); + vo.setId(null); + scoreTemplateMapper.insertScoreTemplateDimension(vo); + } + } +} -- Gitee From 2d282d9937601424f1789f81307b023e427a9ebb Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Mon, 11 Dec 2023 15:08:44 +0800 Subject: [PATCH 3/5] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-I?= =?UTF-8?q?T=E6=9C=8D=E5=8A=A1=E8=B7=A8=E7=8E=AF=E5=A2=83=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=86=8D=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031708374171648]后端-IT服务跨环境导出再导入 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031708374171648 --- .../SubtaskPolicyImportExportHandler.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/main/java/neatlogic/module/process/importexport/handler/SubtaskPolicyImportExportHandler.java diff --git a/src/main/java/neatlogic/module/process/importexport/handler/SubtaskPolicyImportExportHandler.java b/src/main/java/neatlogic/module/process/importexport/handler/SubtaskPolicyImportExportHandler.java new file mode 100644 index 000000000..ce425f53f --- /dev/null +++ b/src/main/java/neatlogic/module/process/importexport/handler/SubtaskPolicyImportExportHandler.java @@ -0,0 +1,83 @@ +package neatlogic.module.process.importexport.handler; + +import neatlogic.framework.asynchronization.threadlocal.UserContext; +import neatlogic.framework.importexport.core.ImportExportHandlerBase; +import neatlogic.framework.importexport.core.ImportExportHandlerType; +import neatlogic.framework.importexport.dto.ImportExportBaseInfoVo; +import neatlogic.framework.importexport.dto.ImportExportPrimaryChangeVo; +import neatlogic.framework.importexport.dto.ImportExportVo; +import neatlogic.framework.process.constvalue.ProcessImportExportHandlerType; +import neatlogic.framework.process.dao.mapper.task.TaskMapper; +import neatlogic.framework.process.dto.TaskConfigVo; +import neatlogic.framework.process.exception.processtask.task.TaskConfigNotFoundException; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.zip.ZipOutputStream; + +@Component +public class SubtaskPolicyImportExportHandler extends ImportExportHandlerBase { + + @Resource + TaskMapper taskMapper; + + @Override + public ImportExportHandlerType getType() { + return ProcessImportExportHandlerType.SUBTASK_POLICY; + } + + @Override + public boolean checkImportAuth(ImportExportVo importExportVo) { + return true; + } + + @Override + public boolean checkExportAuth(Object primaryKey) { + return true; + } + + @Override + public boolean checkIsExists(ImportExportBaseInfoVo importExportBaseInfoVo) { + return taskMapper.getTaskConfigByName(importExportBaseInfoVo.getName()) != null; + } + + @Override + public Object getPrimaryByName(ImportExportVo importExportVo) { + TaskConfigVo taskConfig = taskMapper.getTaskConfigByName(importExportVo.getName()); + if (taskConfig == null) { + throw new TaskConfigNotFoundException(importExportVo.getName()); + } + return taskConfig.getId(); + } + + @Override + public Object importData(ImportExportVo importExportVo, List primaryChangeList) { + TaskConfigVo taskConfig = importExportVo.getData().toJavaObject(TaskConfigVo.class); + TaskConfigVo oldTaskConfig = taskMapper.getTaskConfigByName(taskConfig.getName()); + if (oldTaskConfig != null) { + taskConfig.setId(oldTaskConfig.getId()); + taskConfig.setLcu(UserContext.get().getUserUuid()); + taskMapper.updateTaskConfig(taskConfig); + } else { + if (taskMapper.getTaskConfigById(taskConfig.getId()) != null) { + taskConfig.setId(null); + } + taskConfig.setFcu(UserContext.get().getUserUuid()); + taskMapper.insertTaskConfig(taskConfig); + } + return taskConfig.getId(); + } + + @Override + protected ImportExportVo myExportData(Object primaryKey, List dependencyList, ZipOutputStream zipOutputStream) { + Long id = (Long) primaryKey; + TaskConfigVo taskConfig = taskMapper.getTaskConfigById(id); + if(taskConfig == null){ + throw new TaskConfigNotFoundException(id.toString()); + } + ImportExportVo importExportVo = new ImportExportVo(this.getType().getValue(), primaryKey, taskConfig.getName()); + importExportVo.setDataWithObject(taskConfig); + return importExportVo; + } +} -- Gitee From c5adacd486686e422ca13c014f655c197912a1de Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Tue, 12 Dec 2023 10:04:20 +0800 Subject: [PATCH 4/5] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-I?= =?UTF-8?q?T=E6=9C=8D=E5=8A=A1=E8=B7=A8=E7=8E=AF=E5=A2=83=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=86=8D=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031708374171648]后端-IT服务跨环境导出再导入 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031708374171648 --- .../handler/ProcessImportExportHandler.java | 410 ++++++++++++++++++ 1 file changed, 410 insertions(+) create mode 100644 src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java diff --git a/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java b/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java new file mode 100644 index 000000000..82d15fa31 --- /dev/null +++ b/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java @@ -0,0 +1,410 @@ +package neatlogic.module.process.importexport.handler; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.importexport.constvalue.FrameworkImportExportHandlerType; +import neatlogic.framework.importexport.core.ImportExportHandlerBase; +import neatlogic.framework.importexport.core.ImportExportHandlerType; +import neatlogic.framework.importexport.dto.ImportExportBaseInfoVo; +import neatlogic.framework.importexport.dto.ImportExportPrimaryChangeVo; +import neatlogic.framework.importexport.dto.ImportExportVo; +import neatlogic.framework.process.constvalue.ProcessImportExportHandlerType; +import neatlogic.framework.process.dto.ProcessVo; +import neatlogic.framework.process.exception.process.ProcessNotFoundException; +import neatlogic.module.process.dao.mapper.ProcessMapper; +import neatlogic.module.process.service.ProcessService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Objects; +import java.util.zip.ZipOutputStream; + +@Component +public class ProcessImportExportHandler extends ImportExportHandlerBase { + + @Resource + private ProcessMapper processMapper; + + @Resource + private ProcessService processService; + + @Override + public ImportExportHandlerType getType() { + return ProcessImportExportHandlerType.PROCESS; + } + + @Override + public boolean checkImportAuth(ImportExportVo importExportVo) { + return true; + } + + @Override + public boolean checkExportAuth(Object primaryKey) { + return true; + } + + @Override + public boolean checkIsExists(ImportExportBaseInfoVo importExportBaseInfoVo) { + return processMapper.getProcessByName(importExportBaseInfoVo.getName()) != null; + } + + @Override + public Object getPrimaryByName(ImportExportVo importExportVo) { + ProcessVo process = processMapper.getProcessByName(importExportVo.getName()); + if (process == null) { + throw new ProcessNotFoundException(importExportVo.getName()); + } + return process.getUuid(); + } + + @Override + public Object importData(ImportExportVo importExportVo, List primaryChangeList) { + ProcessVo process = importExportVo.getData().toJavaObject(ProcessVo.class); + ProcessVo oldProcess = processMapper.getProcessByName(importExportVo.getName()); + if (oldProcess != null) { + process.setUuid(oldProcess.getUuid()); + } else { + if (processMapper.getProcessByUuid(process.getUuid()) != null) { + process.setUuid(null); + } + } + importHandle(process, primaryChangeList); + process.makeupConfigObj(); + processService.saveProcess(process); + return process.getUuid(); + } + + /** + * 导入处理,更新依赖组件的唯一标识 + * @param process + * @param primaryChangeList + */ + private void importHandle(ProcessVo process, List primaryChangeList) { + dependencyHandle(IMPORT, process, null, null, primaryChangeList); + } + + @Override + protected ImportExportVo myExportData(Object primaryKey, List dependencyList, ZipOutputStream zipOutputStream) { + String uuid = (String) primaryKey; + ProcessVo process = processMapper.getProcessByUuid(uuid); + if (process == null) { + throw new ProcessNotFoundException(uuid); + } + exportHandle(process, dependencyList, zipOutputStream); + ImportExportVo importExportVo = new ImportExportVo(this.getType().getValue(), primaryKey, process.getName()); + importExportVo.setDataWithObject(process); + return importExportVo; + } + + /** + * 导出处理,先导出依赖组件 + * @param process + * @param dependencyList + * @param zipOutputStream + */ + private void exportHandle(ProcessVo process, List dependencyList, ZipOutputStream zipOutputStream) { + dependencyHandle(EXPORT, process, dependencyList, zipOutputStream, null); + } + + /** + * 导出处理,先导出依赖组件 + * 导入处理,更新依赖组件的唯一标识 + * @param action + * @param process + * @param dependencyList + * @param zipOutputStream + * @param primaryChangeList + */ + private void dependencyHandle(String action, ProcessVo process, List dependencyList, ZipOutputStream zipOutputStream, List primaryChangeList) { + JSONObject config = process.getConfig(); + JSONObject processObj = config.getJSONObject("process"); + JSONArray slaList = processObj.getJSONArray("slaList"); + if (CollectionUtils.isNotEmpty(slaList)) { + // 通知策略 + for (int i = 0; i < slaList.size(); i++) { + JSONObject slaObj = slaList.getJSONObject(i); + if (MapUtils.isEmpty(slaObj)) { + continue; + } + JSONArray notifyPolicyList = slaObj.getJSONArray("notifyPolicyList"); + if (CollectionUtils.isEmpty(notifyPolicyList)) { + continue; + } + for (int j = 0; j < notifyPolicyList.size(); j++) { + JSONObject notifyPolicyObj = notifyPolicyList.getJSONObject(j); + if (MapUtils.isEmpty(notifyPolicyObj)) { + continue; + } + JSONObject notifyPolicyConfig = notifyPolicyObj.getJSONObject("notifyPolicyConfig"); + if (MapUtils.isEmpty(notifyPolicyConfig)) { + continue; + } + Long policyId = notifyPolicyConfig.getLong("policyId"); + if (policyId == null) { + continue; + } + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.NOTIFY_POLICY, policyId, primaryChangeList); + if (newPrimaryKey != null) { + notifyPolicyConfig.put("policyId", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(FrameworkImportExportHandlerType.NOTIFY_POLICY, policyId, dependencyList, zipOutputStream); + } + } + } + } + JSONObject formConfig = processObj.getJSONObject("formConfig"); + if (MapUtils.isNotEmpty(formConfig)) { + // 表单 + String formUuid = formConfig.getString("uuid"); + if (StringUtils.isNotBlank(formUuid)) { + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.FORM, formUuid, primaryChangeList); + if (newPrimaryKey != null) { + formConfig.put("uuid", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(FrameworkImportExportHandlerType.FORM, formUuid, dependencyList, zipOutputStream); + } + } + } + JSONObject processConfig = processObj.getJSONObject("processConfig"); + if (MapUtils.isNotEmpty(processConfig)) { + // 通知策略 + // 集成 + JSONObject notifyPolicyConfig = processConfig.getJSONObject("notifyPolicyConfig"); + if (MapUtils.isNotEmpty(notifyPolicyConfig)) { + Long policyId = notifyPolicyConfig.getLong("policyId"); + if (policyId != null) { + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.NOTIFY_POLICY, policyId, primaryChangeList); + if (newPrimaryKey != null) { + notifyPolicyConfig.put("policyId", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(FrameworkImportExportHandlerType.NOTIFY_POLICY, policyId, dependencyList, zipOutputStream); + } + } + } + JSONObject actionConfig = processConfig.getJSONObject("actionConfig"); + if (MapUtils.isNotEmpty(actionConfig)) { + JSONArray actionList = actionConfig.getJSONArray("actionList"); + if (CollectionUtils.isNotEmpty(actionList)) { + for (int i = 0; i < actionList.size(); i++) { + JSONObject actionObj = actionList.getJSONObject(i); + if (MapUtils.isEmpty(actionObj)) { + continue; + } + String integrationUuid = actionObj.getString("integrationUuid"); + if (StringUtils.isBlank(integrationUuid)) { + continue; + } + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.INTEGRATION, integrationUuid, primaryChangeList); + if (newPrimaryKey != null) { + actionObj.put("integrationUuid", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(FrameworkImportExportHandlerType.INTEGRATION, integrationUuid, dependencyList, zipOutputStream); + } + } + } + } + } + JSONObject scoreConfig = processObj.getJSONObject("scoreConfig"); + if (MapUtils.isNotEmpty(scoreConfig)) { + // 评分模板 + Long scoreTemplateId = scoreConfig.getLong("scoreTemplateId"); + if (scoreTemplateId != null) { + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(ProcessImportExportHandlerType.SCORE_TEMPLATE, scoreTemplateId, primaryChangeList); + if (newPrimaryKey != null) { + scoreConfig.put("scoreTemplateId", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(ProcessImportExportHandlerType.SCORE_TEMPLATE, scoreTemplateId, dependencyList, zipOutputStream); + } + } + } + JSONArray stepList = processObj.getJSONArray("stepList"); + if (CollectionUtils.isNotEmpty(stepList)) { + // 通知策略 + // 集成 + // 回复模板 + // 子任务策略 + for (int i = 0; i < stepList.size(); i++) { + JSONObject stepObj = stepList.getJSONObject(i); + if (MapUtils.isEmpty(stepObj)) { + continue; + } + JSONObject stepConfig = stepObj.getJSONObject("stepConfig"); + if (MapUtils.isEmpty(stepConfig)) { + continue; + } + JSONObject notifyPolicyConfig = stepConfig.getJSONObject("notifyPolicyConfig"); + if (MapUtils.isNotEmpty(notifyPolicyConfig)) { + Long policyId = notifyPolicyConfig.getLong("policyId"); + if (policyId != null) { + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.NOTIFY_POLICY, policyId, primaryChangeList); + if (newPrimaryKey != null) { + notifyPolicyConfig.put("policyId", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(FrameworkImportExportHandlerType.NOTIFY_POLICY, policyId, dependencyList, zipOutputStream); + } + } + } + Long commentTemplateId = stepConfig.getLong("commentTemplateId"); + if (commentTemplateId != null) { + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(ProcessImportExportHandlerType.COMMENT_TEMPLATE, commentTemplateId, primaryChangeList); + if (newPrimaryKey != null) { + stepConfig.put("commentTemplateId", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(ProcessImportExportHandlerType.COMMENT_TEMPLATE, commentTemplateId, dependencyList, zipOutputStream); + } + } + JSONObject actionConfig = stepConfig.getJSONObject("actionConfig"); + if (MapUtils.isNotEmpty(actionConfig)) { + JSONArray actionList = actionConfig.getJSONArray("actionList"); + if (CollectionUtils.isNotEmpty(actionList)) { + for (int j = 0; j < actionList.size(); j++) { + JSONObject actionObj = actionList.getJSONObject(j); + if (MapUtils.isEmpty(actionObj)) { + continue; + } + String integrationUuid = actionObj.getString("integrationUuid"); + if (StringUtils.isBlank(integrationUuid)) { + continue; + } + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.INTEGRATION, integrationUuid, primaryChangeList); + if (newPrimaryKey != null) { + actionObj.put("integrationUuid", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(FrameworkImportExportHandlerType.INTEGRATION, integrationUuid, dependencyList, zipOutputStream); + } + } + } + } + JSONObject taskConfig = stepConfig.getJSONObject("taskConfig"); + if (MapUtils.isNotEmpty(taskConfig)) { + JSONArray idList = taskConfig.getJSONArray("idList"); + if (CollectionUtils.isNotEmpty(idList)) { + for (int j = 0; j < idList.size(); j++) { + Long subtaskPolicyId = idList.getLong(j); + if (subtaskPolicyId == null) { + continue; + } + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(ProcessImportExportHandlerType.SUBTASK_POLICY, subtaskPolicyId, primaryChangeList); + if (newPrimaryKey != null) { + idList.set(j, newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(ProcessImportExportHandlerType.SUBTASK_POLICY, subtaskPolicyId, dependencyList, zipOutputStream); + } + } + } + } + String handler = stepObj.getString("handler"); + if (Objects.equals(handler, "automatic")) { + JSONObject automaticConfig = stepConfig.getJSONObject("automaticConfig"); + if (MapUtils.isNotEmpty(automaticConfig)) { + JSONObject requestConfig = automaticConfig.getJSONObject("requestConfig"); + if (MapUtils.isNotEmpty(requestConfig)) { + String integrationUuid = requestConfig.getString("integrationUuid"); + if (StringUtils.isNotBlank(integrationUuid)) { + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.INTEGRATION, integrationUuid, primaryChangeList); + if (newPrimaryKey != null) { + requestConfig.put("integrationUuid", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(FrameworkImportExportHandlerType.INTEGRATION, integrationUuid, dependencyList, zipOutputStream); + } + } + } + JSONObject callbackConfig = automaticConfig.getJSONObject("callbackConfig"); + if (MapUtils.isNotEmpty(callbackConfig)) { + JSONObject callbackConfigConfig = callbackConfig.getJSONObject("config"); + if (MapUtils.isNotEmpty(callbackConfigConfig)) { + String integrationUuid = callbackConfigConfig.getString("integrationUuid"); + if (StringUtils.isNotBlank(integrationUuid)) { + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.INTEGRATION, integrationUuid, primaryChangeList); + if (newPrimaryKey != null) { + callbackConfigConfig.put("integrationUuid", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(FrameworkImportExportHandlerType.INTEGRATION, integrationUuid, dependencyList, zipOutputStream); + } + } + } + } + } + } else if (Objects.equals(handler, "autoexec")) { + JSONObject autoexecConfig = stepConfig.getJSONObject("autoexecConfig"); + if (MapUtils.isNotEmpty(autoexecConfig)) { + JSONArray configList = autoexecConfig.getJSONArray("configList"); + if (CollectionUtils.isNotEmpty(configList)) { + for (int j = 0; j < configList.size(); j++) { + JSONObject configObj = configList.getJSONObject(j); + if (MapUtils.isEmpty(configObj)) { + continue; + } + Long autoexecCombopId = configObj.getLong("autoexecCombopId"); + if (autoexecCombopId == null) { + continue; + } + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.AUTOEXEC_COMBOP, autoexecCombopId, primaryChangeList); + if (newPrimaryKey != null) { + configObj.put("autoexecCombopId", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(FrameworkImportExportHandlerType.AUTOEXEC_COMBOP, autoexecCombopId, dependencyList, zipOutputStream); + } + } + } + } + } else if (Objects.equals(handler, "cmdbsync")) { + JSONObject ciEntityConfig = stepConfig.getJSONObject("ciEntityConfig"); + JSONArray configList = ciEntityConfig.getJSONArray("configList"); + if (CollectionUtils.isNotEmpty(configList)) { + for (int j = 0; j < configList.size(); j++) { + JSONObject configObj = configList.getJSONObject(j); + if (MapUtils.isEmpty(configObj)) { + continue; + } + Integer isStart = configObj.getInteger("isStart"); + if (!Objects.equals(isStart, 1)) { + continue; + } + Long ciId = configObj.getLong("ciId"); + if (ciId == null) { + continue; + } + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.CMDB_CI, ciId, primaryChangeList); + if (newPrimaryKey != null) { + configObj.put("ciId", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(FrameworkImportExportHandlerType.CMDB_CI, ciId, dependencyList, zipOutputStream); + } + } + } + } + } + } + } +} -- Gitee From b89376070724d0e62a3ac5f8b8c1b2730f874091 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Tue, 12 Dec 2023 11:33:26 +0800 Subject: [PATCH 5/5] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-I?= =?UTF-8?q?T=E6=9C=8D=E5=8A=A1=E8=B7=A8=E7=8E=AF=E5=A2=83=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=86=8D=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031708374171648]后端-IT服务跨环境导出再导入 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031708374171648 --- .../ProcessCommentTemplateGetApi.java | 16 +++++----- .../ProcessCommentTemplateSaveApi.java | 20 ++++++------ .../api/score/ScoreTemplateSaveApi.java | 31 +++++++++---------- 3 files changed, 33 insertions(+), 34 deletions(-) diff --git a/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateGetApi.java b/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateGetApi.java index 66c1827e0..94fac36b8 100755 --- a/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateGetApi.java +++ b/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateGetApi.java @@ -6,10 +6,7 @@ import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.process.auth.PROCESS_BASE; import neatlogic.framework.process.dto.ProcessCommentTemplateVo; import neatlogic.framework.process.exception.commenttemplate.ProcessCommentTemplateNotFoundException; -import neatlogic.framework.restful.annotation.Input; -import neatlogic.framework.restful.annotation.OperationType; -import neatlogic.framework.restful.annotation.Output; -import neatlogic.framework.restful.annotation.Param; +import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; import neatlogic.module.process.service.ProcessCommentTemplateService; @@ -32,7 +29,7 @@ public class ProcessCommentTemplateGetApi extends PrivateApiComponentBase { @Override public String getName() { - return "获取回复模版"; + return "nmpac.processcommenttemplategetapi.getname"; } @Override @@ -40,8 +37,13 @@ public class ProcessCommentTemplateGetApi extends PrivateApiComponentBase { return null; } - @Input({@Param(name = "id", type = ApiParamType.LONG, desc = "回复模版ID")}) - @Output({@Param(name = "template", explode = ProcessCommentTemplateVo.class, desc = "回复模版")}) + @Input({ + @Param(name = "id", type = ApiParamType.LONG, desc = "common.id") + }) + @Output({ + @Param(name = "template", explode = ProcessCommentTemplateVo.class, desc = "common.tbodylist") + }) + @Description(desc = "nmpac.processcommenttemplategetapi.getname") @Override public Object myDoService(JSONObject jsonObj) throws Exception { JSONObject returnObj = new JSONObject(); diff --git a/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateSaveApi.java b/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateSaveApi.java index 224543076..5db4da231 100644 --- a/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateSaveApi.java +++ b/src/main/java/neatlogic/module/process/api/commenttemplate/ProcessCommentTemplateSaveApi.java @@ -12,10 +12,7 @@ import neatlogic.framework.process.dao.mapper.ProcessCommentTemplateMapper; import neatlogic.framework.process.dto.ProcessCommentTemplateVo; import neatlogic.framework.process.exception.commenttemplate.ProcessCommentTemplateNameRepeatException; import neatlogic.framework.process.exception.commenttemplate.ProcessCommentTemplateNotFoundException; -import neatlogic.framework.restful.annotation.Input; -import neatlogic.framework.restful.annotation.OperationType; -import neatlogic.framework.restful.annotation.Output; -import neatlogic.framework.restful.annotation.Param; +import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.IValid; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; @@ -44,7 +41,7 @@ public class ProcessCommentTemplateSaveApi extends PrivateApiComponentBase { @Override public String getName() { - return "保存回复模版"; + return "nmpac.processcommenttemplatesaveapi.getname"; } @Override @@ -52,15 +49,16 @@ public class ProcessCommentTemplateSaveApi extends PrivateApiComponentBase { return null; } - @Input({@Param(name = "id", type = ApiParamType.LONG, desc = "回复模版ID"), - @Param(name = "name", type = ApiParamType.STRING, desc = "名称", isRequired = true), - @Param(name = "content", type = ApiParamType.STRING, desc = "内容", isRequired = true), - @Param(name = "type", type = ApiParamType.ENUM, rule = "system,custom", desc = "类型,新增时必填(system:系统模版;custom:自定义模版)"), - @Param(name = "authList", type = ApiParamType.JSONARRAY, desc = "授权对象,可多选,type为system时必填,格式[\"user#userUuid\",\"team#teamUuid\",\"role#roleUuid\"]") + @Input({@Param(name = "id", type = ApiParamType.LONG, desc = "common.id"), + @Param(name = "name", type = ApiParamType.STRING, desc = "common.name", isRequired = true), + @Param(name = "content", type = ApiParamType.STRING, desc = "common.content", isRequired = true), + @Param(name = "type", type = ApiParamType.ENUM, rule = "system,custom", desc = "common.type", help = "新增时必填(system:系统模版;custom:自定义模版)"), + @Param(name = "authList", type = ApiParamType.JSONARRAY, desc = "common.authlist", help = "可多选,type为system时必填,格式[\"user#userUuid\",\"team#teamUuid\",\"role#roleUuid\"]") }) @Output({ - @Param(name = "id", type = ApiParamType.LONG, desc = "回复模版id") + @Param(name = "id", type = ApiParamType.LONG, desc = "common.id") }) + @Description(desc = "nmpac.processcommenttemplatesaveapi.getname") @Override public Object myDoService(JSONObject jsonObj) throws Exception { JSONObject returnObj = new JSONObject(); diff --git a/src/main/java/neatlogic/module/process/api/score/ScoreTemplateSaveApi.java b/src/main/java/neatlogic/module/process/api/score/ScoreTemplateSaveApi.java index 69d253d44..bb626b397 100755 --- a/src/main/java/neatlogic/module/process/api/score/ScoreTemplateSaveApi.java +++ b/src/main/java/neatlogic/module/process/api/score/ScoreTemplateSaveApi.java @@ -12,10 +12,7 @@ import neatlogic.framework.process.dto.score.ScoreTemplateDimensionVo; import neatlogic.framework.process.dto.score.ScoreTemplateVo; import neatlogic.framework.process.exception.score.ScoreTemplateNameRepeatException; import neatlogic.framework.process.exception.score.ScoreTemplateNotFoundException; -import neatlogic.framework.restful.annotation.Input; -import neatlogic.framework.restful.annotation.OperationType; -import neatlogic.framework.restful.annotation.Output; -import neatlogic.framework.restful.annotation.Param; +import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.IValid; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; @@ -46,7 +43,7 @@ public class ScoreTemplateSaveApi extends PrivateApiComponentBase { @Override public String getName() { - return "保存评分模版"; + return "nmpas.scoretemplatesaveapi.getname"; } @Override @@ -54,15 +51,17 @@ public class ScoreTemplateSaveApi extends PrivateApiComponentBase { return null; } - @Input({ @Param( name = "id", type = ApiParamType.LONG, desc = "评分模版ID"), - @Param( name = "name", type = ApiParamType.REGEX, maxLength = 50,rule = RegexUtils.NAME, desc = "评分模版名称", isRequired = true, xss = true), - @Param( name = "description", type = ApiParamType.STRING, maxLength = 50, desc = "评分模版说明"), - @Param( name = "isActive", type = ApiParamType.INTEGER,desc = "是否激活"), - @Param( name = "dimensionArray", type = ApiParamType.JSONARRAY, isRequired = true,desc = "评分维度列表,格式:[{\"name\":\"t1\",\"description\":\"d1\"},{\"name\":\"t2\",\"description\":\"d2\"}]") + @Input({ + @Param(name = "id", type = ApiParamType.LONG, desc = "common.id"), + @Param(name = "name", type = ApiParamType.REGEX, maxLength = 50, rule = RegexUtils.NAME, desc = "common.name", isRequired = true, xss = true), + @Param(name = "description", type = ApiParamType.STRING, maxLength = 50, desc = "common.description"), + @Param(name = "isActive", type = ApiParamType.INTEGER, desc = "common.isactive"), + @Param(name = "dimensionArray", type = ApiParamType.JSONARRAY, isRequired = true, desc = "term.itsm.scoretemplatedimensionlist", help = "格式:[{\"name\":\"t1\",\"description\":\"d1\"},{\"name\":\"t2\",\"description\":\"d2\"}]") }) @Output({ - @Param( name = "scoreTemplate", explode = ScoreTemplateVo.class, desc = "评分模版") + @Param(name = "scoreTemplate", explode = ScoreTemplateVo.class, desc = "common.tbodylist") }) + @Description(desc = "nmpas.scoretemplatesaveapi.getname") @Override public Object myDoService(JSONObject jsonObj) throws Exception { JSONObject returnObj = new JSONObject(); @@ -79,12 +78,12 @@ public class ScoreTemplateSaveApi extends PrivateApiComponentBase { scoreTemplateVo.setDescription(description); scoreTemplateVo.setIsActive(isActive); scoreTemplateVo.setDimensionList(dimensionList); - if (id != null){ - if(scoreTemplateMapper.checkScoreTemplateExistsById(id) == null){ + if (id != null) { + if (scoreTemplateMapper.checkScoreTemplateExistsById(id) == null) { throw new ScoreTemplateNotFoundException(id); } } - if(scoreTemplateMapper.checkScoreTemplateNameIsRepeat(scoreTemplateVo) > 0) { + if (scoreTemplateMapper.checkScoreTemplateNameIsRepeat(scoreTemplateVo) > 0) { throw new ScoreTemplateNameRepeatException(scoreTemplateVo.getName()); } scoreTemplateService.saveScoreTemplate(scoreTemplateVo); @@ -92,10 +91,10 @@ public class ScoreTemplateSaveApi extends PrivateApiComponentBase { return returnObj; } - public IValid name(){ + public IValid name() { return value -> { ScoreTemplateVo scoreTemplateVo = JSON.toJavaObject(value, ScoreTemplateVo.class); - if(scoreTemplateMapper.checkScoreTemplateNameIsRepeat(scoreTemplateVo) > 0) { + if (scoreTemplateMapper.checkScoreTemplateNameIsRepeat(scoreTemplateVo) > 0) { return new FieldValidResultVo(new ScoreTemplateNameRepeatException(scoreTemplateVo.getName())); } return new FieldValidResultVo(); -- Gitee