Forráskód Böngészése

定时任务--每小时更新50张表中的阿里云地址,更新之前先验证表是否存在

LHB 3 hónapja
szülő
commit
9e76a3b234

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TableInfoMapper.java

@@ -81,4 +81,11 @@ public interface TableInfoMapper extends BaseMapper<TableInfo> {
      * @param ids
      */
     void insertAliyun(@Param("ids") List<Long> ids);
+
+    /**
+     * 表是否存在
+     * @param tabEnName
+     * @return
+     */
+    int tableIsExist(@Param("tabEnName") String tabEnName);
 }

+ 9 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TableInfoMapper.xml

@@ -64,5 +64,14 @@
             </foreach>
         ) a where a.count > 0
     </select>
+    <select id="tableIsExist" resultType="java.lang.Integer">
+        SELECT
+            COUNT( 0 ) AS table_exists
+        FROM
+            INFORMATION_SCHEMA.TABLES
+        WHERE
+            TABLE_SCHEMA = DATABASE ()
+          AND TABLE_NAME = 'm_20220805100619_1555374610134859776';
+    </select>
 
 </mapper>

+ 20 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/TableInfoServiceImpl.java

@@ -59,7 +59,6 @@ public class TableInfoServiceImpl extends BaseServiceImpl<TableInfoMapper, Table
      * 替换动态表中的阿里云地址
      */
     @Scheduled(cron = "0 0 * * * ?")
-    @Transactional
     public void aliyunUrlReplace() {
         System.out.println("执行阿里云地址替换-----------------------------开始");
 
@@ -71,22 +70,27 @@ public class TableInfoServiceImpl extends BaseServiceImpl<TableInfoMapper, Table
         List<TableInfo> tableInfos = baseMapper.selectListByAliyunUrlState();
         if(CollectionUtil.isNotEmpty(tableInfos)){
             for (TableInfo tableInfo : tableInfos) {
-                //获取字段
-                List<WbsFormElement> wbsFormElements = wbsFormElementMapper.selectList(new QueryWrapper<WbsFormElement>().lambda().eq(WbsFormElement::getFId, tableInfo.getId()));
 
-                if (CollectionUtil.isNotEmpty(wbsFormElements)) {
-                    List<String> fields = wbsFormElements.stream().map(WbsFormElement::getEKey).collect(Collectors.toList());
-                    //存在字段
-                    List<String> countTableFields = baseMapper.countTableFields(tableInfo.getTabEnName(), fields, aliyunUrlOne);
-                    if (CollectionUtil.isNotEmpty(countTableFields)) {
-                        //替换
-                        baseMapper.updateALiYunUrl(tableInfo.getTabEnName(), aliyunUrlOne, correctUrl, countTableFields);
-                    }
-                    //排查第二种类型的阿里云地址
-                    List<String> fieldsTwo = baseMapper.countTableFields(tableInfo.getTabEnName(), fields, aliyunUrlTwo);
-                    if(CollectionUtil.isNotEmpty(fieldsTwo)){
-                        //替换
-                        baseMapper.updateALiYunUrl(tableInfo.getTabEnName(), aliyunUrlTwo, correctUrl, fieldsTwo);
+                //判断表是否存在
+                int exist = baseMapper.tableIsExist(tableInfo.getTabEnName());
+                if(exist > 0){
+                    //获取字段
+                    List<WbsFormElement> wbsFormElements = wbsFormElementMapper.selectList(new QueryWrapper<WbsFormElement>().lambda().eq(WbsFormElement::getFId, tableInfo.getId()));
+
+                    if (CollectionUtil.isNotEmpty(wbsFormElements)) {
+                        List<String> fields = wbsFormElements.stream().map(WbsFormElement::getEKey).collect(Collectors.toList());
+                        //存在字段
+                        List<String> countTableFields = baseMapper.countTableFields(tableInfo.getTabEnName(), fields, aliyunUrlOne);
+                        if (CollectionUtil.isNotEmpty(countTableFields)) {
+                            //替换
+                            baseMapper.updateALiYunUrl(tableInfo.getTabEnName(), aliyunUrlOne, correctUrl, countTableFields);
+                        }
+                        //排查第二种类型的阿里云地址
+                        List<String> fieldsTwo = baseMapper.countTableFields(tableInfo.getTabEnName(), fields, aliyunUrlTwo);
+                        if(CollectionUtil.isNotEmpty(fieldsTwo)){
+                            //替换
+                            baseMapper.updateALiYunUrl(tableInfo.getTabEnName(), aliyunUrlTwo, correctUrl, fieldsTwo);
+                        }
                     }
                 }
             }