|
@ -7,10 +7,9 @@ import com.qs.serve.common.model.dto.PageVo; |
|
|
import com.qs.serve.common.model.dto.R; |
|
|
import com.qs.serve.common.model.dto.R; |
|
|
import com.qs.serve.common.model.enums.BizType; |
|
|
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.IdUtil; |
|
|
import com.qs.serve.common.util.*; |
|
|
import com.qs.serve.common.util.JsonUtil; |
|
|
import com.qs.serve.modules.bms.entity.BmsSupplier; |
|
|
import com.qs.serve.common.util.PageUtil; |
|
|
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; |
|
|
import com.qs.serve.common.util.StringUtils; |
|
|
|
|
|
import com.qs.serve.modules.exl.common.ExlConst; |
|
|
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; |
|
@ -23,6 +22,12 @@ import com.qs.serve.modules.exl.entity.dto.ExlTableBo; |
|
|
import com.qs.serve.modules.exl.mapper.ExlTableConfMapper; |
|
|
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 com.qs.serve.modules.exl.service.ExlTableUserService; |
|
|
|
|
|
import com.qs.serve.modules.his.entity.HisUserSupplier; |
|
|
|
|
|
import com.qs.serve.modules.his.mapper.HisUserSupplierMapper; |
|
|
|
|
|
import com.qs.serve.modules.sys.entity.SysUser; |
|
|
|
|
|
import com.qs.serve.modules.sys.mapper.SysUserMapper; |
|
|
|
|
|
import com.qs.serve.modules.sys.service.SysPostUserService; |
|
|
import lombok.AllArgsConstructor; |
|
|
import lombok.AllArgsConstructor; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.jetbrains.annotations.NotNull; |
|
|
import org.jetbrains.annotations.NotNull; |
|
@ -31,12 +36,11 @@ 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.*; |
|
|
import java.util.HashMap; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
import static com.qs.serve.modules.exl.common.TableCreateSqlUtil.DEFAULT_STRING; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 动态Excel表 数据查询 |
|
|
* 动态Excel表 数据查询 |
|
|
* @author YenHex |
|
|
* @author YenHex |
|
@ -50,8 +54,13 @@ public class ExlTableDataController { |
|
|
|
|
|
|
|
|
private ExlTableConfService exlTableConfService; |
|
|
private ExlTableConfService exlTableConfService; |
|
|
private ExlColumnConfService exlColumnConfService; |
|
|
private ExlColumnConfService exlColumnConfService; |
|
|
|
|
|
private ExlTableUserService exlTableUserService; |
|
|
private SqlSessionTemplate sqlSessionTemplate; |
|
|
private SqlSessionTemplate sqlSessionTemplate; |
|
|
private ExlTableConfMapper exlTableConfMapper; |
|
|
private ExlTableConfMapper exlTableConfMapper; |
|
|
|
|
|
private SysUserMapper sysUserMapper; |
|
|
|
|
|
private SysPostUserService postUserService; |
|
|
|
|
|
private HisUserSupplierMapper hisUserSupplierMapper; |
|
|
|
|
|
private BmsSupplierMapper bmsSupplierMapper; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 翻页查询 |
|
|
* 翻页查询 |
|
@ -72,7 +81,8 @@ public class ExlTableDataController { |
|
|
columnLqw.orderByAsc(ExlColumnConf::getSort); |
|
|
columnLqw.orderByAsc(ExlColumnConf::getSort); |
|
|
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw); |
|
|
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw); |
|
|
// query
|
|
|
// query
|
|
|
Map<String, Object> queryMap = buildQueryMap(map, columnList); |
|
|
boolean adminFlag = false; |
|
|
|
|
|
Map<String, Object> queryMap = buildQueryMap(map, columnList,adminFlag); |
|
|
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); |
|
|
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); |
|
|
Long count = exlTableConfMapper.countData(targetTableName,queryMap); |
|
|
Long count = exlTableConfMapper.countData(targetTableName,queryMap); |
|
|
PageVo vo = new PageVo(); |
|
|
PageVo vo = new PageVo(); |
|
@ -94,13 +104,19 @@ public class ExlTableDataController { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@NotNull |
|
|
@NotNull |
|
|
private Map<String, Object> buildQueryMap(Map<String, String> map, List<ExlColumnConf> columnList) { |
|
|
private Map<String, Object> buildQueryMap(Map<String, String> map, List<ExlColumnConf> columnList,Boolean adminFlag) { |
|
|
Map<String,Object> queryMap = new HashMap<>(10); |
|
|
Map<String,Object> queryMap = new HashMap<>(10); |
|
|
// condition
|
|
|
// condition
|
|
|
List<ExlConditionDto> ge_conditions = new ArrayList<>(); |
|
|
List<ExlConditionDto> ge_conditions = new ArrayList<>(); |
|
|
List<ExlConditionDto> le_conditions = new ArrayList<>(); |
|
|
List<ExlConditionDto> le_conditions = new ArrayList<>(); |
|
|
List<ExlConditionDto> eq_conditions = new ArrayList<>(); |
|
|
List<ExlConditionDto> eq_conditions = new ArrayList<>(); |
|
|
List<ExlConditionDto> like_conditions = new ArrayList<>(); |
|
|
List<ExlConditionDto> like_conditions = new ArrayList<>(); |
|
|
|
|
|
List<ExlConditionDto> in_conditions = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
|
|
//map赋值业务参数的key
|
|
|
|
|
|
map.putIfAbsent(ExlConst.TYPE_USER_CODE, ""); |
|
|
|
|
|
map.putIfAbsent(ExlConst.TYPE_CUSTOMER_CODE, ""); |
|
|
|
|
|
|
|
|
if(!map.isEmpty()){ |
|
|
if(!map.isEmpty()){ |
|
|
for (String columnName : map.keySet()) { |
|
|
for (String columnName : map.keySet()) { |
|
|
String searchValue = map.get(columnName); |
|
|
String searchValue = map.get(columnName); |
|
@ -112,24 +128,87 @@ public class ExlTableDataController { |
|
|
currColumnConf = columnConf; |
|
|
currColumnConf = columnConf; |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
|
|
|
//拓展业务查询条件
|
|
|
|
|
|
String extColumnName = null; |
|
|
|
|
|
if(columnConf.getColumnType().equals(ExlConst.TYPE_USER_CODE)){ |
|
|
|
|
|
extColumnName = columnConf.getColumnName()+"_ext_usr_name"; |
|
|
|
|
|
}else if (columnConf.getColumnType().equals(ExlConst.TYPE_CUSTOMER_CODE)){ |
|
|
|
|
|
extColumnName = columnConf.getColumnName()+"_ext_cus_name"; |
|
|
|
|
|
} |
|
|
|
|
|
if(extColumnName!=null&&extColumnName.equals(orgColumn)){ |
|
|
|
|
|
ExlColumnConf conf = new ExlColumnConf(); |
|
|
|
|
|
conf.setColumnName(extColumnName); |
|
|
|
|
|
conf.setColumnType(DEFAULT_STRING); |
|
|
|
|
|
conf.setScope(0); |
|
|
|
|
|
currColumnConf = conf; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
if(currColumnConf==null){ |
|
|
if(currColumnConf==null){ |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
|
|
|
String colType = currColumnConf.getColumnType(); |
|
|
|
|
|
if(!adminFlag){ |
|
|
|
|
|
// 权限范围:0->无;1->本人;2->下属;3->全部(本人级下属)
|
|
|
|
|
|
Integer scope = currColumnConf.getScope(); |
|
|
|
|
|
Set<String> values = new HashSet<>(); |
|
|
|
|
|
// 业务类型
|
|
|
|
|
|
String userId = AuthContextUtils.getSysUserId(); |
|
|
|
|
|
SysUser sysUser = sysUserMapper.selectById(userId); |
|
|
|
|
|
if(scope>0){ |
|
|
|
|
|
if (colType.equals(ExlConst.TYPE_USER_CODE)){ |
|
|
|
|
|
values.add("0"); |
|
|
|
|
|
if(scope==1){ |
|
|
|
|
|
values.add(sysUser.getCode()); |
|
|
|
|
|
}else { |
|
|
|
|
|
List<String> childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); |
|
|
|
|
|
if(childIds.size()>0){ |
|
|
|
|
|
List<SysUser> sysUsers = sysUserMapper.selectBatchIds(childIds); |
|
|
|
|
|
List<String> codes = sysUsers.stream().map(a->a.getCode()).collect(Collectors.toList()); |
|
|
|
|
|
values.addAll(codes); |
|
|
|
|
|
} |
|
|
|
|
|
if (scope==3){ |
|
|
|
|
|
values.add(sysUser.getCode()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,values); |
|
|
|
|
|
in_conditions.add(conditionDto); |
|
|
|
|
|
}else if (colType.equals(ExlConst.TYPE_CUSTOMER_CODE)){ |
|
|
|
|
|
values.add("0"); |
|
|
|
|
|
List<String> userIds = new ArrayList<>(); |
|
|
|
|
|
userIds.add(userId); |
|
|
|
|
|
if(scope>1){ |
|
|
|
|
|
List<String> childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); |
|
|
|
|
|
userIds.addAll(childIds); |
|
|
|
|
|
} |
|
|
|
|
|
LambdaQueryWrapper<HisUserSupplier> husLqw = new LambdaQueryWrapper<>(); |
|
|
|
|
|
husLqw.in(HisUserSupplier::getUserId,userIds); |
|
|
|
|
|
husLqw.select(HisUserSupplier::getSupplierCode); |
|
|
|
|
|
List<HisUserSupplier> hisUserSuppliers = hisUserSupplierMapper.selectList(husLqw); |
|
|
|
|
|
List<String> supplierCodes = hisUserSuppliers.stream() |
|
|
|
|
|
.map(HisUserSupplier::getSupplierCode).distinct().collect(Collectors.toList()); |
|
|
|
|
|
values.addAll(supplierCodes); |
|
|
|
|
|
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,values); |
|
|
|
|
|
in_conditions.add(conditionDto); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//基础的数据类型
|
|
|
if(columnName.contains(ExlConst.PRE_COLUMN_START)){ |
|
|
if(columnName.contains(ExlConst.PRE_COLUMN_START)){ |
|
|
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue); |
|
|
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue); |
|
|
ge_conditions.add(conditionDto); |
|
|
ge_conditions.add(conditionDto); |
|
|
}else if (columnName.contains(ExlConst.PRE_COLUMN_END)){ |
|
|
}else if (columnName.contains(ExlConst.PRE_COLUMN_END)){ |
|
|
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue); |
|
|
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue); |
|
|
if(currColumnConf.getColumnType().equals(ExlConst.DATETIME_TYPE)){ |
|
|
if(colType.equals(ExlConst.DATETIME_TYPE)){ |
|
|
conditionDto.setValue(searchValue+" 23:59:59"); |
|
|
conditionDto.setValue(searchValue+" 23:59:59"); |
|
|
} |
|
|
} |
|
|
le_conditions.add(conditionDto); |
|
|
le_conditions.add(conditionDto); |
|
|
}else { |
|
|
}else { |
|
|
ExlConditionDto conditionDto = new ExlConditionDto(columnName,searchValue); |
|
|
ExlConditionDto conditionDto = new ExlConditionDto(columnName,searchValue); |
|
|
if (currColumnConf.getColumnType().equals(ExlConst.TYPE_INT)){ |
|
|
if (colType.equals(ExlConst.TYPE_INT)){ |
|
|
eq_conditions.add(conditionDto); |
|
|
eq_conditions.add(conditionDto); |
|
|
}else if (currColumnConf.getColumnType().equals(ExlConst.TYPE_STRING)){ |
|
|
}else{ |
|
|
like_conditions.add(conditionDto); |
|
|
like_conditions.add(conditionDto); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -139,6 +218,7 @@ public class ExlTableDataController { |
|
|
queryMap.put("geList",ge_conditions); |
|
|
queryMap.put("geList",ge_conditions); |
|
|
queryMap.put("eqList",eq_conditions); |
|
|
queryMap.put("eqList",eq_conditions); |
|
|
queryMap.put("likeList",like_conditions); |
|
|
queryMap.put("likeList",like_conditions); |
|
|
|
|
|
queryMap.put("inBizList",in_conditions); |
|
|
return queryMap; |
|
|
return queryMap; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -159,7 +239,8 @@ public class ExlTableDataController { |
|
|
columnLqw.orderByAsc(ExlColumnConf::getSort); |
|
|
columnLqw.orderByAsc(ExlColumnConf::getSort); |
|
|
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw); |
|
|
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw); |
|
|
// query
|
|
|
// query
|
|
|
Map<String, Object> queryMap = buildQueryMap(map, columnList); |
|
|
boolean adminFlag = exlTableUserService.checkAdmin(tableConf.getId(),AuthContextUtils.getSysUserId())>0; |
|
|
|
|
|
Map<String, Object> queryMap = buildQueryMap(map, columnList,adminFlag); |
|
|
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); |
|
|
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); |
|
|
List<Map<String,Object>> list = exlTableConfMapper.listData(targetTableName,queryMap); |
|
|
List<Map<String,Object>> list = exlTableConfMapper.listData(targetTableName,queryMap); |
|
|
this.formatListData(list); |
|
|
this.formatListData(list); |
|
@ -204,7 +285,15 @@ public class ExlTableDataController { |
|
|
//insert into table (cloumns) values (vals),(vals)
|
|
|
//insert into table (cloumns) values (vals),(vals)
|
|
|
StringBuilder insertSql = new StringBuilder("insert into "+targetTableName +"( `union_row_id`,"); |
|
|
StringBuilder insertSql = new StringBuilder("insert into "+targetTableName +"( `union_row_id`,"); |
|
|
for (int i = 0; i < columnList.size(); i++) { |
|
|
for (int i = 0; i < columnList.size(); i++) { |
|
|
insertSql.append(" `"+columnList.get(i).getColumnName()+"` "); |
|
|
ExlColumnConf columnConf = columnList.get(i); |
|
|
|
|
|
insertSql.append(" `"+columnConf.getColumnName()+"` "); |
|
|
|
|
|
if(columnConf.getColumnType().equals(ExlConst.TYPE_USER_CODE)){ |
|
|
|
|
|
insertSql.append(","); |
|
|
|
|
|
insertSql.append(" `"+columnConf.getColumnName()+"_ext_usr_name` "); |
|
|
|
|
|
}else if(columnConf.getColumnType().equals(ExlConst.TYPE_CUSTOMER_CODE)){ |
|
|
|
|
|
insertSql.append(","); |
|
|
|
|
|
insertSql.append(" `"+columnConf.getColumnName()+"_ext_cus_name` "); |
|
|
|
|
|
} |
|
|
if(i+1<columnList.size()){ |
|
|
if(i+1<columnList.size()){ |
|
|
insertSql.append(","); |
|
|
insertSql.append(","); |
|
|
} |
|
|
} |
|
@ -223,6 +312,27 @@ public class ExlTableDataController { |
|
|
ExlColumnConf columnConf = columnList.get(i); |
|
|
ExlColumnConf columnConf = columnList.get(i); |
|
|
String string = jsonObject.getString(columnConf.getColumnName()); |
|
|
String string = jsonObject.getString(columnConf.getColumnName()); |
|
|
insertSql.append("'"+string+"'"); |
|
|
insertSql.append("'"+string+"'"); |
|
|
|
|
|
if(columnConf.getColumnType().equals(ExlConst.TYPE_USER_CODE)){ |
|
|
|
|
|
insertSql.append(","); |
|
|
|
|
|
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>(); |
|
|
|
|
|
lqw.eq(SysUser::getCode,string); |
|
|
|
|
|
lqw.select(SysUser::getCode,SysUser::getName); |
|
|
|
|
|
List<SysUser> sysUsers = sysUserMapper.selectList(lqw); |
|
|
|
|
|
if (sysUsers.size()>0){ |
|
|
|
|
|
String name = sysUsers.get(0).getName(); |
|
|
|
|
|
insertSql.append("'"+name+"'"); |
|
|
|
|
|
} |
|
|
|
|
|
}else if(columnConf.getColumnType().equals(ExlConst.TYPE_CUSTOMER_CODE)){ |
|
|
|
|
|
insertSql.append(","); |
|
|
|
|
|
LambdaQueryWrapper<BmsSupplier> lqw = new LambdaQueryWrapper<>(); |
|
|
|
|
|
lqw.eq(BmsSupplier::getCode,string); |
|
|
|
|
|
lqw.select(BmsSupplier::getCode,BmsSupplier::getName); |
|
|
|
|
|
List<BmsSupplier> supplierList = bmsSupplierMapper.selectList(lqw); |
|
|
|
|
|
if (supplierList.size()>0){ |
|
|
|
|
|
String name = supplierList.get(0).getName(); |
|
|
|
|
|
insertSql.append("'"+name+"'"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
if(i+1<columnList.size()){ |
|
|
if(i+1<columnList.size()){ |
|
|
insertSql.append(", "); |
|
|
insertSql.append(", "); |
|
|
} |
|
|
} |
|
|