|
@@ -37,6 +37,7 @@ import org.springblade.core.tool.utils.DateUtil;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.core.tool.utils.StringPool;
|
|
|
import org.springblade.manager.dto.FormElementDTO;
|
|
|
+import org.springblade.manager.dto.FormElementDTO2;
|
|
|
import org.springblade.manager.dto.WbsFormElementDTO2;
|
|
|
import org.springblade.manager.entity.WbsFormElement;
|
|
|
import org.springblade.manager.entity.WbsTree;
|
|
@@ -368,68 +369,72 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public boolean submitExcelRelationWbsTreeAndElement(FormElementDTO formElementDTO) {
|
|
|
+ public boolean submitExcelRelationWbsTreeAndElement(FormElementDTO2 formElementDTO) {
|
|
|
//新增元素表、实体表
|
|
|
- if (formElementDTO.getId() == null) {
|
|
|
+ if (formElementDTO.getTableIds() == null) {
|
|
|
this.saveFormElement(formElementDTO);
|
|
|
+
|
|
|
} else {
|
|
|
//关联-在已有元素表中新增元素,在实体表中追加字段
|
|
|
- //获取当前元素表中的所有的元素信息
|
|
|
- List<WbsFormElement> wbsFormElements = baseMapper.selectList(Wrappers.<WbsFormElement>query().lambda()
|
|
|
- .eq(WbsFormElement::getFId, formElementDTO.getId()));
|
|
|
- Collections.reverse(wbsFormElements);
|
|
|
- WbsFormElement firstWbsFormElement = wbsFormElements.stream().findFirst().orElse(wbsFormElements.get(wbsFormElements.size() - 1));
|
|
|
-
|
|
|
- //初始化eKey字段
|
|
|
- int keyNumber = Integer.parseInt(firstWbsFormElement.getEKey().split("_")[1]);
|
|
|
- List<WbsFormElement> newList = formElementDTO.getElementList().stream().filter(a ->
|
|
|
- !wbsFormElements.stream().map(WbsFormElement::getEName).collect(Collectors.toList()).contains(a.getEName())
|
|
|
- ).collect(Collectors.toList());
|
|
|
-
|
|
|
- final int[] keyNumber1 = {1};
|
|
|
-
|
|
|
- //新增
|
|
|
- newList.stream().forEach(wbsFormElementInfo -> {
|
|
|
- String key = "key_" + (keyNumber + keyNumber1[0]);
|
|
|
-
|
|
|
- //新增元素到当前表中
|
|
|
- wbsFormElementInfo.setEKey(key);
|
|
|
- wbsFormElementInfo.setId(SnowFlakeUtil.getId());
|
|
|
- wbsFormElementInfo.setFId(String.valueOf(formElementDTO.getId()));
|
|
|
- wbsFormElementInfo.setStatus(1);
|
|
|
-
|
|
|
- baseMapper.insert(wbsFormElementInfo);
|
|
|
-
|
|
|
- //追加实体表字段
|
|
|
- wbsTreeMapper.alterTableFiled(formElementDTO.getInitTableName(), key,
|
|
|
- getInitTableFiledType(wbsFormElementInfo.getEType()),
|
|
|
- Integer.valueOf(setDefaultElementLength(wbsFormElementInfo.getEType())));
|
|
|
- keyNumber1[0]++;
|
|
|
- });
|
|
|
- }
|
|
|
+ List<String> tableIds = formElementDTO.getTableIds();
|
|
|
+ if (tableIds.size() == 0) {
|
|
|
+ throw new ServiceException("请选择一张元素表进行关联");
|
|
|
+ }
|
|
|
+ for (String tableId : tableIds) {
|
|
|
+ //获取当前表信息
|
|
|
+ WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getId, tableId));
|
|
|
+
|
|
|
+ //获取表单下的元素信息
|
|
|
+ List<WbsFormElement> wbsFormElements = baseMapper.selectList(Wrappers.<WbsFormElement>query().lambda()
|
|
|
+ .eq(WbsFormElement::getFId, tableId));
|
|
|
+ Collections.reverse(wbsFormElements);
|
|
|
+ WbsFormElement firstWbsFormElement = wbsFormElements.stream().findFirst().orElse(wbsFormElements.get(wbsFormElements.size() - 1));
|
|
|
+
|
|
|
+ //去重,元素表中名称已存在的元素不添加
|
|
|
+ List<WbsFormElement> newList = formElementDTO.getElementList().stream().filter(a ->
|
|
|
+ !wbsFormElements.stream().map(WbsFormElement::getEName).collect(Collectors.toList()).contains(a.getEName())
|
|
|
+ ).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //初始化eKey字段
|
|
|
+ int keyNumber = Integer.parseInt(firstWbsFormElement.getEKey().split("_")[1]);
|
|
|
+ final int[] keyNumber1 = {1};
|
|
|
+
|
|
|
+ newList.stream().forEach(wbsFormElementInfo -> {
|
|
|
+ String key = "key_" + (keyNumber + keyNumber1[0]);
|
|
|
+
|
|
|
+ //新增元素到当前表中
|
|
|
+ wbsFormElementInfo.setEKey(key);
|
|
|
+ wbsFormElementInfo.setId(SnowFlakeUtil.getId());
|
|
|
+ wbsFormElementInfo.setFId(tableId);
|
|
|
+ wbsFormElementInfo.setStatus(1);
|
|
|
|
|
|
- WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
|
|
|
- .eq(WbsTree::getId, formElementDTO.getId()
|
|
|
- ));
|
|
|
+ baseMapper.insert(wbsFormElementInfo);
|
|
|
|
|
|
- //取消旧关联
|
|
|
- List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
|
|
|
- .eq(WbsTree::getParentId, wbsTree.getParentId()
|
|
|
- ));
|
|
|
+ //追加字段到实体表中
|
|
|
+ wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key,
|
|
|
+ getInitTableFiledType(wbsFormElementInfo.getEType()),
|
|
|
+ Integer.valueOf(setDefaultElementLength(wbsFormElementInfo.getEType())));
|
|
|
|
|
|
- //存在2张表以上时取消关联旧表
|
|
|
- if (wbsTreeList.size() > 1) {
|
|
|
- wbsTreeMapper.updateByParentId(wbsTree.getParentId(), formElementDTO.getId());
|
|
|
+ keyNumber1[0]++;
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ //修改关联信息
|
|
|
+ wbsTree.setIsLinkTable(2);
|
|
|
+ wbsTreeMapper.updateById(wbsTree);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- //新关联
|
|
|
- wbsTree.setIsLinkTable(2);
|
|
|
- int i = wbsTreeMapper.updateById(wbsTree);
|
|
|
- return i > 0;
|
|
|
+ return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
- private R saveFormElement(FormElementDTO formElementDTO) {
|
|
|
+ @Override
|
|
|
+ public boolean cancelRelation(String id) {
|
|
|
+ return wbsTreeMapper.cancelRelation(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ private R saveFormElement(FormElementDTO2 formElementDTO) {
|
|
|
String deptName = formElementDTO.getDeptName();
|
|
|
if (deptName.length() > 100 || deptName.length() < 1) {
|
|
|
throw new ServiceException("表名长度错误,输入范围1-100个字符长度");
|
|
@@ -445,7 +450,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
|
|
|
}
|
|
|
//初始化
|
|
|
Long id = SnowFlakeUtil.getId();
|
|
|
- String newTableName = "m_" + DateUtil.time() + "_" + id.toString();
|
|
|
+ String newTableName = "m_" + DateUtil.time() + "_" + id;
|
|
|
formElementDTO.setInitTableName(newTableName);
|
|
|
|
|
|
//创建元素表
|
|
@@ -521,7 +526,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
|
|
|
|
|
|
}
|
|
|
|
|
|
- private boolean submit2(FormElementDTO dept) {
|
|
|
+ private boolean submit2(FormElementDTO2 dept) {
|
|
|
if (Func.isEmpty(dept.getParentId())) {
|
|
|
dept.setTenantId(AuthUtil.getTenantId());
|
|
|
dept.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|