From 239cf7d4788c73f55033d5edcb45ed47e2d5a6b3 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 14 Aug 2023 17:17:20 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=AE=97=E5=AE=A1=E6=89=B9=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E4=BF=AE=E5=A4=8D=EF=BC=9B=E5=8A=A8=E6=80=81=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E4=B8=B4=E6=97=B6=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/exl/common/QsSqlSessionUtil.java | 61 +++++++++++++++++++ .../exl/common/TableCreateSqlUtil.java | 39 ++++++++++++ .../controller/ExlTableConfController.java | 25 +++++++- .../controller/ExlTableDataController.java | 6 +- .../modules/exl/entity/ExlColumnConf.java | 3 + .../modules/exl/entity/ExlTableConf.java | 2 +- .../service/SeeYonOperationService.java | 3 + .../TbsBudgetChangeOperationServiceImpl.java | 2 +- .../impl/TbsBudgetChangeServiceImpl.java | 2 +- 9 files changed, 134 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java create mode 100644 src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java diff --git a/src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java b/src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java new file mode 100644 index 00000000..e1ea24c8 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java @@ -0,0 +1,61 @@ +package com.qs.serve.modules.exl.common; + +import org.apache.ibatis.session.SqlSession; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.SqlSessionUtils; + +import java.sql.PreparedStatement; +import java.sql.SQLException; + +/** + * @author YenHex + * @since 2023/8/14 + */ +public class QsSqlSessionUtil { + + /** + * 获取sqlSession + * @return + */ + public static SqlSession getSqlSession(SqlSessionTemplate sqlSessionTemplate){ + return SqlSessionUtils.getSqlSession(sqlSessionTemplate.getSqlSessionFactory(), + sqlSessionTemplate.getExecutorType(), sqlSessionTemplate.getPersistenceExceptionTranslator()); + } + + /** + * 关闭sqlSession + * @param session + */ + public static void closeSqlSession(SqlSession session,SqlSessionTemplate sqlSessionTemplate) { + SqlSessionUtils.closeSqlSession(session, sqlSessionTemplate.getSqlSessionFactory()); + } + + /** + * 执行sql + * @param sql + * @param sqlSessionTemplate + * @return + */ + public static boolean executeSql(String sql,SqlSessionTemplate sqlSessionTemplate){ + PreparedStatement pst = null; + SqlSession session = getSqlSession(sqlSessionTemplate); + try { + pst = session.getConnection().prepareStatement(sql); + pst.execute(); + return true; + } catch (SQLException e) { + e.printStackTrace(); + }finally { + if(pst!=null){ + try { + pst.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + closeSqlSession(session,sqlSessionTemplate); + } + return false; + } + +} diff --git a/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java b/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java new file mode 100644 index 00000000..bc2ca366 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java @@ -0,0 +1,39 @@ +package com.qs.serve.modules.exl.common; + +import com.qs.serve.modules.exl.entity.ExlColumnConf; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author YenHex + * @since 2023/8/14 + */ +public class TableCreateSqlUtil { + + public static final Map MYSQL_DATA_MAP = new HashMap<>(); + + public static final String COLUMN_NULL = " null "; + public static final String COLUMN_NOT_NULL = " not null "; + public static final String COLUMN_COMMENT = "COMMENT"; + + public static String createMysqlTableSql(String tableName, List columnList){ + StringBuffer result = new StringBuffer("CREATE TABLE `"+tableName+"` ("); + result.append(" `union_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',"); + for (ExlColumnConf column : columnList) { + String columnType = column.getColumnType(); + String nullValue = column.getNotNullFlag().equals(1) ? COLUMN_NOT_NULL:COLUMN_NULL; + if(columnType.equals("int")){ + result.append("`"+column.getColumnName()+"` "+ + MYSQL_DATA_MAP.get(columnType) + + nullValue + + COLUMN_COMMENT + " '"+ + column.getColumnHeader()+"',"); + } + } + result.append(" PRIMARY KEY (`union_id`) USING BTREE "); + return result.append(")").toString(); + } + +} diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java index 85bcb859..83d0c3eb 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java @@ -10,12 +10,17 @@ import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.WordUtil; +import com.qs.serve.modules.exl.common.QsSqlSessionUtil; +import com.qs.serve.modules.exl.common.TableCreateSqlUtil; import com.qs.serve.modules.exl.entity.ExlColumnConf; import com.qs.serve.modules.exl.entity.dto.ExlQueryFieldDto; import com.qs.serve.modules.exl.entity.dto.ExlTableBo; import com.qs.serve.modules.exl.service.ExlColumnConfService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.session.SqlSession; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.SqlSessionUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -40,6 +45,7 @@ import java.util.stream.Collectors; @RequestMapping("exl/tableConf") public class ExlTableConfController { + private SqlSessionTemplate sqlSessionTemplate; private ExlTableConfService exlTableConfService; private ExlColumnConfService exlColumnConfService; @@ -111,6 +117,7 @@ public class ExlTableConfController { queryFieldList.add(fieldDto); } } + exlTableConf.setQueryList(queryFieldList); return R.ok(exlTableConf); } @@ -155,14 +162,26 @@ public class ExlTableConfController { @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.INSERT) public R enable(@PathVariable("tableId") String tableId){ ExlTableConf tableConf = exlTableConfService.getById(tableId); + LambdaQueryWrapper columnLqw = new LambdaQueryWrapper<>(); + columnLqw.eq(ExlColumnConf::getTableConfId,tableId); + List columnConfList = exlColumnConfService.list(columnLqw); if(tableConf.getEnableFlag().equals(0)){ - tableConf.setEnableFlag(1); - tableConf.setEnableTime(LocalDateTime.now()); - exlTableConfService.updateById(tableConf); + String sql = TableCreateSqlUtil.createMysqlTableSql(tableConf.getTableName(),columnConfList); + boolean result = QsSqlSessionUtil.executeSql(sql,sqlSessionTemplate); + if(result){ + tableConf.setEnableFlag(1); + tableConf.setEnableTime(LocalDateTime.now()); + exlTableConfService.updateById(tableConf); + }else { + log.error("[ID:{}]创建表格失败,建表语句:{}",tableId,sql); + return R.error("创建失败"); + } } return R.ok(); } + + /** * 删除 * @param ids diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java index 7731d8df..ca79b409 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java @@ -60,7 +60,7 @@ public class ExlTableDataController { * @param param * @return */ - @PostMapping("/updateById") + //@PostMapping("/updateById") public R updateById(@RequestBody @Valid ExlTableBo param){ return R.ok(); } @@ -70,7 +70,7 @@ public class ExlTableDataController { * @param param * @return */ - @PostMapping("/save") + //@PostMapping("/save") public R save(@RequestBody @Valid ExlTableBo param){ return R.ok(); } @@ -80,7 +80,7 @@ public class ExlTableDataController { * @param ids * @return */ - @DeleteMapping("/deleteById/{ids}") + //@DeleteMapping("/deleteById/{ids}") @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.DELETE) public R deleteById(@PathVariable("ids") String ids){ List idsLong = StringUtils.splitIdLong(ids); diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java index 4cdaa0d4..2c33babf 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java @@ -52,6 +52,9 @@ public class ExlColumnConf implements Serializable { /** 作为查询条件标识 */ private Integer conditionFlag; + /** 空值标识 */ + private Integer notNullFlag; + /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java index 3b857b53..330e23b4 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java @@ -94,7 +94,7 @@ public class ExlTableConf implements Serializable { * 查询参数列表 */ @TableField(exist = false) - private List queryList; + private List queryList; public static ExlTableConf toNewObject(ExlTableConf source){ ExlTableConf tableConf = new ExlTableConf(); diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java index 63ffcf21..d79dcfcb 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java @@ -274,6 +274,9 @@ public interface SeeYonOperationService extends SeeYonBaseService{ default R commitAffair(TbsAffairCommitBo affairCommit){ getRequestService().testConnection(); String syFormId = this.getSyFormIdByTargetInfo(affairCommit); + if(syFormId==null){ + Assert.throwEx("["+affairCommit.getTargetId()+"]__syFormId is null"); + } R result = getRequestService().commonCommit(affairCommit, getTemplateCode(),syFormId); boolean isBackCommit = affairCommit.getState()==2; if(result.getStatus()==200){ diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java index e672bca9..3431449c 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java @@ -156,7 +156,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi @Override public String getTemplateCode() { - return TbsSeeYonConst.BudgetApplyConf.Code(); + return TbsSeeYonConst.BudgetChangeConf.Code(); } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java index cfc14264..55ae2efc 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java @@ -110,7 +110,7 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl