Browse Source

数据中心添加管理员功能

v1.0
Yen 2 years ago
parent
commit
ef5fd66c91
  1. 26
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java
  2. 87
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java
  3. 12
      src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java
  4. 106
      src/main/java/com/qs/serve/modules/exl/entity/ExlTableUser.java
  5. 18
      src/main/java/com/qs/serve/modules/exl/entity/bo/ExlTableUserBo.java
  6. 3
      src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java
  7. 14
      src/main/java/com/qs/serve/modules/exl/mapper/ExlTableUserMapper.java
  8. 19
      src/main/java/com/qs/serve/modules/exl/service/ExlTableUserService.java
  9. 5
      src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java
  10. 57
      src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableUserServiceImpl.java

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

@ -6,17 +6,17 @@ 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.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.WordUtil;
import com.qs.serve.common.util.*;
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.ExlTableUser;
import com.qs.serve.modules.exl.entity.bo.ExlTableUserBo;
import com.qs.serve.modules.exl.entity.dto.ExlQueryFieldDto;
import com.qs.serve.modules.exl.entity.dto.ExlTableBo;
import com.qs.serve.modules.exl.service.ExlColumnConfService;
import com.qs.serve.modules.exl.service.ExlTableUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSession;
@ -49,6 +49,7 @@ public class ExlTableConfController {
private SqlSessionTemplate sqlSessionTemplate;
private ExlTableConfService exlTableConfService;
private ExlColumnConfService exlColumnConfService;
private ExlTableUserService exlTableUserService;
/**
* 列表
@ -87,6 +88,11 @@ public class ExlTableConfController {
columnLqw.eq(ExlColumnConf::getTableConfId,id);
List<ExlColumnConf> columnConfList = exlColumnConfService.list(columnLqw);
exlTableConf.setColumnList(columnConfList);
//加载管理员
LambdaQueryWrapper<ExlTableUser> tableUserLqw = new LambdaQueryWrapper<>();
tableUserLqw.eq(ExlTableUser::getTableConfId,id);
List<ExlTableUser> tableUsers = exlTableUserService.list(tableUserLqw);
exlTableConf.setAdminList(tableUsers);
//组装查询参数列表
List<ExlColumnConf> queryColumn = columnConfList.stream()
.filter(a->a.getConditionFlag().equals(1)
@ -144,6 +150,7 @@ public class ExlTableConfController {
}
}
exlTableConf.setQueryList(queryFieldList);
exlTableConf.setAdminFlag(exlTableUserService.checkAdmin(exlTableConf.getId(), AuthContextUtils.getSysUserId()));
return R.ok(exlTableConf);
}
@ -232,5 +239,16 @@ public class ExlTableConfController {
return R.isTrue(result);
}
/**
* 配置数据中心管理员
* @param param
* @return
*/
@PostMapping("/confAdmins")
public R<?> tableUser(@RequestBody ExlTableUserBo param){
exlTableUserService.confAdmins(param);
return R.ok();
}
}

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

@ -20,6 +20,7 @@ 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.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;
@ -49,6 +50,7 @@ public class ExlTableDataController {
private ExlTableConfService exlTableConfService;
private ExlColumnConfService exlColumnConfService;
private ExlTableUserService exlTableUserService;
private SqlSessionTemplate sqlSessionTemplate;
private ExlTableConfMapper exlTableConfMapper;
private SysUserMapper sysUserMapper;
@ -74,7 +76,8 @@ public class ExlTableDataController {
columnLqw.orderByAsc(ExlColumnConf::getSort);
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw);
// 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();
Long count = exlTableConfMapper.countData(targetTableName,queryMap);
PageVo vo = new PageVo();
@ -96,7 +99,7 @@ public class ExlTableDataController {
@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);
// condition
List<ExlConditionDto> ge_conditions = new ArrayList<>();
@ -121,47 +124,50 @@ public class ExlTableDataController {
continue;
}
String colType = currColumnConf.getColumnType();
// 权限范围:0->本人;1->下属;2->全部(本人级下属)
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(!adminFlag){
// 权限范围:0->本人;1->下属;2->全部(本人级下属)
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){
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>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);
}
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);
}
//基础的数据类型
if(columnName.contains(ExlConst.PRE_COLUMN_START)){
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue);
@ -207,7 +213,8 @@ public class ExlTableDataController {
columnLqw.orderByAsc(ExlColumnConf::getSort);
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw);
// 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();
List<Map<String,Object>> list = exlTableConfMapper.listData(targetTableName,queryMap);
this.formatListData(list);

12
src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java

@ -98,6 +98,18 @@ public class ExlTableConf implements Serializable {
@TableField(exist = false)
private List<?> queryList;
/**
* 管理员列表
*/
@TableField(exist = false)
private List<?> adminList;
/**
* 是否管理员
*/
@TableField(exist = false)
private Integer adminFlag;
public static ExlTableConf toNewObject(ExlTableConf source){
ExlTableConf tableConf = new ExlTableConf();
tableConf.setId(source.getId());

106
src/main/java/com/qs/serve/modules/exl/entity/ExlTableUser.java

@ -0,0 +1,106 @@
package com.qs.serve.modules.exl.entity;
import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* 实体类
* @author YenHex
* @since 2023-09-25
*/
@Data
@TableName("exl_table_user")
public class ExlTableUser implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 表配置id */
@NotNull(message = "表配置id不能为空")
private Long tableConfId;
/** 用户id */
@NotBlank(message = "用户id不能为空")
@Length(max = 255,message = "用户id长度不能超过255字")
private String userId;
/** 用户编码 */
@NotBlank(message = "用户编码不能为空")
@Length(max = 255,message = "用户编码长度不能超过255字")
private String userCode;
/** 用户名称 */
@NotBlank(message = "用户名称不能为空")
@Length(max = 255,message = "用户名称长度不能超过255字")
private String userName;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
public static ExlTableUser toNewObject(ExlTableUser source){
ExlTableUser tableUser = new ExlTableUser();
tableUser.setId(source.getId());
tableUser.setTableConfId(source.getTableConfId());
tableUser.setUserId(source.getUserId());
tableUser.setUserCode(source.getUserCode());
tableUser.setUserName(source.getUserName());
tableUser.setRemark(source.getRemark());
tableUser.setCreateTime(source.getCreateTime());
tableUser.setUpdateTime(source.getUpdateTime());
tableUser.setTenantId(source.getTenantId());
tableUser.setCreateBy(source.getCreateBy());
tableUser.setUpdateBy(source.getUpdateBy());
tableUser.setDelFlag(source.getDelFlag());
return tableUser;
}
}

18
src/main/java/com/qs/serve/modules/exl/entity/bo/ExlTableUserBo.java

@ -0,0 +1,18 @@
package com.qs.serve.modules.exl.entity.bo;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2023/9/25
*/
@Data
public class ExlTableUserBo {
private Long tableConfId;
private List<String> userIds;
}

3
src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.exl.entity.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.qs.serve.modules.exl.entity.ExlColumnConf;
import com.qs.serve.modules.exl.entity.bo.ExlTableUserBo;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@ -36,4 +37,6 @@ public class ExlTableBo {
private List<ExlColumnConf> columnList;
/** 管理员配置 */
private ExlTableUserBo adminParam;
}

14
src/main/java/com/qs/serve/modules/exl/mapper/ExlTableUserMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.exl.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.exl.entity.ExlTableUser;
/**
* Mapper
* @author YenHex
* @date 2023-09-25
*/
public interface ExlTableUserMapper extends BaseMapper<ExlTableUser> {
}

19
src/main/java/com/qs/serve/modules/exl/service/ExlTableUserService.java

@ -0,0 +1,19 @@
package com.qs.serve.modules.exl.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.exl.entity.ExlTableUser;
import com.qs.serve.modules.exl.entity.bo.ExlTableUserBo;
/**
* 服务接口
* @author YenHex
* @date 2023-09-25
*/
public interface ExlTableUserService extends IService<ExlTableUser> {
void confAdmins(ExlTableUserBo param);
Integer checkAdmin(Long tableConfId,String userId);
}

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

@ -7,6 +7,7 @@ import com.qs.serve.modules.exl.common.ExlConst;
import com.qs.serve.modules.exl.entity.ExlColumnConf;
import com.qs.serve.modules.exl.entity.dto.ExlTableBo;
import com.qs.serve.modules.exl.service.ExlColumnConfService;
import com.qs.serve.modules.exl.service.ExlTableUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -28,6 +29,7 @@ import java.util.List;
public class ExlTableConfServiceImpl extends ServiceImpl<ExlTableConfMapper,ExlTableConf> implements ExlTableConfService {
private final ExlColumnConfService columnConfService;
private final ExlTableUserService tableUserService;
@Override
@Transactional(rollbackFor = Exception.class)
@ -72,6 +74,9 @@ public class ExlTableConfServiceImpl extends ServiceImpl<ExlTableConfMapper,ExlT
});
columnConfService.saveBatch(columnList);
}
if(param.getAdminParam()!=null){
tableUserService.confAdmins(param.getAdminParam());
}
return tableConf;
}

57
src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableUserServiceImpl.java

@ -0,0 +1,57 @@
package com.qs.serve.modules.exl.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.exl.entity.bo.ExlTableUserBo;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.exl.entity.ExlTableUser;
import com.qs.serve.modules.exl.service.ExlTableUserService;
import com.qs.serve.modules.exl.mapper.ExlTableUserMapper;
import java.util.ArrayList;
import java.util.List;
/**
* 服务实现类
* @author YenHex
* @since 2023-09-25
*/
@Slf4j
@Service
@AllArgsConstructor
public class ExlTableUserServiceImpl extends ServiceImpl<ExlTableUserMapper,ExlTableUser> implements ExlTableUserService {
private SysUserMapper sysUserMapper;
@Override
public void confAdmins(ExlTableUserBo param) {
LambdaQueryWrapper<ExlTableUser> rmlqw = new LambdaQueryWrapper<>();
rmlqw.eq(ExlTableUser::getTableConfId,param.getTableConfId());
super.remove(rmlqw);
if(CollectionUtil.isNotEmpty(param.getUserIds())){
List<ExlTableUser> list = new ArrayList<>();
for (String userId : param.getUserIds()) {
SysUser sysUser = sysUserMapper.selectById(userId);
ExlTableUser tableUser = new ExlTableUser();
tableUser.setTableConfId(param.getTableConfId());
tableUser.setUserId(sysUser.getId());
tableUser.setUserCode(sysUser.getCode());
tableUser.setUserName(sysUser.getName());
}
super.saveBatch(list);
}
}
@Override
public Integer checkAdmin(Long tableConfId, String userId) {
LambdaQueryWrapper<ExlTableUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(ExlTableUser::getTableConfId,tableConfId);
lqw.eq(ExlTableUser::getUserId,userId);
return super.count(lqw)>0?1:0;
}
}
Loading…
Cancel
Save