diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/ArchivesDictionaryService.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/ArchivesDictionaryService.java index d8e613c..b57d808 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/service/ArchivesDictionaryService.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/ArchivesDictionaryService.java @@ -120,4 +120,12 @@ public interface ArchivesDictionaryService { * @return */ List queryCategoryIdAndIsType(String categoryId,Integer IsType); + + + /** + * 通过门类id 查询 + * @param categoryId / + * @return / + */ + List queryCategoryId(String categoryId); } diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/ArchivesNoSettingService.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/ArchivesNoSettingService.java index 4a5075b..b8db7be 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/service/ArchivesNoSettingService.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/ArchivesNoSettingService.java @@ -28,6 +28,12 @@ public interface ArchivesNoSettingService { */ void create(Set archivesNoSettingDTO); + /** + * 模板规则字段创建 复制排序 + * @param archivesNoSettingDTO + */ + void createTemplateData(Set archivesNoSettingDTO); + /** * 删除规则字段 * diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java index 7d80615..cfb6ce3 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java @@ -280,4 +280,9 @@ public class ArchivesDictionaryImpl implements ArchivesDictionaryService { return archivesDictionaryRepository.findByCategoryIdAndIsType(categoryId, isType); } + @Override + public List queryCategoryId(String categoryId) { + return archivesDictionaryRepository.findByCategoryId(categoryId); + } + } diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesNoSettingImpl.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesNoSettingImpl.java index a49dcdc..6bc27dc 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesNoSettingImpl.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesNoSettingImpl.java @@ -51,6 +51,20 @@ public class ArchivesNoSettingImpl implements ArchivesNoSettingService { } + /** + * 创建模板的时候使用 + * @param archivesNoSettingDTO + */ + @Override + public void createTemplateData(Set archivesNoSettingDTO){ + archivesNoSettingDTO.forEach(item -> { + + item.setId(NanoIdUtils.randomNanoId()); + ArchivesNoSetting as = archivesNoSettingMapper.toEntity(item); + ansRepostiory.save(as); + }); + } + @Override @Transactional(rollbackFor = Exception.class) public void delete(Set archivesNoSettingDTOS) { diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesTypeServiceImpl.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesTypeServiceImpl.java index 6fc2911..fbd2024 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesTypeServiceImpl.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesTypeServiceImpl.java @@ -5,9 +5,11 @@ import com.storeroom.modules.common.ArchivesTypeEnum; import com.storeroom.modules.dictionary.domain.ArchivesType; import com.storeroom.modules.dictionary.repository.ArchivesDictionaryRepository; import com.storeroom.modules.dictionary.repository.ArchivesTypeRepository; +import com.storeroom.modules.dictionary.service.ArchivesNoSettingService; import com.storeroom.modules.dictionary.service.ArchivesTypeService; import com.storeroom.modules.dictionary.service.DynamicTableService; import com.storeroom.modules.dictionary.service.dto.ArcTypeSmallDTO; +import com.storeroom.modules.dictionary.service.dto.ArchivesNoSettingDTO; import com.storeroom.modules.dictionary.service.dto.ArchivesTypeDTO; import com.storeroom.modules.dictionary.service.mapstruct.ArchivesTypeMapper; import com.storeroom.utils.DateUtils; @@ -35,6 +37,7 @@ public class ArchivesTypeServiceImpl implements ArchivesTypeService { private final ArchivesTypeRepository archivesTypeRepository; private final DynamicTableService dynamicTableService; private final ArchivesDictionaryRepository archivesDictionaryRepository; + private final ArchivesNoSettingService archivesNoSettingService; @Override @@ -59,7 +62,21 @@ public class ArchivesTypeServiceImpl implements ArchivesTypeService { archivesType.getChildren().forEach(item -> { //如果模板类型为项目 if (item.getIsType() == 2) { + ArchivesType ar = createTemplateRoot(archivesTypeDTO.getPid(), cnName, item); + List archivesNoSettingDTOList = archivesNoSettingService.findByCategoryId(item.getId()); + Set archivesNoSettingDTOSet = new HashSet<>(); + archivesNoSettingDTOList.forEach(value -> { + ArchivesNoSettingDTO dto = new ArchivesNoSettingDTO(); + dto.setFieldName(value.getFieldName()); + dto.setFieldCnName(value.getFieldCnName()); + dto.setConnector(value.getConnector()); + dto.setDictionaryId(value.getDictionaryId()); + dto.setCategoryId(ar.getId()); + dto.setSequence(value.getSequence()); + archivesNoSettingDTOSet.add(dto); + }); + archivesNoSettingService.createTemplateData(archivesNoSettingDTOSet); createArchives(ar.getId(), cnName, item.getChildren()); } //如果模板类型为案卷 @@ -75,11 +92,25 @@ public class ArchivesTypeServiceImpl implements ArchivesTypeService { arcProject.setIsType(item.getIsType()); arcProject.setPid(archivesTypeDTO.getPid()); arcProject.setCategorySeq(item.getCategorySeq()); - arcProject.setCnName(cnName); + arcProject.setCnName(cnName + "文件级"); arcProject.setRemark(item.getRemark()); arcProject.setEnName(tableName1); arcProject.setTypeMetic(item.isTypeMetic()); - dynamicTableService.DynamicCreate(arcProject.getIsType(), arcProject.getId(), tableName1); + + List archivesNoSettingDTOList = archivesNoSettingService.findByCategoryId(item.getId()); + Set archivesNoSettingDTOSet = new HashSet<>(); + archivesNoSettingDTOList.forEach(value -> { + ArchivesNoSettingDTO dto = new ArchivesNoSettingDTO(); + dto.setFieldName(value.getFieldName()); + dto.setFieldCnName(value.getFieldCnName()); + dto.setConnector(value.getConnector()); + dto.setDictionaryId(value.getDictionaryId()); + dto.setCategoryId(arcProject.getId()); + dto.setSequence(value.getSequence()); + archivesNoSettingDTOSet.add(dto); + }); + archivesNoSettingService.createTemplateData(archivesNoSettingDTOSet); + dynamicTableService.DynamicTemplateTable(arcProject.getId(), item.getId(), item.getIsType(), tableName1); archivesTypeRepository.save(arcProject); } }); @@ -123,6 +154,7 @@ public class ArchivesTypeServiceImpl implements ArchivesTypeService { private void createArchives(String pid, String cnName, List archivesType) { String tableName = "tb_"; for (ArchivesType arc : archivesType) { + //如果还有子集菜单 if (arc.getChildren().size() != 0) { ArchivesType archivesType1 = new ArchivesType(); @@ -137,6 +169,19 @@ public class ArchivesTypeServiceImpl implements ArchivesTypeService { archivesType1.setTypeMetic(arc.isTypeMetic()); archivesType1.setEnName(tableName); archivesTypeRepository.save(archivesType1); + List archivesNoSettingDTOList = archivesNoSettingService.findByCategoryId(arc.getId()); + Set archivesNoSettingDTOSet = new HashSet<>(); + archivesNoSettingDTOList.forEach(value -> { + ArchivesNoSettingDTO dto = new ArchivesNoSettingDTO(); + dto.setFieldName(value.getFieldName()); + dto.setFieldCnName(value.getFieldCnName()); + dto.setConnector(value.getConnector()); + dto.setDictionaryId(value.getDictionaryId()); + dto.setCategoryId(archivesType1.getId()); + dto.setSequence(value.getSequence()); + archivesNoSettingDTOSet.add(dto); + }); + archivesNoSettingService.createTemplateData(archivesNoSettingDTOSet); dynamicTableService.DynamicTemplateTable(archivesType1.getId(), arc.getId(), arc.getIsType(), tableName); createInChive(archivesType1.getId(), cnName, arc.getChildren()); } @@ -149,6 +194,7 @@ public class ArchivesTypeServiceImpl implements ArchivesTypeService { private void createInChive(String pid, String cnName, List archivesType) { String tableName = "tb_"; for (ArchivesType arc : archivesType) { + //如果还有子集菜单 ArchivesType archivesType1 = new ArchivesType(); tableName += DateUtils.getNowDateTime(); @@ -161,6 +207,19 @@ public class ArchivesTypeServiceImpl implements ArchivesTypeService { archivesType1.setCategorySeq(arc.getCategorySeq()); archivesType1.setTypeMetic(arc.isTypeMetic()); archivesType1.setEnName(tableName); + List archivesNoSettingDTOList = archivesNoSettingService.findByCategoryId(arc.getId()); + Set archivesNoSettingDTOSet = new HashSet<>(); + archivesNoSettingDTOList.forEach(value -> { + ArchivesNoSettingDTO dto = new ArchivesNoSettingDTO(); + dto.setFieldName(value.getFieldName()); + dto.setFieldCnName(value.getFieldCnName()); + dto.setConnector(value.getConnector()); + dto.setDictionaryId(value.getDictionaryId()); + dto.setCategoryId(archivesType1.getId()); + dto.setSequence(value.getSequence()); + archivesNoSettingDTOSet.add(dto); + }); + archivesNoSettingService.createTemplateData(archivesNoSettingDTOSet); dynamicTableService.DynamicTemplateTable(archivesType1.getId(), arc.getId(), arc.getIsType(), tableName); archivesTypeRepository.save(archivesType1); } diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DynamicTableImpl.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DynamicTableImpl.java index 196df8f..df39945 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DynamicTableImpl.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DynamicTableImpl.java @@ -87,11 +87,15 @@ public class DynamicTableImpl implements DynamicTableService { @Override @Transactional(rollbackFor = Exception.class) public void DynamicTemplateTable(String arcTypeId, String categoryId, Integer isType, String tableName) { - List arcList = archivesDictionaryService.queryCategoryIdAndIsType(categoryId, 2); + List arcList = archivesDictionaryService.queryCategoryIdAndIsType(categoryId, 1); + List arcList1 = archivesDictionaryService.queryCategoryIdAndIsType(categoryId, 2); + List newList = new ArrayList<>(); + newList.addAll(arcList); + newList.addAll(arcList1); + List arcList2 = archivesDictionaryService.queryCategoryIdAndIsType(categoryId, 3); //#生成文件表名称 - // String fileTableName = "file_" + tableName; List fieldVOList = new ArrayList<>(); - arcList.forEach(item -> { + newList.forEach(item -> { FieldVO fieldVO = new FieldVO(); Field field = fieldService.findByCNName(item.getFieldCnName(), item.getIsType()); //如果系统默认字段里面不为空就为复制数据 @@ -112,9 +116,36 @@ public class DynamicTableImpl implements DynamicTableService { fieldVOList.add(fieldVO); }); - - DynamicInsertTemplateTable(arcList, arcTypeId); + DynamicInsertTemplateTable(newList, arcTypeId); DynamicCreateFileTable(fieldVOList, tableName); + fieldVOList.clear(); + if (arcList2.size() != 0) { + arcList2.forEach(item -> { + FieldVO fieldVO = new FieldVO(); + Field field = fieldService.findByCNName(item.getFieldCnName(), item.getIsType()); + //如果系统默认字段里面不为空就为复制数据 + if (!ObjectUtil.isEmpty(field)) { + fieldVO.setId(field.getId()); + fieldVO.setIsSystem(field.getIsSystem()); + fieldVO.setDictionaryId(field.getDictionaryId()); + } + fieldVO.setFieldName(item.getFieldName()); + fieldVO.setFieldCnName(item.getFieldCnName()); + fieldVO.setIsDefaultValue(item.getIsDefaultValue()); + fieldVO.setIsDataType(item.getIsDataType()); + fieldVO.setIsDataTypeDetails(item.getIsDataTypeDetails()); + fieldVO.setIsColumnLength(item.getIsColumnLength()); + fieldVO.setIsSequence(item.getIsSequence()); + fieldVO.setIsType(item.getIsType()); + fieldVO.setCategoryId(arcTypeId); + + fieldVOList.add(fieldVO); + }); + String fileTableName = "file_" + tableName; + DynamicInsertTemplateTable(arcList2, arcTypeId); + DynamicCreateFileTable(fieldVOList, fileTableName); + } + } @@ -202,7 +233,7 @@ public class DynamicTableImpl implements DynamicTableService { private void DynamicInsertTemplateTable(List archivesDictionaryList, String archiveTypeId) { List newList = new ArrayList<>(); archivesDictionaryList.forEach(item -> { - ArchivesDictionary archivesDictionary=new ArchivesDictionary(); + ArchivesDictionary archivesDictionary = new ArchivesDictionary(); archivesDictionary.setCategoryId(archiveTypeId); archivesDictionary.setDictionaryConfigId(item.getDictionaryConfigId()); archivesDictionary.setFieldName(item.getFieldName());