Merge remote-tracking branch 'origin/main'

This commit is contained in:
2026-03-04 16:27:19 +08:00
11 changed files with 75 additions and 192 deletions

View File

@@ -1,8 +1,12 @@
package com.sdm.data.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.constants.CommonConstants;
import com.sdm.common.entity.enums.DirTypeEnum;
import com.sdm.common.entity.enums.FilePermissionEnum;
import com.sdm.common.entity.resp.system.CIDRoleResp;
import com.sdm.common.feign.inter.system.ISysUserFeignClient;
import com.sdm.data.dao.FileUserPermissionMapper;
import com.sdm.data.model.entity.FileMetadataInfo;
import com.sdm.data.model.entity.FileUserPermission;
@@ -13,6 +17,8 @@ import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 文件用户权限表(存储用户对文件的具体权限) 服务实现类
@@ -27,6 +33,9 @@ public class FileUserPermissionServiceImpl extends ServiceImpl<FileUserPermissio
@Autowired
private IFileMetadataInfoService fileMetadataInfoService;
@Autowired
private ISysUserFeignClient sysUserFeignClient;
@Override
public boolean hasFilePermission(Long fileId, Long userId, FilePermissionEnum permission) {
// 边界:无效 fileId
@@ -46,6 +55,11 @@ public class FileUserPermissionServiceImpl extends ServiceImpl<FileUserPermissio
return true;
}
}
// 超级管理员
if (isSuperAdmin(userId)) {
return true;
}
return validPermission(fileId, userId, permission);
}
@@ -84,10 +98,27 @@ public class FileUserPermissionServiceImpl extends ServiceImpl<FileUserPermissio
return validPermission(parentId, userId, permission);
}
/**
* 是否超级管理员
* @param userId 用户ID
* @return
*/
private boolean isSuperAdmin(Long userId) {
SdmResponse<List<CIDRoleResp>> listSdmResponse = sysUserFeignClient.queryUserRole(userId);
if(!listSdmResponse.isSuccess()) return false;
return listSdmResponse.getData().stream().anyMatch(role -> role.getRoleCode().equals(CommonConstants.ROLE_CODE_ADMIN));
}
@Override
public Integer getMergedPermission(Long fileId, Long userId) {
if (fileId == null || userId == null) return (int) FilePermissionEnum.ZERO.getValue();
// 超级管理员
if (isSuperAdmin(userId)) {
return (int) FilePermissionEnum.ALL.getValue();
}
FileMetadataInfo fileInfo = fileMetadataInfoService.getById(fileId);
if (fileInfo == null) return (int) FilePermissionEnum.ZERO.getValue();

View File

@@ -1,40 +0,0 @@
server:
port: 7106
spring:
application:
name: flowable
datasource:
url: jdbc:mysql://192.168.30.146:3306/flowable?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: mysql
driver-class-name: com.mysql.cj.jdbc.Driver
flowable:
# ?????????
database-schema-update: true
# ??????JOB
async-executor-activate: true
cloud:
nacos:
discovery:
server-addr: 192.168.30.146:8848
group: PROD_GROUP
enabled: true
logging:
level:
org:
flowable: INFO
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
type-aliases-package: com.sdm.flowable.model.entity
configuration:
map-underscore-to-camel-case: true
global-config:
db-config:
id-type: auto
security:
whitelist:
paths:
- /process/testHpc
- /process/asyncCallback

View File

@@ -11,6 +11,7 @@ spring:
file-extension: yaml
import-check:
enabled: false
enabled: false
discovery:
server-addr: 192.168.190.100:5848
group: DEV_GROUP

View File

@@ -11,6 +11,7 @@ spring:
file-extension: yaml
import-check:
enabled: false
enabled: false
discovery:
server-addr: 192.168.190.161:8848
group: DEV_GROUP

View File

@@ -11,6 +11,7 @@ spring:
file-extension: yaml
import-check:
enabled: false
enabled: false
discovery:
server-addr: 192.168.65.161:8848
group: DEV_GROUP

View File

@@ -11,6 +11,7 @@ spring:
file-extension: yaml
import-check:
enabled: false
enabled: false
discovery:
server-addr: 192.168.65.161:8848
group: LOCAL_GROUP

View File

@@ -11,6 +11,7 @@ spring:
file-extension: yaml
import-check:
enabled: false
enabled: false
discovery:
server-addr: 192.168.30.146:8848
group: LYRIC_GROUP

View File

@@ -11,6 +11,7 @@ spring:
file-extension: yaml
import-check:
enabled: false
enabled: false
discovery:
server-addr: 192.168.0.88:8848
group: DEV_GROUP

View File

@@ -186,6 +186,6 @@ public class SpdmDemandVo extends BaseEntity {
/**
* 产品线(利元亨定制)
*/
private String productionLine;
private String produceLine;
}

View File

@@ -740,6 +740,24 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
}
spdmDemandVo.setAMemberList(spdmAUserVoList);
}
if (CollectionUtils.isNotEmpty(projectIdList)) {
// 利元亨定制,设置产品线(在节点拓展属性里)
List<SpdmNodeExtraVo> nodeExtraList = nodeMapper.getNodeExtraListByNodeIdList(projectIdList);
if (CollectionUtils.isNotEmpty(nodeExtraList)) {
for (SpdmDemandVo spdmDemandVo : demandList) {
if (StringUtils.isBlank(spdmDemandVo.getProjectId())) {
continue;
}
SpdmNodeExtraVo spdmNodeExtraVo = nodeExtraList.stream()
.filter(nodeExtra -> PRODUCE_LINE.equals(nodeExtra.getPropertyName()) && spdmDemandVo.getProjectId().equals(nodeExtra.getNodeId())).findFirst().orElse(null);
if (spdmNodeExtraVo == null) {
log.info("项目拓展属性中没有产品线数据");
}else {
spdmDemandVo.setProduceLine(spdmNodeExtraVo.getPropertyValue());
}
}
}
}
jsonObject.put("data", demandList);
return SdmResponse.success(jsonObject);
}
@@ -1212,7 +1230,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
if (spdmNodeExtraVo == null) {
log.info("项目拓展属性中没有产品线数据");
}else {
spdmDemandVo.setProductionLine(spdmNodeExtraVo.getPropertyValue());
spdmDemandVo.setProduceLine(spdmNodeExtraVo.getPropertyValue());
}
}
}
@@ -2123,6 +2141,24 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
}
spdmDemandVo.setAMemberList(spdmAUserVoList);
}
if (CollectionUtils.isNotEmpty(projectIdList)) {
// 利元亨定制,设置产品线(在节点拓展属性里)
List<SpdmNodeExtraVo> nodeExtraList = nodeMapper.getNodeExtraListByNodeIdList(projectIdList);
if (CollectionUtils.isNotEmpty(nodeExtraList)) {
for (SpdmDemandVo spdmDemandVo : demandList) {
if (StringUtils.isBlank(spdmDemandVo.getProjectId())) {
continue;
}
SpdmNodeExtraVo spdmNodeExtraVo = nodeExtraList.stream()
.filter(nodeExtra -> PRODUCE_LINE.equals(nodeExtra.getPropertyName()) && spdmDemandVo.getProjectId().equals(nodeExtra.getNodeId())).findFirst().orElse(null);
if (spdmNodeExtraVo == null) {
log.info("项目拓展属性中没有产品线数据");
}else {
spdmDemandVo.setProduceLine(spdmNodeExtraVo.getPropertyValue());
}
}
}
}
jsonObject.put("data", demandList);
return SdmResponse.success(jsonObject);
}

View File

@@ -1,150 +0,0 @@
server:
port: 7101
spring:
application:
name: project
datasource:
username: root
password: mysql
jdbc-url: jdbc:mysql://192.168.30.146:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
# 设置连接池能够容纳的最大连接数。建议值CPU核心数 * 2 + 有效磁盘I/O数。一个常见的经验值是 10-20。
maximum-pool-size: 20
# 连接池在空闲时保持的最小连接数。
minimum-idle: 5
# 一个连接在被标记为空闲之前可以保持空闲状态的最长时间(毫秒)。当连接的空闲时间超过此值后,它可能会被连接池 evict驱逐
idle-timeout: 60000 # 1 min
# 一个连接从被创建开始其生命周期的最大时长毫秒。HikariCP的默认值就是30分钟这是一个非常合理的设置。
max-lifetime: 1800000 # 30 minHikari 默认)
# 应用程序尝试从连接池获取一个连接时等待的最长时间毫秒。建议值30-60秒。
connection-timeout: 30000 # 30s
master:
username: root
password: mysql
jdbc-url: jdbc:mysql://192.168.30.146:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
slave:
username: root
password: mysql
jdbc-url: jdbc:mysql://192.168.30.146:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
enable: true
cloud:
nacos:
discovery:
server-addr: 192.168.30.146:8848
enabled: true
group: PROD_GROUP
# username: nacos
# password: ENC(+QKYnI6gAYu1SbLaZQTkZA==)
data:
redis:
# Redis默认情况下有16个分片(库)这里配置具体使用的分片默认是0
database: 0
# redis服务器地址填写自己的服务器地址
host: 192.168.2.166
# redis端口默认6379
port: 6379
#redis连接超时等待,10秒
timeout: PT10S
# redis访问密码默认为空
password:
lettuce:
pool:
# 连接池最大连接数(使用负值表示没有限制) 默认 8
max-active: 50
# 连接池中的最大空闲连接 默认 8
max-idle: 20
# 连接池中的最小空闲连接 默认 0
min-idle: 1
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1这里配置10s
max-wait: PT10S
# password:
# sentinel:
# master: mymaster
# nodes: 10.18.109.50:26379,10.18.109.51:26379,10.18.109.52:26379
servlet:
multipart:
# 单个文件的最大值
max-file-size: 500MB
# 上传文件总的最大值
max-request-size: 10240MB
management:
endpoints:
web:
exposure:
include: health,info
endpoint:
health:
show-details: always
group:
readiness:
include: discoveryComposite,ping,refreshScope
health:
redis:
enabled: false
db:
enabled: false
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
auto-mapping-behavior: full
cache-enabled: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath*:mapper/**/*.xml
global-config:
# 逻辑删除配置
db-config:
# 删除前
logic-not-delete-value: 1
# 删除后
logic-delete-value: 0
#showSql
logging:
level:
com.sdm.dao: debug
lombok:
anyConstructor:
addConstructorProperties: true
file:
rootPath: /data/home/sdm
scriptPath : /opt/script
security:
whitelist:
paths:
- /run/deliverableApproveCallback
- /run/getSimulationKeyResultFileIds
- /run/generateReportInternal
- /dataManager/tree/node/listUserByIds
#logging:
# config: ./config/logback.xml
YA:
backend:
backendPublicKey : MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo4hmt4m5CpMIE5DL8G60cg63X6nEiNPt1yWB+kXDXQA0RaiqXhT4O78HT9BldrQVpyj6g4Z2mwPMfLBP6LjR8QyLlwfMBJ2uUV5B4PlEWiF9pUK9tU0lPlByS+p0oIxX8XlvzbbGbkyWQaOQ6SflFxB7eHu3r/hDOYtsMDcNe4hsuz1BnrAuRY6Yj+Hq2d4zPDetDgXeXs066z3qO6bLN9r/2UkHZc4tdkpMJgxucwTuvAvmgRgdDfnd6sAVDHYPaIVuJHqWnEnEcQzq6zWb1YPItc2FgDbXWpi8noz7wSjXDfBiTHU11nU5vv//xLVF83h5mbhk8dWHKq7bLUGp9QIDAQAB
frontend:
#publicKeyUrl : http://s279983e.natappfree.cc/api-auth/clients/getPublicKey
publicKeyUrl : http://pisxwh.8866.org:8015/gateway/api-auth/clients/getPublicKey
frontendPrivateKey : MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjz2pItCtM2Itf3knLhA1ZWzTVtKKY692Eptk3ZUy4qjlv+2e6u78/cBYZsVa/1nOyHPtb2j9xZAsHYGKZGoh64UWSewUhRdUO15xBRr5DyGEdTWHjwc1GHf7c99rKCjKDO2Xdp7cpqYABOAxgkSA2vP5zqhSCq0FCqwleEPLG1aAa/kh/oUzCZLUoSjZIdqQOgHJTZojqNeQCOC6U8Q+kUcHdKbptewu1A6XK8DHV0WqiJJEG3kyaoAZ1kGtr6ETtGy++aRvJT9gZN4M4bIgucKtAu2dcqQHj9jZ1i2xwhY3nmLjqaz3y313/IEYpMTG8pnPb8eP5usHDaDmH8RqJAgMBAAECggEAAzz05WYGWxkGvEjpHYhJOUR3yWeuNSaodNhVf+ZVO2tGAmQuWz8d2zOshCqAw/8Jv3IaN+kbCvNG0okBufQP0ZoFZY1f/xXhzc7OTG4JEc7yuIEQl897btDl+lk97nOAJx7z9ws7MCwlFyEUAY6s29glkYTBrgmTmy1FXKIqImsLfVV3LgfL2Mkixn0YSSsbUh2b+dki1zxjct3hTGZVh29bKOpbflOaG0LqEO0UwSX92Y/ir+fKmC8zEFbi5HZANYODivm8DiwF7khpraayf78kG3liccOTMMLVxIHwNiS9wcLG8WPuVEphlXMT4Ev4lq5VFM3mVxtd9g21ESbuvwKBgQDmsgE8u66qKVBsndp2K9FV9VWYDA4fYfRswDAWnZDCzIdanT0NFPp8s3nZCVU4FfX4m958yOrJ/MVp6d58z6fgkYQh2qL2Wy6zRPaIxCc6JG3FheFSxfWyULU/mBBK02ntUZCXEs8XKjAfDvmxaVVeonv0nCSgVwxJ4ypB5BZ+owKBgQC1x0GDnWtMbNGUMx6tYtFGWQIgop4hVQe6ZNgkKaQX7gtMa5egEda6ga6wCTV3+ZvQ9tBa1DxUFb5N/TrtQdFm39gOSXyhWSrntUKqaSFo03GvXXvvze2D3+uXpk7S8yzWuuD3OYyYj9S3nFVZffymabfukuY7oY3AN0E0PALw4wKBgQDQiyGrMU6X7HkTdy9BnCLEvd7+cAdkPzyiAqp2B0IRlqrVM0c5SDmX+PaxSEqNROzyLJVX4Ji+t44OTKgf0+hCjckQgYDHi24QCMuEny2G1d+Vq40hMmsFIwh10JUJz0v2iMFYkFw86JpPuU3nHv1ZazD60xwZBhfJw10z62iaWQKBgH+EVgsUJS8pryO9cKnFBnXI/tsR+Mf9NDynfZBwvbIjxT1IxMb/fJi9XGQVMbMGIS5H1gXBmMiLsEJZgDrrzw/Ru2jaWFl/ib+dwjR1J4C3w6p3c/fXh+TY8hYiDm2hNTU1R5dmgaCMVXawbpcm8FN1Ghh8aJIwVJYgrNcNuiptAoGAO14DHGqUXZZ//erIYWVfL0CAMXqy38dqNmfbzSAXYyLDl6cn49CCHF0GXOfCOesQN9ToQbqpLrntFgcFe0hil5dIWYafk9fHjjR8N8g74ijErQmCEAQy22b06V0q7rLzEsU/HDVL+RZg2aY4hDN+ODHRdpdFkOxsCYV73gevVeo=
default:
tenantId: 1999362907622948866
userId: 1999363561237610497
scheduler:
todo: 10.10.00
project: 10.11.00
# 通过标识判断是否走查询现场视图逻辑0不查询1查询
lyricFlag : 1
# 同步待办时,查询待办的最大时间间隔,单位:天
lyricTodoInterval : 7