参数收集清单、未符合项viewer角色下查找数据

This commit is contained in:
CD
2022-11-18 14:59:19 +08:00
parent d9b3f32594
commit 1e51819b28
7 changed files with 114 additions and 7 deletions
@@ -301,4 +301,7 @@ public interface ISysUserService extends IService<SysUser> {
boolean isRegulationOwner(LoginUser currentUser);
void setBrandAndDutyTerritory(String roles, String dutyTerritories, String brands, List<ProjectUserBrand> projectUserBrandList, List<ProjectUserDutyTerritory> projectUserDutyTerritoryList, String userId);
boolean isViewer(String userId);
}
@@ -749,4 +749,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
}
}
@Override
public boolean isViewer(String userId) {
boolean boo = false;
List<SysRole> roles = sysRoleMapper.getRoleByUserId(userId);
if (ObjectUtils.isNotEmpty(roles)) {
List<String> roleCodes = roles.stream().map(SysRole::getRoleCode).collect(Collectors.toList());
if (ObjectUtils.isNotEmpty(roleCodes) && roleCodes.contains(ProjectRoleEnum.VIEWER.getCode())) {
boo = true;
}
}
return boo;
}
}
@@ -15,7 +15,8 @@ public enum CollectManifestUserTypeEnum {
STUDIO("R&H Studio","R&H Studio","studio"),
MANAGER("R&H Manager","R&H Manager","manager"),
ADMIN("系统","Administrator","admin"),
GUEST("游客", "Guest","guest");
GUEST("游客", "Guest","guest"),
VIEWER("Viewer", "Viewer","viewer");
String name;
String enName;
@@ -60,10 +60,7 @@ import com.jero.modules.system.entity.SysAnnouncement;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.entity.SysUserRole;
import com.jero.modules.system.service.ISysAnnouncementService;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysUserRoleService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.*;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@@ -165,6 +162,9 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
@Value(value = "${jero.backUrl}")
private String backUrl;
@Autowired
private IProjectUserDutyTerritoryService projectUserDutyTerritoryService;
/**
* 保存
*
@@ -362,7 +362,16 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
paramsCollectManifestEO.setDreForAuth(loginUser.getUsername());
}*/ else if ("guest".equals(userTypes)) {
return page;
}
} else if (CollectManifestUserTypeEnum.VIEWER.getValue().equals(userTypes)) {
List<String> dutyTerritoryList = projectUserDutyTerritoryService.queryDutyTerritoryByUserId(loginUser.getId());
queryWrapper.and(q -> {
q.eq("sdt", loginUser.getUsername());
q.or().eq("dre", loginUser.getUsername());
if (ObjectUtils.isNotEmpty(dutyTerritoryList)) {
q.or().in("duty_territory", dutyTerritoryList);
}
});
}
// IPage pageInfo = paramsCollectManifestEOMapper.pageInfo(page, paramsCollectManifestEO); // 查询固定列
IPage pageInfo = page(page, queryWrapper); // 查询固定列
List<ParamsCollectManifestEO> list = pageInfo.getRecords(); // 查询固定列
@@ -1215,6 +1224,19 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
}
}
//判断当前用户是否是viewer
boolean viewer = sysUserService.isViewer(loginUser.getId());
if (viewer) {
Map<String, String> map = new HashMap<>();
if (CutEnum.CN.getValue().equals(cut)) {
map.put("label", CollectManifestUserTypeEnum.VIEWER.getName());
} else {
map.put("label", CollectManifestUserTypeEnum.VIEWER.getEnName());
}
map.put("value", CollectManifestUserTypeEnum.VIEWER.getValue());
userTypeList.add(map);
}
return userTypeList;
}
@@ -14,4 +14,7 @@ import java.util.List;
public interface NcrTrackMapper extends BaseMapper<NcrTrackVO> {
List<NcrTrackVO> getInfoList(@Param("ncrTrackVO") NcrTrackVO ncrTrackVO);
List<NcrTrackVO> getViewerInfoList(@Param("ncrTrackVO") NcrTrackVO ncrTrackVO,@Param("list") List<String> list);
}
@@ -93,4 +93,56 @@
order by pli.create_time desc
</select>
<select id="getViewerInfoList" resultMap="NcrTrackVOResultMap">
SELECT
pni.project_name,plb.target_market,
pli.serial_number,pli.title,pli.duty_territory,pli.create_time,pli.project_library_id,
pti.design_flow_task_status,pti.prehomo_flow_task_status,pti.verify_flow_task_status,pti.design_p_id,pti.prehomo_p_id,pti.verify_p_id,pti.id,pti.project_laws_inventory_id,
pli.design_initiator_id,pli.design_duty_id,pli.prehomo_initiator_id,pli.prehomo_duty_id,pli.verify_initiator_id,pli.verify_duty_id
FROM project_task_inventory pti
left join project_laws_inventory pli on pti.project_laws_inventory_id = pli.id
left join project_library_base plb on plb.id = pli.project_library_id
left join project_name_info pni on pni.id = plb.project_name_id
left join project_task_inventory_detail ptid on ptid.project_task_inventory_id = pti.project_laws_inventory_id
where
<if test="ncrTrackVO.projectLibraryId != null and ncrTrackVO.projectLibraryId != ''">
plb.id =#{ncrTrackVO.projectLibraryId}
and
</if>
<if test="ncrTrackVO.serialNumber != null and ncrTrackVO.serialNumber != ''">
pli.serial_number like concat(concat('%',#{ncrTrackVO.serialNumber}),'%')
and
</if>
<if test="ncrTrackVO.title != null and ncrTrackVO.title != ''">
pli.title like concat(concat('%',#{ncrTrackVO.title}),'%')
and
</if>
<if test="ncrTrackVO.projectName != null and ncrTrackVO.projectName != ''">
pni.project_name =#{ncrTrackVO.projectName}
and
</if>
<if test="ncrTrackVO.initiator != null and ncrTrackVO.initiator != ''">
(pli.design_initiator_id =#{ncrTrackVO.initiator} or pli.prehomo_initiator_id =#{ncrTrackVO.initiator} or pli.verify_initiator_id =#{ncrTrackVO.initiator})
and
</if>
<if test="ncrTrackVO.duty != null and ncrTrackVO.duty != ''">
(pli.design_duty_id =#{ncrTrackVO.duty} or pli.prehomo_duty_id =#{ncrTrackVO.duty} or pli.verify_duty_id =#{ncrTrackVO.duty})
and
</if>
(
design_flow_task_status =#{ncrTrackVO.inconformity} or design_flow_task_status =#{ncrTrackVO.track}
or prehomo_flow_task_status =#{ncrTrackVO.inconformity} or prehomo_flow_task_status =#{ncrTrackVO.track}
or verify_flow_task_status =#{ncrTrackVO.inconformity} or verify_flow_task_status =#{ncrTrackVO.track}
)
and pli.duty_territory in
<foreach collection="list" index="index" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
order by pli.create_time desc
</select>
</mapper>
@@ -15,6 +15,7 @@ import com.jero.modules.project.vo.NcrTrackInfoVO;
import com.jero.modules.project.vo.NcrTrackVO;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.IProjectUserDutyTerritoryService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
import com.jero.modules.wkflow.enums.FlowTypeEnum;
@@ -58,6 +59,8 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
private ProjectTaskInventoryDetailEOServiceImpl projectTaskInventoryDetailEOService;
@Autowired
private SysDictItemServiceImpl sysDictItemServiceImpl;
@Autowired
private IProjectUserDutyTerritoryService projectUserDutyTerritoryService;
@Override
public List<NcrTrackVO> getPageInfo(NcrTrackVO ncrTrackVO) {
@@ -84,8 +87,18 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
//如果当前登录用户是系统管理员角色,可以查看所有的数据
boolean administrator = this.sysUserService.isAdministrator();
ncrTrackVO.setAdministrator(administrator ? "true":"false");
List<NcrTrackVO> infoList = ncrTrackMapper.getInfoList(ncrTrackVO);
//判断是否是viewer
boolean viewer = sysUserService.isViewer(loginUser.getId());
List<NcrTrackVO> viewerList = null;
if (viewer) {
List<String> dutyTerritoryList = projectUserDutyTerritoryService.queryDutyTerritoryByUserId(loginUser.getId());
viewerList = ObjectUtils.isNotEmpty(dutyTerritoryList) ? ncrTrackMapper.getViewerInfoList(ncrTrackVO, dutyTerritoryList) : new ArrayList<>();
}
//如果当前登录用户是viewer,查看属于自己责任领域或者自己参与的数据
if (!administrator && viewer) {
infoList.addAll(viewerList);
}
infoList = infoList.stream().distinct().collect(Collectors.toList());
List<NcrTrackVO> trackVOList = new ArrayList<>();
String designName = "";