Merge branch 'dev_2nd_period_test' into fix_2nd_period

# Conflicts:
#	jero-boot/db/蔚来标准sql/dev_2nd_period.sql
#	jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/ParamsCollectManifestEOMapper.java
#	jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsCollectManifestEOMapper.xml
#	jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java
#	jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsManifestEOServiceImpl.java
#	jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java
#	jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java
#	jero-web/src/common/lang/en-us.js
#	jero-web/src/common/lang/zh-cn.js
#	jero-web/src/views/projectManagement/components/TaskList.vue
#	jero-web/src/views/projectManagement/components/listOfRegulations.vue
This commit is contained in:
高嵩
2022-12-28 09:53:38 +08:00
81 changed files with 3221 additions and 154 deletions
@@ -85,3 +85,44 @@ ALTER TABLE `laws_weilai`.`params_info_publish`
-- 上报库历史表,增加备注字段 2022-12-12 已同步生产环境
ALTER TABLE `laws_weilai`.`params_report_detail_log`
ADD COLUMN `remarks` varchar(4000) NULL COMMENT '备注' AFTER `params_report_detail_id`;
-- 创建用户项目权限表
CREATE TABLE `project_user_permission` (
`id` varchar(36) NOT NULL COMMENT '主键',
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新日期',
`project_id` varchar(255) DEFAULT NULL COMMENT '项目id',
`belong` varchar(255) DEFAULT NULL COMMENT '所属位置',
`description` text COMMENT '具体描述',
`user_id` varchar(255) DEFAULT NULL COMMENT '用户id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建用户品牌表
CREATE TABLE `project_user_brand` (
`id` varchar(36) NOT NULL,
`user_id` varchar(255) DEFAULT NULL COMMENT '用户id',
`brand_type` varchar(255) DEFAULT NULL COMMENT '品牌类型',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建用户责任领域表
CREATE TABLE `project_user_duty_territory` (
`id` varchar(36) NOT NULL,
`user_id` varchar(255) DEFAULT NULL COMMENT '用户id',
`duty_territory` varchar(32) DEFAULT NULL COMMENT '责任领域',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 项目库基础表添加字段
ALTER TABLE `project_library_base`
ADD COLUMN `brand` varchar(255) NULL COMMENT '品牌' AFTER `flag`;
-- 法规技术评估表添加字段
ALTER TABLE `laws_technology_evaluation`
ADD COLUMN `brand` varchar(255) NULL COMMENT '品牌' AFTER `prc_num`;
-- 法规意见收集表添加字段
ALTER TABLE `laws_opinion_gather`
ADD COLUMN `brand` varchar(255) NULL COMMENT '品牌' AFTER `evaluator_ids`;
@@ -157,6 +157,8 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/todoCenter/processInfoEO/processCall", "anon");
// 流程信息明细表 工作流处理数据接口排除
filterChainDefinitionMap.put("/todoCenter/processInfoDetailEO/processCall", "anon");
// 项目权限表 工作流处理数据接口排除
filterChainDefinitionMap.put("/project/projectUserPermission/setPermission", "anon");
filterChainDefinitionMap.put("/lark/larkEventSubscriptionConfig", "anon"); //飞书调用接口,事件订阅配置。
filterChainDefinitionMap.put("/lark/larkCardMessageConfig", "anon"); //飞书调用接口,卡片消息配置。
@@ -3,6 +3,7 @@ package com.jero.modules.enums;
public enum DictCodeEnum {
DUTY_TERRITORY("责任领域","duty_territory"),
BRAND("品牌","brand"),
;
String name;
String value;
@@ -0,0 +1,29 @@
package com.jero.modules.system.controller;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.system.entity.ProjectUserBrand;
import com.jero.modules.system.service.IProjectUserBrandService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description: 用户品牌表
* @Author: jero-boot
* @Date: 2022-11-15
* @Version: V1.0
*/
@Api(tags="用户品牌表")
@RestController
@RequestMapping("/project/projectUserBrand")
@Slf4j
public class ProjectUserBrandController extends JeroController<ProjectUserBrand, IProjectUserBrandService> {
@Autowired
private IProjectUserBrandService projectUserBrandService;
}
@@ -0,0 +1,29 @@
package com.jero.modules.system.controller;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.system.entity.ProjectUserDutyTerritory;
import com.jero.modules.system.service.IProjectUserDutyTerritoryService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description: 用户责任领域
* @Author: jero-boot
* @Date: 2022-11-15
* @Version: V1.0
*/
@Api(tags="用户责任领域")
@RestController
@RequestMapping("/project/projectUserDutyTerritory")
@Slf4j
public class ProjectUserDutyTerritoryController extends JeroController<ProjectUserDutyTerritory, IProjectUserDutyTerritoryService> {
@Autowired
private IProjectUserDutyTerritoryService projectUserDutyTerritoryService;
}
@@ -41,6 +41,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecgframework.poi.excel.ExcelImportUtil;
@@ -111,6 +112,12 @@ public class SysUserController {
@Resource
private BaseCommonService baseCommonService;
@Autowired
private IProjectUserBrandService projectUserBrandService;
@Autowired
private IProjectUserDutyTerritoryService projectUserDutyTerritoryService;
/**
* 获取用户列表数据
*
@@ -227,6 +234,11 @@ public class SysUserController {
Result<SysUser> result = new Result<SysUser>();
try {
String ids = jsonObject.getString("ids");
String roles = jsonObject.getString("selectedroles");
String dutyTerritories = jsonObject.getString("dutyTerritories");
String brands = jsonObject.getString("brands");
List<ProjectUserBrand> projectUserBrandList = new ArrayList<>();
List<ProjectUserDutyTerritory> projectUserDutyTerritoryList = new ArrayList<>();
List<String> idList = Arrays.asList(ids.split(","));
for (String id : idList) {
SysUser sysUser = sysUserService.getById(id);
@@ -238,11 +250,20 @@ public class SysUserController {
user.setId(id);
user.setUpdateTime(new Date());
String roles = jsonObject.getString("selectedroles");
sysUserService.editUserWithRole(user, roles);
if (ObjectUtils.isNotEmpty(roles)) {
//如果角色包含viewer,设置责任领域权限和品牌权限
sysUserService.setBrandAndDutyTerritory(roles, dutyTerritories, brands, projectUserBrandList, projectUserDutyTerritoryList, id);
}
result.success("修改成功!");
}
}
if (ObjectUtils.isNotEmpty(projectUserBrandList)) {
projectUserBrandService.saveBatch(projectUserBrandList);
}
if (ObjectUtils.isNotEmpty(projectUserDutyTerritoryList)) {
projectUserDutyTerritoryService.saveBatch(projectUserDutyTerritoryList);
}
} catch (Exception e) {
log.error(e.getMessage(), e);
@@ -1731,4 +1752,19 @@ public class SysUserController {
List<SysUser> sysUserList = sysUserService.querySysUserListByIdList(userIdList);
return sysUserList;
}
@ApiOperation(value = "用户管理-查出所有部门及其用户")
@GetMapping(value = "/queryViewerInfo")
public ViewerInfoVo queryViewerInfoVo(@RequestParam(name = "userId", required = true) String userId){
ViewerInfoVo viewerInfoVo = new ViewerInfoVo();
List<String> brands = projectUserBrandService.queryBrandByUserId(userId);
if (ObjectUtils.isNotEmpty(brands)) {
viewerInfoVo.setBrandList(brands);
}
List<String> dutyTerritories = projectUserDutyTerritoryService.queryDutyTerritoryByUserId(userId);
if (ObjectUtils.isNotEmpty(dutyTerritories)) {
viewerInfoVo.setDutyTerritoryList(dutyTerritories);
}
return viewerInfoVo;
}
}
@@ -0,0 +1,51 @@
package com.jero.modules.system.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
* @Description: 用户品牌表
* @Author: jero-boot
* @Date: 2022-11-15
* @Version: V1.0
*/
@Data
@TableName("project_user_brand")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="project_user_brand对象", description="用户品牌表")
public class ProjectUserBrand implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**用户id*/
@Excel(name = "用户id", width = 15)
@ApiModelProperty(value = "用户id")
private String userId;
/**品牌类型*/
@Excel(name = "品牌类型", width = 15)
@ApiModelProperty(value = "品牌类型")
@Dict(dicCode = "brand")
private String brandType;
}
@@ -0,0 +1,51 @@
package com.jero.modules.system.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
* @Description: 用户责任领域
* @Author: jero-boot
* @Date: 2022-11-15
* @Version: V1.0
*/
@Data
@TableName("project_user_duty_territory")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="project_user_duty_territory对象", description="用户责任领域")
public class ProjectUserDutyTerritory implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**用户id*/
@Excel(name = "用户id", width = 15)
@ApiModelProperty(value = "用户id")
private String userId;
/**责任领域*/
@Excel(name = "责任领域", width = 15)
@ApiModelProperty(value = "责任领域")
@Dict(dicCode = "duty_territory")
private String dutyTerritory;
}
@@ -0,0 +1,36 @@
package com.jero.modules.system.entity;
import lombok.Data;
import java.util.List;
@Data
public class ViewerInfoVo {
List<String> brandList;
List<String> dutyTerritoryList;
public List<String> getBrandList() {
return brandList;
}
public void setBrandList(List<String> brandList) {
this.brandList = brandList;
}
public List<String> getDutyTerritoryList() {
return dutyTerritoryList;
}
public void setDutyTerritoryList(List<String> dutyTerritoryList) {
this.dutyTerritoryList = dutyTerritoryList;
}
public ViewerInfoVo() {
}
public ViewerInfoVo(List<String> brandList, List<String> dutyTerritoryList) {
this.brandList = brandList;
this.dutyTerritoryList = dutyTerritoryList;
}
}
@@ -10,6 +10,7 @@ public enum ProjectRoleEnum {
REGULATI_AND_HOMOLOGATION_ENGINEER("法规工程师/认证工程师","4","Regulatory Engineer/Certification Engineer"),
MANAGER("领导角色","11","R&H Manager"),
ADMIN("系统管理员","12","admin"),
VIEWER("Viewer","13","Viewer"),
;
String name;
@@ -0,0 +1,14 @@
package com.jero.modules.system.mapper;
import com.jero.modules.system.entity.ProjectUserBrand;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 用户品牌表
* @Author: jero-boot
* @Date: 2022-11-15
* @Version: V1.0
*/
public interface ProjectUserBrandMapper extends BaseMapper<ProjectUserBrand> {
}
@@ -0,0 +1,14 @@
package com.jero.modules.system.mapper;
import com.jero.modules.system.entity.ProjectUserDutyTerritory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 用户责任领域
* @Author: jero-boot
* @Date: 2022-11-15
* @Version: V1.0
*/
public interface ProjectUserDutyTerritoryMapper extends BaseMapper<ProjectUserDutyTerritory> {
}
@@ -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);
}
@@ -43,4 +43,6 @@ public interface SysRoleMapper extends BaseMapper<SysRole> {
"where user_id = #{userId}")
List<SysRole> getRoleByUserId(@Param("userId") String userId);
@Select("SELECT count(0) from sys_user_role ur LEFT JOIN sys_role r ON r.id = ur.role_id WHERE r.role_code = #{roleCode} and ur.user_id = #{userId}")
Integer queryUserRoleByCode(@Param("roleCode")String roleCode, @Param("userId")String userId);
}
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.system.mapper.ProjectUserBrandMapper">
<resultMap id="ProjectUserBrandResultMap" type="com.jero.modules.system.entity.ProjectUserBrand">
<id column="id" property="id" />
<result column="user_id" property="userId" />
<result column="brand_type" property="brandType" />
</resultMap>
</mapper>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.system.mapper.ProjectUserDutyTerritoryMapper">
<resultMap id="ProjectUserDutyTerritoryResultMap" type="com.jero.modules.system.entity.ProjectUserDutyTerritory">
<id column="id" property="id" />
<result column="user_id" property="userId" />
<result column="duty_territory" property="dutyTerritory" />
</resultMap>
</mapper>
@@ -0,0 +1,47 @@
package com.jero.modules.system.service;
import com.jero.modules.system.entity.ProjectUserBrand;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: 用户品牌表
* @Author: jero-boot
* @Date: 2022-11-15
* @Version: V1.0
*/
public interface IProjectUserBrandService extends IService<ProjectUserBrand> {
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProjectUserBrand queryById(String id);
/**
* 列表查询
*
* @return
*/
List<ProjectUserBrand> queryList();
List<String> queryBrandByUserId(String userId);
}
@@ -0,0 +1,53 @@
package com.jero.modules.system.service;
import com.jero.modules.system.entity.ProjectUserDutyTerritory;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: 用户责任领域
* @Author: jero-boot
* @Date: 2022-11-15
* @Version: V1.0
*/
public interface IProjectUserDutyTerritoryService extends IService<ProjectUserDutyTerritory> {
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProjectUserDutyTerritory queryById(String id);
/**
* 列表查询
*
* @return
*/
List<ProjectUserDutyTerritory> queryList();
/**
* 根据id查询对应的dutyTerritory集合
* @param userId
* @return
*/
List<String> queryDutyTerritoryByUserId(String userId);
}
@@ -8,9 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.common.api.vo.Result;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.system.vo.SysUserCacheInfo;
import com.jero.modules.system.entity.PPEmployee;
import com.jero.modules.system.entity.SysRole;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.entity.*;
import com.jero.modules.system.model.DepartIdModel;
import com.jero.modules.system.model.SysUserSysDepartModel;
import org.springframework.transaction.annotation.Transactional;
@@ -301,4 +299,9 @@ public interface ISysUserService extends IService<SysUser> {
* @return
*/
boolean isRegulationOwner(LoginUser currentUser);
void setBrandAndDutyTerritory(String roles, String dutyTerritories, String brands, List<ProjectUserBrand> projectUserBrandList, List<ProjectUserDutyTerritory> projectUserDutyTerritoryList, String userId);
boolean isViewer(String userId);
}
@@ -0,0 +1,76 @@
package com.jero.modules.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.modules.system.entity.ProjectUserBrand;
import com.jero.modules.system.mapper.ProjectUserBrandMapper;
import com.jero.modules.system.service.IProjectUserBrandService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 用户品牌表
* @Author: jero-boot
* @Date: 2022-11-15
* @Version: V1.0
*/
@Service
public class ProjectUserBrandServiceImpl extends ServiceImpl<ProjectUserBrandMapper, ProjectUserBrand> implements IProjectUserBrandService {
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProjectUserBrand queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
@Override
public List<ProjectUserBrand> queryList() {
return list();
}
@Override
public List<String> queryBrandByUserId(String userId) {
QueryWrapper<ProjectUserBrand> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId);
List<ProjectUserBrand> list = list(queryWrapper);
if (ObjectUtils.isNotEmpty(list)) {
return list.stream().map(ProjectUserBrand::getBrandType).collect(Collectors.toList());
}
return null;
}
}
@@ -0,0 +1,83 @@
package com.jero.modules.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.modules.system.entity.ProjectUserDutyTerritory;
import com.jero.modules.system.mapper.ProjectUserDutyTerritoryMapper;
import com.jero.modules.system.service.IProjectUserDutyTerritoryService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 用户责任领域
* @Author: jero-boot
* @Date: 2022-11-15
* @Version: V1.0
*/
@Service
public class ProjectUserDutyTerritoryServiceImpl extends ServiceImpl<ProjectUserDutyTerritoryMapper, ProjectUserDutyTerritory> implements IProjectUserDutyTerritoryService {
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProjectUserDutyTerritory queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
@Override
public List<ProjectUserDutyTerritory> queryList() {
return list();
}
/**
* 根据id查询对应的dutyTerritory集合
* @param userId
* @return
*/
@Override
public List<String> queryDutyTerritoryByUserId(String userId) {
QueryWrapper<ProjectUserDutyTerritory> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId);
List<ProjectUserDutyTerritory> list = list(queryWrapper);
if (ObjectUtils.isNotEmpty(list)) {
return list.stream().map(ProjectUserDutyTerritory::getDutyTerritory).collect(Collectors.toList());
}
return null;
}
}
@@ -15,16 +15,19 @@ import com.jero.common.util.PasswordUtil;
import com.jero.common.util.UUIDGenerator;
import com.jero.common.util.oConvertUtils;
import com.jero.modules.base.service.BaseCommonService;
import com.jero.modules.enums.DictCodeEnum;
import com.jero.modules.system.entity.*;
import com.jero.modules.system.enums.PPSyncEnum;
import com.jero.modules.system.enums.ProjectRoleEnum;
import com.jero.modules.system.enums.RoleEnum;
import com.jero.modules.system.mapper.*;
import com.jero.modules.system.model.SysUserSysDepartModel;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.*;
import com.jero.modules.system.vo.SysUserDepVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
@@ -67,8 +70,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
private SysDepartRoleMapper sysDepartRoleMapper;
@Resource
private BaseCommonService baseCommonService;
@Autowired
private ISysRoleService sysRoleService;
@Autowired
private IProjectUserBrandService projectUserBrandService;
@Autowired
private IProjectUserDutyTerritoryService projectUserDutyTerritoryService;
@Autowired
private ISysDictItemService sysDictItemService;
@Override
@Override
@CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
public Result<?> resetPassword(String username, String oldpassword, String newpassword, String confirmpassword) {
SysUser user = userMapper.getUserByName(username);
@@ -698,4 +709,57 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
return result;
}
@Override
public void setBrandAndDutyTerritory(String roles, String dutyTerritories, String brands, List<ProjectUserBrand> projectUserBrandList, List<ProjectUserDutyTerritory> projectUserDutyTerritoryList, String userId) {
List<String> roleCodes = sysRoleService.listByIds(Arrays.asList(roles.split(","))).stream().map(SysRole::getRoleCode).collect(Collectors.toList());
if (roleCodes.contains(ProjectRoleEnum.VIEWER.getCode())) {
//先删后加
QueryWrapper<ProjectUserBrand> brandDelWrapper = new QueryWrapper<>();
brandDelWrapper.eq("user_id", userId);
projectUserBrandService.remove(brandDelWrapper);
QueryWrapper<ProjectUserDutyTerritory> dutyTerritoryDelWrapper = new QueryWrapper<>();
dutyTerritoryDelWrapper.eq("user_id", userId);
projectUserDutyTerritoryService.remove(dutyTerritoryDelWrapper);
if (ObjectUtils.isNotEmpty(dutyTerritories)) {
List<String> dictItemValue = sysDictItemService.selectItemsByDictCode(DictCodeEnum.DUTY_TERRITORY.getValue()).stream().map(SysDictItem::getItemValue).collect(Collectors.toList());
for (String dutyTerritory : dutyTerritories.split(",")) {
//校验责任领域是否合法
if (dictItemValue.contains(dutyTerritory)) {
ProjectUserDutyTerritory projectUserDutyTerritory = new ProjectUserDutyTerritory();
projectUserDutyTerritory.setUserId(userId);
projectUserDutyTerritory.setDutyTerritory(dutyTerritory);
projectUserDutyTerritoryList.add(projectUserDutyTerritory);
}
}
}
if (ObjectUtils.isNotEmpty(brands)) {
List<String> dictItemValue = sysDictItemService.selectItemsByDictCode(DictCodeEnum.BRAND.getValue()).stream().map(SysDictItem::getItemValue).collect(Collectors.toList());
for (String brand : brands.split(",")) {
//校验品牌是否合法
if (dictItemValue.contains(brand)) {
ProjectUserBrand projectUserBrand = new ProjectUserBrand();
projectUserBrand.setUserId(userId);
projectUserBrand.setBrandType(brand);
projectUserBrandList.add(projectUserBrand);
}
}
}
}
}
@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;
}
}
@@ -111,7 +111,7 @@ public class ParamsCollectManifestBaseEO implements Serializable {
@ApiModelProperty(value = "参数模板id")
private String paramsTemplateId;
/**状态*/
/**状态 value对应枚举类 CollectManifestStateEnum */
@Excel(name = "状态", width = 15)
@ApiModelProperty(value = "状态")
private String state;
@@ -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;
@@ -33,4 +33,6 @@ public interface ParamsCollectManifestEOMapper extends BaseMapper<ParamsCollectM
List<ParamsCollectManifestEO> queryByParamManifestId(@Param("paramsManifestId") String paramsManifestIdString);
IPage selectpage(@Param("page") IPage page, @Param("ew") Wrapper<ParamsCollectManifestVO> queryWrapper, @Param("paramsManifestEO")ParamsManifestEO paramsManifestEO);
List<ParamsCollectManifestEO> queryByProjectId(@Param("projectId") String projectId);
}
@@ -136,4 +136,8 @@
) temp
${ew.customSqlSegment}
</select>
<select id="queryByProjectId" resultMap="ParamsCollectManifestEOResultMap">
SELECT * from params_collect_manifest pcm LEFT JOIN params_manifest pm ON pm.id = pcm.params_manifest_id WHERE pm.project_id = #{projectId}
</select>
</mapper>
@@ -47,9 +47,13 @@ import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.entity.ProjectUserPermission;
import com.jero.modules.project.enums.PermissionDescriptionEnum;
import com.jero.modules.project.enums.ProjectUserLocationEnum;
import com.jero.modules.project.mapper.ProjectLibraryBaseMapper;
import com.jero.modules.project.service.IProjectLibraryBaseService;
import com.jero.modules.project.service.IProjectRelatedPersonnelService;
import com.jero.modules.project.service.IProjectUserPermissionService;
import com.jero.modules.split.common.FileUnZip;
import com.jero.modules.split.common.ReadExcel;
import com.jero.modules.system.entity.SysDictItem;
@@ -60,6 +64,7 @@ import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysUserRoleService;
import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.collections4.CollectionUtils;
import com.jero.modules.system.service.*;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@@ -150,6 +155,8 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
private IProjectLibraryBaseService projectLibraryBaseService;
@Autowired
private WebSocketServer webSocketServer; // 同步上报库时变更清单状态时使用
@Autowired
private IProjectUserPermissionService projectUserPermissionService;
@Resource
private WebSocket webSocket; // 消息专用
@@ -161,6 +168,9 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
@Value(value = "${jero.backUrl}")
private String backUrl;
@Autowired
private IProjectUserDutyTerritoryService projectUserDutyTerritoryService;
/**
* 保存
*
@@ -361,7 +371,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);
}
});
}
// 搜索NIO编号或认证类别编号 精确搜索
if (StringUtils.isNotEmpty(paramsCollectManifestVO.getAllNumber())) {
//queryWrapper.and(wrapper->wrapper.eq("nio_number", paramsCollectManifestVO.getAllNumber()).or().eq("params_number", paramsCollectManifestVO.getAllNumber()));
@@ -1565,6 +1584,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;
}
@@ -1870,6 +1902,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String[] paramsCollectManifestIdStr = paramsCollectManifestIds.split(",");
List<ParamsCollectManifestEO> updateEOList = new ArrayList<>();
List<String> delDrePermission = new ArrayList<>();
StringBuilder connectBuilder = new StringBuilder();
connectBuilder.append("You are required to fill in ");
@@ -1890,9 +1923,31 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
updateEO.setDre(dre); // 设置填写人
updateEO.setState(CollectManifestStateEnum.WAIT_FILL.getValue()); // 设置状态为:待填写
updateEOList.add(updateEO);
delDrePermission.add(PermissionDescriptionEnum.PARAMS_COLLECT_MANIFEST.getValue() + paramsCollectManifestEO.getId());
}
boolean isSuccess = updateBatchById(updateEOList);
if (isSuccess) {
//设置权限 先删后加
Date now = new Date();
QueryWrapper<ProjectUserPermission> delDreWrapper = new QueryWrapper<>();
delDreWrapper.eq("project_id", projectId).eq("belong", ProjectUserLocationEnum.PROJECT_PARAMS_COLLECT_MANIFEST_DRE.getValue()).in("description", delDrePermission);
projectUserPermissionService.remove(delDreWrapper);
List<ProjectUserPermission> adds = new ArrayList<>();
for (ParamsCollectManifestEO paramsCollectManifestEO : updateEOList) {
ProjectUserPermission projectUserPermission = new ProjectUserPermission();
projectUserPermission.setProjectId(projectId);
projectUserPermission.setUserId(sysUserService.getUserByName(paramsCollectManifestEO.getDre()) == null?"":sysUserService.getUserByName(paramsCollectManifestEO.getDre()).getId());
projectUserPermission.setBelong(ProjectUserLocationEnum.PROJECT_PARAMS_COLLECT_MANIFEST_DRE.getValue());
projectUserPermission.setDescription(PermissionDescriptionEnum.PARAMS_COLLECT_MANIFEST.getValue() + paramsCollectManifestEO.getId());
projectUserPermission.setCreateTime(now);
projectUserPermission.setUpdateTime(now);
adds.add(projectUserPermission);
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
}
// 消息内容
SysUser sysUser = sysUserService.getUserByName(dre);
String[] thirdIds = new String[1];
@@ -1984,7 +2039,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
List<ParamsCollectManifestEO> updateEOList = new ArrayList<>();
List<Map<String, String>> msgMapList = new ArrayList<>();
List<String> updateEOIdList = new ArrayList<>();
List<String> delSdtPermission = new ArrayList<>();
List<ParamsCollectManifestEO> paramsCollectManifestEOList = listByIds(Arrays.asList(paramsCollectManifestIdStr));
paramsCollectManifestEOList = paramsCollectManifestEOList.stream().sorted(Comparator.comparing(ParamsCollectManifestBaseEO::getNioNumber)).collect(Collectors.toList()); // 按NIO编号升序
for (ParamsCollectManifestEO paramsCollectManifestEO : paramsCollectManifestEOList) {
@@ -2005,6 +2060,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
updateEOList.add(updateEO);
updateEOIdList.add(paramsCollectManifestEO.getId());
delSdtPermission.add(PermissionDescriptionEnum.PARAMS_COLLECT_MANIFEST.getValue() + paramsCollectManifestEO.getId());
} else {
Map<String, String> msgMap = new HashMap<>();
msgMap.put("nioNumber", paramsCollectManifestEO.getNioNumber());
@@ -2024,8 +2080,28 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
boolean isSuccess = updateBatchById(updateEOList);
if (isSuccess) {
// 消息内容
Date now = new Date();
List<ParamsCollectManifestEO> afterUpdateEOList = listByIds(updateEOIdList);
//设置权限 先删后加
QueryWrapper<ProjectUserPermission> delSdtWrapper = new QueryWrapper<>();
delSdtWrapper.eq("project_id", projectId).eq("belong", ProjectUserLocationEnum.PROJECT_PARAMS_COLLECT_MANIFEST_SDT.getValue()).in("description", delSdtPermission);
projectUserPermissionService.remove(delSdtWrapper);
List<ProjectUserPermission> adds = new ArrayList<>();
for (ParamsCollectManifestEO paramsCollectManifestEO : afterUpdateEOList) {
ProjectUserPermission projectUserPermission = new ProjectUserPermission();
projectUserPermission.setProjectId(projectId);
projectUserPermission.setUserId(sysUserService.getUserByName(paramsCollectManifestEO.getSdt()) == null?"":sysUserService.getUserByName(paramsCollectManifestEO.getSdt()).getId());
projectUserPermission.setBelong(ProjectUserLocationEnum.PROJECT_PARAMS_COLLECT_MANIFEST_SDT.getValue());
projectUserPermission.setDescription(PermissionDescriptionEnum.PARAMS_COLLECT_MANIFEST.getValue() + paramsCollectManifestEO.getId());
projectUserPermission.setCreateTime(now);
projectUserPermission.setUpdateTime(now);
adds.add(projectUserPermission);
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
// 消息内容
List<String> sdtList = afterUpdateEOList.stream()
.map(ParamsCollectManifestEO::getSdt)
.distinct()
@@ -2120,7 +2196,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
List<ParamsCollectManifestEO> updateEOList = new ArrayList<>();
List<Map<String, String>> msgMapList = new ArrayList<>();
List<String> updateEOIdList = new ArrayList<>();
List<String> delSdtPermission = new ArrayList<>();
LambdaQueryWrapper<ParamsCollectManifestEO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ParamsCollectManifestEO::getParamsManifestId, paramsManifestId)
.notIn(ParamsCollectManifestEO::getControlType, ControlTypeEnum.Title.getValue())
@@ -2144,6 +2220,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
updateEOList.add(updateEO);
updateEOIdList.add(paramsCollectManifestEO.getId());
delSdtPermission.add(PermissionDescriptionEnum.PARAMS_COLLECT_MANIFEST.getValue() + paramsCollectManifestEO.getId());
} else {
Map<String, String> msgMap = new HashMap<>();
msgMap.put("nioNumber", paramsCollectManifestEO.getNioNumber());
@@ -2163,8 +2240,27 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
boolean isSuccess = updateBatchById(updateEOList);
if (isSuccess) {
// 消息内容
Date now = new Date();
List<ParamsCollectManifestEO> afterUpdateEOList = listByIds(updateEOIdList);
//设置权限 先删后加
QueryWrapper<ProjectUserPermission> delSdtWrapper = new QueryWrapper<>();
delSdtWrapper.eq("project_id", projectId).eq("belong", ProjectUserLocationEnum.PROJECT_PARAMS_COLLECT_MANIFEST_SDT.getValue()).in("description", delSdtPermission);
projectUserPermissionService.remove(delSdtWrapper);
List<ProjectUserPermission> adds = new ArrayList<>();
for (ParamsCollectManifestEO paramsCollectManifestEO : afterUpdateEOList) {
ProjectUserPermission projectUserPermission = new ProjectUserPermission();
projectUserPermission.setProjectId(projectId);
projectUserPermission.setUserId(sysUserService.getUserByName(paramsCollectManifestEO.getSdt()) == null?"":sysUserService.getUserByName(paramsCollectManifestEO.getSdt()).getId());
projectUserPermission.setBelong(ProjectUserLocationEnum.PROJECT_PARAMS_COLLECT_MANIFEST_SDT.getValue());
projectUserPermission.setDescription(PermissionDescriptionEnum.PARAMS_COLLECT_MANIFEST.getValue() + paramsCollectManifestEO.getId());
projectUserPermission.setCreateTime(now);
projectUserPermission.setUpdateTime(now);
adds.add(projectUserPermission);
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
// 消息内容
List<String> sdtList = afterUpdateEOList.stream()
.map(ParamsCollectManifestEO::getSdt)
.distinct()
@@ -33,6 +33,7 @@ import com.jero.modules.cert.template.service.IParamsTemplateEOService;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.service.IProjectLibraryBaseService;
import com.jero.modules.project.service.IProjectRelatedPersonnelService;
import com.jero.modules.project.service.IProjectUserPermissionService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysDictMapper;
import com.jero.modules.system.service.ISysUserService;
@@ -103,6 +104,8 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
private IParamsReportDetailEOService paramsReportDetailEOService;
@Autowired
private IProjectUserPermissionService projectUserPermissionService;
/**
* 保存
@@ -93,6 +93,21 @@ public class DummyInventoryInfoEOController extends JeroController<DummyInventor
return Result.OK("添加成功!");
}
/**
* 虚拟清单调取虚拟清单添加数据
*
* @param dummyInventoryInfoEO
* @return
*/
@AutoLog(value = "虚拟清单调取虚拟清单添加数据")
@ApiOperation(value="虚拟清单调取虚拟清单添加数据", notes="虚拟清单调取虚拟清单添加数据")
@PostMapping(value = "/acquireAdd")
// @RequiresPermissions("dummyInventoryInfo:acquire")
public Result<?> acquireAdd(@Validated @RequestBody DummyInventoryInfoEO dummyInventoryInfoEO) {
dummyInventoryInfoEOService.acquireAdd(dummyInventoryInfoEO);
return Result.OK("添加成功!");
}
/**
* 编辑
*
@@ -25,6 +25,12 @@ public interface IDummyInventoryInfoEOService extends IService<DummyInventoryInf
*/
void add(DummyInventoryInfoEO dummyInventoryInfoEO);
/**
* 虚拟清单调取虚拟清单添加数据
* @param dummyInventoryInfoEO
*/
void acquireAdd(DummyInventoryInfoEO dummyInventoryInfoEO);
/**
* 更新
*
@@ -179,6 +179,53 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
}
}
}
/**
* 虚拟清单调取虚拟清单添加数据
* @param dummyInventoryInfoEO
* @return
*/
@Override
public void acquireAdd(DummyInventoryInfoEO dummyInventoryInfoEO) {
// dummyInventoryInfoEO.setIds("efd66ed0a8414fd0b3afd1cf3e4365e6,e13a1e992d774046b3770376583642b7");
//检查虚拟清单是否存在
QueryWrapper<DummyInventoryBaseEO> infoEOQueryWrapper = new QueryWrapper<>();
List<DummyInventoryBaseEO> baseList = dummyInventoryBaseEOService.list(infoEOQueryWrapper.eq("id", dummyInventoryInfoEO.getDummyInventoryBaseId()));
if(CollectionUtils.isNotEmpty(baseList)){
if(StringUtils.isNotBlank(dummyInventoryInfoEO.getIds())){
//要添加的虚拟清单
LambdaQueryWrapper<DummyInventoryInfoEO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(DummyInventoryInfoEO::getId, Arrays.asList(dummyInventoryInfoEO.getIds().split(",")));
List<DummyInventoryInfoEO> dummyInventoryInfoEOList = this.list(wrapper);
//不需要验重直接添加此时可以存在多条编号一样的数据
List<DummyInventoryInfoEO> list = new ArrayList<>();
for (DummyInventoryInfoEO dummyInventoryInfoEOTemp : dummyInventoryInfoEOList) {
String id = UUID.randomUUID().toString().replace("-", "");
dummyInventoryInfoEOTemp.setId(id);
dummyInventoryInfoEOTemp.setDummyInventoryBaseId(dummyInventoryInfoEO.getDummyInventoryBaseId());
dummyInventoryInfoEOTemp.setCreateTime(new Date());
dummyInventoryInfoEOTemp.setUpdateTime(new Date());
list.add(dummyInventoryInfoEOTemp);
}
this.saveBatch(list);
//更新log
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String username = sysUser.getUsername();
String serialNumber = list.stream().map(e->e.getSerialNumber()).collect(Collectors.joining(","));
String contentLog = username+"向清单中添加了“"+serialNumber+"";
String enContentLog = username+" added “"+serialNumber+"” to the list.";
dummyLogEOService.updateLog(contentLog, dummyInventoryInfoEO.getDummyInventoryBaseId(),CutEnum.CN.getValue());
dummyLogEOService.updateLog(enContentLog, dummyInventoryInfoEO.getDummyInventoryBaseId(),CutEnum.EN.getValue());
}
}else{
if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){
throw new JeroBootException("该虚拟清单不存在,新增失败");
}else{
throw new JeroBootException("The virtual list does not exist, and adding failed.");
}
}
}
/**
* 更新
@@ -1,9 +1,12 @@
package com.jero.modules.feishu.controller;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.modules.feishu.service.IFeishuService;
import com.jero.modules.feishu.utils.LarkDecryptUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -93,4 +96,11 @@ public class LarkController {
log.info(result.toString());
return result;
}
@AutoLog(value = "飞书交互-根据用户账号获取飞书对话框链接")
@ApiOperation(value="书交互-根据用户账号获取飞书对话框链接", notes="书交互-根据用户账号获取飞书对话框链接")
@PostMapping(value = "/getLarkApplinkByUserName")
public Result<?> getLarkApplinkByUserName(@RequestBody JSONObject json){
return this.feishuService.getLarkApplinkByUserName(json);
}
}
@@ -1,6 +1,7 @@
package com.jero.modules.feishu.service;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.feishu.vo.FeishuMsgVo;
@@ -103,4 +104,16 @@ public interface IFeishuService {
void sendCard(String[] thirdIds, FeishuMsg2Vo feishuMsgVo) throws IOException;
/**
* 根据手机号获取来自飞书的用户信息
* @param phoneList
*/
JSONObject getUserInfoFromLarkByPhoneList(List<String> phoneList) throws IOException ;
/**
* 根据用户账号获取飞书对话框链接
* @param json
* @return
*/
Result<?> getLarkApplinkByUserName(JSONObject json);
}
@@ -7,6 +7,9 @@ import com.alibaba.fastjson.JSONObject;
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.common.api.vo.Result;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.feishu.service.IFeishuService;
import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.feishu.vo.FeishuMsgVo;
@@ -31,10 +34,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -60,6 +60,14 @@ public class FeishuServiceImpl implements IFeishuService {
@Value("${Feishu.translateTextUrl}")
private String translateTextUrl;
// 获取用户信息Url
@Value("${Feishu.getUserInfoUrl}")
private String getUserInfoUrl;
// 打开用户对话框Url
@Value("${Feishu.appLinkUrl}")
private String appLinkUrl;
@Value(value = "${jero.backUrl}")
private String backUrl;
@Autowired
@@ -1228,4 +1236,97 @@ public class FeishuServiceImpl implements IFeishuService {
}
/**
* 根据手机号获取来自飞书的用户信息
* @param phoneList
* @throws IOException
*/
@Override
public JSONObject getUserInfoFromLarkByPhoneList(List<String> phoneList) throws IOException {
String token = getTenantAccessToken();
// 设置请求头
Map<String, String> headerMap = new HashMap<>();
headerMap.put("Authorization", "Bearer " + token);
headerMap.put("Content-Type", "application/json; charset=utf-8");
// 设置请求参数
JSONObject paramsMap = new JSONObject();
paramsMap.put("mobiles", phoneList);
// 发送请求给飞书
String response = null;
try {
response = HttpRequestUtil.getResponseOfPOST(getUserInfoUrl, headerMap, paramsMap.toJSONString());
} catch (IOException e) {
e.printStackTrace();
}
// 获取返回结果
JSONObject responseJson = JSONObject.parseObject(response);
if(!responseJson.get("code").toString().equals("0")) {
log.error("请求出现异常:" + responseJson.get("msg") + " " + responseJson);
}
return responseJson;
}
/**
* 根据用户账号获取飞书对话框链接
* @param json
* @return
*/
@Override
public Result<?> getLarkApplinkByUserName(JSONObject json) {
String result = null;
String cut = json.getString("cut");
String userName = json.getString("userName");
if(StringUtils.isEmpty(userName)){
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
throw new JeroBootException("用户账号不能为空,请检查!");
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
throw new JeroBootException("User account cannot be empty, please check!");
}
}
SysUser sysUserInfo = this.sysUserService.getUserByName(userName);
if(Objects.isNull(sysUserInfo)){
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
throw new JeroBootException("未找到" + userName +",用户,请检查!");
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
throw new JeroBootException("User not found" + userName + ", please check!");
}
}
String phone = sysUserInfo.getPhone();
JSONObject responseJson = null;
List<String> phoneList = Arrays.asList(phone.split(","));
try {
// 根据用户手机号获取该用户在飞书中的信息
responseJson = this.getUserInfoFromLarkByPhoneList(phoneList);
}catch (Exception ex){
ex.printStackTrace();
log.error("根据用户手机号获取该用户在飞书中的信息失败:" + ex.getMessage());
}
JSONArray userJsonArray = JSONObject.parseObject(JSONObject.toJSONString(responseJson.get("data"))).getJSONArray("user_list");
Map<String,Object> userJsonMap = null;
for (Object userJson : userJsonArray) {
userJsonMap = JSONObject.parseObject(JSONObject.toJSONString(userJson),Map.class);
if(userJsonMap.get("user_id") != null){
if(StringUtils.isNotEmpty(userJsonMap.get("user_id").toString()) && StringUtils.equals(userJsonMap.get("mobile").toString(),phone)){
result = this.appLinkUrl + userJsonMap.get("user_id").toString();
break;
}
}else {
throw new JeroBootException("用户:" + userName + ",在飞书中未找到对应user_id信息");
}
}
if(StringUtils.isNotEmpty(result)){
return Result.OK("获取" +userName+ "用户飞书AppLink成功!",result);
}else {
return Result.error("获取" +userName+ "用户飞书AppLink失败!");
}
}
}
@@ -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);
}
@@ -0,0 +1,55 @@
package com.jero.modules.project.controller;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.modules.project.entity.ProjectUserPermission;
import com.jero.modules.project.service.IProjectUserPermissionService;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.jero.common.aspect.annotation.AutoLog;
/**
* @Description: 项目权限表
* @Author: jero-boot
* @Date: 2022-11-10
* @Version: V1.0
*/
@Api(tags="项目权限表")
@RestController
@RequestMapping("/project/projectUserPermission")
@Slf4j
public class ProjectUserPermissionController extends JeroController<ProjectUserPermission, IProjectUserPermissionService> {
@Autowired
private IProjectUserPermissionService projectUserPermissionService;
/**
* 工作流调用设置权限
* @param jsonObject
* @return
*/
@AutoLog(value = "工作流调用设置权限")
@ApiOperation(value="工作流调用设置权限", notes="工作流调用设置权限")
@PostMapping(value = "/setPermission")
public Result<?> processCall(@RequestBody JSONObject jsonObject){
return projectUserPermissionService.setPermission(jsonObject);
}
/**
* 权限同步接口
*/
@AutoLog(value = "权限同步接口")
@ApiOperation(value="权限同步接口", notes="权限同步接口")
@PostMapping(value = "/sync")
public void sync(){
projectUserPermissionService.sync();
}
}
@@ -135,6 +135,9 @@ public class ProjectLibraryBase implements Comparable<ProjectLibraryBase> {
@TableField(exist = false)
private List<ProjectLibraryBase> children;
//品牌
private String brand;
@Override
public int compareTo(ProjectLibraryBase o) {
return Integer.valueOf(this.projectVersion)-Integer.valueOf(o.projectVersion);//升序
@@ -0,0 +1,87 @@
package com.jero.modules.project.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
* @Description: 项目权限表
* @Author: jero-boot
* @Date: 2022-11-10
* @Version: V1.0
*/
@Data
@TableName("project_user_permission")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="project_user_permission对象", description="项目权限表")
public class ProjectUserPermission implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**项目id*/
@Excel(name = "项目id", width = 15)
@ApiModelProperty(value = "项目id")
private String projectId;
/**用户id*/
@Excel(name = "用户id", width = 15)
@ApiModelProperty(value = "用户id")
private String userId;
/**所属位置*/
@Excel(name = "所属位置", width = 15)
@ApiModelProperty(value = "所属位置")
private String belong;
/**
* 如果是相关人员名单的时候这里填写相关人员名单id
*
* 如果是法规清单的时候,这里填写对应的法规清单id
*
* 如果是认证参数的时候这里填写参数收集清单id
*
* */
@Excel(name = "具体描述", width = 15)
@ApiModelProperty(value = "具体描述")
private String description;
}
@@ -0,0 +1,32 @@
package com.jero.modules.project.enums;
public enum PermissionDescriptionEnum {
PROJECT_RELATED_PERSONNEL("相关人员名单","projectRelatedPersonnelId:"),
PROJECT_LAWS_INVENTORY("法规清单","projectLawsInventoryId:"),
PARAMS_COLLECT_MANIFEST("参数项","paramsCollectManifestId:");
String label;
String value;
PermissionDescriptionEnum(String label, String value) {
this.label = label;
this.value = value;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -20,6 +20,7 @@ public enum ProjectRoleEnum {
VERIFYDUTY("验证符合性确认-责任人","10",""),
MANAGER("manage","11",""),
ADMIN("系统管理员","12",""),
VIEWER("Viewer","13",""),
;
String name;
@@ -0,0 +1,59 @@
package com.jero.modules.project.enums;
/**
* 项目权限相关添加人员的类型
*/
public enum ProjectUserLocationEnum {
PROJECT_ADD_STUDIO("PROJECT_ADD_STUDIO","项目新增时设置的Studio工程师"),
PROJECT_ADD_CERTIFICATION("PROJECT_ADD_CERTIFICATION","项目新增时设置的认证工程师"),
PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION("PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION","相关人员名单中认证工程师"),
PROJECT_DETAIL_RELEVANT_PERSONNEL_INTERFACE("PROJECT_DETAIL_RELEVANT_PERSONNEL_INTERFACE","相关人员名单中工程接口人"),
PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW("PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW","相关人员名单中法规工程师"),
PROJECT_LAWS_INVENTORY_CREATE_BY("PROJECT_LAWS_INVENTORY_CREATE_BY","法规清单创建人"),
PROJECT_LAWS_INVENTORY_REGULATION("PROJECT_LAWS_INVENTORY_REGULATION","法规清单中法规工程师"),
PROJECT_LAWS_INVENTORY_HOMOLOGATION("PROJECT_LAWS_INVENTORY_HOMOLOGATION","法规清单中认证工程师"),
PROJECT_LAWS_INVENTORY_INTERFACE("PROJECT_LAWS_INVENTORY_INTERFACE","法规清单中工程接口人"),
PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR("PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR","法规清单中设计符合性确认发起人"),
PROJECT_LAWS_INVENTORY_DESIGN_DUTY("PROJECT_LAWS_INVENTORY_DESIGN_DUTY","法规清单中设计符合性确认责任人"),
PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR("PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR","法规清单中prehomo确认发起人"),
PROJECT_LAWS_INVENTORY_PREHOMO_DUTY("PROJECT_LAWS_INVENTORY_PREHOMO_DUTY","法规清单中prehomo确认责任人"),
PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR("PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR","法规清单中验证符合性确认发起人"),
PROJECT_LAWS_INVENTORY_VERIFY_DUTY("PROJECT_LAWS_INVENTORY_VERIFY_DUTY","法规清单中验证符合性确认责任人"),
PROJECT_LAWS_TASK_AFFIRM_INQUIRE("PROJECT_LAWS_TASK_AFFIRM_INQUIRE","法规任务确认询问人"),
PROJECT_LAWS_DESIGN_DISTRIBUTION("PROJECT_LAWS_DESIGN_DISTRIBUTION","设计符合性确认分发工程师"),
PROJECT_LAWS_PREHOMO_DISTRIBUTION("PROJECT_LAWS_PREHOMO_DISTRIBUTION","prehomo确认分发工程师"),
PROJECT_LAWS_VERIFY_DISTRIBUTION("PROJECT_LAWS_VERIFY_DISTRIBUTION","验证符合性确认分发工程师"),
PROJECT_PARAMS_COLLECT_MANIFEST_DRE("PROJECT_PARAMS_COLLECT_MANIFEST_DRE","认证参数收集中填写人"),
PROJECT_PARAMS_COLLECT_MANIFEST_SDT("PROJECT_PARAMS_COLLECT_MANIFEST_SDT","认证参数收集中工程接口人");
String value;
String label;
ProjectUserLocationEnum(String value, String label) {
this.value = value;
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
}
@@ -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);
}
@@ -0,0 +1,20 @@
package com.jero.modules.project.mapper;
import java.util.List;
import java.util.Set;
import org.apache.ibatis.annotations.Param;
import com.jero.modules.project.entity.ProjectUserPermission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 项目权限表
* @Author: jero-boot
* @Date: 2022-11-10
* @Version: V1.0
*/
public interface ProjectUserPermissionMapper extends BaseMapper<ProjectUserPermission> {
Set<String> queryProjectIdsByUserId(@Param("userId") String userId);
}
@@ -94,4 +94,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>
@@ -20,6 +20,7 @@
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="sys_org_code" property="sysOrgCode" />
<result column="brand" property="brand" />
</resultMap>
<sql id="select_item">
@@ -49,7 +50,8 @@
plb.explanation,
plb.software_version,
plb.sort,
plb.flag
plb.flag,
plb.brand
from project_library_base as plb
left join project_name_info as pni on plb.project_name_id=pni.id
left join sys_user as studiouser on plb.studio_engineer=studiouser.id
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.project.mapper.ProjectUserPermissionMapper">
<resultMap id="ProjectUserPermissionResultMap" type="com.jero.modules.project.entity.ProjectUserPermission">
<id column="id" property="id" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="project_id" property="projectId" />
<result column="user_id" property="userId" />
<result column="belong" property="belong" />
<result column="description" property="description" />
</resultMap>
<select id="queryProjectIdsByUserId" resultType="java.lang.String">
SELECT pup.project_id FROM project_user_permission pup
WHERE pup.user_id = #{userId} GROUP BY pup.project_id
</select>
</mapper>
@@ -0,0 +1,76 @@
package com.jero.modules.project.service;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.modules.project.entity.ProjectUserPermission;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: 项目权限表
* @Author: jero-boot
* @Date: 2022-11-10
* @Version: V1.0
*/
public interface IProjectUserPermissionService extends IService<ProjectUserPermission> {
/**
* 保存
*
* @param projectUserPermission
* @return
*/
void add(ProjectUserPermission projectUserPermission);
/**
* 更新
*
* @param projectUserPermission
* @return
*/
void editById(ProjectUserPermission projectUserPermission);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProjectUserPermission queryById(String id);
/**
* 列表查询
*
* @return
*/
List<ProjectUserPermission> queryList();
/**
* 工作流调用设置权限
* @param jsonObject
* @return
*/
Result<?> setPermission(JSONObject jsonObject);
/**
* 权限同步
*/
void sync();
}
@@ -18,6 +18,7 @@ import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.enums.DicCodeEnum;
import com.jero.modules.system.service.ISysDictService;
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;
@@ -63,6 +64,8 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
private SysDictItemServiceImpl sysDictItemServiceImpl;
@Autowired
private ISysDictService sysDictService;
@Autowired
private IProjectUserDutyTerritoryService projectUserDutyTerritoryService;
@Override
public List<NcrTrackVO> getPageInfo(NcrTrackVO ncrTrackVO) {
@@ -89,8 +92,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 = "";
@@ -58,6 +58,7 @@ import com.jero.modules.system.mapper.SysCategoryMapper;
import com.jero.modules.system.mapper.SysDictItemMapper;
import com.jero.modules.system.mapper.SysRoleMapper;
import com.jero.modules.system.mapper.SysUserMapper;
import com.jero.modules.system.service.IProjectUserDutyTerritoryService;
import com.jero.modules.system.service.ISysAnnouncementService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
@@ -241,6 +242,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
@Autowired
private IBussDocumentLibraryEOService bussDocumentLibraryEOService;
@Autowired
private IProjectUserPermissionService projectUserPermissionService;
@Autowired
private IProjectUserDutyTerritoryService projectUserDutyTerritoryService;
/**
* 保存
*
@@ -249,6 +256,8 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
*/
@Override
public void add(ProjectLawsInventoryEO projectLawsInventoryEO) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
Date now = new Date();
List<ProjectTaskInventoryEO> projectTaskInventoryEOList = new ArrayList<>();
//法规清单所有的数据
LambdaQueryWrapper<ProjectLawsInventoryEO> wrapperTemp = new LambdaQueryWrapper<>();
@@ -319,6 +328,17 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
if(projectLawsInventoryEOS.size() != 0){
this.saveBatch(projectLawsInventoryEOS);
//设置权限
for (ProjectLawsInventoryEO lawsInventoryEO : projectLawsInventoryEOS) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectLawsInventoryEO.getProjectLibraryId());
permission.setUserId(sysUser.getId());
permission.setBelong(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_CREATE_BY.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryEO.getId());
permission.setCreateTime(now);
permission.setUpdateTime(now);
projectUserPermissionService.add(permission);
}
projectLawsInventoryEOS.forEach(lawsInventory -> {
ProjectTaskInventoryEO projectTaskInventoryEO = new ProjectTaskInventoryEO();
String projectTaskInventoryId = UUID.randomUUID().toString().replace("-", "");
@@ -330,7 +350,6 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
//更新log
String projectLibraryId = projectLawsInventoryEOS.stream().map(e->e.getProjectLibraryId()).collect(Collectors.toList()).get(0);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String username = sysUser.getUsername();
QueryWrapper<DummyInventoryBaseEO> queryWrapper = new QueryWrapper<>();
String dummyInventoryBaseName = dummyInventoryBaseEOService.list(queryWrapper.eq("id", dummyInventoryBaseId)).get(0).getName();//name
@@ -377,7 +396,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
List<ProjectLawsInventoryEO> list = new ArrayList<>();
List<ProjectUserPermission> addPermission = new ArrayList<>();
for (BussDocumentLibraryEO bussDocumentLibraryEO : bussDocumentLibraryEOList) {
String standId = bussDocumentLibraryEO.getId();
@@ -399,11 +418,23 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
projectTaskInventoryEO.setProjectLawsInventoryId(projectLawsInventoryId);
projectTaskInventoryEO.setStandId(standId);
projectTaskInventoryEOList.add(projectTaskInventoryEO);
//添加权限
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectLawsInventoryEO.getProjectLibraryId());
permission.setUserId(sysUser.getId());
permission.setBelong(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_CREATE_BY.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryId);
permission.setCreateTime(now);
permission.setUpdateTime(now);
addPermission.add(permission);
}
super.saveBatch(list);
if (ObjectUtils.isNotEmpty(addPermission)) {
projectUserPermissionService.saveBatch(addPermission);
}
//更新log
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String username = sysUser.getUsername();
String serialNumber = list.stream().map(e->e.getSerialNumber()).collect(Collectors.joining(","));
String contentLog = username+"向清单中添加了“"+serialNumber+"";
@@ -475,18 +506,69 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
// setContentLog(infoDiff,contentLog,infoDiffEn,enContentLog,projectLawsInventoryEO.getProjectLibraryId());
// //验证用户是否是该法规上级 项目库的studio 如果是则同步更新流程
// int roleCode = checkUserRole(projectLawsInventoryEO.getProjectLibraryId(), currentUser.getId(), "");
// if (StringUtils.equals(String.valueOf(roleCode),ProjectRoleEnum.STUDIO_ENGINEER.getValue())){
// //更新流程信息
// updateFlowInfo(projectLawsInventoryEO);
// }
this.updateFlowInfo(projectLawsInventoryEO);
//验证用户是否是该法规上级 项目库的studio 如果是则同步更新流程
int roleCode = checkUserRole(projectLawsInventoryEO.getProjectLibraryId(), currentUser.getId(), "");
if (StringUtils.equals(String.valueOf(roleCode),ProjectRoleEnum.STUDIO_ENGINEER.getValue())){
//更新流程信息
updateFlowInfo(projectLawsInventoryEO);
}
//设置权限 先删后加
List<ProjectUserPermission> adds = new ArrayList<>();
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getRegulationOwnerId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_REGULATION.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getHomologationEngineerId(),projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_HOMOLOGATION.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getEngineeringInterfacePerson(),projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_INTERFACE.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getDesignInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getDesignInitiatorId(),projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getDesignDutyId(),projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getPrehomoInitiatorId(),projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getPrehomoDutyId(),projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getVerifyInitiatorId(),projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getVerifyDutyId(),projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
}else {
throw new JeroBootException("该用户没有权限操作该数据!");
}
}
private void setProjectLawsInventoryPermission(String userId, String projectId,String lawsInventoryId,Date now, List<ProjectUserPermission> adds, String belong) {
QueryWrapper<ProjectUserPermission> del = new QueryWrapper<>();
del.eq("project_id", projectId)
.eq("belong", belong)
.eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryId);
projectUserPermissionService.remove(del);
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setUserId(userId);
permission.setBelong(belong);
permission.setDescription(PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryId);
permission.setCreateTime(now);
permission.setUpdateTime(now);
adds.add(permission);
}
private void setDateNull(ProjectLawsInventoryEO projectLawsInventoryEO, LambdaUpdateWrapper<ProjectLawsInventoryEO> updateWrapper) {
if(ObjectUtils.isEmpty(projectLawsInventoryEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1())){
updateWrapper.set(ProjectLawsInventoryEO::getXin1Che1Xing2Shi2Shi1Ri4Qi1,null);
@@ -642,6 +724,10 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
QueryWrapper<ProjectLawsInventoryRejectCauseEO> rejectCauseRemoveWrapper = new QueryWrapper<>();
rejectCauseRemoveWrapper.lambda().eq(ProjectLawsInventoryRejectCauseEO::getProjectLawsInventoryId,id);
this.projectLawsInventoryRejectCauseEOService.remove(rejectCauseRemoveWrapper);
//删除相关人员权限
QueryWrapper<ProjectUserPermission> delPermission = new QueryWrapper<>();
delPermission.eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + id);
projectUserPermissionService.remove(delPermission);
}
/**
@@ -692,6 +778,15 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
QueryWrapper<ProjectLawsInventoryRejectCauseEO> rejectCauseRemoveWrapper = new QueryWrapper<>();
rejectCauseRemoveWrapper.lambda().in(ProjectLawsInventoryRejectCauseEO::getProjectLawsInventoryId,ids);
this.projectLawsInventoryRejectCauseEOService.remove(rejectCauseRemoveWrapper);
//删除相关人员权限
List<String> description = new ArrayList<>();
QueryWrapper<ProjectUserPermission> delPermission = new QueryWrapper<>();
for (String id : ids) {
description.add(PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + id);
}
delPermission.in("description", description);
projectUserPermissionService.remove(delPermission);
}
/**
@@ -757,7 +852,8 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
if(isProjectRole != Integer.parseInt(ProjectRoleEnum.STUDIO_ENGINEER.getValue())
&& isProjectRole != Integer.parseInt(ProjectRoleEnum.MANAGER.getValue())
&& isProjectRole != Integer.parseInt(ProjectRoleEnum.ADMIN.getValue())){
&& isProjectRole != Integer.parseInt(ProjectRoleEnum.ADMIN.getValue())
&& isProjectRole != Integer.parseInt(ProjectRoleEnum.VIEWER.getValue())){
projectLawsInventoryEOQueryWrapper.and(queryWrapper ->{
queryWrapper.eq("regulation_owner_id",currentUser.getId()).
or().eq("homologation_engineer_id",currentUser.getId());
@@ -765,6 +861,15 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
List<ProjectLawsInventoryEO> result = super.baseMapper.selectList(projectLawsInventoryEOQueryWrapper);
log.info("二阶段消耗时间:" + (System.currentTimeMillis() - startTime));
if (isProjectRole == Integer.parseInt(ProjectRoleEnum.VIEWER.getValue())) {
//查当前用户Viewer对应责任领域
List<String> dutyTerritoryList = projectUserDutyTerritoryService.queryDutyTerritoryByUserId(currentUser.getId());
if (ObjectUtils.isNotEmpty(dutyTerritoryList)) {
result = result.stream().filter(e -> dutyTerritoryList.contains(e.getDutyTerritory())).collect(Collectors.toList());
} else {
result = new ArrayList<>();
}
}
dataDispose(result,currentUser,isProjectRole,projectLawsInventoryEO.getCut());
log.info("三阶段消耗时间:" + (System.currentTimeMillis() - startTime));
dataDictDispose(result,projectLawsInventoryEO.getCut());
@@ -3099,6 +3204,9 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
List<ProjectLawsInventoryEO> infoList = list(queryWrapper.in("id", idList));
List<ProjectLawsInventoryEO> projectLawsInventoryEOList = new ArrayList<>();
List<ProjectUserPermission> adds = new ArrayList<>();
Date now = new Date();
for (String id : projectLawsInventoryEO.getIds().split(",")) {
ProjectLawsInventoryEO projectLawsInventoryEOTemp = new ProjectLawsInventoryEO();
projectLawsInventoryEOTemp.setId(id);
@@ -3142,46 +3250,57 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
if(ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyDueDate())){
projectLawsInventoryEOTemp.setVerifyDueDate(projectLawsInventoryEO.getVerifyDueDate());
}
//================================批量设置人员===================================================
//法规工程师id
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId())){
projectLawsInventoryEOTemp.setRegulationOwnerId(projectLawsInventoryEO.getRegulationOwnerId());
setProjectLawsInventoryPermission(projectLawsInventoryEO.getRegulationOwnerId(),projectLibraryId, id, now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_REGULATION.getValue());
}
//认证工程师id
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId())){
projectLawsInventoryEOTemp.setHomologationEngineerId(projectLawsInventoryEO.getHomologationEngineerId());
setProjectLawsInventoryPermission(projectLawsInventoryEO.getHomologationEngineerId(),projectLibraryId, id, now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_HOMOLOGATION.getValue());
}
//工程接口人id
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())){
projectLawsInventoryEOTemp.setEngineeringInterfacePerson(projectLawsInventoryEO.getEngineeringInterfacePerson());
setProjectLawsInventoryPermission(projectLawsInventoryEO.getEngineeringInterfacePerson(),projectLibraryId, id, now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_INTERFACE.getValue());
}
//设计符合性流程发起人id
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignInitiatorId())){
projectLawsInventoryEOTemp.setDesignInitiatorId(projectLawsInventoryEO.getDesignInitiatorId());
setProjectLawsInventoryPermission(projectLawsInventoryEO.getDesignInitiatorId(),projectLibraryId, id, now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR.getValue());
}
//设计符合性流程责任人id
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())){
projectLawsInventoryEOTemp.setDesignDutyId(projectLawsInventoryEO.getDesignDutyId());
setProjectLawsInventoryPermission(projectLawsInventoryEO.getDesignDutyId(),projectLibraryId, id, now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_DUTY.getValue());
}
//Pre-homo确认流程发起人id
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoInitiatorId())){
projectLawsInventoryEOTemp.setPrehomoInitiatorId(projectLawsInventoryEO.getPrehomoInitiatorId());
setProjectLawsInventoryPermission(projectLawsInventoryEO.getPrehomoInitiatorId(),projectLibraryId, id, now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR.getValue());
}
//Pre-homo确认责任人id
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())){
projectLawsInventoryEOTemp.setPrehomoDutyId(projectLawsInventoryEO.getPrehomoDutyId());
setProjectLawsInventoryPermission(projectLawsInventoryEO.getPrehomoDutyId(),projectLibraryId, id, now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_DUTY.getValue());
}
//验证符合性流程发起人id
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getVerifyInitiatorId())){
projectLawsInventoryEOTemp.setVerifyInitiatorId(projectLawsInventoryEO.getVerifyInitiatorId());
setProjectLawsInventoryPermission(projectLawsInventoryEO.getVerifyInitiatorId(),projectLibraryId, id, now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR.getValue());
}
//验证符合性流程责任人id
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getVerifyDutyId())){
projectLawsInventoryEOTemp.setVerifyDutyId(projectLawsInventoryEO.getVerifyDutyId());
setProjectLawsInventoryPermission(projectLawsInventoryEO.getVerifyDutyId(),projectLibraryId, id, now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_DUTY.getValue());
}
projectLawsInventoryEOList.add(projectLawsInventoryEOTemp);
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
this.updateBatchById(projectLawsInventoryEOList);
@@ -5426,6 +5545,9 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
this.saveBatch(dataList);
//项目任务清单数据初始化
List<ProjectTaskInventoryEO> projectTaskInventoryEOList = new ArrayList<>();
//权限添加
List<ProjectUserPermission> adds = new ArrayList<>();
Date now = new Date();
for (ProjectLawsInventoryEO projectLawsInventoryEO : dataList) {
ProjectTaskInventoryEO projectTaskInventoryEO = new ProjectTaskInventoryEO();
String projectTaskInventoryId = UUID.randomUUID().toString().replace("-", "");
@@ -5433,6 +5555,37 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
projectTaskInventoryEO.setProjectLawsInventoryId(projectLawsInventoryEO.getId());
projectLawsInventoryEO.setStandId(projectLawsInventoryEO.getStandId());
projectTaskInventoryEOList.add(projectTaskInventoryEO);
//设置权限
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getRegulationOwnerId(), projectLawsInventoryEOTemp.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_REGULATION.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getHomologationEngineerId(),projectLawsInventoryEOTemp.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_HOMOLOGATION.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getEngineeringInterfacePerson(),projectLawsInventoryEOTemp.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_INTERFACE.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getDesignInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getDesignInitiatorId(),projectLawsInventoryEOTemp.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getDesignDutyId(),projectLawsInventoryEOTemp.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getPrehomoInitiatorId(),projectLawsInventoryEOTemp.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getPrehomoDutyId(),projectLawsInventoryEOTemp.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getVerifyInitiatorId(),projectLawsInventoryEOTemp.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getVerifyDutyId(),projectLawsInventoryEOTemp.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_DUTY.getValue());
}
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
this.projectTaskInventoryEOService.saveBatch(projectTaskInventoryEOList);
//初始化项目状态评估
@@ -8947,10 +9100,11 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
List<SysRole> roleList = sysRoleMapper.getRoleByUserId(loginUser.getId());
//studio角色,法规工程师/认证工程师,领导角色,管理员角色
//studio角色,法规工程师/认证工程师,领导角色,管理员角色,Viewer
if (roleList.size() != 0) {
List<SysRole> manager = roleList.stream().filter(e -> com.jero.modules.system.enums.ProjectRoleEnum.MANAGER.getCode().equals(e.getRoleCode())).collect(Collectors.toList());
List<SysRole> admin = roleList.stream().filter(e -> com.jero.modules.system.enums.ProjectRoleEnum.ADMIN.getCode().equals(e.getRoleCode())).collect(Collectors.toList());
List<SysRole> Viewer = roleList.stream().filter(e -> com.jero.modules.system.enums.ProjectRoleEnum.VIEWER.getCode().equals(e.getRoleCode())).collect(Collectors.toList());
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
if (manager.size() != 0) {
manager.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.MANAGER.getValue());
@@ -8960,6 +9114,10 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
admin.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.ADMIN.getValue());
sysRoles.addAll(admin);
}
if (Viewer.size() != 0) {
Viewer.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.VIEWER.getValue());
sysRoles.addAll(Viewer);
}
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
if (manager.size() != 0) {
manager.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.MANAGER.getValue());
@@ -8971,6 +9129,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
admin.get(0).setRoleName(com.jero.modules.system.enums.ProjectRoleEnum.ADMIN.getCode());
sysRoles.addAll(admin);
}
if (Viewer.size() != 0) {
Viewer.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.VIEWER.getCode());
Viewer.get(0).setRoleName(com.jero.modules.system.enums.ProjectRoleEnum.VIEWER.getCode());
sysRoles.addAll(Viewer);
}
}
}
@@ -11,35 +11,20 @@ import com.jero.common.system.vo.DictModel;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.cert.collect.service.IParamsManifestEOService;
import com.jero.modules.enums.DictCodeEnum;
import com.jero.modules.project.entity.ConditionAssessmentEO;
import com.jero.modules.project.entity.ProjectLawsInventoryEO;
import com.jero.modules.project.entity.ProjectLawsInventoryLogEO;
import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.entity.ProjectLibraryRoleRelEO;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.entity.ProjectTaskInventoryEO;
import com.jero.modules.project.entity.ProjectTaskPlanning;
import com.jero.modules.project.enums.CertificationProgressEnum;
import com.jero.modules.project.enums.CurrentProjectStatusEnum;
import com.jero.modules.project.enums.DesignComplianceStatusEnum;
import com.jero.modules.project.enums.InventoryAffirmStatusEnum;
import com.jero.modules.project.enums.OperatorTypeEnum;
import com.jero.modules.project.enums.ProjectRoleEnum;
import com.jero.modules.project.enums.TaskAffirmStatusEnum;
import com.jero.modules.project.enums.TopEnum;
import com.jero.modules.project.mapper.ProjectLawsInventoryEOMapper;
import com.jero.modules.project.mapper.ProjectLibraryBaseMapper;
import com.jero.modules.project.mapper.ProjectNameInfoEOMapper;
import com.jero.modules.project.mapper.ProjectRelatedPersonnelMapper;
import com.jero.modules.project.mapper.ProjectTaskInventoryEOMapper;
import com.jero.modules.project.entity.*;
import com.jero.modules.project.enums.*;
import com.jero.modules.project.mapper.*;
import com.jero.modules.project.service.IConditionAssessmentEOService;
import com.jero.modules.project.service.IProjectLibraryBaseService;
import com.jero.modules.project.service.IProjectLibraryRoleRelEOService;
import com.jero.modules.project.service.IProjectUserPermissionService;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.enums.DicCodeEnum;
import com.jero.modules.system.mapper.SysDictItemMapper;
import com.jero.modules.system.mapper.SysRoleMapper;
import com.jero.modules.system.mapper.SysUserMapper;
import com.jero.modules.system.service.IProjectUserBrandService;
import com.jero.modules.system.service.ISysDictService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
@@ -62,15 +47,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -133,6 +110,18 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
@Autowired
private ISysUserService sysUserService;
@Autowired
private SysRoleMapper sysRoleMapper;
@Autowired
private IProjectUserPermissionService projectUserPermissionService;
@Autowired
private ProjectUserPermissionMapper projectUserPermissionMapper;
@Autowired
private IProjectUserBrandService projectUserBrandService;
/**
* 保存
*
@@ -162,6 +151,33 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
projectLibraryRoleRelEO.setUserId(projectLibraryBase.getStudioEngineer());
projectLibraryRoleRelEO.setRoleCode(ProjectRoleEnum.STUDIO_ENGINEER.getValue());
projectLibraryRoleRelEOService.add(projectLibraryRoleRelEO);
//项目权限表添加
List<ProjectUserPermission> adds = new ArrayList<>();
if (ObjectUtils.isNotEmpty(projectLibraryBase.getStudioEngineer())) {
ProjectUserPermission projectUserPermission = new ProjectUserPermission();
projectUserPermission.setProjectId(projectLibraryBase.getId());
projectUserPermission.setUserId(projectLibraryBase.getStudioEngineer());
projectUserPermission.setBelong(ProjectUserLocationEnum.PROJECT_ADD_STUDIO.getValue());
projectUserPermission.setCreateTime(now);
projectUserPermission.setUpdateTime(now);
adds.add(projectUserPermission);
}
if (ObjectUtils.isNotEmpty(projectLibraryBase.getCertificationEngineer())) {
for (String id : projectLibraryBase.getCertificationEngineer().split(",")) {
ProjectUserPermission projectUserPermission = new ProjectUserPermission();
projectUserPermission.setProjectId(projectLibraryBase.getId());
projectUserPermission.setUserId(id);
projectUserPermission.setBelong(ProjectUserLocationEnum.PROJECT_ADD_CERTIFICATION.getValue());
projectUserPermission.setCreateTime(now);
projectUserPermission.setUpdateTime(now);
adds.add(projectUserPermission);
}
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
}
/**
@@ -182,6 +198,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
projectLibraryBaseTemp.setExplanation(projectLibraryBase.getExplanation());
this.save(projectLibraryBaseTemp);
Date now = new Date();
//相关人员名单中添加数据
List<ProjectRelatedPersonnel> projectRelatedPersonnelList = projectRelatedPersonnelMapper.queryPageList(id,
@@ -191,11 +208,57 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
null,
null);
if(projectRelatedPersonnelList.size() != 0){
List<ProjectUserPermission> relatedPersonnelPermissionList = new ArrayList<>();
for (ProjectRelatedPersonnel projectRelatedPersonnel : projectRelatedPersonnelList) {
projectRelatedPersonnel.setId(UUID.randomUUID().toString().replace("-", ""));
String relatedPersonnelId = UUID.randomUUID().toString().replace("-", "");
projectRelatedPersonnel.setId(relatedPersonnelId);
projectRelatedPersonnel.setProjectId(projectId);
//添加人员权限
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getLawEngineer())) {
for (String lawEngineerId : projectRelatedPersonnel.getLawEngineer().split(",")) {
//projectUserPermissionService.queryRelatedPersonnelPermission(projectLibraryBase.getId(),lawEngineerId,ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW.getValue());
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setUserId(lawEngineerId);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + relatedPersonnelId);
permission.setCreateTime(now);
permission.setUpdateTime(now);
relatedPersonnelPermissionList.add(permission);
}
}
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getEngineeringInterfacePerson())) {
for (String engineeringInterfacePersonId : projectRelatedPersonnel.getEngineeringInterfacePerson().split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setUserId(engineeringInterfacePersonId);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_INTERFACE.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + relatedPersonnelId);
permission.setCreateTime(now);
permission.setUpdateTime(now);
relatedPersonnelPermissionList.add(permission);
}
}
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getCertificationEngineer())) {
for (String certificationEngineerId : projectRelatedPersonnel.getCertificationEngineer().split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setUserId(certificationEngineerId);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + relatedPersonnelId);
permission.setCreateTime(now);
permission.setUpdateTime(now);
relatedPersonnelPermissionList.add(permission);
}
}
}
projectRelatedPersonnelService.saveBatch(projectRelatedPersonnelList);
if (ObjectUtils.isNotEmpty(relatedPersonnelPermissionList)) {
projectUserPermissionService.saveBatch(relatedPersonnelPermissionList);
}
}
//法规/认证任务计划添加数据 projectTaskPlanningService
@@ -213,13 +276,26 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
LambdaQueryWrapper<ProjectLibraryRoleRelEO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(ProjectLibraryRoleRelEO::getProjectLibraryId,projectLibraryBase.getId());
List<ProjectLibraryRoleRelEO> projectLibraryRoleRelEOList = projectLibraryRoleRelEOService.list(queryWrapper);
List<ProjectUserPermission> studioUserPermissions = new ArrayList<>();
if(ObjectUtils.isNotEmpty(projectLibraryRoleRelEOList)){
for (ProjectLibraryRoleRelEO projectLibraryRoleRelEO : projectLibraryRoleRelEOList) {
projectLibraryRoleRelEO.setId(UUID.randomUUID().toString().replace("-", ""));
projectLibraryRoleRelEO.setProjectLibraryId(projectId);
projectLibraryRoleRelEOService.add(projectLibraryRoleRelEO);
//添加studio权限
ProjectUserPermission studioUserPermission = new ProjectUserPermission();
studioUserPermission.setProjectId(projectId);
studioUserPermission.setUserId(projectLibraryRoleRelEO.getUserId());
studioUserPermission.setBelong(ProjectUserLocationEnum.PROJECT_ADD_STUDIO.getValue());
studioUserPermission.setCreateTime(now);
studioUserPermission.setUpdateTime(now);
studioUserPermissions.add(studioUserPermission);
}
}
if (ObjectUtils.isNotEmpty(studioUserPermissions)) {
projectUserPermissionService.saveBatch(studioUserPermissions);
}
}
@@ -258,6 +334,8 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
projectLibraryBase.setUpdateBy(sysUser.getUsername());
ProjectLibraryBase original = baseMapper.selectById(projectLibraryBase.getId());
checkExitData(projectLibraryBase);
saveOrUpdate(projectLibraryBase);
@@ -265,6 +343,14 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
QueryWrapper<ProjectLibraryRoleRelEO> deleteLibraryRoleRelWrapper = new QueryWrapper<>();
deleteLibraryRoleRelWrapper.lambda().eq(ProjectLibraryRoleRelEO::getProjectLibraryId,projectLibraryBase.getId());
projectLibraryRoleRelEOService.remove(deleteLibraryRoleRelWrapper);
//删除当前项目studio项目权限
QueryWrapper<ProjectUserPermission> delStudioPermission = new QueryWrapper<>();
delStudioPermission.eq("project_id", projectLibraryBase.getId()).eq("belong", ProjectUserLocationEnum.PROJECT_ADD_STUDIO.getValue());
projectUserPermissionService.remove(delStudioPermission);
//删除当前项目certification engineer项目权限
QueryWrapper<ProjectUserPermission> delCertificationPermission = new QueryWrapper<>();
delCertificationPermission.eq("project_id", projectLibraryBase.getId()).eq("belong", ProjectUserLocationEnum.PROJECT_ADD_CERTIFICATION.getValue());
projectUserPermissionService.remove(delCertificationPermission);
// 初始化当前项目的studio与项目库 角色关系
ProjectLibraryRoleRelEO projectLibraryRoleRelEO = new ProjectLibraryRoleRelEO();
@@ -272,13 +358,67 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
projectLibraryRoleRelEO.setUserId(projectLibraryBase.getStudioEngineer());
projectLibraryRoleRelEO.setRoleCode(ProjectRoleEnum.STUDIO_ENGINEER.getValue());
projectLibraryRoleRelEOService.add(projectLibraryRoleRelEO);
//重新设置当前项目studio项目权限
List<ProjectUserPermission> engineers = new ArrayList<>();
ProjectUserPermission studioPermission = new ProjectUserPermission();
studioPermission.setProjectId(projectLibraryBase.getId());
studioPermission.setUserId(projectLibraryBase.getStudioEngineer());
studioPermission.setBelong(ProjectUserLocationEnum.PROJECT_ADD_STUDIO.getValue());
studioPermission.setCreateTime(now);
studioPermission.setUpdateTime(now);
engineers.add(studioPermission);
//重新设置当前项目certification engineer项目权限
if (ObjectUtils.isNotEmpty(projectLibraryBase.getCertificationEngineer())) {
for (String certificationEngineer : projectLibraryBase.getCertificationEngineer().split(",")) {
ProjectUserPermission certificationPermission = new ProjectUserPermission();
certificationPermission.setProjectId(projectLibraryBase.getId());
certificationPermission.setUserId(certificationEngineer);
certificationPermission.setBelong(ProjectUserLocationEnum.PROJECT_ADD_CERTIFICATION.getValue());
certificationPermission.setCreateTime(now);
certificationPermission.setUpdateTime(now);
engineers.add(certificationPermission);
}
}
if (ObjectUtils.isNotEmpty(engineers)) {
projectUserPermissionService.saveBatch(engineers);
}
//编辑时如果认证工程师发生变化,同步修改相关人员名单中的认证工程师
List<ProjectRelatedPersonnel> result = projectRelatedPersonnelMapper.queryPageList(projectLibraryBase.getId(),
DictCodeEnum.DUTY_TERRITORY.getValue(), null, null, null, null);
//项目的认证工程师
String certificationEngineer = projectLibraryBase.getCertificationEngineer();
//一个都不选的情况下
if ("".equals(certificationEngineer)) {
//删除当前项目的相关人员名单中认证工程师权限
QueryWrapper<ProjectUserPermission> delWrapper = new QueryWrapper<>();
delWrapper.eq("project_id", projectLibraryBase.getId())
.eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION.getValue());
projectUserPermissionService.remove(delWrapper);
//删除当前项目的法规清单中认证工程师权限
QueryWrapper<ProjectUserPermission> delLawInventoryWrapper = new QueryWrapper<>();
delLawInventoryWrapper.eq("project_id", projectLibraryBase.getId())
.eq("belong", ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_HOMOLOGATION.getValue());
projectUserPermissionService.remove(delLawInventoryWrapper);
}
//选择了其他工程师
if(StringUtils.isNotBlank(certificationEngineer)){
for (String id : original.getCertificationEngineer().split(",")) {
if (!certificationEngineer.contains(id)) {
//如果原来的认证工程师被删除了则需要同步删除当前项目的相关人员名单中该认证工程师权限
QueryWrapper<ProjectUserPermission> delWrapper = new QueryWrapper<>();
delWrapper.eq("project_id", projectLibraryBase.getId()).eq("user_id",id).
eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION.getValue());
projectUserPermissionService.remove(delWrapper);
//如果原来的认证工程师被删除了则需要同步删除当前项目的法规清单中该认证工程师权限
QueryWrapper<ProjectUserPermission> delLawInventoryWrapper = new QueryWrapper<>();
delLawInventoryWrapper.eq("project_id", projectLibraryBase.getId()).eq("user_id",id).
eq("belong", ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_HOMOLOGATION.getValue());
projectUserPermissionService.remove(delLawInventoryWrapper);
}
}
for (ProjectRelatedPersonnel projectRelatedPersonnel : result) {
//相关人员名单的认证工程师
String certificationEngineerTemp = projectRelatedPersonnel.getCertificationEngineer();
@@ -299,6 +439,104 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
//批量修改相关人员名单信息中的认证工程师
projectRelatedPersonnelService.updateBatchById(result);
}
/**
*法规清单发起任务前或任务结束后修改studio或者修改认证工程师时
*如果设计符合性确认Pre-Homo确认 验证符合性确认中的发起人跟责任人引用到了这两人
*而且这两个人不属于相关人员名单的工程接口人和法规工程师,同步删除这两人的权限
*/
List<String> belongs = new ArrayList<>();
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_DUTY.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_DUTY.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_DUTY.getValue());
QueryWrapper<ProjectLawsInventoryEO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("project_library_id", projectLibraryBase.getId());
List<ProjectLawsInventoryEO> list = projectLawsInventoryEOService.list(queryWrapper);
if (ObjectUtils.isNotEmpty(list)) {
for (ProjectLawsInventoryEO lawsInventoryEO : list) {
boolean boo = false;
//发起任务前
if (TaskAffirmStatusEnum.NOT_STARTED.getValue().equals(lawsInventoryEO.getTaskAffirmStatus())) {
boo = true;
}
//任务结束后
if (!boo) {
int count = 0;
QueryWrapper<ProjectTaskInventoryEO> taskInventoryQueryWrapper = new QueryWrapper<>();
taskInventoryQueryWrapper.eq("project_laws_inventory_id",lawsInventoryEO.getId());
List<ProjectTaskInventoryEO> taskInventoryRecords = projectTaskInventoryEOMapper.selectList(taskInventoryQueryWrapper);
for (ProjectTaskInventoryEO taskInventoryRecord : taskInventoryRecords) {
String designStatus = taskInventoryRecord.getDesignStatus();
String verifyStatus = taskInventoryRecord.getVerifyStatus();
String prehomoStatus = taskInventoryRecord.getPrehomoStatus();
boolean designStatusFlag = StringUtils.isBlank(designStatus) || designStatus.equals(DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue());
boolean verifyStatusFlag = StringUtils.isBlank(verifyStatus) || verifyStatus.equals(DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue());
boolean prehomoStatusFlag = StringUtils.isBlank(prehomoStatus) || prehomoStatus.equals(DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue());
if (designStatusFlag && verifyStatusFlag && prehomoStatusFlag) {
count++;
}
}
if (count == 3) {
boo = true;
}
}
if (boo) {
QueryWrapper<ProjectRelatedPersonnel> personnelQueryWrapper = new QueryWrapper<>();
personnelQueryWrapper.eq("duty_territory", lawsInventoryEO.getDutyTerritory()).eq("project_id", projectLibraryBase.getId());
List<ProjectRelatedPersonnel> personnels = projectRelatedPersonnelService.list(personnelQueryWrapper);
if (!original.getStudioEngineer().equals(projectLibraryBase.getStudioEngineer())) {
StringBuilder participator = new StringBuilder();
if (ObjectUtils.isNotEmpty(personnels)) {
if (ObjectUtils.isNotEmpty(personnels.get(0).getLawEngineer())) {
participator.append(personnels.get(0).getLawEngineer() + ",");
}
if (ObjectUtils.isNotEmpty(personnels.get(0).getCertificationEngineer())) {
participator.append(personnels.get(0).getCertificationEngineer() + ",");
}
if (ObjectUtils.isNotEmpty(personnels.get(0).getEngineeringInterfacePerson())) {
participator.append(personnels.get(0).getEngineeringInterfacePerson() + ",");
}
}
if (!participator.toString().contains(original.getStudioEngineer())) {
//删除当前studio在法规清单中的人员权限
QueryWrapper<ProjectUserPermission> del = new QueryWrapper<>();
del.eq("project_id", projectLibraryBase.getId()).eq("user_id", original.getStudioEngineer()).in("belong",belongs).
eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryEO.getId());
projectUserPermissionService.remove(del);
}
}
if (ObjectUtils.isNotEmpty(original.getCertificationEngineer())) {
for (String id : original.getCertificationEngineer().split(",")) {
if (!certificationEngineer.contains(id)) {
StringBuilder participator = new StringBuilder();
if (ObjectUtils.isNotEmpty(personnels)) {
if (ObjectUtils.isNotEmpty(personnels.get(0).getLawEngineer())) {
participator.append(personnels.get(0).getLawEngineer() + ",");
}
if (ObjectUtils.isNotEmpty(personnels.get(0).getEngineeringInterfacePerson())) {
participator.append(personnels.get(0).getEngineeringInterfacePerson() + ",");
}
}
participator.append(original.getStudioEngineer());
if (!participator.toString().contains(id)) {
//删除当前studio在法规清单中的人员权限
QueryWrapper<ProjectUserPermission> del = new QueryWrapper<>();
del.eq("project_id", projectLibraryBase.getId()).eq("user_id", id).in("belong",belongs).
eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryEO.getId());
projectUserPermissionService.remove(del);
}
}
}
}
}
}
}
}
/**
@@ -314,8 +552,18 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
// 关联删除项目下的所有收集清单
paramsManifestEOService.deleteByProjectId(id);
//删除主项目
removeById(id);
//删除子项目
LambdaQueryWrapper<ProjectLibraryBase> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProjectLibraryBase::getParentId,id);
List<ProjectLibraryBase> list = this.list(wrapper);
if(ObjectUtils.isNotEmpty(list)){
List<String> idList = list.stream().map(ProjectLibraryBase::getId).collect(Collectors.toList());
this.removeByIds(idList);
}
//关联删除-相关人员
QueryWrapper<ProjectRelatedPersonnel> relatedPersonnelQueryWrapper = new QueryWrapper<>();
relatedPersonnelQueryWrapper.eq("project_id",id);
@@ -336,6 +584,10 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
logEOQueryWrapper.in("project_library_id",id);
projectLawsInventoryLogEOService.remove(logEOQueryWrapper);
//删除权限
QueryWrapper<ProjectUserPermission> permissionQueryWrapper = new QueryWrapper<>();
permissionQueryWrapper.eq("project_id", id);
projectUserPermissionService.remove(permissionQueryWrapper);
}
/*
@@ -478,6 +730,28 @@ 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<>();
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);
//目标市场
@@ -562,7 +836,43 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
}
}
}
return resultNew;
//权限筛选
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;
}
}
@NotNull
@@ -15,12 +15,14 @@ import com.jero.common.util.TokenUtils;
import com.jero.modules.dummy.service.impl.DummyInventoryInfoEOServiceImpl;
import com.jero.modules.enums.DictCodeEnum;
import com.jero.modules.ocr.entity.User;
import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.enums.ProjectInventoryFieldEnum;
import com.jero.modules.project.enums.ProjectRoleEnum;
import com.jero.modules.project.entity.*;
import com.jero.modules.project.enums.*;
import com.jero.modules.project.mapper.ProjectLibraryBaseMapper;
import com.jero.modules.project.mapper.ProjectRelatedPersonnelMapper;
import com.jero.modules.project.mapper.ProjectTaskInventoryEOMapper;
import com.jero.modules.project.service.IProjectLawsInventoryEOService;
import com.jero.modules.project.service.IProjectRelatedPersonnelService;
import com.jero.modules.project.service.IProjectUserPermissionService;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysDictItemMapper;
@@ -93,6 +95,19 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
@Autowired
private ProjectLibraryBaseServiceImpl projectLibraryBaseService;
@Autowired
private IProjectUserPermissionService projectUserPermissionService;
@Autowired
private IProjectLawsInventoryEOService projectLawsInventoryEOService;
@Autowired
private ProjectTaskInventoryEOMapper projectTaskInventoryEOMapper;
@Autowired
private ProjectLibraryBaseMapper projectLibraryBaseMapper;
/**
* 保存
*
@@ -128,11 +143,93 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
*/
@Override
public void editById(ProjectRelatedPersonnel projectRelatedPersonnel) {
//用于权限对比
ProjectRelatedPersonnel original = baseMapper.selectById(projectRelatedPersonnel.getId());
ProjectLibraryBase projectLibraryBase = projectLibraryBaseMapper.selectById(projectRelatedPersonnel.getProjectId());
Date now = new Date();
projectRelatedPersonnel.setUpdateTime(now);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
projectRelatedPersonnel.setUpdateBy(sysUser.getUsername());
saveOrUpdate(projectRelatedPersonnel);
List<ProjectUserPermission> adds = new ArrayList<>();
if (projectRelatedPersonnel.getLawEngineer() != null) {
if (!"".equals(projectRelatedPersonnel.getLawEngineer())) {
for (String lawEngineerId : projectRelatedPersonnel.getLawEngineer().split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectRelatedPersonnel.getProjectId());
permission.setUserId(lawEngineerId);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + projectRelatedPersonnel.getId());
permission.setCreateTime(now);
permission.setUpdateTime(now);
adds.add(permission);
}
}
//修改当前相关人员名单中责任领域人员权限
QueryWrapper<ProjectUserPermission> delPermissionWrapper = new QueryWrapper<>();
delPermissionWrapper.eq("project_id", projectRelatedPersonnel.getProjectId())
.eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW.getValue())
.eq("description", PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + projectRelatedPersonnel.getId());
projectUserPermissionService.remove(delPermissionWrapper);
}
if (projectRelatedPersonnel.getEngineeringInterfacePerson()!= null) {
if (!"".equals(projectRelatedPersonnel.getEngineeringInterfacePerson())) {
for (String engineeringInterfacePersonId : projectRelatedPersonnel.getEngineeringInterfacePerson().split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectRelatedPersonnel.getProjectId());
permission.setUserId(engineeringInterfacePersonId);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_INTERFACE.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + projectRelatedPersonnel.getId());
permission.setCreateTime(now);
permission.setUpdateTime(now);
adds.add(permission);
}
}
//修改当前相关人员名单中责任领域人员权限
QueryWrapper<ProjectUserPermission> delPermissionWrapper = new QueryWrapper<>();
delPermissionWrapper.eq("project_id",projectRelatedPersonnel.getProjectId())
.eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_INTERFACE.getValue())
.eq("description", PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + projectRelatedPersonnel.getId());
projectUserPermissionService.remove(delPermissionWrapper);
}
if (projectRelatedPersonnel.getCertificationEngineer()!= null) {
if (!"".equals(projectRelatedPersonnel.getCertificationEngineer())) {
for (String certificationEngineerId : projectRelatedPersonnel.getCertificationEngineer().split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectRelatedPersonnel.getProjectId());
permission.setUserId(certificationEngineerId);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + projectRelatedPersonnel.getId());
permission.setCreateTime(now);
permission.setUpdateTime(now);
adds.add(permission);
}
}
//修改当前相关人员名单中责任领域人员权限
QueryWrapper<ProjectUserPermission> delPermissionWrapper = new QueryWrapper<>();
delPermissionWrapper.eq("project_id",projectRelatedPersonnel.getProjectId())
.eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION.getValue())
.eq("description", PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + projectRelatedPersonnel.getId());
projectUserPermissionService.remove(delPermissionWrapper);
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
//修改当前属于当前责任领域的法规清单的人员权限
List<String> belongs = new ArrayList<>();
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_DUTY.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_DUTY.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_DUTY.getValue());
setLawsInventoryPermission(projectRelatedPersonnel.getProjectId(), belongs, projectRelatedPersonnel, original, projectLibraryBase);
}
/**
@@ -973,6 +1070,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
*/
@Override
public Result<?> oppositeDisposeData(List<ProjectRelatedPersonnel> records, String projectId, String cut) {
ProjectLibraryBase projectLibraryBase = projectLibraryBaseMapper.selectById(projectId);
//查询所有的用户
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
wrapper.select(SysUser::getUsername,SysUser::getId);
@@ -981,7 +1079,20 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
Result<?> result = new Result<>();
int row=3;
StringBuilder message = new StringBuilder();
List<ProjectUserPermission> addPermission = new ArrayList<>();
Date now = new Date();
//修改当前属于当前责任领域的法规清单的人员权限
List<String> belongs = new ArrayList<>();
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_DUTY.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_DUTY.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_DUTY.getValue());
for (ProjectRelatedPersonnel projectRelatedPersonnel:records) {
String relatedPersonnelId = "";
//查标签内容里的责任领域数据
List<SysDictItem> sysDictItemList = sysDictItemMapper.selectItemsByDictCode(DictCodeEnum.DUTY_TERRITORY.getValue());
List<String> dutyTerritoryValueList = new ArrayList<>();
@@ -1015,6 +1126,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
QueryWrapper<ProjectRelatedPersonnel> queryWrapper = new QueryWrapper<>();
List<ProjectRelatedPersonnel> idList = list(queryWrapper.select("id").eq("duty_territory", dutyTerritoryValueList.get(0)).eq("project_id",projectId));
projectRelatedPersonnel.setId(idList.get(0).getId());
relatedPersonnelId = idList.get(0).getId();
}
}
}else{
@@ -1056,8 +1168,26 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
.map(sysUser -> sysUser.getId()).collect(Collectors.joining(","));
}
midId.append(lawEngineerId).append(",");
//添加权限
if (ObjectUtils.isNotEmpty(relatedPersonnelId) && ObjectUtils.isNotEmpty(lawEngineerId)) {
for (String id : lawEngineerId.split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setUserId(id);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + relatedPersonnelId);
permission.setCreateTime(now);
permission.setUpdateTime(now);
addPermission.add(permission);
}
}
}
projectRelatedPersonnel.setLawEngineer(midId.substring(0,midId.toString().length()-1));
QueryWrapper<ProjectUserPermission> delPermissionWrapper = new QueryWrapper<>();
delPermissionWrapper.eq("project_id", projectId).eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW.getValue()).eq("description", PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + relatedPersonnelId);
projectUserPermissionService.remove(delPermissionWrapper);
}
}else{
projectRelatedPersonnel.setLawEngineer("");
@@ -1093,8 +1223,25 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
.map(sysUser -> sysUser.getId()).collect(Collectors.joining(","));
}
midId.append(engineeringInterfacePersonId).append(",");
//添加权限
if (ObjectUtils.isNotEmpty(relatedPersonnelId)&&ObjectUtils.isNotEmpty(engineeringInterfacePersonId)) {
for (String id : engineeringInterfacePersonId.split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setUserId(id);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_INTERFACE.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + relatedPersonnelId);
permission.setCreateTime(now);
permission.setUpdateTime(now);
addPermission.add(permission);
}
}
}
projectRelatedPersonnel.setEngineeringInterfacePerson(midId.substring(0,midId.toString().length()-1));
QueryWrapper<ProjectUserPermission> delPermissionWrapper = new QueryWrapper<>();
delPermissionWrapper.eq("project_id", projectId).eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_INTERFACE.getValue()).eq("description", PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + relatedPersonnelId);
projectUserPermissionService.remove(delPermissionWrapper);
}
}else{
projectRelatedPersonnel.setEngineeringInterfacePerson("");
@@ -1161,15 +1308,31 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
.map(sysUser -> sysUser.getId()).collect(Collectors.joining(","));
}
midId.append(certificationEngineerId).append(",");
//添加权限
if (ObjectUtils.isNotEmpty(relatedPersonnelId)&&ObjectUtils.isNotEmpty(certificationEngineerId)) {
for (String id : certificationEngineerId.split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setUserId(id);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + relatedPersonnelId);
permission.setCreateTime(now);
permission.setUpdateTime(now);
addPermission.add(permission);
}
}
}
projectRelatedPersonnel.setCertificationEngineer(midId.substring(0,midId.toString().length()-1));
QueryWrapper<ProjectUserPermission> delPermissionWrapper = new QueryWrapper<>();
delPermissionWrapper.eq("project_id", projectId).eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION.getValue()).eq("description", PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + relatedPersonnelId);
projectUserPermissionService.remove(delPermissionWrapper);
}
}else{
projectRelatedPersonnel.setCertificationEngineer("");
}
projectRelatedPersonnel.setProjectId(projectId);
Date now = new Date();
projectRelatedPersonnel.setUpdateTime(now);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
projectRelatedPersonnel.setUpdateBy(sysUser.getUsername());
@@ -1177,11 +1340,22 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
row++;
result.error500(message.toString());
//用于权限对比
ProjectRelatedPersonnel original = baseMapper.selectById(projectRelatedPersonnel.getId());
setLawsInventoryPermission(projectId, belongs, projectRelatedPersonnel, original, projectLibraryBase);
}
//中英切换提示语,message为空 = 之前的数据没错
if(StringUtils.isBlank(message.toString())) {
saveOrUpdateBatch(records);
//设置相关人员权限
if (ObjectUtils.isNotEmpty(addPermission)) {
projectUserPermissionService.saveBatch(addPermission);
}
if (CutEnum.CN.getValue().equals(cut)) {
message.append("导入成功");
} else {
@@ -1192,6 +1366,142 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
return result;
}
private void setLawsInventoryPermission(String projectId, List<String> belongs, ProjectRelatedPersonnel projectRelatedPersonnel, ProjectRelatedPersonnel original, ProjectLibraryBase projectLibraryBase) {
QueryWrapper<ProjectLawsInventoryEO> lawsInventoryWrapper = new QueryWrapper<>();
lawsInventoryWrapper.eq("project_library_id", projectId).eq("duty_territory", projectRelatedPersonnel.getDutyTerritory());
List<ProjectLawsInventoryEO> list = projectLawsInventoryEOService.list(lawsInventoryWrapper);
if (ObjectUtils.isNotEmpty(list)) {
for (ProjectLawsInventoryEO lawsInventoryEO : list) {
boolean boo = false;
//发起任务前
if (TaskAffirmStatusEnum.NOT_STARTED.getValue().equals(lawsInventoryEO.getTaskAffirmStatus())) {
boo = true;
}
//任务结束后
if (!boo) {
int count = 0;
QueryWrapper<ProjectTaskInventoryEO> taskInventoryQueryWrapper = new QueryWrapper<>();
taskInventoryQueryWrapper.eq("project_laws_inventory_id", lawsInventoryEO.getId());
List<ProjectTaskInventoryEO> taskInventoryRecords = projectTaskInventoryEOMapper.selectList(taskInventoryQueryWrapper);
for (ProjectTaskInventoryEO taskInventoryRecord : taskInventoryRecords) {
String designStatus = taskInventoryRecord.getDesignStatus();
String verifyStatus = taskInventoryRecord.getVerifyStatus();
String prehomoStatus = taskInventoryRecord.getPrehomoStatus();
boolean designStatusFlag = StringUtils.isBlank(designStatus) || designStatus.equals(DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue());
boolean verifyStatusFlag = StringUtils.isBlank(verifyStatus) || verifyStatus.equals(DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue());
boolean prehomoStatusFlag = StringUtils.isBlank(prehomoStatus) || prehomoStatus.equals(DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue());
if (designStatusFlag && verifyStatusFlag && prehomoStatusFlag) {
count++;
}
}
if (count == 3) {
boo = true;
}
}
if (boo) {
if (projectRelatedPersonnel.getLawEngineer() != null) {
//判断三个符合性确认的发起人跟责任人中是否有当前法规工程师且该用户不为相关人员名单中的认证工程师工程接口人studio
if (ObjectUtils.isNotEmpty(original.getLawEngineer())) {
StringBuilder participator = new StringBuilder();
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getEngineeringInterfacePerson())) {
participator.append(projectRelatedPersonnel.getEngineeringInterfacePerson() + ",");
}
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getCertificationEngineer())) {
participator.append(projectRelatedPersonnel.getCertificationEngineer() + ",");
}
if (ObjectUtils.isNotEmpty(projectLibraryBase)) {
participator.append(projectLibraryBase.getStudioEngineer());
}
for (String lawEngineer : original.getLawEngineer().split(",")) {
if (!projectRelatedPersonnel.getLawEngineer().contains(lawEngineer)) {
//删除法规清单中法规工程师权限
QueryWrapper<ProjectUserPermission> LawEngineerPermissionDel = new QueryWrapper<>();
LawEngineerPermissionDel.eq("project_id", projectRelatedPersonnel.getProjectId())
.eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryEO.getId())
.eq("belong", ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_REGULATION.getValue())
.eq("user_id", lawEngineer);
projectUserPermissionService.remove(LawEngineerPermissionDel);
//删除三个符合性确认中发起人/责任人权限
if (!participator.toString().contains(lawEngineer)) {
QueryWrapper<ProjectUserPermission> del = new QueryWrapper<>();
del.eq("project_id", projectLibraryBase.getId()).eq("user_id", lawEngineer).in("belong", belongs).
eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryEO.getId());
projectUserPermissionService.remove(del);
}
}
}
}
}
if (projectRelatedPersonnel.getEngineeringInterfacePerson() != null) {
//判断三个符合性确认的发起人跟责任人中是否有当前工程接口人且该用户不为相关人员名单中的法规工程师认证工程师studio
if (ObjectUtils.isNotEmpty(original.getEngineeringInterfacePerson())) {
StringBuilder participator = new StringBuilder();
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getLawEngineer())) {
participator.append(projectRelatedPersonnel.getLawEngineer() + ",");
}
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getCertificationEngineer())) {
participator.append(projectRelatedPersonnel.getCertificationEngineer() + ",");
}
if (ObjectUtils.isNotEmpty(projectLibraryBase)) {
participator.append(projectLibraryBase.getStudioEngineer());
}
for (String interfacePerson : original.getEngineeringInterfacePerson().split(",")) {
if (!projectRelatedPersonnel.getEngineeringInterfacePerson().contains(interfacePerson)) {
//删除法规清单中工程接口人权限
QueryWrapper<ProjectUserPermission> interfacePersonPermissionDel = new QueryWrapper<>();
interfacePersonPermissionDel.eq("project_id", projectRelatedPersonnel.getProjectId())
.eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryEO.getId())
.eq("belong", ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_INTERFACE.getValue())
.eq("user_id", interfacePerson);
projectUserPermissionService.remove(interfacePersonPermissionDel);
//删除三个符合性确认中发起人/责任人权限
if (!participator.toString().contains(interfacePerson)) {
QueryWrapper<ProjectUserPermission> del = new QueryWrapper<>();
del.eq("project_id", projectLibraryBase.getId()).eq("user_id", interfacePerson).in("belong", belongs).
eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryEO.getId());
projectUserPermissionService.remove(del);
}
}
}
}
}
if (projectRelatedPersonnel.getCertificationEngineer() != null) {
//判断三个符合性确认的发起人跟责任人中是否有当前认证工程师且该用户不为相关人员名单中的法规工程师工程接口人studio
if (ObjectUtils.isNotEmpty(original.getCertificationEngineer())) {
StringBuilder participator = new StringBuilder();
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getLawEngineer())) {
participator.append(projectRelatedPersonnel.getLawEngineer() + ",");
}
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getEngineeringInterfacePerson())) {
participator.append(projectRelatedPersonnel.getEngineeringInterfacePerson() + ",");
}
if (ObjectUtils.isNotEmpty(projectLibraryBase)) {
participator.append(projectLibraryBase.getStudioEngineer());
}
if (!projectRelatedPersonnel.getCertificationEngineer().equals(original.getCertificationEngineer())) {
//删除法规清单中认证工程师权限
QueryWrapper<ProjectUserPermission> certificationPermissionDel = new QueryWrapper<>();
certificationPermissionDel.eq("project_id", projectRelatedPersonnel.getProjectId())
.eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryEO.getId())
.eq("belong", ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_HOMOLOGATION.getValue())
.eq("user_id", original.getCertificationEngineer());
projectUserPermissionService.remove(certificationPermissionDel);
//删除三个符合性确认中发起人/责任人权限
if (!participator.toString().contains(original.getCertificationEngineer())) {
QueryWrapper<ProjectUserPermission> del = new QueryWrapper<>();
del.eq("project_id", projectLibraryBase.getId()).eq("user_id", original.getCertificationEngineer()).in("belong", belongs).
eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + lawsInventoryEO.getId());
projectUserPermissionService.remove(del);
}
}
}
}
}
}
}
}
/**
* 验证导入的相关人员
* @param userList 所有的用户
@@ -1303,22 +1613,86 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
@Override
public void setBatch(ProjectRelatedPersonnel projectRelatedPersonnel) {
List<ProjectRelatedPersonnel> projectRelatedPersonnelList = new ArrayList<>();
List<ProjectUserPermission> addPermissionList = new ArrayList<>();
String projectId = "";
ProjectRelatedPersonnel personnel = baseMapper.selectById(projectRelatedPersonnel.getIds().split(",")[0]);
if (ObjectUtils.isNotEmpty(personnel)) {
projectId = personnel.getProjectId();
}
ProjectLibraryBase projectLibraryBase = projectLibraryBaseMapper.selectById(projectId);
//修改当前属于当前责任领域的法规清单的人员权限
List<String> belongs = new ArrayList<>();
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_DUTY.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_DUTY.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR.getValue());
belongs.add(ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_DUTY.getValue());
Date now = new Date();
for (String id : projectRelatedPersonnel.getIds().split(",")) {
ProjectRelatedPersonnel projectRelatedPersonnelTemp = new ProjectRelatedPersonnel();
projectRelatedPersonnelTemp.setId(id);
projectRelatedPersonnelTemp.setUpdateTime(new Date());
projectRelatedPersonnelTemp.setUpdateTime(now);
if(org.apache.commons.lang3.StringUtils.isNotBlank(projectRelatedPersonnel.getLawEngineer())){
projectRelatedPersonnelTemp.setLawEngineer(projectRelatedPersonnel.getLawEngineer());
for (String lawEngineerId : projectRelatedPersonnel.getLawEngineer().split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setUserId(lawEngineerId);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + id);
permission.setCreateTime(now);
permission.setUpdateTime(now);
addPermissionList.add(permission);
}
QueryWrapper<ProjectUserPermission> delPermissionQueryWrapper= new QueryWrapper<>();
delPermissionQueryWrapper.eq("project_id", projectId).eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW.getValue()).eq("description", PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + id);
projectUserPermissionService.remove(delPermissionQueryWrapper);
}
if(org.apache.commons.lang3.StringUtils.isNotBlank(projectRelatedPersonnel.getEngineeringInterfacePerson())){
projectRelatedPersonnelTemp.setEngineeringInterfacePerson(projectRelatedPersonnel.getEngineeringInterfacePerson());
for (String engineeringInterfacePersonId : projectRelatedPersonnel.getEngineeringInterfacePerson().split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setUserId(engineeringInterfacePersonId);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_INTERFACE.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + id);
permission.setCreateTime(now);
permission.setUpdateTime(now);
addPermissionList.add(permission);
}
QueryWrapper<ProjectUserPermission> delPermissionQueryWrapper= new QueryWrapper<>();
delPermissionQueryWrapper.eq("project_id", projectId).eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_INTERFACE.getValue()).eq("description", PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + id);
projectUserPermissionService.remove(delPermissionQueryWrapper);
}
if(org.apache.commons.lang3.StringUtils.isNotBlank(projectRelatedPersonnel.getCertificationEngineer())){
projectRelatedPersonnelTemp.setCertificationEngineer(projectRelatedPersonnel.getCertificationEngineer());
for (String certificationEngineerId : projectRelatedPersonnel.getCertificationEngineer().split(",")) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setUserId(certificationEngineerId);
permission.setBelong(ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION.getValue());
permission.setDescription(PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + id);
permission.setCreateTime(now);
permission.setUpdateTime(now);
addPermissionList.add(permission);
}
QueryWrapper<ProjectUserPermission> delPermissionQueryWrapper= new QueryWrapper<>();
delPermissionQueryWrapper.eq("project_id", projectId).eq("belong", ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION.getValue()).eq("description", PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + id);
projectUserPermissionService.remove(delPermissionQueryWrapper);
}
projectRelatedPersonnelList.add(projectRelatedPersonnelTemp);
//修改当前属于当前责任领域的法规清单的人员权限
ProjectRelatedPersonnel original = baseMapper.selectById(projectRelatedPersonnel.getId());
setLawsInventoryPermission(projectRelatedPersonnel.getProjectId(), belongs, projectRelatedPersonnel, original, projectLibraryBase);
}
this.updateBatchById(projectRelatedPersonnelList);
if (ObjectUtils.isNotEmpty(addPermissionList)) {
projectUserPermissionService.saveBatch(addPermissionList);
}
}
}
@@ -18,19 +18,18 @@ import com.jero.modules.feishu.service.IFeishuService;
import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.feishu.vo.FeishuMsgVo;
import com.jero.modules.project.entity.*;
import com.jero.modules.project.enums.JumpLinkEnum;
import com.jero.modules.project.enums.MsgTypeEnum;
import com.jero.modules.project.enums.SendMsgFlagEnum;
import com.jero.modules.project.enums.TaskStatusEnum;
import com.jero.modules.project.enums.*;
import com.jero.modules.project.mapper.*;
import com.jero.modules.project.service.IFeedbackHistoryService;
import com.jero.modules.project.service.IProjectTaskInventoryDetailEOService;
import com.jero.modules.project.service.IProjectTaskInventoryFeedbackEOService;
import com.jero.modules.project.service.IProjectUserPermissionService;
import com.jero.modules.project.util.SendMessageUtils;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.todoCenter.entity.ProcessInfoDetailEO;
import com.jero.modules.todoCenter.service.IProcessInfoDetailEOService;
import com.jero.modules.wkflow.enums.FlowTypeEnum;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.ObjectUtils;
@@ -85,6 +84,9 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl<Project
@Autowired
private IFeishuService feishuService;
@Autowired
private IProjectUserPermissionService projectUserPermissionService;
/**
* 保存
*
@@ -93,6 +95,8 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl<Project
*/
@Override
public void add(JSONObject jsonObject) {
String projectTaskInventoryId = jsonObject.getString("projectTaskInventoryId");
ProjectLawsInventoryEO lawsInventoryEO = projectLawsInventoryEOMapper.selectById(projectTaskInventoryId);
String cut = jsonObject.getString("cut");
ProjectTaskInventoryDetailEO taskInventoryDetail = JSONObject.parseObject(JSONObject.toJSONString(jsonObject), ProjectTaskInventoryDetailEO.class);
@@ -206,6 +210,35 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl<Project
if(CollectionUtils.isNotEmpty(sendUserIdList)){
sendMessage(taskInventoryDetail,sendUserIdList);
}
//添加访问权限
if (ObjectUtils.isNotEmpty(lawsInventoryEO)) {
Date now = new Date();
List<ProjectUserPermission> adds = new ArrayList<>();
String belong = "";
String msgType = jsonObject.getString("msgType");
if (MsgTypeEnum.DESIGN_ISSUE_DRE_MSG.getValue().equals(msgType)) {
belong = ProjectUserLocationEnum.PROJECT_LAWS_DESIGN_DISTRIBUTION.getValue();
} else if (MsgTypeEnum.PREHOMO_ISSUE_DRE_MSG.getValue().equals(msgType)) {
belong = ProjectUserLocationEnum.PROJECT_LAWS_PREHOMO_DISTRIBUTION.getValue();
} else if (MsgTypeEnum.VERIFY_ISSUE_DRE_MSG.getValue().equals(msgType)) {
belong = ProjectUserLocationEnum.PROJECT_LAWS_VERIFY_DISTRIBUTION.getValue();
}
for (String userId : userIdList) {
ProjectUserPermission projectUserPermission = new ProjectUserPermission();
projectUserPermission.setProjectId(lawsInventoryEO.getProjectLibraryId());
projectUserPermission.setUserId(userId);
projectUserPermission.setBelong(belong);
projectUserPermission.setDescription(PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectTaskInventoryId);
projectUserPermission.setCreateTime(now);
projectUserPermission.setUpdateTime(now);
adds.add(projectUserPermission);
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
}
}
if(CollectionUtils.isNotEmpty(projectTaskInventoryDetailEOUpdateList)){
@@ -271,6 +304,21 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl<Project
processInfoDetailRemoveWrap.lambda().eq(ProcessInfoDetailEO::getTaskId,projectTaskInventoryDetailEO.getTaskId());
this.processInfoDetailEOService.remove(processInfoDetailRemoveWrap);
}
//删除权限
String belong = "";
if (FlowTypeEnum.SJFHXSHLC.getValue().equals(projectTaskInventoryDetailEO.getFlowType())) {
belong = ProjectUserLocationEnum.PROJECT_LAWS_DESIGN_DISTRIBUTION.getValue();
} else if (FlowTypeEnum.PREHOMOQRLC.getValue().equals(projectTaskInventoryDetailEO.getFlowType())) {
belong = ProjectUserLocationEnum.PROJECT_LAWS_PREHOMO_DISTRIBUTION.getValue();
} else if (FlowTypeEnum.YZFHXSCLC.getValue().equals(projectTaskInventoryDetailEO.getFlowType())) {
belong = ProjectUserLocationEnum.PROJECT_LAWS_VERIFY_DISTRIBUTION.getValue();
}
String userId = projectTaskInventoryDetailEO.getUserId();
QueryWrapper<ProjectUserPermission> delPermission = new QueryWrapper<>();
delPermission.eq("user_id", userId)
.eq("belong", belong)
.eq("description", PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectTaskInventoryDetailEO.getProjectTaskInventoryId());
projectUserPermissionService.remove(delPermission);
}
/**
@@ -29,6 +29,7 @@ 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.mapper.SysUserMapper;
import com.jero.modules.system.service.IProjectUserDutyTerritoryService;
import com.jero.modules.system.service.ISysUserRoleService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
@@ -105,6 +106,8 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
private ISysUserService sysUserService;
@Autowired
private IFeishuService feishuService;
@Autowired
private IProjectUserDutyTerritoryService projectUserDutyTerritoryService;
/**
* 保存
@@ -218,6 +221,18 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
}
List<ProjectLawsInventoryEO> projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(lawsInventoryEOQueryWrapper);
//不是管理员但是viewer
boolean administrator = sysUserService.isAdministrator();
boolean viewer = sysUserService.isViewer(currentUser.getId());
if (!administrator && viewer) {
//筛选符合条件的
List<String> dutyTerritoryList = projectUserDutyTerritoryService.queryDutyTerritoryByUserId(currentUser.getId());
if (ObjectUtils.isNotEmpty(dutyTerritoryList)) {
projectLawsInventoryEOList = projectLawsInventoryEOList.stream().filter(e -> dutyTerritoryList.contains(e.getDutyTerritory())).collect(Collectors.toList());
} else {
return result;
}
}
if(CollectionUtils.isNotEmpty(projectLawsInventoryEOList)){
List<String> projectLawsInventoryIdList = projectLawsInventoryEOList.stream().distinct().map(ProjectLawsInventoryEO::getId).collect(Collectors.toList());
@@ -672,7 +687,8 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
{
//判断用户是否是管理员角色
boolean isAdministrator = false;
//判断用户是否是Viewer
boolean isViewer = sysUserService.isViewer(currentUser.getId());
//2022-08-24 判断当前登录用户是否是系统管理员 R&H Manager角色如果是的话看到的数据与studio一致
List<SysUserRole> userRoleList = this.sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, currentUser.getId())); // 查询用户所有角色
if(CollectionUtils.isNotEmpty(userRoleList)){
@@ -709,7 +725,7 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
//是否是这条数据的认证工程师
boolean isHomologationEngineer = StringUtils.equals(projectTaskInventoryEO.getHomologationEngineerId(),currentUser.getId());
//是否是studio
boolean isStudio = StringUtils.equals(ProjectRoleEnum.STUDIO_ENGINEER.getValue(),String.valueOf(isProjectRole)) || isAdministrator;
boolean isStudio = StringUtils.equals(ProjectRoleEnum.STUDIO_ENGINEER.getValue(),String.valueOf(isProjectRole)) || isAdministrator ;
if(isStudio){
roleCode = ProjectRoleEnum.STUDIO_ENGINEER.getValue();
}
@@ -777,27 +793,27 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
* 2022-07-07修改禅道 55588问题 只有studio可以查看所有已经启动了的流程
* studio查询所有已启动流程的数据 包含自己待办已办
*/
if(isStudio || (showVerify || showDesign || showPrehomo)){
if (isStudio || (showVerify || showDesign || showPrehomo) || isViewer) {
actiProcInstId = projectTaskInventoryDetailEO.getActiProcInstId();
if(isStudio || showDesign){
if(StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(),FlowTypeEnum.SJFHXSHLC.getValue())){
if (isStudio || showDesign || isViewer) {
if (StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(), FlowTypeEnum.SJFHXSHLC.getValue())) {
designPid = actiProcInstId;
if(StringUtils.equals(currentUser.getId(),projectTaskInventoryDetailEO.getUserId())){
if (StringUtils.equals(currentUser.getId(), projectTaskInventoryDetailEO.getUserId())) {
designTaskId = projectTaskInventoryDetailEO.getTaskId();
designTaskStatus = projectTaskInventoryDetailEO.getStatus();
designTaskDefinitionKey = projectTaskInventoryDetailEO.getTaskDefinitionKey();
designTaskDetailId = projectTaskInventoryDetailEO.getId();
}else {
if(StringUtils.isEmpty(designTaskId)){
} else {
if (StringUtils.isEmpty(designTaskId)) {
designTaskId = projectTaskInventoryDetailEO.getTaskId();
}
if(StringUtils.isEmpty(designTaskStatus)){
if (StringUtils.isEmpty(designTaskStatus)) {
designTaskStatus = TaskStatusEnum.SHOW_FLAG.getValue();
}
if(StringUtils.isEmpty(designTaskDefinitionKey)){
if (StringUtils.isEmpty(designTaskDefinitionKey)) {
designTaskDefinitionKey = "";
}
if(StringUtils.isEmpty(designTaskDetailId)){
if (StringUtils.isEmpty(designTaskDetailId)) {
designTaskDetailId = projectTaskInventoryDetailEO.getId();
}
}
@@ -809,25 +825,25 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
projectTaskInventoryEO.setDesignTaskDetailId(designTaskDetailId);
}
}
if(isStudio || showPrehomo){
if(StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(),FlowTypeEnum.PREHOMOQRLC.getValue())){
if (isStudio || showPrehomo || isViewer) {
if (StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(), FlowTypeEnum.PREHOMOQRLC.getValue())) {
prehomoPid = actiProcInstId;
if(StringUtils.equals(currentUser.getId(),projectTaskInventoryDetailEO.getUserId())){
if (StringUtils.equals(currentUser.getId(), projectTaskInventoryDetailEO.getUserId())) {
prehomoTaskId = projectTaskInventoryDetailEO.getTaskId();
prehomoTaskStatus = projectTaskInventoryDetailEO.getStatus();
prehomoTaskDefinitionKey = projectTaskInventoryDetailEO.getTaskDefinitionKey();
prehomoTaskDetailId = projectTaskInventoryDetailEO.getId();
}else {
if(StringUtils.isEmpty(prehomoTaskId)){
} else {
if (StringUtils.isEmpty(prehomoTaskId)) {
prehomoTaskId = projectTaskInventoryDetailEO.getTaskId();
}
if(StringUtils.isEmpty(prehomoTaskStatus)){
if (StringUtils.isEmpty(prehomoTaskStatus)) {
prehomoTaskStatus = TaskStatusEnum.SHOW_FLAG.getValue();
}
if(StringUtils.isEmpty(prehomoTaskDefinitionKey)){
if (StringUtils.isEmpty(prehomoTaskDefinitionKey)) {
prehomoTaskDefinitionKey = "";
}
if(StringUtils.isEmpty(prehomoTaskDetailId)){
if (StringUtils.isEmpty(prehomoTaskDetailId)) {
prehomoTaskDetailId = projectTaskInventoryDetailEO.getId();
}
}
@@ -839,25 +855,25 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
projectTaskInventoryEO.setPrehomoTaskDetailId(prehomoTaskDetailId);
}
}
if(isStudio || showVerify){
if(StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(),FlowTypeEnum.YZFHXSCLC.getValue())){
if (isStudio || showVerify || isViewer) {
if (StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(), FlowTypeEnum.YZFHXSCLC.getValue())) {
verifyPid = actiProcInstId;
if(StringUtils.equals(currentUser.getId(),projectTaskInventoryDetailEO.getUserId())){
if (StringUtils.equals(currentUser.getId(), projectTaskInventoryDetailEO.getUserId())) {
verifyTaskId = projectTaskInventoryDetailEO.getTaskId();
verifyTaskStatus = projectTaskInventoryDetailEO.getStatus();
verifyTaskDefinitionKey = projectTaskInventoryDetailEO.getTaskDefinitionKey();
verifyTaskDetailId = projectTaskInventoryDetailEO.getId();
}else {
if(StringUtils.isEmpty(verifyTaskId)){
} else {
if (StringUtils.isEmpty(verifyTaskId)) {
verifyTaskId = projectTaskInventoryDetailEO.getTaskId();
}
if(StringUtils.isEmpty(verifyTaskStatus)){
if (StringUtils.isEmpty(verifyTaskStatus)) {
verifyTaskStatus = TaskStatusEnum.SHOW_FLAG.getValue();
}
if(StringUtils.isEmpty(verifyTaskDefinitionKey)){
if (StringUtils.isEmpty(verifyTaskDefinitionKey)) {
verifyTaskDefinitionKey = "";
}
if(StringUtils.isEmpty(verifyTaskDetailId)){
if (StringUtils.isEmpty(verifyTaskDetailId)) {
verifyTaskDetailId = projectTaskInventoryDetailEO.getId();
}
}
@@ -869,34 +885,34 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
projectTaskInventoryEO.setVerifyTaskDetailId(verifyTaskDetailId);
}
}
if(isStudio){
if (isStudio) {
projectTaskInventoryEO.setCertificationProgress(projectTaskInventoryEO.getCertificationProgress());
projectTaskInventoryEO.setCertificationProgressRemark(projectTaskInventoryEO.getCertificationProgressRemark());
}
}else {
if((isRegulationOwner || isHomologationEngineer)){
} else {
if ((isRegulationOwner || isHomologationEngineer)) {
projectTaskInventoryEO.setCertificationProgress(projectTaskInventoryEO.getCertificationProgress());
projectTaskInventoryEO.setCertificationProgressRemark(projectTaskInventoryEO.getCertificationProgressRemark());
}else {
} else {
projectTaskInventoryEO.setCertificationProgress("");
projectTaskInventoryEO.setCertificationProgressRemark("");
}
if(StringUtils.equals(currentUser.getId(),projectTaskInventoryDetailEO.getUserId())){
if (StringUtils.equals(currentUser.getId(), projectTaskInventoryDetailEO.getUserId())) {
actiProcInstId = projectTaskInventoryDetailEO.getActiProcInstId();
if(StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(),FlowTypeEnum.SJFHXSHLC.getValue())){
if (StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(), FlowTypeEnum.SJFHXSHLC.getValue())) {
projectTaskInventoryEO.setDesignPId(actiProcInstId);
projectTaskInventoryEO.setDesignTaskId(projectTaskInventoryDetailEO.getTaskId());
projectTaskInventoryEO.setDesignTaskStatus(projectTaskInventoryDetailEO.getStatus());
projectTaskInventoryEO.setDesignTaskDefinitionKey(projectTaskInventoryDetailEO.getTaskDefinitionKey());
projectTaskInventoryEO.setDesignTaskDetailId(projectTaskInventoryDetailEO.getId());
}else if(StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(),FlowTypeEnum.PREHOMOQRLC.getValue())){
} else if (StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(), FlowTypeEnum.PREHOMOQRLC.getValue())) {
projectTaskInventoryEO.setPrehomoPId(actiProcInstId);
projectTaskInventoryEO.setPrehomoTaskId(projectTaskInventoryDetailEO.getTaskId());
projectTaskInventoryEO.setPrehomoTaskStatus(projectTaskInventoryDetailEO.getStatus());
projectTaskInventoryEO.setPrehomoTaskDefinitionKey(projectTaskInventoryDetailEO.getTaskDefinitionKey());
projectTaskInventoryEO.setPrehomoTaskDetailId(projectTaskInventoryDetailEO.getId());
}else if(StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(),FlowTypeEnum.YZFHXSCLC.getValue())){
} else if (StringUtils.equals(projectTaskInventoryDetailEO.getFlowType(), FlowTypeEnum.YZFHXSCLC.getValue())) {
projectTaskInventoryEO.setVerifyPId(actiProcInstId);
projectTaskInventoryEO.setVerifyTaskId(projectTaskInventoryDetailEO.getTaskId());
projectTaskInventoryEO.setVerifyTaskStatus(projectTaskInventoryDetailEO.getStatus());
@@ -910,7 +926,7 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
}
/*if(StringUtils.isNotEmpty(actiProcInstId) && (isRegulationOwner || isHomologationEngineer || isStudio)){*/
if(((isRegulationOwner || isHomologationEngineer || isStudio) || (showVerify || showDesign || showPrehomo))){
if (((isRegulationOwner || isHomologationEngineer || isStudio) || (showVerify || showDesign || showPrehomo)) || isViewer) {
projectTaskInventoryEO.setShowFlag(TaskStatusEnum.SHOW_FLAG.getValue());
}
@@ -0,0 +1,312 @@
package com.jero.modules.project.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.modules.cert.collect.entity.ParamsCollectManifestEO;
import com.jero.modules.cert.collect.mapper.ParamsCollectManifestEOMapper;
import com.jero.modules.project.entity.*;
import com.jero.modules.project.enums.PermissionDescriptionEnum;
import com.jero.modules.project.enums.ProjectUserLocationEnum;
import com.jero.modules.project.mapper.ProjectUserPermissionMapper;
import com.jero.modules.project.service.*;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.wkflow.enums.DesignComplianceNodeEnum;
import com.jero.modules.wkflow.enums.FlowTypeEnum;
import com.jero.modules.wkflow.feginClient.WorkFlowFeignClient;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import java.util.Set;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 项目权限表
* @Author: jero-boot
* @Date: 2022-11-10
* @Version: V1.0
*/
@Service
public class ProjectUserPermissionServiceImpl extends ServiceImpl<ProjectUserPermissionMapper, ProjectUserPermission> implements IProjectUserPermissionService {
@Autowired
private ISysUserService sysUserService;
@Autowired
private IProjectLibraryBaseService projectLibraryBaseService;
@Autowired
private IProjectRelatedPersonnelService projectRelatedPersonnelService;
@Autowired
private IProjectLawsInventoryEOService projectLawsInventoryEOService;
@Autowired
private ParamsCollectManifestEOMapper paramsCollectManifestEOMapper;
@Autowired
private IProjectTaskInventoryDetailEOService projectTaskInventoryDetailEOService;
@Autowired
private WorkFlowFeignClient workFlowFeignClient;
/**
* 保存
*
* @param projectUserPermission
* @return
*/
@Override
public void add(ProjectUserPermission projectUserPermission) {
Date now = new Date();
projectUserPermission.setCreateTime(now);
projectUserPermission.setUpdateTime(now);
save(projectUserPermission);
}
/**
* 更新
*
* @param projectUserPermission
* @return
*/
@Override
public void editById(ProjectUserPermission projectUserPermission) {
Date now = new Date();
projectUserPermission.setUpdateTime(now);
saveOrUpdate(projectUserPermission);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProjectUserPermission queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
@Override
public List<ProjectUserPermission> queryList() {
return list();
}
/**
* 工作流调用设置权限
* @param jsonObject
* @return
*/
@Override
public Result<?> setPermission(JSONObject jsonObject) {
Date now = new Date();
QueryWrapper<ProjectUserPermission> permissionQueryWrapper = new QueryWrapper<>();
permissionQueryWrapper.eq("project_id",jsonObject.getString("projectLibraryId") )
.eq("user_id",jsonObject.getString("userId") )
.eq("belong", jsonObject.getString("belong"))
.eq("description",jsonObject.getString("description"));
if (ObjectUtils.isEmpty(list(permissionQueryWrapper))) {
ProjectUserPermission projectUserPermission = new ProjectUserPermission();
projectUserPermission.setDescription(jsonObject.getString("description"));
projectUserPermission.setBelong(jsonObject.getString("belong"));
projectUserPermission.setUserId(jsonObject.getString("userId"));
projectUserPermission.setProjectId(jsonObject.getString("projectLibraryId"));
projectUserPermission.setCreateTime(now);
projectUserPermission.setUpdateTime(now);
SysUser sysUser = sysUserService.getById(jsonObject.getString("currentUserId"));
projectUserPermission.setCreateBy(ObjectUtils.isEmpty(sysUser)?"":sysUser.getUsername());
projectUserPermission.setUpdateBy(ObjectUtils.isEmpty(sysUser)?"":sysUser.getUsername());
save(projectUserPermission);
}
return new Result<>().success("调用成功!");
}
/**
* 权限同步
*/
@Override
public void sync() {
List<ProjectUserPermission> adds = new ArrayList<>();
Date now = new Date();
List<ProjectLibraryBase> projects = projectLibraryBaseService.list();
if (ObjectUtils.isNotEmpty(projects)) {
for (ProjectLibraryBase project : projects) {
//项目详情 编辑
if (ObjectUtils.isNotEmpty(project.getStudioEngineer())) {
createPermission(project.getId(), project.getStudioEngineer(), ProjectUserLocationEnum.PROJECT_ADD_STUDIO.getValue(), null, now, adds);
}
if (ObjectUtils.isNotEmpty(project.getCertificationEngineer())) {
for (String id : project.getCertificationEngineer().split(",")) {
createPermission(project.getId(), id, ProjectUserLocationEnum.PROJECT_ADD_CERTIFICATION.getValue(), null, now, adds);
}
}
//项目详情 相关人员名单
QueryWrapper<ProjectRelatedPersonnel> personnelQueryWrapper = new QueryWrapper<>();
personnelQueryWrapper.eq("project_id", project.getId());
List<ProjectRelatedPersonnel> projectRelatedPersonnels = projectRelatedPersonnelService.list(personnelQueryWrapper);
if (ObjectUtils.isNotEmpty(projectRelatedPersonnels)) {
for (ProjectRelatedPersonnel projectRelatedPersonnel : projectRelatedPersonnels) {
//法规工程师
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getLawEngineer())) {
for (String lawEngineerId : projectRelatedPersonnel.getLawEngineer().split(",")) {
createPermission(project.getId(), lawEngineerId, ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_LAW.getValue(), PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + projectRelatedPersonnel.getId(), now, adds);
}
}
//工程接口人
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getEngineeringInterfacePerson())) {
for (String engineeringInterfacePersonId : projectRelatedPersonnel.getEngineeringInterfacePerson().split(",")) {
createPermission(project.getId(), engineeringInterfacePersonId, ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_INTERFACE.getValue(), PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + projectRelatedPersonnel.getId(), now, adds);
}
}
//认证工程师
if (ObjectUtils.isNotEmpty(projectRelatedPersonnel.getCertificationEngineer())) {
for (String certificationEngineerId : projectRelatedPersonnel.getCertificationEngineer().split(",")) {
createPermission(project.getId(), certificationEngineerId, ProjectUserLocationEnum.PROJECT_DETAIL_RELEVANT_PERSONNEL_CERTIFICATION.getValue(), PermissionDescriptionEnum.PROJECT_RELATED_PERSONNEL.getValue() + projectRelatedPersonnel.getId(), now, adds);
}
}
}
}
//法规清单
QueryWrapper<ProjectLawsInventoryEO> lawsInventoryEOQueryWrapper = new QueryWrapper<>();
lawsInventoryEOQueryWrapper.eq("project_library_id", project.getId());
List<ProjectLawsInventoryEO> projectLawsInventoryEOS = projectLawsInventoryEOService.list(lawsInventoryEOQueryWrapper);
for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOS) {
//创建人
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getCreateBy())) {
SysUser creater = sysUserService.getUserByName(projectLawsInventoryEO.getCreateBy());
if (ObjectUtils.isNotEmpty(creater)) {
createPermission(project.getId(), creater.getId(), ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_CREATE_BY.getValue(), PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
}
//法规工程师名称
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId())) {
createPermission(project.getId(),projectLawsInventoryEO.getRegulationOwnerId(),ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_REGULATION.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
//认证工程师
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId())) {
createPermission(project.getId(),projectLawsInventoryEO.getHomologationEngineerId(),ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_HOMOLOGATION.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
//工程接口人
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) {
createPermission(project.getId(),projectLawsInventoryEO.getEngineeringInterfacePerson(),ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_INTERFACE.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
//三个符合性认证发起人和责任人
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getDesignInitiatorId())) {
createPermission(project.getId(),projectLawsInventoryEO.getDesignInitiatorId(),ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())) {
createPermission(project.getId(),projectLawsInventoryEO.getDesignDutyId(),ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_DUTY.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoInitiatorId())) {
createPermission(project.getId(),projectLawsInventoryEO.getPrehomoInitiatorId(),ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())) {
createPermission(project.getId(),projectLawsInventoryEO.getPrehomoDutyId(),ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_DUTY.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyInitiatorId())) {
createPermission(project.getId(),projectLawsInventoryEO.getVerifyInitiatorId(),ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyDutyId())) {
createPermission(project.getId(),projectLawsInventoryEO.getVerifyDutyId(),ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_DUTY.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
//任务确认询问
Set<String> engineers = workFlowFeignClient.getTaskConfirmAskedEngineer(project.getId());
if (ObjectUtils.isNotEmpty(engineers)) {
for (String engineer : engineers) {
createPermission(project.getId(),engineer,ProjectUserLocationEnum.PROJECT_LAWS_TASK_AFFIRM_INQUIRE.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
}
//分发工程师
QueryWrapper<ProjectTaskInventoryDetailEO> taskInventoryDetailEOQueryWrapper = new QueryWrapper<>();
taskInventoryDetailEOQueryWrapper.eq("project_task_inventory_id", project.getId()).eq("task_definition_key", DesignComplianceNodeEnum.DRE_DISPOSE.getKey());
List<ProjectTaskInventoryDetailEO> taskInventoryDetailEOS = projectTaskInventoryDetailEOService.list(taskInventoryDetailEOQueryWrapper);
if (ObjectUtils.isNotEmpty(taskInventoryDetailEOS)) {
for (ProjectTaskInventoryDetailEO taskInventoryDetailEO : taskInventoryDetailEOS) {
if (FlowTypeEnum.SJFHXSHLC.getValue().equals(taskInventoryDetailEO.getFlowType())) {
createPermission(project.getId(),taskInventoryDetailEO.getUserId(),ProjectUserLocationEnum.PROJECT_LAWS_DESIGN_DISTRIBUTION.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
} else if (FlowTypeEnum.PREHOMOQRLC.getValue().equals(taskInventoryDetailEO.getFlowType())) {
createPermission(project.getId(),taskInventoryDetailEO.getUserId(),ProjectUserLocationEnum.PROJECT_LAWS_PREHOMO_DISTRIBUTION.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
} else if (FlowTypeEnum.YZFHXSCLC.getValue().equals(taskInventoryDetailEO.getFlowType())) {
createPermission(project.getId(),taskInventoryDetailEO.getUserId(),ProjectUserLocationEnum.PROJECT_LAWS_VERIFY_DISTRIBUTION.getValue(),PermissionDescriptionEnum.PROJECT_LAWS_INVENTORY.getValue() + projectLawsInventoryEO.getId(), now, adds);
}
}
}
}
//认证参数
List<ParamsCollectManifestEO> paramsCollectManifestEOS = paramsCollectManifestEOMapper.queryByProjectId(project.getId());
if (ObjectUtils.isNotEmpty(paramsCollectManifestEOS)) {
for (ParamsCollectManifestEO paramsCollectManifestEO : paramsCollectManifestEOS) {
if (ObjectUtils.isNotEmpty(paramsCollectManifestEO.getDre())) {
SysUser dre = sysUserService.getUserByName(paramsCollectManifestEO.getDre());
if (ObjectUtils.isNotEmpty(dre)) {
createPermission(project.getId(),dre.getId(),ProjectUserLocationEnum.PROJECT_PARAMS_COLLECT_MANIFEST_DRE.getValue(),PermissionDescriptionEnum.PARAMS_COLLECT_MANIFEST.getValue() + paramsCollectManifestEO.getId(), now, adds);
}
}
if (ObjectUtils.isNotEmpty(paramsCollectManifestEO.getSdt())) {
SysUser sdt = sysUserService.getUserByName(paramsCollectManifestEO.getSdt());
if (ObjectUtils.isNotEmpty(sdt)) {
createPermission(project.getId(),sdt.getId(),ProjectUserLocationEnum.PROJECT_PARAMS_COLLECT_MANIFEST_SDT.getValue(),PermissionDescriptionEnum.PARAMS_COLLECT_MANIFEST.getValue() + paramsCollectManifestEO.getId(), now, adds);
}
}
}
}
}
}
//将当前SQL表清空
remove(new QueryWrapper<>());
//重新添加
if (ObjectUtils.isNotEmpty(adds)) {
saveBatch(adds);
}
}
private void createPermission(String projectId,String userId,String belong,String description,Date now,List<ProjectUserPermission> permissionList) {
ProjectUserPermission permission = new ProjectUserPermission();
permission.setProjectId(projectId);
permission.setBelong(belong);
if (ObjectUtils.isNotEmpty(description)) {
permission.setDescription(description);
}
permission.setUserId(userId);
permission.setCreateTime(now);
permission.setUpdateTime(now);
permissionList.add(permission);
}
}
@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
import java.util.Set;
@FeignClient(value = "weilai-wkflow")
public interface WorkFlowFeignClient {
@@ -202,5 +203,6 @@ public interface WorkFlowFeignClient {
@RequestMapping(value = "/bat-wkflow/task/getTaskInfo",method = RequestMethod.GET)
Map<String, String> getTaskInfo(@RequestParam("actiProcInstId") String actiProcInstId);
@RequestMapping(value = "/bat-wkflow/task/getTaskConfirmAskedEngineer",method = RequestMethod.GET)
Set<String> getTaskConfirmAskedEngineer(@RequestParam("projectLawInventoryId")String projectLawInventoryId);
}
@@ -130,22 +130,17 @@ spring:
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
master:
# url: jdbc:mysql://localhost:3306/laws_weilai_stand?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
# username: root
# password: 123456
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://10.0.3.44:3306/jero-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
# url: jdbc:mysql://10.10.10.44:3306/laws_weilai?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
# username: root
# password: 123456
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://121.36.69.172:3307/laws_weilai?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
url: jdbc:mysql://121.36.69.172:3307/laws_weilai?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
url: jdbc:mysql://121.36.69.172:3307/laws_weilai?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
username: root
password: hzwlsoft.com
driver-class-name: com.mysql.cj.jdbc.Driver
# 10测试环境库
#url: jdbc:mysql://10.10.10.44:3306/laws_weilai?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
#username: root
#password: 123456
#driver-class-name: com.mysql.cj.jdbc.Driver
# 多数据源配置
#multi-datasource1:
#url: jdbc:mysql://localhost:3306/jero-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
@@ -436,7 +431,8 @@ Feishu:
getTenantAccessTokenUrl: https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
batchSendMessageUrl: https://open.feishu.cn/open-apis/message/v4/batch_send/
translateTextUrl: https://open.feishu.cn/open-apis/translation/v1/text/translate
getUserInfoUrl: https://open.feishu.cn/open-apis/contact/v3/users/batch_get_id?user_id_type=open_id
appLinkUrl: https://applink.feishu.cn/client/chat/open?openId=
local-tool:
uri: http://139.9.235.66:9022
opensso:
+2
View File
@@ -12,6 +12,7 @@ const queryall = (params)=>getAction("/sys/role/queryall",params);
const addUser = (params)=>postAction("/sys/user/add",params);
const editUser = (params)=>putAction("/sys/user/edit",params);
const queryUserRole = (params)=>getAction("/sys/user/queryUserRole",params);
const queryViewerInfo = (params)=>getAction("/sys/user/queryViewerInfo",params);
const getUserList = (params)=>getAction("/sys/user/page",params);
const frozenBatch = (params)=>putAction("/sys/user/frozenBatch",params);
//验证用户是否存在
@@ -106,6 +107,7 @@ export {
addUser,
editUser,
queryUserRole,
queryViewerInfo,
getUserList,
queryall,
frozenBatch,
Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

+3
View File
@@ -1364,6 +1364,9 @@ module.exports = {
relatedProjectVersion:'Related project version',
Importfailure:'Import failure',
CuiBan:'CuiBan',
brand:'Brand',
allsubitemsitem:'Whether to delete all subitems under this item',
contactTheFounder:'Contact the founder',
certificationCategoryNumber: 'certification Category Number',
historicalrecord:'historical Record',
Referenceparametercolumn:'Reference Parameter Column',
+3
View File
@@ -1471,4 +1471,7 @@ module.exports = {
Updateparametercolumn:'更新参数列',
columnfirst:'请先引用参数列',
columnforced:'确认强制撤回?',
brand:'品牌',
allsubitemsitem:'该项目下拥有子项目是否全部删除',
contactTheFounder:'联系创建人',
}
@@ -100,6 +100,20 @@
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text" :title="$t('brand')">
<span class="Required">*</span>
<span class="title-text-text">{{$t('brand')}}</span>
</div>
<a-form-model-item class="itemModel propbox" prop="brands">
<j-multi-select-tag class="box-input" v-model="formInline.brands"
:placeholder="$t('PleaseSelect')+$t('brand')"
:type="'select'"
:triggerChange="false" :dictCode="'brand'"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
<footerProcess
@@ -164,6 +178,13 @@
trigger: 'change'
}
],
brands: [
{
required: true,
message: this.$t('brand') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
taskExplain: [
{
max: 300,
@@ -326,6 +347,11 @@
this.$message.warning(this.$t('pleaseSelectStandard'))
} else {
this.JLoading = true
Object.keys(this.formInline).forEach(val => {
if (this.formInline[val] instanceof Array) {
this.formInline[val] = this.formInline[val].join(',')
}
})
let value = Object.assign(this.formInline, this.selectedRowKeysRecord[0])
value.standId = value.id
value.taskAffirmDueDate = value.endTime
@@ -398,6 +424,9 @@
</script>
<style scoped>
/deep/.propbox .ant-form-explain{
margin-top: -17px !important;
}
.detail-box {
padding: 67px 0 0 0;
background: #ffffff;
@@ -59,6 +59,17 @@
</a-select>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('brand')">
<span>{{$t('brand')}}</span>
</div>
<j-multi-select-tag class="box-input" v-model="queryParam.brand"
:placeholder="$t('PleaseSelect')+$t('brand')"
:type="'select'"
:triggerChange="false" :dictCode="'brand'"/>
</div>
</a-col>
</template>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
@@ -200,6 +211,13 @@
ellipsis: true,
dataIndex: 'createBy'
},
{
title: this.$t('brand'),
align: 'center',
ellipsis: true,
width: 140,
dataIndex: 'brand_text'
},
{
title: this.$t('dateOfInitiation'),
align: 'center',
@@ -109,6 +109,10 @@
</div>
</div>
<div class="content-box-button-right">
<div class="content-box-button-text" @click="pushJump(item)">
<img src="~/@assets/feishu.png" alt="" class="jumpicon">
{{$t('contactTheFounder')}}
</div>
<div class="content-box-button-text" @click="forwardClick(item)">
<a-icon type="logout"/>
{{$t('forward')}}
@@ -401,6 +405,20 @@
this.queryForm = row
this.$refs.SelectedByRef.getPush()
},
pushJump(row){
let query = {
userName: row.createBy,
}
postAction('/lark/getLarkApplinkByUserName', query).then((res) => {
if (res.code === 200) {
let url = res.result
window.open(url, '_blank')
} else {
this.$message.warning(res.message)
this.$refs.SelectedByRef.submitLoading = false
}
})
},
SelectedByForm(userIds) {
let query = {
userIds: userIds,
@@ -436,7 +454,10 @@
overflow: hidden;
/*margin: 0 auto;*/
}
.jumpicon{
height: 13.72px;
width: 15.44px;
}
.box-title-text {
line-height: 1.4;
width: 360px;
@@ -53,6 +53,10 @@
</div>
</div>
<div class="content-box-button-right">
<div class="content-box-button-text" @click="pushJump(queryForm)">
<img src="~/@assets/feishu.png" alt="" class="jumpicon">
{{$t('contactTheFounder')}}
</div>
<div class="content-box-button-text" @click="forwardClick(queryForm)">
<a-icon type="logout"/>
{{$t('forward')}}
@@ -449,6 +453,20 @@
this.queryForm = row
this.$refs.SelectedByRef.getPush()
},
pushJump(row){
let query = {
userName: row.createBy,
}
postAction('/lark/getLarkApplinkByUserName', query).then((res) => {
if (res.code === 200) {
let url = res.result
window.open(url, '_blank')
} else {
this.$message.warning(res.message)
this.$refs.SelectedByRef.submitLoading = false
}
})
},
detailClick(item,key) {
let newUrl = this.$router.resolve({
path: '/docManage/library/detail',
@@ -481,6 +499,10 @@
</script>
<style scoped lang="less">
.jumpicon{
height: 13.72px;
width: 15.44px;
}
.content-box {
width: 100%;
height: auto;
@@ -64,6 +64,23 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="8">
<div class="box-title-text" style="height: 60px">
<div class="title-text" :title="$t('brand')">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('brand')">{{$t('brand')}}</span>
</div>
<a-form-model-item class="itemModel propbox" prop="brands">
<j-multi-select-tag class="box-input" v-model="formInline.brands"
:placeholder="$t('PleaseSelect')+$t('brand')"
:type="'select'"
style="width: 100%"
:triggerChange="false" :dictCode="'brand'"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24" style="margin-bottom: 10px">
<a-col :span="16">
<div class="box-title-text">
@@ -281,6 +298,13 @@
trigger: 'change'
}
],
brands: [
{
required: true,
message: this.$t('brand') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
processBackground: [
{
max: 300,
@@ -676,6 +700,9 @@
}
</style>
<style scoped>
/deep/.propbox .ant-form-explain{
margin-top: -17px !important;
}
.detail-box {
padding: 67px 0 0 0;
background: #ffffff;
@@ -60,6 +60,17 @@
</a-select>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('brand')">
<span>{{$t('brand')}}</span>
</div>
<j-multi-select-tag class="box-input" v-model="queryParam.brand"
:placeholder="$t('PleaseSelect')+$t('brand')"
:type="'select'"
:triggerChange="false" :dictCode="'brand'"/>
</div>
</a-col>
</template>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
@@ -269,6 +280,13 @@
ellipsis: true,
dataIndex: 'createBy'
},
{
title: this.$t('brand'),
align: 'center',
ellipsis: true,
width: 140,
dataIndex: 'brand_text'
},
{
title: this.$t('dateOfInitiation'),
align: 'center',
@@ -76,23 +76,23 @@
</a-form>
</div>
<div class="table-operator">
<div class="operator-text" @click="cuibanClick">
<div class="operator-text" @click="cuibanClick" v-if="isRoleSwitching">
<a-icon type="sound"/>
{{ $t('CuiBan') }}
</div>
<div @click="BatchMaintenanceProgress" class="operator-text">
<div @click="BatchMaintenanceProgress" class="operator-text" v-if="isRoleSwitching">
<a-icon type="setting"/>
{{$t('BatchMaintenanceProgress')}}
</div>
<div @click="BatchChangeStatus" class="operator-text">
<div @click="BatchChangeStatus" class="operator-text" v-if="isRoleSwitching">
<a-icon type="setting"/>
{{$t('BatchChangeStatus')}}
</div>
<div @click="CertificationDirectory" class="operator-text">
<div @click="CertificationDirectory" class="operator-text" v-if="isRoleSwitching">
<a-icon type="bulb"/>
{{$t('CertificationDirectory')}}
</div>
<div @click="handleExport" class="operator-text">
<div @click="handleExport" class="operator-text" v-if="isRoleSwitching">
<a-icon type="export" :rotate="-90"/>
{{$t('export')}}
</div>
@@ -221,8 +221,8 @@
import certificationDirectory from './certificationDirectory'
import batchChangeModel from './batchChangeModel'
import batchModel from './batchModel'
import cuibanModel from './cuibanModel'
import TaskListModel from './TaskListModel'
import cuibanModel from './cuibanModel'
import taskBatSetting from './taskBatSetting'
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
import { mapGetters } from 'vuex'
@@ -347,12 +347,14 @@
list: '/project/projectTaskInventoryEO/list',
exportXls: '/project/projectTaskInventoryEO/exportXls'
},
isRoleSwitching:true,
loading: false,
visibleoperationFailed: false,
NotSelectedNoEngineerValue: [],
dataSource: [],
selectionRowsArray: [],
roleCodes: [],
selectionRowsArray:[],
roleSwitchingList:[],
roleCodes:[],
long: ''
}
},
@@ -379,6 +381,7 @@
this.queryParam = { ...this.queryParam }
}
this.getList()
this.getRoleByUserId()
this.long = localStorage.getItem('language') || 'zh-cn'
},
methods: {
@@ -386,6 +389,22 @@
searchQuery() {
this.getList()
},
getRoleByUserId(callback) {
getAction('/project/projectLawsInventoryEO/getRoleByUserId', { projectLibraryId: this.$route.query.id }).then((res) => {
if (res.success) {
this.roleSwitchingList = res.result || []
if(this.roleSwitchingList.length == 1){
if(this.roleSwitchingList[0].roleCode == '13'){
this.isRoleSwitching = false
}
}
} else {
this.roleSwitchingList = []
}
callback && callback()
})
},
searchReset() {
this.queryParam = {}
this.getList()
@@ -163,7 +163,7 @@ export default {
}
.itemModel {
width: calc(100% - 130px);
width: calc(80% - 130px);
display: inline-block;
margin-top: 2px;
}
@@ -172,7 +172,7 @@ export default {
}
.itemModel {
width: calc(100% - 130px);
width: calc(80% - 130px);
display: inline-block;
margin-top: 2px;
}
@@ -124,15 +124,15 @@
<a-icon type="export" :rotate="-90"/>
{{ $t('export') }}
</div>
<div @click="handleDel" class="operator-text-title">
<div @click="handleDel" class="operator-text-title">
<a-icon type="delete"/>
{{ $t('BatchDelete') }}
</div>
<div class="operator-text-title" @click="ExportReportClick">
<div class="operator-text-title" @click="ExportReportClick">
<a-icon type="export"/>
{{ $t('ExportReport') }}
</div>
<div class="operator-text-title" @click="batSettingClick">
<div class="operator-text-title" @click="batSettingClick">
<a-icon type="setting"/>
{{ $t('batchSettingInformation') }}
</div>
@@ -990,7 +990,8 @@
detailedWarningList: [],
rowKeysSuccessList: [],
selectedRowKeysList: [],
rowKeysWarningList: []
rowKeysWarningList: [],
rolecode:false,
}
},
@@ -1104,7 +1105,7 @@
} else {
this.isDisplay = false
if (this.formInlineRoleSwitching.roleSwitchingCode == '11' || this.formInlineRoleSwitching.roleSwitchingCode == '12' ||
this.formInlineRoleSwitching.roleSwitchingCode == '') {
this.formInlineRoleSwitching.roleSwitchingCode == '' || this.formInlineRoleSwitching.roleSwitchingCode == '13') {
this.isRoleSwitching = false
}
}
@@ -1498,6 +1499,8 @@
}
if (this.formInlineRoleSwitching.roleSwitchingCode == '11' || this.formInlineRoleSwitching.roleSwitchingCode == '12') {
roleCode = 0
} else if(this.formInlineRoleSwitching.roleSwitchingCode == '13'){
roleCode = 13
}
let queryParam = JSON.parse(JSON.stringify(this.queryParam))
Object.keys(queryParam).forEach(val => {
@@ -349,7 +349,7 @@
deleteLib(val) {
let _this = this
this.$confirm({
content: _this.$t('ConfirmDelete'),
content: _this.$t(val.children ? 'allsubitemsitem' : 'ConfirmDelete'),
onOk() {
deleteAction(_this.url.deleteBatch, { id: val.id }).then((res) => {
if (res.success) {
+1 -1
View File
@@ -132,7 +132,7 @@
</div>
</template>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)" style='margin-right: 10px' v-has="'sys:user:detail'">{{$t('See')}}</a>
<a @click="handleEdit(record)" style='margin-right: 10px' v-has="'sys:user:detail'">{{$t('edit')}}</a>
<!-- <a @click="resetPassword(record)" v-has="'sys:user:resetpass'">{{$t('resetPassword')}}</a>-->
</span>
@@ -12,7 +12,7 @@
<a-row :gutter='24'>
<a-col :span='24'>
<a-form-item :label="$t('RoleAssignment')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select mode="multiple" :placeholder="$t('PleaseSelect')+$t('controlVerification')" v-model:value="selectedRole">
<a-select mode="multiple" :placeholder="$t('PleaseSelect')+$t('RoleAssignment')" v-model:value="selectedRole" @change='selectChange'>
<a-select-option v-for="(role,roleindex) in roleList" :key="role.id" :value="role.id">
<span style="display: inline-block;width: 100%">
{{ role.roleName }}
@@ -22,6 +22,33 @@
</a-form-item>
</a-col>
</a-row>
<a-row :gutter='24' v-if='viewshow'>
<a-col :span='24'>
<a-form-item :label="$t('NareaOfResponsibility')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-multi-select-tag class="box-input" v-model:value="dutyTerritories"
:placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
<!-- <a-select mode="multiple" :placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')" v-model:value="dutyTerritories">-->
<!-- <a-select-option v-for="(role,roleindex) in dictOptions" :key="role.id" :value="role.id">-->
<!-- <span style="display: inline-block;width: 100%">-->
<!-- {{ role.roleName }}-->
<!-- </span>-->
<!-- </a-select-option>-->
<!-- </a-select>-->
</a-form-item>
</a-col>
</a-row>
<a-row :gutter='24' v-if='viewshow'>
<a-col :span='24'>
<a-form-item :label="$t('brand')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-multi-select-tag class="box-input" v-model:value="brands"
:placeholder="$t('PleaseSelect')+$t('brand')"
:type="'select'"
:triggerChange="false" :dictCode="'brand'"/>
</a-form-item>
</a-col>
</a-row>
</a-form-model>
</a-spin>
<div class='drawer-bootom-button'>
@@ -33,6 +60,7 @@
<script>
import { putAction, postAction, getAction, deleteAction } from '@/api/manage'
import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
import axios from 'axios'
import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types'
@@ -51,6 +79,8 @@ export default {
editId: '',
newVisible: false,
selectedRole: undefined,
dutyTerritories: undefined,
brands: undefined,
labelCol: {
xs: { span: 24 },
sm: { span: 7 }
@@ -65,8 +95,10 @@ export default {
flag: false, //表单提交标识
spinLoading: false,
confirmLoading: false,
viewshow: false,
selectedRowKeys: [],
roleList: [],
dictOptions: [],
defaultValue: undefined
}
},
@@ -79,8 +111,24 @@ export default {
},
mounted() {
this.loadData()
this.initDictData()
},
methods: {
initDictData() {
//优先从缓存中读取字典配置
if (getDictItemsFromCache(this.dictCode)) {
this.dictOptions = getDictItemsFromCache(this.dictCode)
return
}
//根据字典Code, 初始化字典数组
ajaxGetDictItems(this.dictCode, null).then((res) => {
if (res.success) {
// console.log(res.result);
this.dictOptions = res.result
}
})
},
loadData() {
this.loading = true
getAction(`sys/role/queryall`, {}).then(res => {
@@ -94,9 +142,31 @@ export default {
handleCancel() {
this.$emit('rolevisible', false)
},
selectChange(value){
value.map((item,index) => {
this.roleList.map((val,index) => {
if(val.roleCode == 'Viewer' && item == val.id){
this.$nextTick(() => {
this.viewshow = true
})
return
}else{
this.viewshow = false
}
})
})
// value.forEach((item,index) => {
// console.log(item)
// if(item == '1590600516943253506'){
// this.viewshow = true
// }else{
// this.viewshow = false
// }
// })
},
//保存
handleSubmit() {
let param = {ids: this.selectedRowKeysArray.join(','), selectedroles: `${this.selectedRole.join(',')}` }
let param = {ids: this.selectedRowKeysArray.join(','), selectedroles: `${this.selectedRole.join(',')}`, dutyTerritories: `${this.dutyTerritories}`, brands: `${this.brands}` }
postAction('/sys/user/setRole', param).then((res) => {
if (res.success) {
this.$emit('rolevisible', false)
@@ -1,6 +1,6 @@
<template>
<a-drawer
:title="$t('See')"
:title="$t('edit')"
:maskClosable="true"
:width="drawerWidth"
placement="right"
@@ -66,6 +66,7 @@
:placeholder="$t('selectUserRole')"
optionFilterProp="children"
v-model="selectedRole"
@change='selectChange'
:disabled='false'
:getPopupContainer="(target) => target.parentNode">
<a-select-option v-for="(role,roleindex) in roleList" :key="roleindex.toString()" :value="role.id">
@@ -73,6 +74,19 @@
</a-select-option>
</a-select>
</a-form-item>
<a-form-item v-if='viewshow' :label="$t('NareaOfResponsibility')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-multi-select-tag class="box-input" v-model="dutyTerritories"
:placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</a-form-item>
<a-form-item v-if='viewshow' :label="$t('brand')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-multi-select-tag v-model="brands"
:placeholder="$t('PleaseSelect')+$t('brand')"
:type="'select'"
:triggerChange="false" :dictCode="'brand'"/>
</a-form-item>
<!--部门分配-->
<!-- v-show="!departDisabled && !disabled"-->
@@ -194,7 +208,7 @@
import departWindow from './DepartWindow'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import { getAction, postAction } from '@/api/manage'
import { addUser, editUser, queryUserRole, queryall } from '@/api/api'
import { addUser, editUser, queryUserRole,queryViewerInfo, queryall,ajaxGetDictItems,getDictItemsFromCache } from '@/api/api'
import { disabledAuthFilter } from '@/utils/authFilter'
import { duplicateCheck } from '@/api/api'
import JImageUpload from '../../../components/jero/JImageUpload'
@@ -215,11 +229,13 @@
disabled: false,
modaltoggleFlag: true,
confirmDirty: false,
viewshow: false,
selectedDepartKeys: [], //保存用户选择部门id
checkedDepartKeys: [],
checkedDepartNames: [], // 保存部门的名称 =>title
checkedDepartNameString: '', // 保存部门的名称 =>title
resultDepartOptions: [],
dictOptions: [],
userId: '', //保存用户id
disableSubmit: false,
userDepartModel: { userId: '', departIdList: [] }, // 保存SysUserDepart的用户部门中间表数据需要的对象
@@ -276,6 +292,8 @@
model: {},
roleList: [],
selectedRole: [],
dutyTerritories: '',
brands: '',
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
@@ -343,20 +361,76 @@
})
},
loadUserRoles(userid) {
console.log(11)
queryUserRole({ userid: userid }).then((res) => {
if (res.success) {
this.selectedRole = res.result
this.selectedRole.map((item,index) => {
this.roleList.map((val,index) => {
if(val.roleCode == 'Viewer' && item == val.id){
this.$nextTick(() => {
this.viewshow = true
})
return
}else{
this.viewshow = false
}
})
})
} else {
console.log(res.message)
}
})
},
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){
value.map((item,index) => {
this.roleList.map((val,index) => {
if(val.roleCode == 'Viewer' && item == val.id){
this.$nextTick(() => {
this.viewshow = true
})
return
}else{
this.viewshow = false
}
})
})
},
initDictData() {
//优先从缓存中读取字典配置
if (getDictItemsFromCache(this.dictCode)) {
this.dictOptions = getDictItemsFromCache(this.dictCode)
return
}
//根据字典Code, 初始化字典数组
ajaxGetDictItems(this.dictCode, null).then((res) => {
if (res.success) {
// console.log(res.result);
this.dictOptions = res.result
}
})
},
handleSubmitOk() {
this.confirmLoading = true
let selectedRole = JSON.parse(JSON.stringify(this.selectedRole))
let dutyTerritorie = JSON.parse(JSON.stringify(this.dutyTerritories))
let brand = JSON.parse(JSON.stringify(this.brands))
let param = {
ids: this.userId,
selectedroles: selectedRole.join(',')
selectedroles: selectedRole.join(','),
dutyTerritories: dutyTerritorie,
brands: brand
}
postAction('/sys/user/setRole', param).then((res) => {
if (res.success) {
@@ -398,6 +472,7 @@
that.form.resetFields()
if (record.hasOwnProperty('id')) {
that.loadUserRoles(record.id)
that.loadUserduty(record.id)
setTimeout(() => {
this.fileList = record.avatar
}, 5)
@@ -760,6 +835,9 @@
background: #fff;
border-radius: 0 0 2px 2px;
}
/deep/.box-input .ant-select-selection--multiple{
height: 100px !important;
}
</style>
<style>
.selectUserRole .ant-select-selection--multiple {