Browse Source

动态表格

v1.0
Yen 2 years ago
parent
commit
9ee54e6b54
  1. 20
      src/main/java/com/qs/serve/modules/exl/common/ExlConst.java
  2. 10
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java
  3. 62
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java
  4. 18
      src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java
  5. 9
      src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java
  6. 3
      src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java
  7. 3
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java
  8. 5
      src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java
  9. 7
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java
  10. 5
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  11. 1
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java
  12. 62
      src/main/resources/mapper/exl/ExlTableConfMapper.xml
  13. 1
      src/main/resources/mapper/tbs/TbsBudgetMapper.xml

20
src/main/java/com/qs/serve/modules/exl/common/ExlConst.java

@ -0,0 +1,20 @@
package com.qs.serve.modules.exl.common;
/**
* @author YenHex
* @since 2023/8/15
*/
public interface ExlConst {
String TABLE_NAME_PRE = "exd_";
String DATE_TYPE = "date";
String TYPE_INT = "int";
String TYPE_MONEY = "money";
String TYPE_STRING = "string";
String PRE_COLUMN_START = "START--";
String PRE_COLUMN_END = "END--";
}

10
src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java

@ -10,6 +10,7 @@ import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.WordUtil; import com.qs.serve.common.util.WordUtil;
import com.qs.serve.modules.exl.common.ExlConst;
import com.qs.serve.modules.exl.common.QsSqlSessionUtil; import com.qs.serve.modules.exl.common.QsSqlSessionUtil;
import com.qs.serve.modules.exl.common.TableCreateSqlUtil; import com.qs.serve.modules.exl.common.TableCreateSqlUtil;
import com.qs.serve.modules.exl.entity.ExlColumnConf; import com.qs.serve.modules.exl.entity.ExlColumnConf;
@ -98,14 +99,14 @@ public class ExlTableConfController {
.filter(a->a.getConditionFlag().equals(1)).collect(Collectors.toList()); .filter(a->a.getConditionFlag().equals(1)).collect(Collectors.toList());
List<ExlQueryFieldDto> queryFieldList = new ArrayList<>(); List<ExlQueryFieldDto> queryFieldList = new ArrayList<>();
for (ExlColumnConf columnConf : queryColumn) { for (ExlColumnConf columnConf : queryColumn) {
if(columnConf.getColumnType().contains("date")){ if(columnConf.getColumnType().contains(ExlConst.DATE_TYPE)){
ExlQueryFieldDto startDto = new ExlQueryFieldDto(); ExlQueryFieldDto startDto = new ExlQueryFieldDto();
startDto.setField("START--"+columnConf.getColumnName()); startDto.setField(ExlConst.PRE_COLUMN_START + columnConf.getColumnName());
startDto.setType(columnConf.getColumnType()); startDto.setType(columnConf.getColumnType());
startDto.setLabel(columnConf.getColumnHeader()); startDto.setLabel(columnConf.getColumnHeader());
queryFieldList.add(startDto); queryFieldList.add(startDto);
ExlQueryFieldDto fieldDto = new ExlQueryFieldDto(); ExlQueryFieldDto fieldDto = new ExlQueryFieldDto();
fieldDto.setField("END--"+columnConf.getColumnName()); fieldDto.setField(ExlConst.PRE_COLUMN_END + columnConf.getColumnName());
fieldDto.setType(columnConf.getColumnType()); fieldDto.setType(columnConf.getColumnType());
fieldDto.setLabel(columnConf.getColumnHeader()); fieldDto.setLabel(columnConf.getColumnHeader());
queryFieldList.add(fieldDto); queryFieldList.add(fieldDto);
@ -166,7 +167,8 @@ public class ExlTableConfController {
columnLqw.eq(ExlColumnConf::getTableConfId,tableId); columnLqw.eq(ExlColumnConf::getTableConfId,tableId);
List<ExlColumnConf> columnConfList = exlColumnConfService.list(columnLqw); List<ExlColumnConf> columnConfList = exlColumnConfService.list(columnLqw);
if(tableConf.getEnableFlag().equals(0)){ if(tableConf.getEnableFlag().equals(0)){
String sql = TableCreateSqlUtil.createMysqlTableSql(tableConf.getTableName(),columnConfList); String sql = TableCreateSqlUtil.createMysqlTableSql(ExlConst.TABLE_NAME_PRE
+ tableConf.getTableName(),columnConfList);
boolean result = QsSqlSessionUtil.executeSql(sql,sqlSessionTemplate); boolean result = QsSqlSessionUtil.executeSql(sql,sqlSessionTemplate);
if(result){ if(result){
tableConf.setEnableFlag(1); tableConf.setEnableFlag(1);

62
src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java

@ -8,10 +8,13 @@ import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.exl.common.ExlConst;
import com.qs.serve.modules.exl.entity.ExlColumnConf; import com.qs.serve.modules.exl.entity.ExlColumnConf;
import com.qs.serve.modules.exl.entity.ExlTableConf; import com.qs.serve.modules.exl.entity.ExlTableConf;
import com.qs.serve.modules.exl.entity.dto.ExlConditionDto;
import com.qs.serve.modules.exl.entity.dto.ExlQueryFieldDto; import com.qs.serve.modules.exl.entity.dto.ExlQueryFieldDto;
import com.qs.serve.modules.exl.entity.dto.ExlTableBo; import com.qs.serve.modules.exl.entity.dto.ExlTableBo;
import com.qs.serve.modules.exl.mapper.ExlTableConfMapper;
import com.qs.serve.modules.exl.service.ExlColumnConfService; import com.qs.serve.modules.exl.service.ExlColumnConfService;
import com.qs.serve.modules.exl.service.ExlTableConfService; import com.qs.serve.modules.exl.service.ExlTableConfService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -21,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -39,6 +43,64 @@ public class ExlTableDataController {
private ExlTableConfService exlTableConfService; private ExlTableConfService exlTableConfService;
private ExlColumnConfService exlColumnConfService; private ExlColumnConfService exlColumnConfService;
private ExlTableConfMapper exlTableConfMapper;
/**
* test
* @return
*/
@GetMapping("/test/{tableConfigId}")
public R<?> test(@PathVariable("tableConfigId") Long tableConfigId,@RequestParam Map<String,String> map){
// table
ExlTableConf tableConf = exlTableConfService.getById(tableConfigId);
// columns
LambdaQueryWrapper<ExlColumnConf> columnLqw = new LambdaQueryWrapper<>();
columnLqw.eq(ExlColumnConf::getTableConfId,tableConfigId);
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw);
// condition
List<ExlConditionDto> ge_conditions = new ArrayList<>();
List<ExlConditionDto> le_conditions = new ArrayList<>();
List<ExlConditionDto> eq_conditions = new ArrayList<>();
List<ExlConditionDto> like_conditions = new ArrayList<>();
if(!map.isEmpty()){
for (String columnName : map.keySet()) {
String searchValue = map.get(columnName);
if(columnName.contains(ExlConst.PRE_COLUMN_START)){
String orgColumn = columnName.replace(ExlConst.PRE_COLUMN_START,"").trim();
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue);
ge_conditions.add(conditionDto);
}else if (columnName.contains(ExlConst.PRE_COLUMN_END)){
String orgColumn = columnName.replace(ExlConst.PRE_COLUMN_END,"").trim();
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue);
le_conditions.add(conditionDto);
}else {
for (ExlColumnConf columnConf : columnList) {
if(columnConf.getColumnName().equals(columnName)){
ExlConditionDto conditionDto = new ExlConditionDto(columnName,searchValue);
if (columnConf.getColumnType().equals(ExlConst.TYPE_INT)){
eq_conditions.add(conditionDto);
}else if (columnConf.getColumnType().equals(ExlConst.TYPE_STRING)){
like_conditions.add(conditionDto);
}
}
}
}
}
}
// page
Integer pageSize = PageUtil.getPageSize();
Integer startRow = PageUtil.getStartRow();
// query
Map<String,Object> queryMap = new HashMap<>(10);
queryMap.put("startRow",startRow);
queryMap.put("pageSize",pageSize);
queryMap.put("leList",le_conditions);
queryMap.put("geList",ge_conditions);
queryMap.put("eqList",eq_conditions);
queryMap.put("likeList",like_conditions);
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName();
return R.ok(exlTableConfMapper.listData(targetTableName,queryMap));
}
/** /**

18
src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java

@ -0,0 +1,18 @@
package com.qs.serve.modules.exl.entity.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* @author YenHex
* @since 2023/8/15
*/
@Data
@AllArgsConstructor
public class ExlConditionDto {
String column;
String value;
}

9
src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java

@ -1,7 +1,12 @@
package com.qs.serve.modules.exl.mapper; package com.qs.serve.modules.exl.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.exl.entity.ExlTableConf; import com.qs.serve.modules.exl.entity.ExlTableConf;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/** /**
* 表配置 Mapper * 表配置 Mapper
@ -10,5 +15,9 @@ import com.qs.serve.modules.exl.entity.ExlTableConf;
*/ */
public interface ExlTableConfMapper extends BaseMapper<ExlTableConf> { public interface ExlTableConfMapper extends BaseMapper<ExlTableConf> {
@InterceptorIgnore(tenantLine = "1")
List<Map<String,Object>> listData(@Param("tableName") String tableName,@Param("query")Map<String,Object> query);
} }

3
src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java

@ -7,12 +7,13 @@ package com.qs.serve.modules.tbs.common;
public interface TbsBudgetCheckState { public interface TbsBudgetCheckState {
/** /**
* 0=未发布1=审批中2=完成3-被驳回;4-中止; * 0=未发布1=审批中2=完成3-被驳回;4-中止;5关闭
*/ */
int State_0_unPublish = 0; int State_0_unPublish = 0;
int State_1_apply = 1; int State_1_apply = 1;
int State_2_finished = 2; int State_2_finished = 2;
int State_3_setback = 3; int State_3_setback = 3;
int State_4_stop = 4; int State_4_stop = 4;
int State_5_close = 4;
} }

3
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java

@ -24,6 +24,9 @@ public class TbsBudgetUpdateAfterStartBo implements Serializable {
/** 预算编码 */ /** 预算编码 */
private String budgetCode; private String budgetCode;
/** 原来的更变记录id */
private String orgChangeId;
/** /**
* 成本中心类型 * 成本中心类型
center, center,

5
src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java

@ -28,9 +28,12 @@ public class TbsBudgetSo implements Serializable {
private Integer budgetState; private Integer budgetState;
/** 预算编码 */ /** 预算标题 */
private String budgetCode; private String budgetCode;
/** 预算编码 */
private String budgetNumber;
/** 科目编码搜索值 */ /** 科目编码搜索值 */
private String subjectValue; private String subjectValue;

7
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java

@ -72,6 +72,13 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
public TbsBudgetChange commitApply(TbsBudgetUpdateAfterStartBo param) { public TbsBudgetChange commitApply(TbsBudgetUpdateAfterStartBo param) {
seeYonService.testConnection(); seeYonService.testConnection();
TbsBudget budget = tbsBudgetMapper.selectById(param.getId()); TbsBudget budget = tbsBudgetMapper.selectById(param.getId());
if(param.getOrgChangeId()!=null){
TbsBudgetChange orgBudgetChange = this.getById(param.getOrgChangeId());
if(orgBudgetChange.getBudgetCheckState().equals(TbsBudgetCheckState.State_3_setback)){
orgBudgetChange.setBudgetCheckState(TbsBudgetCheckState.State_5_close);
this.updateById(orgBudgetChange);
}
}
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
TbsBudgetChange budgetChange = this.buildBudgetChange(param, budget,sysUser); TbsBudgetChange budgetChange = this.buildBudgetChange(param, budget,sysUser);

5
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java

@ -98,6 +98,9 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
String templateCode = TbsSeeYonConst.BudgetApplyConf.Code(); String templateCode = TbsSeeYonConst.BudgetApplyConf.Code();
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
TbsBudget tbsBudget = this.getById(id); TbsBudget tbsBudget = this.getById(id);
if(tbsBudget.getBudgetState().equals(1)){
Assert.throwEx("");
}
Map<String,Object> data = new HashMap<>(); Map<String,Object> data = new HashMap<>();
data.put("exsp5", tbsBudget.getBudgetCode()); data.put("exsp5", tbsBudget.getBudgetCode());
data.put("orgId", tbsBudget.getId().toString()); data.put("orgId", tbsBudget.getId().toString());
@ -518,7 +521,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
List<SysAttach> attachList = attachService.listByIds(attachIds); List<SysAttach> attachList = attachService.listByIds(attachIds);
budgetVo.setAttachList(attachList); budgetVo.setAttachList(attachList);
} }
//有更变时,修改为审批状态 //TODO 添加子状态码;有更变时,修改为审批状态
if(budgetVo.getBudgetState().equals(1)&&!budgetVo.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ if(budgetVo.getBudgetState().equals(1)&&!budgetVo.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){
LambdaQueryWrapper<TbsBudgetChange> change_lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsBudgetChange> change_lqw = new LambdaQueryWrapper<>();
change_lqw.eq(TbsBudgetChange::getBudgetId,budgetVo.getId()); change_lqw.eq(TbsBudgetChange::getBudgetId,budgetVo.getId());

1
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -247,6 +247,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
VtbVerificationSubject verificationSubject = new VtbVerificationSubject(); VtbVerificationSubject verificationSubject = new VtbVerificationSubject();
String vtbSubCode = verification.getVerificationCode()+"_"+countCode; String vtbSubCode = verification.getVerificationCode()+"_"+countCode;
verificationSubject.setVerificationSubCode(vtbSubCode); verificationSubject.setVerificationSubCode(vtbSubCode);
verificationSubject.setVerificationId(verification.getId());
countCode++; countCode++;
verificationSubject.setCostApplyId(costApply.getId()); verificationSubject.setCostApplyId(costApply.getId());
verificationSubject.setActivityId(activity.getId()); verificationSubject.setActivityId(activity.getId());

62
src/main/resources/mapper/exl/ExlTableConfMapper.xml

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qs.serve.modules.exl.mapper.ExlTableConfMapper">
<resultMap id="exlTableConfMap" type="com.qs.serve.modules.exl.entity.ExlTableConf" >
<result property="id" column="id"/>
<result property="tableName" column="table_name"/>
<result property="excelTitle" column="excel_title"/>
<result property="enableFlag" column="enable_flag"/>
<result property="enableTime" column="enable_time"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="tenantId" column="tenant_id"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
<sql id="exlTableConfSql">
exl_table_conf.`id`,
exl_table_conf.`table_name`,
exl_table_conf.`excel_title`,
exl_table_conf.`enable_flag`,
exl_table_conf.`enable_time`,
exl_table_conf.`remark`,
exl_table_conf.`create_time`,
exl_table_conf.`update_time`,
exl_table_conf.`tenant_id`,
exl_table_conf.`create_by`,
exl_table_conf.`update_by`,
exl_table_conf.`del_flag` </sql>
<select id="listData" resultType="java.util.Map">
select * from ${tableName}
<where>
<if test="query.leList!=null and query.leList.size > 0">
<foreach collection="query.leList" item ="item" index="i" open="(" close=")" separator=",">
and ${item.column} &lt;= #{item.value}
</foreach>
</if>
<if test="query.geList!=null and query.geList.size > 0">
<foreach collection="query.geList" item ="item" index="i" open="(" close=")" separator=",">
and ${item.column} &gt;= #{item.value}
</foreach>
</if>
<if test="query.eqList!=null and query.eqList.size > 0">
<foreach collection="query.eqList" item ="item" index="i" open="(" close=")" separator=",">
and ${item.column} = #{item.value}
</foreach>
</if>
<if test="query.likeList!=null and query.likeList.size > 0">
<foreach collection="query.likeList" item ="item" index="i" open="(" close=")" separator=",">
and ${item.column} like concat('%', #{item.value} ,'%')
</foreach>
</if>
</where>
limit #{query.startRow},#{query.pageSize}
</select>
</mapper>

1
src/main/resources/mapper/tbs/TbsBudgetMapper.xml

@ -73,6 +73,7 @@
FROM `tbs_budget` `tbs_budget` FROM `tbs_budget` `tbs_budget`
LEFT JOIN `tbs_budget_condition` `tbs_budget_condition` ON `tbs_budget`.`id` = `tbs_budget_condition`.`budget_id` LEFT JOIN `tbs_budget_condition` `tbs_budget_condition` ON `tbs_budget`.`id` = `tbs_budget_condition`.`budget_id`
<where> <where>
<if test="query.budgetNumber !=null "> and `tbs_budget`.`budget_number` like concat('%',#{query.budgetNumber},'%')</if>
<if test="query.budgetState !=null "> and `tbs_budget`.`budget_state` = #{query.budgetState}</if> <if test="query.budgetState !=null "> and `tbs_budget`.`budget_state` = #{query.budgetState}</if>
<if test="query.budgetCode != null and query.budgetCode != ''"> and `tbs_budget`.`budget_code` like concat('%',#{query.budgetCode},'%')</if> <if test="query.budgetCode != null and query.budgetCode != ''"> and `tbs_budget`.`budget_code` like concat('%',#{query.budgetCode},'%')</if>
<if test="query.subjectValue != null and query.subjectValue != ''"> <if test="query.subjectValue != null and query.subjectValue != ''">

Loading…
Cancel
Save