diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java index d1a400da..d551c82f 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java +++ b/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 columnConfList = exlColumnConfService.list(columnLqw); exlTableConf.setColumnList(columnConfList); + //加载管理员 + LambdaQueryWrapper tableUserLqw = new LambdaQueryWrapper<>(); + tableUserLqw.eq(ExlTableUser::getTableConfId,id); + List tableUsers = exlTableUserService.list(tableUserLqw); + exlTableConf.setAdminList(tableUsers); //组装查询参数列表 List 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(); + } + } diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java index 0b58aafa..28e88a64 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java +++ b/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 columnList = exlColumnConfService.list(columnLqw); // query - Map queryMap = buildQueryMap(map, columnList); + boolean adminFlag = false; + Map 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 buildQueryMap(Map map, List columnList) { + private Map buildQueryMap(Map map, List columnList,Boolean adminFlag) { Map queryMap = new HashMap<>(10); // condition List ge_conditions = new ArrayList<>(); @@ -121,47 +124,50 @@ public class ExlTableDataController { continue; } String colType = currColumnConf.getColumnType(); - // 权限范围:0->本人;1->下属;2->全部(本人级下属) - Integer scope = currColumnConf.getScope(); - Set 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 childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); - if(childIds.size()>0){ - List sysUsers = sysUserMapper.selectBatchIds(childIds); - List 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 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 childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); + if(childIds.size()>0){ + List sysUsers = sysUserMapper.selectBatchIds(childIds); + List 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 userIds = new ArrayList<>(); + userIds.add(userId); + if(scope>0){ + List childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); + userIds.addAll(childIds); + } + LambdaQueryWrapper husLqw = new LambdaQueryWrapper<>(); + husLqw.in(HisUserSupplier::getUserId,userIds); + husLqw.select(HisUserSupplier::getSupplierCode); + List hisUserSuppliers = hisUserSupplierMapper.selectList(husLqw); + List 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 userIds = new ArrayList<>(); - userIds.add(userId); - if(scope>0){ - List childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); - userIds.addAll(childIds); - } - LambdaQueryWrapper husLqw = new LambdaQueryWrapper<>(); - husLqw.in(HisUserSupplier::getUserId,userIds); - husLqw.select(HisUserSupplier::getSupplierCode); - List hisUserSuppliers = hisUserSupplierMapper.selectList(husLqw); - List 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 columnList = exlColumnConfService.list(columnLqw); // query - Map queryMap = buildQueryMap(map, columnList); + boolean adminFlag = exlTableUserService.checkAdmin(tableConf.getId(),AuthContextUtils.getSysUserId())>0; + Map queryMap = buildQueryMap(map, columnList,adminFlag); String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); List> list = exlTableConfMapper.listData(targetTableName,queryMap); this.formatListData(list); diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java index 9a8b8387..c9e0c52a 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java +++ b/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()); diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlTableUser.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlTableUser.java new file mode 100644 index 00000000..abc73750 --- /dev/null +++ b/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; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/entity/bo/ExlTableUserBo.java b/src/main/java/com/qs/serve/modules/exl/entity/bo/ExlTableUserBo.java new file mode 100644 index 00000000..f0083c87 --- /dev/null +++ b/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 userIds; + +} diff --git a/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java b/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java index b97885e0..74bbb832 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java +++ b/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 columnList; + /** 管理员配置 */ + private ExlTableUserBo adminParam; } diff --git a/src/main/java/com/qs/serve/modules/exl/mapper/ExlTableUserMapper.java b/src/main/java/com/qs/serve/modules/exl/mapper/ExlTableUserMapper.java new file mode 100644 index 00000000..d1135d0f --- /dev/null +++ b/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 { + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/service/ExlTableUserService.java b/src/main/java/com/qs/serve/modules/exl/service/ExlTableUserService.java new file mode 100644 index 00000000..75250dff --- /dev/null +++ b/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 { + + void confAdmins(ExlTableUserBo param); + + Integer checkAdmin(Long tableConfId,String userId); + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java index 12987c9a..e4c6c31c 100644 --- a/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java +++ b/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 implements ExlTableConfService { private final ExlColumnConfService columnConfService; + private final ExlTableUserService tableUserService; @Override @Transactional(rollbackFor = Exception.class) @@ -72,6 +74,9 @@ public class ExlTableConfServiceImpl extends ServiceImpl implements ExlTableUserService { + + private SysUserMapper sysUserMapper; + + @Override + public void confAdmins(ExlTableUserBo param) { + LambdaQueryWrapper rmlqw = new LambdaQueryWrapper<>(); + rmlqw.eq(ExlTableUser::getTableConfId,param.getTableConfId()); + super.remove(rmlqw); + if(CollectionUtil.isNotEmpty(param.getUserIds())){ + List 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 lqw = new LambdaQueryWrapper<>(); + lqw.eq(ExlTableUser::getTableConfId,tableConfId); + lqw.eq(ExlTableUser::getUserId,userId); + return super.count(lqw)>0?1:0; + } +} +