fix(工作报告): 修复工作报告存在的若干问题,包过导出时word报告里换行符变成空格符的问题。
This commit is contained in:
@@ -66,9 +66,15 @@
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>5.4.1</version>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.22.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.docx4j</groupId>
|
||||
<artifactId>docx4j-JAXB-ReferenceImpl</artifactId>
|
||||
<version>11.5.14</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Registry 注册中心相关 -->
|
||||
|
||||
@@ -20,6 +20,11 @@ public final class ProjectObjectConstants {
|
||||
*/
|
||||
public static final String MANAGER_ROLE_CODE = "project_manager";
|
||||
|
||||
/**
|
||||
* 项目技术负责人对象角色编码。
|
||||
*/
|
||||
public static final String TECHNICAL_OWNER_ROLE_CODE = "technical_owner";
|
||||
|
||||
/**
|
||||
* 项目游客对象角色编码。创建人未成为项目成员时,用于返回只读上下文菜单。
|
||||
*/
|
||||
|
||||
@@ -6,6 +6,8 @@ import com.njcn.rdms.framework.common.pojo.PageResult;
|
||||
import com.njcn.rdms.framework.excel.core.util.ExcelUtils;
|
||||
import com.njcn.rdms.module.project.constant.OvertimeApplicationConstants;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationApprovalRecordRespVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationBatchActionReqVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationBatchResultRespVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationExportVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationPageReqVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationRespVO;
|
||||
@@ -108,6 +110,22 @@ public class OvertimeApplicationController {
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@PostMapping("/batch-approve")
|
||||
@Operation(summary = "批量审核通过加班申请")
|
||||
@PreAuthorize("@ss.hasPermission('" + OvertimeApplicationConstants.PERMISSION_APPROVE + "')")
|
||||
public CommonResult<OvertimeApplicationBatchResultRespVO> batchApprove(
|
||||
@Valid @RequestBody OvertimeApplicationBatchActionReqVO reqVO) {
|
||||
return success(overtimeApplicationService.batchApprove(reqVO));
|
||||
}
|
||||
|
||||
@PostMapping("/batch-reject")
|
||||
@Operation(summary = "批量审核退回加班申请")
|
||||
@PreAuthorize("@ss.hasPermission('" + OvertimeApplicationConstants.PERMISSION_APPROVE + "')")
|
||||
public CommonResult<OvertimeApplicationBatchResultRespVO> batchReject(
|
||||
@Valid @RequestBody OvertimeApplicationBatchActionReqVO reqVO) {
|
||||
return success(overtimeApplicationService.batchReject(reqVO));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
@Operation(summary = "删除已退回的加班申请")
|
||||
@PreAuthorize("@ss.hasPermission('" + OvertimeApplicationConstants.PERMISSION_DELETE + "')")
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.njcn.rdms.module.project.controller.admin.overtime.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "管理后台 - 加班申请批量审批 Request VO")
|
||||
@Data
|
||||
public class OvertimeApplicationBatchActionReqVO {
|
||||
|
||||
@Schema(description = "加班申请编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,2,3]")
|
||||
@NotEmpty(message = "加班申请编号列表不能为空")
|
||||
private List<Long> ids;
|
||||
|
||||
@Schema(description = "审批意见。是否必填以状态机配置为准;当前退回必填",
|
||||
example = "已确认,同意加班")
|
||||
@Size(max = 1000, message = "审批意见长度不能超过 1000 个字符")
|
||||
private String reason;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.njcn.rdms.module.project.controller.admin.overtime.vo;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "管理后台 - 加班申请批量审批结果 Response VO")
|
||||
@Data
|
||||
public class OvertimeApplicationBatchResultRespVO {
|
||||
|
||||
@Schema(description = "成功处理的数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "5")
|
||||
private Integer successCount;
|
||||
|
||||
@Schema(description = "失败的数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
private Integer failCount;
|
||||
|
||||
@Schema(description = "失败的加班申请编号列表")
|
||||
private List<FailItem> failItems = new ArrayList<>();
|
||||
|
||||
@Data
|
||||
@Schema(description = "批量审批失败项")
|
||||
public static class FailItem {
|
||||
|
||||
@Schema(description = "加班申请编号", example = "3")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "失败原因", example = "当前状态不允许该操作")
|
||||
private String reason;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,6 +2,8 @@ package com.njcn.rdms.module.project.service.overtime;
|
||||
|
||||
import com.njcn.rdms.framework.common.pojo.PageResult;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationApprovalRecordRespVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationBatchActionReqVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationBatchResultRespVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationExportVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationPageReqVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationRespVO;
|
||||
@@ -22,6 +24,10 @@ public interface OvertimeApplicationService {
|
||||
|
||||
void reject(Long id, OvertimeApplicationStatusActionReqVO reqVO);
|
||||
|
||||
OvertimeApplicationBatchResultRespVO batchApprove(OvertimeApplicationBatchActionReqVO reqVO);
|
||||
|
||||
OvertimeApplicationBatchResultRespVO batchReject(OvertimeApplicationBatchActionReqVO reqVO);
|
||||
|
||||
void deleteApplication(Long id);
|
||||
|
||||
OvertimeApplicationRespVO getApplication(Long id);
|
||||
|
||||
@@ -5,9 +5,12 @@ import com.njcn.rdms.framework.common.pojo.PageParam;
|
||||
import com.njcn.rdms.framework.common.pojo.PageResult;
|
||||
import com.njcn.rdms.framework.common.util.json.JsonUtils;
|
||||
import com.njcn.rdms.framework.common.util.object.BeanUtils;
|
||||
import com.njcn.rdms.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.njcn.rdms.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.njcn.rdms.module.project.constant.OvertimeApplicationConstants;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationApprovalRecordRespVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationBatchActionReqVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationBatchResultRespVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationExportVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationPageReqVO;
|
||||
import com.njcn.rdms.module.project.controller.admin.overtime.vo.OvertimeApplicationRespVO;
|
||||
@@ -37,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
@@ -137,6 +141,16 @@ public class OvertimeApplicationServiceImpl implements OvertimeApplicationServic
|
||||
processApprovalAction(id, OvertimeApplicationConstants.ACTION_REJECT, reqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OvertimeApplicationBatchResultRespVO batchApprove(OvertimeApplicationBatchActionReqVO reqVO) {
|
||||
return processBatchApprovalAction(reqVO, OvertimeApplicationConstants.ACTION_APPROVE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OvertimeApplicationBatchResultRespVO batchReject(OvertimeApplicationBatchActionReqVO reqVO) {
|
||||
return processBatchApprovalAction(reqVO, OvertimeApplicationConstants.ACTION_REJECT);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteApplication(Long id) {
|
||||
@@ -229,6 +243,119 @@ public class OvertimeApplicationServiceImpl implements OvertimeApplicationServic
|
||||
writeAuditLog(after, actionCode, fromStatus, transition.getToStatusCode(), null, reason, null);
|
||||
}
|
||||
|
||||
private OvertimeApplicationBatchResultRespVO processBatchApprovalAction(
|
||||
OvertimeApplicationBatchActionReqVO reqVO, String actionCode) {
|
||||
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
||||
String loginUserName = defaultText(SecurityFrameworkUtils.getLoginUserNickname());
|
||||
String reason = normalizeNullableText(reqVO.getReason());
|
||||
|
||||
// 1. 校验状态机流转(统一校验一次,批量场景下 fromStatus 相同)
|
||||
ObjectStatusTransitionDO transition = validateTransition(OvertimeApplicationConstants.STATUS_PENDING, actionCode, reason);
|
||||
LocalDateTime approvalTime = LocalDateTime.now();
|
||||
|
||||
// 2. 批量查询所有申请
|
||||
List<OvertimeApplicationDO> applications = overtimeApplicationMapper.selectBatchIds(reqVO.getIds());
|
||||
Map<Long, OvertimeApplicationDO> appMap = applications.stream()
|
||||
.collect(Collectors.toMap(OvertimeApplicationDO::getId, a -> a));
|
||||
|
||||
// 3. 分类:可处理的 vs 需跳过的
|
||||
List<OvertimeApplicationDO> validList = new ArrayList<>();
|
||||
OvertimeApplicationBatchResultRespVO result = new OvertimeApplicationBatchResultRespVO();
|
||||
for (Long id : reqVO.getIds()) {
|
||||
OvertimeApplicationDO app = appMap.get(id);
|
||||
if (app == null) {
|
||||
addFailItem(result, id, "加班申请不存在");
|
||||
} else if (!Objects.equals(app.getApproverId(), loginUserId)) {
|
||||
addFailItem(result, id, "您不是该申请的审批人");
|
||||
} else if (!Objects.equals(app.getStatusCode(), OvertimeApplicationConstants.STATUS_PENDING)) {
|
||||
addFailItem(result, id, "当前状态不允许该操作");
|
||||
} else {
|
||||
validList.add(app);
|
||||
}
|
||||
}
|
||||
|
||||
if (validList.isEmpty()) {
|
||||
result.setSuccessCount(0);
|
||||
result.setFailCount(result.getFailItems().size());
|
||||
return result;
|
||||
}
|
||||
|
||||
// 4. 批量更新申请状态
|
||||
List<Long> validIds = validList.stream().map(OvertimeApplicationDO::getId).collect(Collectors.toList());
|
||||
OvertimeApplicationDO update = new OvertimeApplicationDO();
|
||||
update.setStatusCode(transition.getToStatusCode());
|
||||
update.setApprovalComment(reason);
|
||||
update.setApprovalTime(approvalTime);
|
||||
overtimeApplicationMapper.update(update, new LambdaQueryWrapperX<OvertimeApplicationDO>()
|
||||
.in(OvertimeApplicationDO::getId, validIds)
|
||||
.eq(OvertimeApplicationDO::getApproverId, loginUserId)
|
||||
.eq(OvertimeApplicationDO::getStatusCode, OvertimeApplicationConstants.STATUS_PENDING));
|
||||
|
||||
// 5. 批量写状态日志
|
||||
List<OvertimeApplicationStatusLogDO> statusLogs = new ArrayList<>();
|
||||
for (OvertimeApplicationDO original : validList) {
|
||||
OvertimeApplicationStatusLogDO log = new OvertimeApplicationStatusLogDO();
|
||||
log.setApplicationId(original.getId());
|
||||
log.setActionType(actionCode);
|
||||
log.setFromStatus(OvertimeApplicationConstants.STATUS_PENDING);
|
||||
log.setToStatus(transition.getToStatusCode());
|
||||
log.setReason(reason);
|
||||
log.setOperatorUserId(loginUserId);
|
||||
log.setOperatorName(loginUserName);
|
||||
log.setApplicantNameSnapshot(original.getApplicantName());
|
||||
log.setOvertimeDateSnapshot(original.getOvertimeDate());
|
||||
log.setOvertimeDurationSnapshot(original.getOvertimeDuration());
|
||||
log.setRemark(buildSnapshotRemark(original));
|
||||
statusLogs.add(log);
|
||||
}
|
||||
overtimeApplicationStatusLogMapper.insertBatch(statusLogs);
|
||||
|
||||
// 6. 批量写审批记录(需要 statusLogId,逐条设置后批量插入)
|
||||
List<OvertimeApplicationApprovalRecordDO> approvalRecords = new ArrayList<>();
|
||||
for (int i = 0; i < validList.size(); i++) {
|
||||
OvertimeApplicationDO original = validList.get(i);
|
||||
OvertimeApplicationStatusLogDO statusLog = statusLogs.get(i);
|
||||
OvertimeApplicationApprovalRecordDO record = new OvertimeApplicationApprovalRecordDO();
|
||||
record.setOvertimeApplicationId(original.getId());
|
||||
record.setStatusLogId(statusLog.getId());
|
||||
record.setApprovalRound(overtimeApplicationApprovalRecordMapper.countByApplicationId(original.getId()) + 1);
|
||||
record.setConclusion(transition.getToStatusCode());
|
||||
record.setOpinion(reason);
|
||||
record.setAuditorUserId(loginUserId);
|
||||
record.setAuditorName(loginUserName);
|
||||
approvalRecords.add(record);
|
||||
}
|
||||
overtimeApplicationApprovalRecordMapper.insertBatch(approvalRecords);
|
||||
|
||||
// 7. 批量写审计日志
|
||||
List<BizAuditLogDO> auditLogs = new ArrayList<>();
|
||||
for (OvertimeApplicationDO original : validList) {
|
||||
BizAuditLogDO auditLog = new BizAuditLogDO();
|
||||
auditLog.setBizType(OvertimeApplicationConstants.BIZ_TYPE);
|
||||
auditLog.setBizId(original.getId());
|
||||
auditLog.setActionType(actionCode);
|
||||
auditLog.setFromStatus(OvertimeApplicationConstants.STATUS_PENDING);
|
||||
auditLog.setToStatus(transition.getToStatusCode());
|
||||
auditLog.setReason(reason);
|
||||
auditLog.setOperatorUserId(loginUserId);
|
||||
auditLog.setOperatorName(loginUserName);
|
||||
auditLog.setRemark(buildSnapshotRemark(original));
|
||||
auditLogs.add(auditLog);
|
||||
}
|
||||
bizAuditLogMapper.insertBatch(auditLogs);
|
||||
|
||||
result.setSuccessCount(validList.size());
|
||||
result.setFailCount(result.getFailItems().size());
|
||||
return result;
|
||||
}
|
||||
|
||||
private void addFailItem(OvertimeApplicationBatchResultRespVO result, Long id, String reason) {
|
||||
OvertimeApplicationBatchResultRespVO.FailItem failItem = new OvertimeApplicationBatchResultRespVO.FailItem();
|
||||
failItem.setId(id);
|
||||
failItem.setReason(reason);
|
||||
result.getFailItems().add(failItem);
|
||||
}
|
||||
|
||||
private OvertimeApplicationDO validateApplicationExists(Long id) {
|
||||
OvertimeApplicationDO application = overtimeApplicationMapper.selectById(id);
|
||||
if (application == null) {
|
||||
|
||||
@@ -52,6 +52,8 @@ import com.njcn.rdms.module.system.api.dept.DeptApi;
|
||||
import com.njcn.rdms.module.system.api.dept.PostApi;
|
||||
import com.njcn.rdms.module.system.api.dept.dto.DeptRespDTO;
|
||||
import com.njcn.rdms.module.system.api.dept.dto.PostRespDTO;
|
||||
import com.njcn.rdms.module.system.api.permission.ObjectPermissionApi;
|
||||
import com.njcn.rdms.module.system.api.permission.dto.ObjectRoleRespDTO;
|
||||
import com.njcn.rdms.module.system.api.user.AdminUserApi;
|
||||
import com.njcn.rdms.module.system.api.user.UserManagementRelationApi;
|
||||
import com.njcn.rdms.module.system.api.user.dto.AdminUserRespDTO;
|
||||
@@ -117,6 +119,8 @@ public class WorkReportCommonService {
|
||||
@Resource
|
||||
private UserManagementRelationApi userManagementRelationApi;
|
||||
@Resource
|
||||
private ObjectPermissionApi objectPermissionApi;
|
||||
@Resource
|
||||
private ProjectMapper projectMapper;
|
||||
@Resource
|
||||
private UserObjectRoleMapper userObjectRoleMapper;
|
||||
@@ -443,6 +447,7 @@ public class WorkReportCommonService {
|
||||
respVO.setProjectName(project.getProjectName());
|
||||
respVO.setProjectOwnerId(profile.userId());
|
||||
respVO.setProjectOwnerName(profile.userName());
|
||||
respVO.setTechnicalOwnerName(resolveProjectTechnicalOwnerName(projectId));
|
||||
respVO.setProjectMemberSnapshot(BeanUtils.toBean(buildProjectMemberSnapshot(projectId),
|
||||
WorkReportMemberSnapshotRespVO.class));
|
||||
respVO.setSupervisorUserId(profile.directManagerId());
|
||||
@@ -870,6 +875,29 @@ public class WorkReportCommonService {
|
||||
return user;
|
||||
}
|
||||
|
||||
public String resolveProjectTechnicalOwnerName(Long projectId) {
|
||||
if (projectId == null) {
|
||||
return null;
|
||||
}
|
||||
ObjectRoleRespDTO technicalOwnerRole = objectPermissionApi.getObjectRoleByCode(
|
||||
ProjectObjectConstants.TECHNICAL_OWNER_ROLE_CODE,
|
||||
com.njcn.rdms.module.project.constant.ObjectRoleConstants.ROLE_SCOPE_OBJECT,
|
||||
ProjectObjectConstants.OBJECT_TYPE).getCheckedData();
|
||||
if (technicalOwnerRole == null || technicalOwnerRole.getId() == null) {
|
||||
throw exception(ErrorCodeConstants.PROJECT_INTERNAL_ROLE_NOT_CONFIGURED,
|
||||
ProjectObjectConstants.TECHNICAL_OWNER_ROLE_CODE);
|
||||
}
|
||||
for (UserObjectRoleDO member : userObjectRoleMapper.selectListByObject(ProjectObjectConstants.OBJECT_TYPE, projectId)) {
|
||||
if (member == null || !Objects.equals(member.getStatus(), 0)
|
||||
|| !Objects.equals(member.getRoleId(), technicalOwnerRole.getId())
|
||||
|| member.getUserId() == null) {
|
||||
continue;
|
||||
}
|
||||
return defaultText(loadUser(member.getUserId()).getNickname());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private ProjectDO validateProjectExists(Long projectId) {
|
||||
ProjectDO project = projectMapper.selectById(projectId);
|
||||
if (project == null) {
|
||||
@@ -941,6 +969,7 @@ public class WorkReportCommonService {
|
||||
target.setProjectName(project.getProjectName());
|
||||
target.setProjectOwnerId(profile.userId());
|
||||
target.setProjectOwnerName(profile.userName());
|
||||
target.setTechnicalOwnerName(resolveProjectTechnicalOwnerName(project.getId()));
|
||||
target.setProjectMemberSnapshot(buildProjectMemberSnapshot(project.getId()));
|
||||
target.setSupervisorUserId(profile.directManagerId());
|
||||
target.setSupervisorName(profile.directManagerName());
|
||||
@@ -1358,4 +1387,4 @@ public class WorkReportCommonService {
|
||||
private record CurrentUserProfile(Long userId, String userName, String deptName, String postName,
|
||||
Long directManagerId, String directManagerName) {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,6 +33,7 @@ import com.njcn.rdms.module.project.dal.mysql.project.task.ProjectTaskMapper;
|
||||
import com.njcn.rdms.module.project.dal.mysql.project.task.TaskWorklogMapper;
|
||||
import com.njcn.rdms.module.project.dal.mysql.status.ObjectStatusModelMapper;
|
||||
import com.njcn.rdms.module.project.enums.ErrorCodeConstants;
|
||||
import com.njcn.rdms.module.project.service.workreport.common.WorkReportCommonService;
|
||||
import com.njcn.rdms.module.system.api.dept.DeptApi;
|
||||
import com.njcn.rdms.module.system.api.dept.PostApi;
|
||||
import com.njcn.rdms.module.system.api.dept.dto.DeptRespDTO;
|
||||
@@ -91,6 +92,8 @@ public class WorkReportDefaultDraftService {
|
||||
private PersonalItemMapper personalItemMapper;
|
||||
@Resource
|
||||
private ProjectExecutionMapper projectExecutionMapper;
|
||||
@Resource
|
||||
private WorkReportCommonService workReportCommonService;
|
||||
|
||||
public WeeklyReportRespVO previewWeeklyDefaultDraft(WeeklyReportDefaultDraftReqVO reqVO) {
|
||||
validatePeriod(reqVO.getPeriodStartDate(), reqVO.getPeriodEndDate());
|
||||
@@ -155,7 +158,7 @@ public class WorkReportDefaultDraftService {
|
||||
respVO.setProjectName(project.getProjectName());
|
||||
respVO.setProjectOwnerId(profile.userId());
|
||||
respVO.setProjectOwnerName(profile.userName());
|
||||
respVO.setTechnicalOwnerName(resolveProjectManagerName(project.getManagerUserId()));
|
||||
respVO.setTechnicalOwnerName(workReportCommonService.resolveProjectTechnicalOwnerName(project.getId()));
|
||||
respVO.setProjectMemberSnapshot(BeanUtils.toBean(buildProjectMemberSnapshot(projectId),
|
||||
WorkReportMemberSnapshotRespVO.class));
|
||||
respVO.setSupervisorUserId(profile.directManagerId());
|
||||
@@ -525,14 +528,6 @@ public class WorkReportDefaultDraftService {
|
||||
return user;
|
||||
}
|
||||
|
||||
private String resolveProjectManagerName(Long managerUserId) {
|
||||
if (managerUserId == null) {
|
||||
return null;
|
||||
}
|
||||
AdminUserRespDTO manager = loadUser(managerUserId);
|
||||
return safeText(manager.getNickname());
|
||||
}
|
||||
|
||||
private List<WorkReportMemberSnapshotItem> buildProjectMemberSnapshot(Long projectId) {
|
||||
List<UserObjectRoleDO> members = userObjectRoleMapper.selectListByObject(ProjectObjectConstants.OBJECT_TYPE, projectId);
|
||||
Set<Long> userIds = new LinkedHashSet<>();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,12 +6,12 @@ spring:
|
||||
username: # Nacos 账号
|
||||
password: # Nacos 密码
|
||||
discovery: # 【配置中心】配置项
|
||||
namespace: 1924bcfb-4eab-4c58-9003-4a37d5fc2949 # 命名空间。这里使用 dev 开发环境
|
||||
namespace: 0cd9c1b2-56ba-4e1d-a23b-f951392c46bf # 命名空间。这里使用 dev 开发环境
|
||||
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
|
||||
metadata:
|
||||
version: 1.0.0 # 服务实例的版本号,可用于灰度发布
|
||||
config: # 【注册中心】配置项
|
||||
namespace: 1924bcfb-4eab-4c58-9003-4a37d5fc2949 # 命名空间。这里使用 dev 开发环境
|
||||
namespace: 0cd9c1b2-56ba-4e1d-a23b-f951392c46bf # 命名空间。这里使用 dev 开发环境
|
||||
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
|
||||
|
||||
#################### 数据库相关配置 ####################
|
||||
@@ -55,7 +55,7 @@ spring:
|
||||
primary: master
|
||||
datasource:
|
||||
master:
|
||||
url: jdbc:mysql://192.168.1.22:13306/rdms_view?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.22:13306/rdms_v3?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
|
||||
username: root
|
||||
password: njcnpqs
|
||||
|
||||
@@ -63,7 +63,7 @@ spring:
|
||||
data:
|
||||
redis:
|
||||
host: 127.0.0.1 # 地址
|
||||
port: 16379 # 端口
|
||||
port: 6379 # 端口
|
||||
database: 1 # 数据库索引
|
||||
# password: njcnpqs # 密码,建议生产环境开启
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user