Browse Source

数据中心数据支持业务查询

v1.0
Yen 2 years ago
parent
commit
c335038442
  1. 9
      src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java
  2. 30
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java
  3. 67
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java
  4. 5
      src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java
  5. 7
      src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java
  6. 10
      src/main/resources/mapper/exl/ExlTableConfMapper.xml

9
src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java

@ -69,6 +69,15 @@ public class BmsSupplierAddressApi {
return R.ok(bmsSupplierAddress); return R.ok(bmsSupplierAddress);
} }
/**
* 获取默认地址
* @return
*/
@GetMapping("/getDefaultOne")
public R<BmsSupplierAddress> getDefaultOne(){
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getDefault(AuthContextUtils.getSupplierId());
return R.ok(supplierAddress);
}
/** /**
* 根据ID更新 * 根据ID更新

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

@ -87,7 +87,31 @@ public class ExlTableConfController {
LambdaQueryWrapper<ExlColumnConf> columnLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ExlColumnConf> columnLqw = new LambdaQueryWrapper<>();
columnLqw.eq(ExlColumnConf::getTableConfId,id); columnLqw.eq(ExlColumnConf::getTableConfId,id);
List<ExlColumnConf> columnConfList = exlColumnConfService.list(columnLqw); List<ExlColumnConf> columnConfList = exlColumnConfService.list(columnLqw);
exlTableConf.setColumnList(columnConfList); //加载的列拓展
List<ExlColumnConf> resultColumnConfList = new ArrayList<>();
for (ExlColumnConf columnConf : columnConfList) {
columnConf.setHideOnEditFlag(0);
resultColumnConfList.add(columnConf);
if(columnConf.getColumnType().equals(ExlConst.TYPE_CUSTOMER_CODE)){
ExlColumnConf conf = new ExlColumnConf();
conf.setColumnName(columnConf.getColumnName()+"_ext_cus_name");
conf.setColumnHeader(columnConf.getColumnHeader()+"(名称)");
conf.setColumnType(TableCreateSqlUtil.DEFAULT_STRING);
conf.setSort(0);
conf.setHideOnEditFlag(1);
resultColumnConfList.add(conf);
}
if(columnConf.getColumnType().equals(ExlConst.TYPE_USER_CODE)){
ExlColumnConf conf = new ExlColumnConf();
conf.setColumnName(columnConf.getColumnName()+"_ext_usr_name");
conf.setColumnHeader(columnConf.getColumnHeader()+"(名称)");
conf.setColumnType(TableCreateSqlUtil.DEFAULT_STRING);
conf.setSort(0);
conf.setHideOnEditFlag(1);
resultColumnConfList.add(conf);
}
}
exlTableConf.setColumnList(resultColumnConfList);
//加载管理员 //加载管理员
LambdaQueryWrapper<ExlTableUser> tableUserLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ExlTableUser> tableUserLqw = new LambdaQueryWrapper<>();
tableUserLqw.eq(ExlTableUser::getTableConfId,id); tableUserLqw.eq(ExlTableUser::getTableConfId,id);
@ -123,7 +147,7 @@ public class ExlTableConfController {
ExlQueryFieldDto fieldDtoName = new ExlQueryFieldDto(); ExlQueryFieldDto fieldDtoName = new ExlQueryFieldDto();
fieldDtoName.setField(columnConf.getColumnName()+"_ext_cus_name"); fieldDtoName.setField(columnConf.getColumnName()+"_ext_cus_name");
fieldDtoName.setType(TableCreateSqlUtil.DEFAULT_STRING); fieldDtoName.setType(TableCreateSqlUtil.DEFAULT_STRING);
fieldDtoName.setLabel(columnConf.getColumnHeader()); fieldDtoName.setLabel(columnConf.getColumnHeader()+"(名称)");
queryFieldList.add(fieldDtoName); queryFieldList.add(fieldDtoName);
}else if(columnType.equals(ExlConst.TYPE_USER_CODE)){ }else if(columnType.equals(ExlConst.TYPE_USER_CODE)){
@ -137,7 +161,7 @@ public class ExlTableConfController {
ExlQueryFieldDto fieldDtoName = new ExlQueryFieldDto(); ExlQueryFieldDto fieldDtoName = new ExlQueryFieldDto();
fieldDtoName.setField(columnConf.getColumnName()+"_ext_usr_name"); fieldDtoName.setField(columnConf.getColumnName()+"_ext_usr_name");
fieldDtoName.setType(TableCreateSqlUtil.DEFAULT_STRING); fieldDtoName.setType(TableCreateSqlUtil.DEFAULT_STRING);
fieldDtoName.setLabel(columnConf.getColumnHeader()); fieldDtoName.setLabel(columnConf.getColumnHeader()+"(名称)");
queryFieldList.add(fieldDtoName); queryFieldList.add(fieldDtoName);
}else { }else {
//非业务类型 //非业务类型

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

@ -8,6 +8,8 @@ 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.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
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;
@ -37,6 +39,8 @@ import java.time.LocalDateTime;
import java.util.*; import java.util.*;
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
@ -56,6 +60,7 @@ public class ExlTableDataController {
private SysUserMapper sysUserMapper; private SysUserMapper sysUserMapper;
private SysPostUserService postUserService; private SysPostUserService postUserService;
private HisUserSupplierMapper hisUserSupplierMapper; private HisUserSupplierMapper hisUserSupplierMapper;
private BmsSupplierMapper bmsSupplierMapper;
/** /**
* 翻页查询 * 翻页查询
@ -108,6 +113,10 @@ public class ExlTableDataController {
List<ExlConditionDto> like_conditions = new ArrayList<>(); List<ExlConditionDto> like_conditions = new ArrayList<>();
List<ExlConditionDto> in_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);
@ -119,30 +128,46 @@ 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(); String colType = currColumnConf.getColumnType();
if(!adminFlag){ if(!adminFlag){
// 权限范围:0->本人;1->下属;2->全部(本人级下属) // 权限范围:0->无;1->本人;2->下属;3->全部(本人级下属)
Integer scope = currColumnConf.getScope(); Integer scope = currColumnConf.getScope();
Set<String> values = new HashSet<>(); Set<String> values = new HashSet<>();
// 业务类型 // 业务类型
String userId = AuthContextUtils.getSysUserId(); String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserMapper.selectById(userId); SysUser sysUser = sysUserMapper.selectById(userId);
if(scope>0){
if (colType.equals(ExlConst.TYPE_USER_CODE)){ if (colType.equals(ExlConst.TYPE_USER_CODE)){
values.add("0"); values.add("0");
if(scope==0){ if(scope==1){
values.add(sysUser.getCode()); values.add(sysUser.getCode());
}else if (scope>0){ }else {
List<String> childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); List<String> childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId());
if(childIds.size()>0){ if(childIds.size()>0){
List<SysUser> sysUsers = sysUserMapper.selectBatchIds(childIds); List<SysUser> sysUsers = sysUserMapper.selectBatchIds(childIds);
List<String> codes = sysUsers.stream().map(a->a.getCode()).collect(Collectors.toList()); List<String> codes = sysUsers.stream().map(a->a.getCode()).collect(Collectors.toList());
values.addAll(codes); values.addAll(codes);
} }
if (scope==2){ if (scope==3){
values.add(sysUser.getCode()); values.add(sysUser.getCode());
} }
} }
@ -152,7 +177,7 @@ public class ExlTableDataController {
values.add("0"); values.add("0");
List<String> userIds = new ArrayList<>(); List<String> userIds = new ArrayList<>();
userIds.add(userId); userIds.add(userId);
if(scope>0){ if(scope>1){
List<String> childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); List<String> childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId());
userIds.addAll(childIds); userIds.addAll(childIds);
} }
@ -167,6 +192,7 @@ public class ExlTableDataController {
in_conditions.add(conditionDto); in_conditions.add(conditionDto);
} }
} }
}
//基础的数据类型 //基础的数据类型
if(columnName.contains(ExlConst.PRE_COLUMN_START)){ if(columnName.contains(ExlConst.PRE_COLUMN_START)){
@ -259,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(",");
} }
@ -278,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(", ");
} }

5
src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java

@ -60,7 +60,7 @@ public class ExlColumnConf implements Serializable {
/** 空值标识 */ /** 空值标识 */
private Integer keyFlag; private Integer keyFlag;
/** 权限范围:0->本人;1->下属;2->全部(本人级下属) */ /** 权限范围:0->无;1->本人;2->下属;3->全部(本人级下属) */
private Integer scope; private Integer scope;
private Integer sort; private Integer sort;
@ -95,6 +95,9 @@ public class ExlColumnConf implements Serializable {
@JsonProperty @JsonProperty
private String delFlag; private String delFlag;
/** 在编辑页隐藏标识(0:显示;1:隐藏) */
@TableField(exist = false)
private Integer hideOnEditFlag;
public static ExlColumnConf toNewObject(ExlColumnConf source){ public static ExlColumnConf toNewObject(ExlColumnConf source){
ExlColumnConf columnConf = new ExlColumnConf(); ExlColumnConf columnConf = new ExlColumnConf();

7
src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java

@ -17,6 +17,7 @@ import com.qs.serve.modules.exl.mapper.ExlTableConfMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 表配置 服务实现类 * 表配置 服务实现类
@ -64,7 +65,11 @@ public class ExlTableConfServiceImpl extends ServiceImpl<ExlTableConfMapper,ExlT
LambdaQueryWrapper<ExlColumnConf> columnLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ExlColumnConf> columnLqw = new LambdaQueryWrapper<>();
columnLqw.eq(ExlColumnConf::getTableConfId,param.getId()); columnLqw.eq(ExlColumnConf::getTableConfId,param.getId());
columnConfService.remove(columnLqw); columnConfService.remove(columnLqw);
List<ExlColumnConf> columnList = param.getColumnList(); List<ExlColumnConf> columnList = param.getColumnList().stream().filter(
//忽略业务拓展列
a->!a.getColumnName().contains("_ext_cus_name")
&&!a.getColumnName().contains("_ext_usr_name")
).collect(Collectors.toList());
columnList.forEach(a->{ columnList.forEach(a->{
a.setTableConfId(tableId); a.setTableConfId(tableId);
if(a.getColumnType().equals(ExlConst.TYPE_MONEY)){ if(a.getColumnType().equals(ExlConst.TYPE_MONEY)){

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

@ -55,16 +55,22 @@
<if test="query.likeList!=null and query.likeList.size > 0"> <if test="query.likeList!=null and query.likeList.size > 0">
and and
<foreach collection="query.likeList" item ="item" index="i" separator="and"> <foreach collection="query.likeList" item ="item" index="i" separator="and">
<if test="item.value!=null and item.value != ''">
${item.column} like concat('%', #{item.value} ,'%') ${item.column} like concat('%', #{item.value} ,'%')
</if>
<if test="item.value==null or item.value == ''">
1=1
</if>
</foreach> </foreach>
</if> </if>
<if test="query.inBizList!=null and query.inBizList.size > 0"> <if test="query.inBizList!=null and query.inBizList.size > 0">
and and
<foreach collection="query.inBizList" item ="inItem" index="i" separator="and"> <foreach collection="query.inBizList" item ="inItem" index="i" separator="and">
${inItem.column} in ${inItem.column} in (
<foreach collection="inItem.values" item ="item" index="i" separator=","> <foreach collection="inItem.values" item="item" index="i" separator=",">
#{item} #{item}
</foreach> </foreach>
)
</foreach> </foreach>
</if> </if>
</where> </where>

Loading…
Cancel
Save