liuyc 2 ani în urmă
părinte
comite
7ee4c8566e

+ 30 - 18
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -709,11 +709,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     public TransactionStatus beginTransaction(DataSourceTransactionManager transactionManager) {
         DefaultTransactionDefinition def = new DefaultTransactionDefinition();//事务定义类
         def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
-        TransactionStatus status = transactionManager.getTransaction(def);// 返回事务对象
-        return status;
+        return transactionManager.getTransaction(def);
     }
 
-
     @Override
     public R saveOrUpdateInfo(List<TableInfo> tableInfoList) {
 
@@ -2034,22 +2032,23 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     public void saveOrUpdateInfoTrial(List<TableInfo> tableInfoList, Long groupId) {
         //试验填报
         if (ListUtils.isNotEmpty(tableInfoList)) {
-            try {
-                for (TableInfo tableInfo : tableInfoList) {
-                    WbsTreePrivate wbsTreePrivate = wbsTreePrivateService.getBaseMapper().selectOne(Wrappers.<WbsTreePrivate>query().lambda()
-                            .eq(WbsTreePrivate::getPKeyId, tableInfo.getPkeyId()));
-                    if (wbsTreePrivate == null) {
-                        continue;
-                    }
 
-                    String tabName = wbsTreePrivate.getInitTableName();
-                    //判读修改还是添加
-                    String delSql = "delete from " + tabName + " where p_key_id='" + tableInfo.getPkeyId() + "' and group_id = '" + groupId + "'";
-                    jdbcTemplate.execute(delSql);
+            for (TableInfo tableInfo : tableInfoList) {
+                WbsTreePrivate wbsTreePrivate = wbsTreePrivateService.getBaseMapper().selectOne(Wrappers.<WbsTreePrivate>query().lambda()
+                        .select(WbsTreePrivate::getInitTableName)
+                        .eq(WbsTreePrivate::getPKeyId, tableInfo.getPkeyId()));
+                if (wbsTreePrivate == null || StringUtils.isEmpty(wbsTreePrivate.getInitTableName())) {
+                    continue;
+                }
+
+                try {
+                    //删除SQL
+                    String delSql = "delete from " + wbsTreePrivate.getInitTableName() + " where p_key_id='" + tableInfo.getPkeyId() + "' and group_id = '" + groupId + "'";
 
+                    //新增SQL
                     String sqlInfo = "";
                     LinkedHashMap<String, String> dataMap2 = tableInfo.getDataMap();
-                    sqlInfo = "INSERT INTO " + tabName + " ( ";
+                    sqlInfo = "INSERT INTO " + wbsTreePrivate.getInitTableName() + " ( ";
                     String keyStr = "id,group_id,";
                     String valStr = SnowFlakeUtil.getId() + "," + groupId + ",";
                     for (String keys : dataMap2.keySet()) {
@@ -2060,10 +2059,23 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     valStr = valStr.substring(0, valStr.lastIndexOf(","));
                     sqlInfo = sqlInfo + keyStr + ") VALUES (" + valStr + ")";
 
-                    jdbcTemplate.execute(sqlInfo);
+                    TransactionStatus transactionStatus = this.beginTransaction(transactionManager1);
+                    try {
+                        //删除
+                        jdbcTemplate.execute(delSql);
+                        //新增
+                        jdbcTemplate.execute(sqlInfo);
+                        //提交事务
+                        transactionManager1.commit(transactionStatus);
+                    } catch (Exception e) {
+                        //回滚
+                        transactionManager1.rollback(transactionStatus);
+
+                        throw new ServiceException("字段过长,新增失败");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
                 }
-            } catch (Exception e) {
-                e.printStackTrace();
             }
         }
     }