Переглянути джерело

优化元素识别插入字段

lvy 1 місяць тому
батько
коміт
30b688dac1

+ 69 - 36
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -585,18 +585,29 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
                         //String eTypeFiled = getInitTableFiledType(wbsFormElementInfo.getEType());
                         //int eLengthFiled = Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType()));
-
-                        //判断是否存在该Key字段
-                        int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
-                        if (row1 == 0) {
-                            //追加字段到实体表中
-                            wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key, "varchar", DEFAULT_ELEMENT_LENGTH_VARCHAR);
-                            //判断是否追加成功
-                            int row2 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
-                            if (row2 != 1) {
-                                //追加失败,删除元素,跳过
-                                baseMapper.deleteElementByfId2(wbsFormElementInfo.getId());
-                                continue;
+                        if (newKeyNumber > 80) {
+                            //判断是否存在该Key字段
+                            int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), "key_201");
+                            if (row1 == 0) {
+                                try {
+                                    jdbcTemplate.execute("alter table " + wbsTree.getInitTableName() + " add key_201 text");
+                                } catch (Exception e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                        } else {
+                            //判断是否存在该Key字段
+                            int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
+                            if (row1 == 0) {
+                                //追加字段到实体表中
+                                wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key, "varchar", DEFAULT_ELEMENT_LENGTH_VARCHAR);
+                                //判断是否追加成功
+                                int row2 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
+                                if (row2 != 1) {
+                                    //追加失败,删除元素,跳过
+                                    baseMapper.deleteElementByfId2(wbsFormElementInfo.getId());
+                                    continue;
+                                }
                             }
                         }
                         newKeyNumber++;
@@ -661,18 +672,29 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
                     //String eTypeFiled = getInitTableFiledType(wbsFormElementInfo.getEType());
                     //int eLengthFiled = Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType()));
-
-                    //判断是否存在该Key字段
-                    int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
-                    if (row1 == 0) {
-                        //追加字段到实体表中
-                        wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key, "varchar", DEFAULT_ELEMENT_LENGTH_VARCHAR);
-                        //判断是否追加成功
-                        int row2 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
-                        if (row2 != 1) {
-                            //追加失败,删除元素,跳过
-                            baseMapper.deleteElementByfId2(wbsFormElementInfo.getId());
-                            continue;
+                    if (newKeyNumber > 80) {
+                        //判断是否存在该Key字段
+                        int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), "key_201");
+                        if (row1 == 0) {
+                            try {
+                                jdbcTemplate.execute("alter table " + wbsTree.getInitTableName() + " add key_201 text");
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    } else {
+                        //判断是否存在该Key字段
+                        int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
+                        if (row1 == 0) {
+                            //追加字段到实体表中
+                            wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key, "varchar", DEFAULT_ELEMENT_LENGTH_VARCHAR);
+                            //判断是否追加成功
+                            int row2 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
+                            if (row2 != 1) {
+                                //追加失败,删除元素,跳过
+                                baseMapper.deleteElementByfId2(wbsFormElementInfo.getId());
+                                continue;
+                            }
                         }
                     }
                     newKeyNumber++;
@@ -740,18 +762,29 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
                     //String eTypeFiled = getInitTableFiledType(wbsFormElementInfo.getEType());
                     //int eLengthFiled = Integer.parseInt(setDefaultElementLength(wbsFormElementInfo.getEType()));
-
-                    //判断是否存在该Key字段
-                    int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
-                    if (row1 == 0) {
-                        //追加字段到实体表中
-                        wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key, "varchar", DEFAULT_ELEMENT_LENGTH_VARCHAR);
-                        //判断是否追加成功
-                        int row2 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
-                        if (row2 == 0) {
-                            //追加失败,删除元素,跳过
-                            baseMapper.deleteElementByfId2(wbsFormElementInfo.getId());
-                            continue;
+                    if (newKeyNumber > 80) {
+                        //判断是否存在该Key字段
+                        int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), "key_201");
+                        if (row1 == 0) {
+                            try {
+                                jdbcTemplate.execute("alter table " + wbsTree.getInitTableName() + " add key_201 text");
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    } else {
+                        //判断是否存在该Key字段
+                        int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
+                        if (row1 == 0) {
+                            //追加字段到实体表中
+                            wbsTreeMapper.alterTableFiled(wbsTree.getInitTableName(), key, "varchar", DEFAULT_ELEMENT_LENGTH_VARCHAR);
+                            //判断是否追加成功
+                            int row2 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), key);
+                            if (row2 == 0) {
+                                //追加失败,删除元素,跳过
+                                baseMapper.deleteElementByfId2(wbsFormElementInfo.getId());
+                                continue;
+                            }
                         }
                     }
                     newKeyNumber++;

+ 13 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -308,8 +308,19 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             wbsFormElement.setRemark(map.get("备注"));
 
                             wbsFormElementService.save(wbsFormElement);
-
-                            baseMapper.alterTableFiled(initTableName, wbsFormElement.getEKey(), "varchar", WbsFormElementServiceImpl.DEFAULT_ELEMENT_LENGTH_VARCHAR);
+                            if (keyNumb[0] > 80) {
+                                //判断是否存在该Key字段
+                                int row1 = wbsTreeMapper.isThereAField(wbsTree.getInitTableName(), "key_201");
+                                if (row1 == 0) {
+                                    try {
+                                        jdbcTemplate.execute("alter table " + wbsTree.getInitTableName() + " add key_201 text");
+                                    } catch (Exception e) {
+                                        e.printStackTrace();
+                                    }
+                                }
+                            } else {
+                                baseMapper.alterTableFiled(initTableName, wbsFormElement.getEKey(), "varchar", WbsFormElementServiceImpl.DEFAULT_ELEMENT_LENGTH_VARCHAR);
+                            }
                         }
 
                     });