法规技术评估、法规意见收集添加品牌字段,根据viewer角色跟品牌字段进行筛选

This commit is contained in:
CD
2022-11-17 14:37:16 +08:00
parent 00c1883755
commit 2d40c42d5d
13 changed files with 220 additions and 53 deletions
@@ -49,4 +49,7 @@ public interface SysDictItemMapper extends BaseMapper<SysDictItem> {
@Select("select * from sys_dict_item where item_text=#{itemText} and dict_id=#{dictId}")
List<SysDictItem> selctItemByName(String itemText,String dictId);
@Select("select * from sys_dict_item item LEFT JOIN sys_dict dict on item.dict_id = dict.id WHERE dict.dict_code = #{dictCode} and item.item_value = #{itemValue}")
List<SysDictItem> queryItemByValue(@Param("dictCode") String dictCode,@Param("itemValue") String itemValue);
}
@@ -1,7 +1,10 @@
package com.jero.modules.lawsOpinionGather.controller;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -14,9 +17,13 @@ import com.jero.modules.lawsOpinionGather.service.ILawsOpinionGatherEOService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.project.entity.ProjectLawsInventoryEO;
import com.jero.modules.system.service.IProjectUserBrandService;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@@ -42,6 +49,8 @@ public class LawsOpinionGatherEOController extends JeroController<LawsOpinionGat
private ILawsOpinionGatherEOService lawsOpinionGatherEOService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private IProjectUserBrandService projectUserBrandService;
/**
* 分页列表查询
@@ -60,24 +69,67 @@ public class LawsOpinionGatherEOController extends JeroController<LawsOpinionGat
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="cut", defaultValue="cn") String cut,
HttpServletRequest req) {
String brandSelect = lawsOpinionGatherEO.getBrand();
lawsOpinionGatherEO.setBrand(null);
QueryWrapper<LawsOpinionGatherEO> queryWrapper = QueryGenerator.initQueryWrapper(lawsOpinionGatherEO, req.getParameterMap());
queryWrapper.orderByDesc("start_time");
/**
* 创建查询数据权限,超级管理员可以看到所有的数据,并且能删除,其它用户只能看到自己创建、或自己为评估人的数据。
*/
boolean administrator = this.sysUserService.isAdministrator();
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!administrator){
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//如果不是超级管理员,获取自己所有参与过的法规意见收集
queryWrapper.and(query -> {
query.eq("create_by",currentUser.getUsername());
query.or().like("evaluator_ids",currentUser.getId());
});
}
if (ObjectUtils.isNotEmpty(brandSelect)) {
//根据品牌搜索
queryWrapper.and(query -> {
query.lambda().like(LawsOpinionGatherEO::getBrand, brandSelect);
if(StringUtils.contains(brandSelect,",")){
for (String brand : brandSelect.split(",")) {
query.or(q -> {
q.like("brand",brand);
});
}
}
});
}
Page<LawsOpinionGatherEO> page = new Page<LawsOpinionGatherEO>(pageNo, pageSize);
IPage<LawsOpinionGatherEO> pageList = lawsOpinionGatherEOService.page(page, queryWrapper);
this.lawsOpinionGatherEOService.disposeData(pageList.getRecords(),cut);
List<LawsOpinionGatherEO> records = pageList.getRecords();
//如果是Viewer,根据品牌进行筛选
List<String> ownedBrandList = projectUserBrandService.queryBrandByUserId(currentUser.getId());
if (ObjectUtils.isNotEmpty(ownedBrandList)) {
QueryWrapper<LawsOpinionGatherEO> brandWrapper = new QueryWrapper<>();
if (ObjectUtils.isNotEmpty(brandSelect)) {
//取交集
ownedBrandList = Arrays.asList(brandSelect.split(",")).stream().filter(ownedBrandList::contains).collect(Collectors.toList());
}
for (int i= 0; i<ownedBrandList.size(); i++) {
if (i==0) {
brandWrapper.like("brand",ownedBrandList.get(i));
} else {
brandWrapper.or().like("brand",ownedBrandList.get(i));
}
}
if (ObjectUtils.isNotEmpty(ownedBrandList)) {
//合并去重
records = Stream.of(records, lawsOpinionGatherEOService.list(brandWrapper))
.flatMap(Collection::stream)
.distinct()
.collect(Collectors.toList());
}
}
this.lawsOpinionGatherEOService.disposeData(records,cut);
pageList.setRecords(records);
return Result.OK(pageList);
}
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.common.aspect.annotation.Dict;
import com.jero.modules.oss.entity.OSSFile;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -126,4 +127,11 @@ public class LawsOpinionGatherEO implements Serializable {
/**删除标识 true 可以删除,false,没有权限删除**/
@TableField(exist = false)
private boolean deleteFlag = false;
@ApiModelProperty(value = "品牌")
@Dict(dicCode = "brand")
private String brand;
@TableField(exist = false)
private String brand_text;
}
@@ -15,5 +15,6 @@
<result column="start_time" property="startTime" />
<result column="end_time" property="endTime" />
<result column="acti_proc_inst_id" property="actiProcInstId" />
<result column="brand" property="brand" />
</resultMap>
</mapper>
</mapper>
@@ -12,6 +12,7 @@ import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.document.entity.BussDocumentLibraryEO;
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
import com.jero.modules.enums.DictCodeEnum;
import com.jero.modules.feishu.service.IFeishuService;
import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.feishu.vo.FeishuMsgVo;
@@ -33,7 +34,10 @@ import com.jero.modules.project.enums.OperatorTypeEnum;
import com.jero.modules.project.enums.RequestSourceEnum;
import com.jero.modules.project.util.SendMessageUtils;
import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysDictItemMapper;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import com.jero.modules.todoCenter.entity.ProcessInfoEO;
@@ -89,6 +93,8 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl<LawsOpinionGathe
private IFeishuService feishuService;
@Autowired
private IBussDocumentLibraryEOService bussDocumentLibraryEOService;
@Autowired
private SysDictItemMapper sysDictItemMapper;
/**
* 保存
@@ -245,6 +251,19 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl<LawsOpinionGathe
List<OSSFile> opinionArchiveFileList = iOSSFileService.getFileInfosByConnectId(StringUtils.join(lawsOpinionGather.getOpinionArchiveId(), ","));
lawsOpinionGather.setOpinionArchiveFileList(opinionArchiveFileList);
}
if (StringUtils.isNotEmpty(lawsOpinionGather.getBrand())) {
StringBuilder builder = new StringBuilder();
for (String brandValue : lawsOpinionGather.getBrand().split(",")) {
List<SysDictItem> sysDictItem = sysDictItemMapper.queryItemByValue(DictCodeEnum.BRAND.getValue(), brandValue);
if (CutEnum.CN.getValue().equals(cut)) {
builder.append(sysDictItem.get(0).getItemText() + ",");
} else {
builder.append(sysDictItem.get(0).getEnName()+ ",");
}
}
String brandText = builder.toString().substring(0, builder.toString().length() - 1);
lawsOpinionGather.setBrand_text(brandText);
}
//如果当前用户是超级管理员,或是这条数据的创建人,给删除权限。
if(StringUtils.equals(lawsOpinionGather.getCreateBy(),currentUser.getUsername()) || administrator){
lawsOpinionGather.setDeleteFlag(true);
@@ -1,9 +1,11 @@
package com.jero.modules.lawsTechnologyEvaluation.controller;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -11,6 +13,7 @@ import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.lawsOpinionGather.entity.LawsOpinionGatherEO;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationEOService;
@@ -18,10 +21,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationFlowDetailEOService;
import com.jero.modules.system.service.IProjectUserBrandService;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
@@ -51,6 +57,8 @@ public class LawsTechnologyEvaluationEOController extends JeroController<LawsTec
private ISysUserService sysUserService;
@Autowired
private ILawsTechnologyEvaluationFlowDetailEOService lawsTechnologyEvaluationFlowDetailEOService;
@Autowired
private IProjectUserBrandService projectUserBrandService;
/**
* 分页列表查询
@@ -69,15 +77,56 @@ public class LawsTechnologyEvaluationEOController extends JeroController<LawsTec
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="cut", defaultValue="cn") String cut,
HttpServletRequest req) {
String brandSelect = lawsTechnologyEvaluationEO.getBrand();
lawsTechnologyEvaluationEO.setBrand(null);
QueryWrapper<LawsTechnologyEvaluationEO> queryWrapper = QueryGenerator.initQueryWrapper(lawsTechnologyEvaluationEO, req.getParameterMap());
queryWrapper.orderByDesc("start_time");
boolean administrator = this.sysUserService.isAdministrator();
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!administrator){
this.lawsTechnologyEvaluationEOService.createQueryPermission(queryWrapper,lawsTechnologyEvaluationEO,administrator);
}
if (ObjectUtils.isNotEmpty(brandSelect)) {
//根据品牌搜索
queryWrapper.and(query -> {
query.lambda().like(LawsTechnologyEvaluationEO::getBrand, brandSelect);
if(StringUtils.contains(brandSelect,",")){
for (String brand : brandSelect.split(",")) {
query.or(q -> {
q.like("brand",brand);
});
}
}
});
}
Page<LawsTechnologyEvaluationEO> page = new Page<LawsTechnologyEvaluationEO>(pageNo, pageSize);
IPage<LawsTechnologyEvaluationEO> pageList = lawsTechnologyEvaluationEOService.page(page, queryWrapper);
this.lawsTechnologyEvaluationEOService.disposeData(pageList.getRecords(),cut);
List<LawsTechnologyEvaluationEO> records = pageList.getRecords();
//如果是Viewer,根据品牌进行筛选
List<String> ownedBrandList = projectUserBrandService.queryBrandByUserId(currentUser.getId());
if (ObjectUtils.isNotEmpty(ownedBrandList)) {
QueryWrapper<LawsTechnologyEvaluationEO> brandWrapper = new QueryWrapper<>();
if (ObjectUtils.isNotEmpty(brandSelect)) {
//取交集
ownedBrandList = Arrays.asList(brandSelect.split(",")).stream().filter(ownedBrandList::contains).collect(Collectors.toList());
}
for (int i= 0; i<ownedBrandList.size(); i++) {
if (i==0) {
brandWrapper.like("brand",ownedBrandList.get(i));
} else {
brandWrapper.or().like("brand",ownedBrandList.get(i));
}
}
if (ObjectUtils.isNotEmpty(ownedBrandList)) {
//合并去重
records = Stream.of(records, lawsTechnologyEvaluationEOService.list(brandWrapper))
.flatMap(Collection::stream)
.distinct()
.collect(Collectors.toList());
}
}
this.lawsTechnologyEvaluationEOService.disposeData(records,cut);
pageList.setRecords(records);
return Result.OK(pageList);
}
@@ -152,4 +152,11 @@ public class LawsTechnologyEvaluationEO implements Serializable {
/**删除标识 true 可以删除,false,没有权限删除**/
@TableField(exist = false)
private boolean deleteFlag = false;
@ApiModelProperty(value = "品牌")
@Dict(dicCode = "brand")
private String brand;
@TableField(exist = false)
private String brand_text;
}
@@ -23,5 +23,6 @@
<result column="regulation_owner_id" property="regulationOwnerId" />
<result column="evaluation_type" property="evaluationType" />
<result column="prc_num" property="prcNum" />
<result column="brand" property="brand" />
</resultMap>
</mapper>
</mapper>
@@ -15,6 +15,7 @@ import com.jero.modules.document.entity.BussDocumentLibraryEO;
import com.jero.modules.document.enums.FieldTypeEnum;
import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper;
import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl;
import com.jero.modules.enums.DictCodeEnum;
import com.jero.modules.feishu.service.IFeishuService;
import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.lawsOpinionGather.enums.GatherResultEnum;
@@ -33,6 +34,7 @@ import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysDictItemMapper;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
@@ -114,6 +116,8 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl<LawsTechn
private IFeishuService feishuService;
@Autowired
private LawsTechnologyEvaluationFlowDetailEOMapper flowDetailEOMapper;
@Autowired
private SysDictItemMapper sysDictItemMapper;
/**
* 保存
@@ -268,6 +272,19 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl<LawsTechn
String name = getTreeName(cut, categoryList, technologyTerritory);
data.setTechnologyTerritoryName(name);
}
if (StringUtils.isNotEmpty(data.getBrand())) {
StringBuilder builder = new StringBuilder();
for (String brandValue : data.getBrand().split(",")) {
List<SysDictItem> sysDictItem = sysDictItemMapper.queryItemByValue(DictCodeEnum.BRAND.getValue(), brandValue);
if (CutEnum.CN.getValue().equals(cut)) {
builder.append(sysDictItem.get(0).getItemText() + ",");
} else {
builder.append(sysDictItem.get(0).getEnName() + ",");
}
}
String brandText = builder.toString().substring(0, builder.toString().length() - 1);
data.setBrand_text(brandText);
}
if(administrator || StringUtils.equals(data.getCreateBy(),currentUser.getUsername())){
data.setDeleteFlag(true);
}
@@ -721,23 +721,26 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
@Override
public List<ProjectLibraryBase> queryPageList(Map<String,Object> params) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//根据项目用户权限表筛选有权访问的项目
Integer isViewer = sysRoleMapper.queryUserRoleByCode(ProjectRoleEnum.VIEWER.getName(), loginUser.getId());
Set<String> projectIds = new HashSet<>();
Set<String> permissionProjectIds = projectUserPermissionMapper.queryProjectIdsByUserId(loginUser.getId());
if (ObjectUtils.isNotEmpty(permissionProjectIds)) {
projectIds.addAll(permissionProjectIds);
}
if (sysRoleMapper.queryUserRoleByCode(ProjectRoleEnum.VIEWER.getName(), loginUser.getId()) > 0) {
//如果是Viewer,根据配置的品牌筛选可访问的项目
List<String> brandTypes = projectUserBrandService.queryBrandByUserId(loginUser.getId());
if (ObjectUtils.isNotEmpty(brandTypes)) {
QueryWrapper<ProjectLibraryBase> queryWrapper = new QueryWrapper<>();
queryWrapper.in("brand",brandTypes);
if (ObjectUtils.isNotEmpty(list(queryWrapper))) {
projectIds.addAll(list(queryWrapper).stream().map(ProjectLibraryBase::getId).collect(Collectors.toSet()));
}
if (isViewer == 0) {
//如果不是viewer,根据项目用户权限表筛选有权访问的项目
Set<String> permissionProjectIds = projectUserPermissionMapper.queryProjectIdsByUserId(loginUser.getId());
if (ObjectUtils.isNotEmpty(permissionProjectIds)) {
projectIds.addAll(permissionProjectIds);
}
}
//if (sysRoleMapper.queryUserRoleByCode(ProjectRoleEnum.VIEWER.getName(), loginUser.getId()) > 0) {
// //如果是Viewer,根据配置的品牌筛选可访问的项目
// List<String> brandTypes = projectUserBrandService.queryBrandByUserId(loginUser.getId());
// if (ObjectUtils.isNotEmpty(brandTypes)) {
// QueryWrapper<ProjectLibraryBase> queryWrapper = new QueryWrapper<>();
// queryWrapper.in("brand",brandTypes);
// if (ObjectUtils.isNotEmpty(list(queryWrapper))) {
// projectIds.addAll(list(queryWrapper).stream().map(ProjectLibraryBase::getId).collect(Collectors.toSet()));
// }
// }
//}
List<ProjectLibraryBase> result = projectLibraryBaseMapper.queryPageList(params);
disposeData(result,"",false);
@@ -825,38 +828,41 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
}
//权限筛选
List<ProjectLibraryBase> resultLast = new ArrayList<>();
for (ProjectLibraryBase projectLibraryBase : resultNew) {
//判断父项目是否有权限
if (!projectIds.contains(projectLibraryBase.getId())) {
//判断子项目是否有权限
List<ProjectLibraryBase> children = projectLibraryBase.getChildren();
if (ObjectUtils.isNotEmpty(children)) {
for (ProjectLibraryBase child : children) {
//将有权限的放入最后返回的集合中
if (projectIds.contains(child.getId())) {
resultLast.add(child);
}
}
}
} else {
List<ProjectLibraryBase> children = projectLibraryBase.getChildren();
if (ObjectUtils.isNotEmpty(children)) {
List<ProjectLibraryBase> lastChild = new ArrayList<>();
//判断子项目是否有权限
for (ProjectLibraryBase child : children) {
if (projectIds.contains(child.getId())) {
lastChild.add(child);
}
}
projectLibraryBase.setChildren(lastChild);
}
resultLast.add(projectLibraryBase);
if (isViewer != 0) {
return resultNew;
} else {
List<ProjectLibraryBase> resultLast = new ArrayList<>();
for (ProjectLibraryBase projectLibraryBase : resultNew) {
//判断父项目是否有权限
if (!projectIds.contains(projectLibraryBase.getId())) {
//判断子项目是否有权限
List<ProjectLibraryBase> children = projectLibraryBase.getChildren();
if (ObjectUtils.isNotEmpty(children)) {
for (ProjectLibraryBase child : children) {
//将有权限的放入最后返回的集合中
if (projectIds.contains(child.getId())) {
resultLast.add(child);
}
}
}
} else {
List<ProjectLibraryBase> children = projectLibraryBase.getChildren();
if (ObjectUtils.isNotEmpty(children)) {
List<ProjectLibraryBase> lastChild = new ArrayList<>();
//判断子项目是否有权限
for (ProjectLibraryBase child : children) {
if (projectIds.contains(child.getId())) {
lastChild.add(child);
}
}
projectLibraryBase.setChildren(lastChild);
}
resultLast.add(projectLibraryBase);
}
}
return resultLast;
}
return resultLast;
}
@NotNull
@@ -64,7 +64,7 @@
<div class="title-text" :title="$t('brand')">
<span>{{$t('brand')}}</span>
</div>
<j-multi-select-tag class="box-input" v-model="queryParam.brands"
<j-multi-select-tag class="box-input" v-model="queryParam.brand"
:placeholder="$t('PleaseSelect')+$t('brand')"
:type="'select'"
:triggerChange="false" :dictCode="'brand'"/>
@@ -216,7 +216,7 @@
align: 'center',
ellipsis: true,
width: 140,
dataIndex: 'brand'
dataIndex: 'brand_text'
},
{
title: this.$t('dateOfInitiation'),
@@ -65,7 +65,7 @@
<div class="title-text" :title="$t('brand')">
<span>{{$t('brand')}}</span>
</div>
<j-multi-select-tag class="box-input" v-model="queryParam.brands"
<j-multi-select-tag class="box-input" v-model="queryParam.brand"
:placeholder="$t('PleaseSelect')+$t('brand')"
:type="'select'"
:triggerChange="false" :dictCode="'brand'"/>
@@ -285,7 +285,7 @@
align: 'center',
ellipsis: true,
width: 140,
dataIndex: 'brand'
dataIndex: 'brand_text'
},
{
title: this.$t('dateOfInitiation'),
@@ -384,8 +384,12 @@
},
loadUserduty(userid) {
queryViewerInfo({ userId: userid }).then((res) => {
if(res.dutyTerritoryList){
this.dutyTerritories = res.dutyTerritoryList.join(',')
}
if(res.brandList){
this.brands = res.brandList.join(',')
}
})
},
selectChange(value){