diff --git a/backend/src/main/java/io/dataease/service/panel/PanelSubjectService.java b/backend/src/main/java/io/dataease/service/panel/PanelSubjectService.java index 2a48bea1c2..c7844ef0cb 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelSubjectService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelSubjectService.java @@ -4,14 +4,17 @@ import io.dataease.base.domain.PanelSubject; import io.dataease.base.domain.PanelSubjectExample; import io.dataease.base.mapper.PanelSubjectMapper; import io.dataease.controller.request.panel.PanelSubjectRequest; +import io.dataease.exception.DataEaseException; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.UUID; @@ -47,16 +50,28 @@ public class PanelSubjectService { return result; } - public void update(PanelSubject request){ + + public synchronized void update(PanelSubject request){ if(StringUtils.isEmpty(request.getId())){ + PanelSubjectExample example = new PanelSubjectExample(); + example.createCriteria().andTypeEqualTo("self"); + List subjectAll = panelSubjectMapper.selectByExample(example); + int count = CollectionUtils.isEmpty(subjectAll)?0:subjectAll.size(); request.setId(UUID.randomUUID().toString()); request.setCreateTime(System.currentTimeMillis()); request.setType("self"); - request.setName("个人主题"); + request.setName("个人主题"+count); panelSubjectMapper.insertSelective(request); }else{ - request.setUpdateTime(System.currentTimeMillis()); - panelSubjectMapper.updateByPrimaryKeySelective(request); + PanelSubjectExample example = new PanelSubjectExample(); + example.createCriteria().andNameEqualTo(request.getName()).andIdNotEqualTo(request.getId()); + List subjectAll = panelSubjectMapper.selectByExample(example); + if(CollectionUtils.isEmpty(subjectAll)){ + request.setUpdateTime(System.currentTimeMillis()); + panelSubjectMapper.updateByPrimaryKeySelective(request); + }else{ + DataEaseException.throwException("名称已经存在"); + } } } diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 5695ca0a3f..9fc3f8333b 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -1315,7 +1315,7 @@ export default { matrix: 'matrix', suspension: 'suspension', subject_no_edit: 'System Subject Can Not Edit', - subject_name_not_null: 'Subject Name Can Not Be Null' + subject_name_not_null: 'Subject Name Can Not Be Null And Less Than 20 charts' }, plugin: { local_install: 'Local installation', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 1f7e77877c..86fd67b41e 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -1318,7 +1318,7 @@ export default { matrix: '矩阵分布', suspension: '悬浮', subject_no_edit: '系统主题不能修改', - subject_name_not_null: '主题名称不能为空' + subject_name_not_null: '主题名称需要1~20字符' }, plugin: { local_install: '本地安裝', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index d06f275f86..ae1ff51b07 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -1323,7 +1323,7 @@ export default { matrix: '矩阵分布', suspension: '悬浮', subject_no_edit: '系统主题不能修改', - subject_name_not_null: '主题名称不能为空' + subject_name_not_null: '主题名称需要1~20字符' }, plugin: { local_install: '本地安装', diff --git a/frontend/src/views/panel/SubjectSetting/PreSubject/SubjectTemplateItem.vue b/frontend/src/views/panel/SubjectSetting/PreSubject/SubjectTemplateItem.vue index 397fd21e6d..fe28255d0c 100644 --- a/frontend/src/views/panel/SubjectSetting/PreSubject/SubjectTemplateItem.vue +++ b/frontend/src/views/panel/SubjectSetting/PreSubject/SubjectTemplateItem.vue @@ -222,7 +222,7 @@ export default { }, // 当输入框失去焦点时不显示输入框 loseFocus() { - if (this.subjectItem.name && this.subjectItem.name.length > 0) { + if (this.subjectItem.name && this.subjectItem.name.length > 0 && this.subjectItem.name.length < 20) { const request = { id: this.subjectItem.id, name: this.subjectItem.name