|
|
@@ -1,16 +1,26 @@
|
|
|
package com.dskj.znzn.importData.web.service.impl;
|
|
|
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.dskj.znzn.importData.common.exception.BusinessException;
|
|
|
+import com.dskj.znzn.importData.web.entity.MappingField;
|
|
|
+import com.dskj.znzn.importData.web.entity.ProcessExecutor;
|
|
|
import com.dskj.znzn.importData.web.entity.ProcessGroup;
|
|
|
+import com.dskj.znzn.importData.web.indata.EditProcessGroupInData;
|
|
|
+import com.dskj.znzn.importData.web.indata.MappingFieldInData;
|
|
|
+import com.dskj.znzn.importData.web.indata.ProcessExecutorInData;
|
|
|
+import com.dskj.znzn.importData.web.indata.AddProcessGroupInData;
|
|
|
import com.dskj.znzn.importData.web.mapper.ProcessGroupMapper;
|
|
|
+import com.dskj.znzn.importData.web.service.IMappingFieldService;
|
|
|
+import com.dskj.znzn.importData.web.service.IProcessExecutorService;
|
|
|
import com.dskj.znzn.importData.web.service.IProcessGroupService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-
|
|
|
-import java.util.List;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
|
@@ -24,6 +34,11 @@ import java.util.List;
|
|
|
@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
|
|
|
public class ProcessGroupServiceImpl extends ServiceImpl<ProcessGroupMapper, ProcessGroup> implements IProcessGroupService {
|
|
|
|
|
|
+ private final IProcessExecutorService processExecutorService;
|
|
|
+
|
|
|
+ private final IMappingFieldService mappingFieldService;
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public List<ProcessGroup> getByTemplateId(Integer templateId) {
|
|
|
LambdaQueryWrapper<ProcessGroup> queryWrapper = Wrappers.lambdaQuery();
|
|
|
@@ -31,4 +46,140 @@ public class ProcessGroupServiceImpl extends ServiceImpl<ProcessGroupMapper, Pro
|
|
|
.eq(ProcessGroup::getStatus, 1);
|
|
|
return list(queryWrapper);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void saveProceeGroup(AddProcessGroupInData inData) {
|
|
|
+
|
|
|
+ // 保存执行器组信息
|
|
|
+ ProcessGroup group = new ProcessGroup();
|
|
|
+ group.setTemplateId(inData.getTemplateId());
|
|
|
+ group.setName(inData.getName());
|
|
|
+
|
|
|
+ if (null != inData.getJoinTypeList() && !inData.getJoinTypeList().isEmpty()) {
|
|
|
+ group.setJoinType(String.join(",", inData.getJoinTypeList()));
|
|
|
+ }
|
|
|
+
|
|
|
+ save(group);
|
|
|
+
|
|
|
+ saveProcessInData(group, inData.getProcessExecutorInDataList(), inData.getTemplateId(), false);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void deleteProcessGroup(Integer processGroupId) {
|
|
|
+ ProcessGroup group = new ProcessGroup();
|
|
|
+ group.setId(processGroupId);
|
|
|
+ group.setStatus(0);
|
|
|
+ updateById(group);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void editProcessGroup(EditProcessGroupInData inData) {
|
|
|
+ ProcessGroup group = getById(inData.getProcessGroupId());
|
|
|
+ if (null == group) {
|
|
|
+ throw new BusinessException("执行器组不存在");
|
|
|
+ }
|
|
|
+ int count = inData.getProcessExecutorInDataList().size();
|
|
|
+ int joinTypeCount = null == inData.getJoinTypeList() ? 0 : inData.getJoinTypeList().size();
|
|
|
+
|
|
|
+ if (count - 1 != joinTypeCount) {
|
|
|
+ throw new BusinessException("执行器数量和连接方式数量不一致");
|
|
|
+ }
|
|
|
+
|
|
|
+ ProcessGroup update = new ProcessGroup();
|
|
|
+ update.setId(group.getId());
|
|
|
+ if (inData.getJoinTypeList() != null) {
|
|
|
+ update.setJoinType(String.join(",", inData.getJoinTypeList()));
|
|
|
+ }
|
|
|
+ update.setName(inData.getName());
|
|
|
+ updateById(update);
|
|
|
+
|
|
|
+ group.setName(inData.getName());
|
|
|
+
|
|
|
+ saveProcessInData(group, inData.getProcessExecutorInDataList(), inData.getTemplateId(), true);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveProcessInData(ProcessGroup group, List<ProcessExecutorInData> processExecutorInDataList, Integer templateId, boolean editData) {
|
|
|
+
|
|
|
+ if (editData) {
|
|
|
+ processExecutorService.deleteByProcessGroupId(group.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (processExecutorInDataList != null && !processExecutorInDataList.isEmpty()) {
|
|
|
+ for (ProcessExecutorInData processExecutorInData : processExecutorInDataList) {
|
|
|
+
|
|
|
+ ProcessExecutor process = new ProcessExecutor();
|
|
|
+ process.setGroupId(group.getId());
|
|
|
+ process.setName(processExecutorInData.getName());
|
|
|
+ process.setKnownFields(String.join(",", process.getKnownFields()));
|
|
|
+ process.setStatus(1);
|
|
|
+ processExecutorService.save(process);
|
|
|
+
|
|
|
+ List<MappingField> mappingFieldList = new ArrayList<>();
|
|
|
+ for (MappingFieldInData mappingFieldInData : processExecutorInData.getMappingFieldList()) {
|
|
|
+ if (null != mappingFieldInData.getDataNameList() && !mappingFieldInData.getDataNameList().isEmpty()) {
|
|
|
+ MappingField mappingField = new MappingField();
|
|
|
+ mappingField.setTemplateId(templateId);
|
|
|
+ mappingField.setTemplateFiledId(mappingFieldInData.getTemplateFiledId());
|
|
|
+ mappingField.setProcessGourpId(group.getId());
|
|
|
+ mappingField.setProcessExecutorId(process.getId());
|
|
|
+ mappingField.setStandardizedName(mappingFieldInData.getStandardizedName());
|
|
|
+ mappingField.setDataName(String.join(",", mappingFieldInData.getDataNameList()));
|
|
|
+ if (null != mappingFieldInData.getRemoveCharactersList() && !mappingFieldInData.getRemoveCharactersList().isEmpty()) {
|
|
|
+ mappingField.setRemoveCharacters(String.join(",", mappingFieldInData.getRemoveCharactersList()));
|
|
|
+ }
|
|
|
+ mappingFieldList.add(mappingField);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (mappingFieldList.isEmpty()) {
|
|
|
+ throw new BusinessException("请添加映射关系");
|
|
|
+ }
|
|
|
+ mappingFieldService.saveBatch(mappingFieldList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void copyProcessGroup(Integer processGroupId) {
|
|
|
+ ProcessGroup group = getById(processGroupId);
|
|
|
+ if (null == group) {
|
|
|
+ throw new BusinessException("未查询到执行器组");
|
|
|
+ }
|
|
|
+
|
|
|
+ AddProcessGroupInData inData = new AddProcessGroupInData();
|
|
|
+ inData.setName(group.getName() + System.currentTimeMillis());
|
|
|
+ inData.setTemplateId(group.getTemplateId());
|
|
|
+ inData.setJoinTypeList(Arrays.asList(group.getJoinType().split(",")));
|
|
|
+
|
|
|
+ List<ProcessExecutorInData> processList = new ArrayList<>();
|
|
|
+ List<ProcessExecutor> processExecutorList = processExecutorService.getByProcessGroupId(group.getId());
|
|
|
+
|
|
|
+ for (ProcessExecutor processExecutor : processExecutorList) {
|
|
|
+ ProcessExecutorInData processExecutorInData = new ProcessExecutorInData();
|
|
|
+ processExecutorInData.setName(processExecutor.getName());
|
|
|
+ processExecutorInData.setKnownFieldsList(Arrays.asList(processExecutor.getKnownFields().split(",")));
|
|
|
+
|
|
|
+ List<MappingFieldInData> mappingFieldInDataList = new ArrayList<>();
|
|
|
+
|
|
|
+ List<MappingField> mappingFieldList = mappingFieldService.getByProcessId(processExecutor.getId());
|
|
|
+ for (MappingField mappingField : mappingFieldList) {
|
|
|
+ MappingFieldInData mappingFieldInData = new MappingFieldInData();
|
|
|
+ mappingFieldInData.setTemplateFiledId(mappingField.getTemplateFiledId());
|
|
|
+ mappingFieldInData.setStandardizedName(mappingField.getStandardizedName());
|
|
|
+ mappingFieldInData.setDataNameList(Arrays.asList(mappingField.getDataName()));
|
|
|
+ mappingFieldInData.setRemoveCharactersList(null == mappingField.getRemoveCharacters() ? null :
|
|
|
+ Arrays.asList(mappingField.getRemoveCharacters().split(",")));
|
|
|
+
|
|
|
+ mappingFieldInDataList.add(mappingFieldInData);
|
|
|
+ }
|
|
|
+ processExecutorInData.setMappingFieldList(mappingFieldInDataList);
|
|
|
+ processList.add(processExecutorInData);
|
|
|
+ }
|
|
|
+
|
|
|
+ inData.setProcessExecutorInDataList(processList);
|
|
|
+ saveProceeGroup(inData);
|
|
|
+ }
|
|
|
}
|