|
|
@ -1,14 +1,19 @@ |
|
|
|
package com.qs.serve.modules.exl.controller; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.qs.serve.common.model.annotation.SysLog; |
|
|
|
import com.qs.serve.common.model.dto.PageVo; |
|
|
|
import com.qs.serve.common.model.dto.R; |
|
|
|
import com.qs.serve.common.model.enums.BizType; |
|
|
|
import com.qs.serve.common.model.enums.SystemModule; |
|
|
|
import com.qs.serve.common.util.IdUtil; |
|
|
|
import com.qs.serve.common.util.JsonUtil; |
|
|
|
import com.qs.serve.common.util.PageUtil; |
|
|
|
import com.qs.serve.common.util.StringUtils; |
|
|
|
import com.qs.serve.modules.exl.common.ExlConst; |
|
|
|
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.ExlTableConf; |
|
|
|
import com.qs.serve.modules.exl.entity.dto.ExlConditionDto; |
|
|
@ -19,6 +24,7 @@ import com.qs.serve.modules.exl.service.ExlColumnConfService; |
|
|
|
import com.qs.serve.modules.exl.service.ExlTableConfService; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.mybatis.spring.SqlSessionTemplate; |
|
|
|
import org.springframework.web.bind.annotation.*; |
|
|
|
|
|
|
|
import javax.validation.Valid; |
|
|
@ -42,7 +48,7 @@ public class ExlTableDataController { |
|
|
|
|
|
|
|
private ExlTableConfService exlTableConfService; |
|
|
|
private ExlColumnConfService exlColumnConfService; |
|
|
|
|
|
|
|
private SqlSessionTemplate sqlSessionTemplate; |
|
|
|
private ExlTableConfMapper exlTableConfMapper; |
|
|
|
|
|
|
|
/** |
|
|
@ -109,11 +115,48 @@ public class ExlTableDataController { |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
@PostMapping("/batchSave/{tableConfigId}") |
|
|
|
public R<?> batchSave(@RequestBody List<Object> param){ |
|
|
|
for (Object obj : param) { |
|
|
|
|
|
|
|
public R<?> batchSave(@PathVariable Long tableConfigId, @RequestBody List<Object> param){ |
|
|
|
// table
|
|
|
|
ExlTableConf tableConf = exlTableConfService.getById(tableConfigId); |
|
|
|
// columns
|
|
|
|
LambdaQueryWrapper<ExlColumnConf> columnLqw = new LambdaQueryWrapper<>(); |
|
|
|
columnLqw.eq(ExlColumnConf::getTableConfId,tableConfigId); |
|
|
|
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw); |
|
|
|
|
|
|
|
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); |
|
|
|
//insert into table (cloumns) values (vals),(vals)
|
|
|
|
StringBuilder insertSql = new StringBuilder("insert into "+targetTableName +"( `union_row_id`,"); |
|
|
|
for (int i = 0; i < columnList.size(); i++) { |
|
|
|
insertSql.append(" `"+columnList.get(i).getColumnName()+"` "); |
|
|
|
if(i+1<columnList.size()){ |
|
|
|
insertSql.append(","); |
|
|
|
} |
|
|
|
} |
|
|
|
insertSql.append(")values"); |
|
|
|
for (int k = 0; k < param.size(); k++) { |
|
|
|
Object obj = param.get(k); |
|
|
|
insertSql.append("("); |
|
|
|
JSONObject jsonObject = JSONObject.parseObject(JsonUtil.objectToJson(obj)); |
|
|
|
String unionId = TableCreateSqlUtil.buildUnionId(columnList,jsonObject); |
|
|
|
if(unionId==null){ |
|
|
|
unionId = IdUtil.nanoId(); |
|
|
|
} |
|
|
|
insertSql.append("'"+unionId+"',"); |
|
|
|
for (int i = 0; i < columnList.size(); i++) { |
|
|
|
ExlColumnConf columnConf = columnList.get(i); |
|
|
|
String string = jsonObject.getString(columnConf.getColumnName()); |
|
|
|
insertSql.append("'"+string+"'"); |
|
|
|
if(i+1<columnList.size()){ |
|
|
|
insertSql.append(", "); |
|
|
|
} |
|
|
|
} |
|
|
|
insertSql.append(")"); |
|
|
|
if(k+1<param.size()){ |
|
|
|
insertSql.append(", "); |
|
|
|
} |
|
|
|
} |
|
|
|
return R.ok(param); |
|
|
|
QsSqlSessionUtil.executeSql(insertSql.toString(),sqlSessionTemplate); |
|
|
|
return R.ok(insertSql); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|