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. 121
      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. 12
      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
*/
@GetMapping("/getDefaultOne")
public R<BmsSupplierAddress> getDefaultOne(){
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getDefault(AuthContextUtils.getSupplierId());
return R.ok(supplierAddress);
}
/**
* 根据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<>();
columnLqw.eq(ExlColumnConf::getTableConfId,id);
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<>();
tableUserLqw.eq(ExlTableUser::getTableConfId,id);
@ -123,7 +147,7 @@ public class ExlTableConfController {
ExlQueryFieldDto fieldDtoName = new ExlQueryFieldDto();
fieldDtoName.setField(columnConf.getColumnName()+"_ext_cus_name");
fieldDtoName.setType(TableCreateSqlUtil.DEFAULT_STRING);
fieldDtoName.setLabel(columnConf.getColumnHeader());
fieldDtoName.setLabel(columnConf.getColumnHeader()+"(名称)");
queryFieldList.add(fieldDtoName);
}else if(columnType.equals(ExlConst.TYPE_USER_CODE)){
@ -137,7 +161,7 @@ public class ExlTableConfController {
ExlQueryFieldDto fieldDtoName = new ExlQueryFieldDto();
fieldDtoName.setField(columnConf.getColumnName()+"_ext_usr_name");
fieldDtoName.setType(TableCreateSqlUtil.DEFAULT_STRING);
fieldDtoName.setLabel(columnConf.getColumnHeader());
fieldDtoName.setLabel(columnConf.getColumnHeader()+"(名称)");
queryFieldList.add(fieldDtoName);
}else {
//非业务类型

121
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.SystemModule;
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.QsSqlSessionUtil;
import com.qs.serve.modules.exl.common.TableCreateSqlUtil;
@ -37,6 +39,8 @@ import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import static com.qs.serve.modules.exl.common.TableCreateSqlUtil.DEFAULT_STRING;
/**
* 动态Excel表 数据查询
* @author YenHex
@ -56,6 +60,7 @@ public class ExlTableDataController {
private SysUserMapper sysUserMapper;
private SysPostUserService postUserService;
private HisUserSupplierMapper hisUserSupplierMapper;
private BmsSupplierMapper bmsSupplierMapper;
/**
* 翻页查询
@ -108,6 +113,10 @@ public class ExlTableDataController {
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()){
for (String columnName : map.keySet()) {
String searchValue = map.get(columnName);
@ -119,52 +128,69 @@ public class ExlTableDataController {
currColumnConf = columnConf;
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){
continue;
}
String colType = currColumnConf.getColumnType();
if(!adminFlag){
// 权限范围:0->本人;1->下属;2->全部(本人级下属)
// 权限范围:0->无;1->本人;2->下属;3->全部(本人级下属)
Integer scope = currColumnConf.getScope();
Set<String> values = new HashSet<>();
// 业务类型
String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserMapper.selectById(userId);
if (colType.equals(ExlConst.TYPE_USER_CODE)){
values.add("0");
if(scope==0){
values.add(sysUser.getCode());
}else if (scope>0){
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==2){
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);
}
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>0){
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);
}
}
@ -259,7 +285,15 @@ public class ExlTableDataController {
//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()+"` ");
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()){
insertSql.append(",");
}
@ -278,6 +312,27 @@ public class ExlTableDataController {
ExlColumnConf columnConf = columnList.get(i);
String string = jsonObject.getString(columnConf.getColumnName());
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()){
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;
/** 权限范围:0->本人;1->下属;2->全部(本人级下属) */
/** 权限范围:0->无;1->本人;2->下属;3->全部(本人级下属) */
private Integer scope;
private Integer sort;
@ -95,6 +95,9 @@ public class ExlColumnConf implements Serializable {
@JsonProperty
private String delFlag;
/** 在编辑页隐藏标识(0:显示;1:隐藏) */
@TableField(exist = false)
private Integer hideOnEditFlag;
public static ExlColumnConf toNewObject(ExlColumnConf source){
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 java.util.List;
import java.util.stream.Collectors;
/**
* 表配置 服务实现类
@ -64,7 +65,11 @@ public class ExlTableConfServiceImpl extends ServiceImpl<ExlTableConfMapper,ExlT
LambdaQueryWrapper<ExlColumnConf> columnLqw = new LambdaQueryWrapper<>();
columnLqw.eq(ExlColumnConf::getTableConfId,param.getId());
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->{
a.setTableConfId(tableId);
if(a.getColumnType().equals(ExlConst.TYPE_MONEY)){

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

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

Loading…
Cancel
Save