feat(sip): 增加项目操作日志简略信息记录功能
- 新增简略信息变更记录逻辑,包括配置信息和产品信息变更 - 在 ProjectOperateLog 模型中添加 logType 字段,用于区分日志类型 - 修改 ProjectOperateLogMapper 映射文件,增加 logType 字段的插入 -优化了日志记录的结构和内容,提高了日志的可读性和实用性master
parent
623be7c554
commit
196a81e1e2
|
@ -2,6 +2,8 @@ package com.ruoyi.sip.domain;
|
|||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
|
@ -13,6 +15,8 @@ import com.ruoyi.common.core.domain.BaseEntity;
|
|||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class ProjectOperateLog extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@ -36,65 +40,19 @@ public class ProjectOperateLog extends BaseEntity
|
|||
/** 项目id */
|
||||
@Excel(name = "项目id")
|
||||
private Long projectId;
|
||||
//记录类型 0:简略信息 1:详细信息
|
||||
private String logType;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
@Getter
|
||||
public enum LogTypeEnum {
|
||||
BRIEF("0", "简略信息"),
|
||||
DETAIL("1", "详细信息");
|
||||
private final String value;
|
||||
private final String desc;
|
||||
LogTypeEnum(String value,String desc){
|
||||
this.value = value;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setOperateLog(String operateLog)
|
||||
{
|
||||
this.operateLog = operateLog;
|
||||
}
|
||||
|
||||
public String getOperateLog()
|
||||
{
|
||||
return operateLog;
|
||||
}
|
||||
|
||||
public void setOperateUser(String operateUser)
|
||||
{
|
||||
this.operateUser = operateUser;
|
||||
}
|
||||
|
||||
public String getOperateUser()
|
||||
{
|
||||
return operateUser;
|
||||
}
|
||||
|
||||
public void setOperateTime(Date operateTime)
|
||||
{
|
||||
this.operateTime = operateTime;
|
||||
}
|
||||
|
||||
public Date getOperateTime()
|
||||
{
|
||||
return operateTime;
|
||||
}
|
||||
|
||||
public void setProjectId(Long projectId)
|
||||
{
|
||||
this.projectId = projectId;
|
||||
}
|
||||
|
||||
public Long getProjectId()
|
||||
{
|
||||
return projectId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("operateLog", getOperateLog())
|
||||
.append("operateUser", getOperateUser())
|
||||
.append("operateTime", getOperateTime())
|
||||
.append("projectId", getProjectId())
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import com.ruoyi.common.exception.ServiceException;
|
|||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.DictUtils;
|
||||
import com.ruoyi.common.utils.ShiroUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.sip.domain.*;
|
||||
import com.ruoyi.sip.mapper.ProjectInfoMapper;
|
||||
import com.ruoyi.sip.service.*;
|
||||
|
@ -69,6 +70,12 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
|
|||
projectInfo.setProjectWorkProgressList(projectWorkProgresses);
|
||||
//查询操作日志信息
|
||||
List<ProjectOperateLog> projectOperateLogs = operateLogService.selectProjectOperateLogListByProjectId(projectInfo.getId());
|
||||
projectOperateLogs=projectOperateLogs.stream().filter(item->{
|
||||
if (ShiroUtils.getSysUser().isAdmin()) {
|
||||
return ProjectOperateLog.LogTypeEnum.DETAIL.getValue().equals(item.getLogType());
|
||||
}
|
||||
return ProjectOperateLog.LogTypeEnum.BRIEF.getValue().equals(item.getLogType());
|
||||
}).collect(Collectors.toList());
|
||||
projectInfo.setProjectOperateLogList(projectOperateLogs);
|
||||
return projectInfo;
|
||||
}
|
||||
|
@ -193,6 +200,9 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
|
|||
|
||||
private void recordOperationLogs(ProjectInfo projectInfo, ProjectInfo oldProjectInfo) {
|
||||
StringBuilder logContent = new StringBuilder();
|
||||
//简略信息变更
|
||||
StringBuilder logSimpleContent = new StringBuilder();
|
||||
int logSimpleIndex = 1;
|
||||
int logIndex = 1;
|
||||
// 比较项目信息字段差异
|
||||
logIndex = compareField(logContent, logIndex, "项目名称", oldProjectInfo.getProjectName(), projectInfo.getProjectName());
|
||||
|
@ -221,7 +231,10 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
|
|||
logIndex = compareField(logContent, logIndex, "竞争对手", oldProjectInfo.getCompetitor(), projectInfo.getCompetitor());
|
||||
logIndex = compareField(logContent, logIndex, "关键技术问题", oldProjectInfo.getKeyProblem(), projectInfo.getKeyProblem());
|
||||
logIndex = compareField(logContent, logIndex, "项目简述", oldProjectInfo.getProjectDesc(), projectInfo.getProjectDesc());
|
||||
|
||||
if (logIndex > 1) {
|
||||
logSimpleIndex = logIndex;
|
||||
logSimpleContent.append("1.配置信息发生变更\n");
|
||||
}
|
||||
// 配置信息变更
|
||||
List<ProjectProductInfo> oldHardwareList = oldProjectInfo.getHardwareProjectProductInfoList();
|
||||
List<ProjectProductInfo> oldSoftwareList = oldProjectInfo.getSoftwareProjectProductInfoList();
|
||||
|
@ -231,11 +244,12 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
|
|||
// 比较硬件产品信息
|
||||
logIndex = compareProductInfoList(logContent, logIndex, "硬件产品", oldHardwareList, newHardwareList);
|
||||
|
||||
|
||||
if (logSimpleIndex != logIndex) {
|
||||
logSimpleContent.append(StringUtils.isNotEmpty(logSimpleContent)?"1.":"2.").append("产品信息发生变更");
|
||||
}
|
||||
// 比较软件产品信息
|
||||
logIndex = compareProductInfoList(logContent, logIndex, "软件产品", oldSoftwareList, newSoftwareList);
|
||||
|
||||
|
||||
// 插入操作日志
|
||||
if (logContent.length() > 0) {
|
||||
ProjectOperateLog operateLog = new ProjectOperateLog();
|
||||
|
@ -243,6 +257,17 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
|
|||
operateLog.setOperateLog(logContent.toString());
|
||||
operateLog.setOperateTime(DateUtils.getNowDate());
|
||||
operateLog.setOperateUser(ShiroUtils.getUserId().toString());
|
||||
operateLog.setLogType(ProjectOperateLog.LogTypeEnum.DETAIL.getValue());
|
||||
operateLogService.insertProjectOperateLog(operateLog);
|
||||
//记录type
|
||||
}
|
||||
if (logSimpleContent.length() > 0){
|
||||
ProjectOperateLog operateLog = new ProjectOperateLog();
|
||||
operateLog.setProjectId(projectInfo.getId());
|
||||
operateLog.setOperateLog(logSimpleContent.toString());
|
||||
operateLog.setOperateTime(DateUtils.getNowDate());
|
||||
operateLog.setOperateUser(ShiroUtils.getUserId().toString());
|
||||
operateLog.setLogType(ProjectOperateLog.LogTypeEnum.BRIEF.getValue());
|
||||
operateLogService.insertProjectOperateLog(operateLog);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,10 +10,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="operateUser" column="operate_user" />
|
||||
<result property="operateTime" column="operate_time" />
|
||||
<result property="projectId" column="project_id" />
|
||||
<result property="logType" column="log_type" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectProjectOperateLogVo">
|
||||
select id, operate_log, operate_user, operate_time, project_id from project_operate_log
|
||||
select id, operate_log, operate_user, operate_time, project_id,log_type from project_operate_log
|
||||
</sql>
|
||||
|
||||
<select id="selectProjectOperateLogList" parameterType="ProjectOperateLog" resultMap="ProjectOperateLogResult">
|
||||
|
@ -36,6 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
, t1.operate_user
|
||||
, t1.operate_time
|
||||
, t1.project_id
|
||||
, t1.log_type
|
||||
, t2.user_name
|
||||
from project_operate_log t1
|
||||
left join sys_user t2 on operate_user = t2.user_id
|
||||
|
@ -50,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="operateUser != null">operate_user,</if>
|
||||
<if test="operateTime != null">operate_time,</if>
|
||||
<if test="projectId != null">project_id,</if>
|
||||
<if test="logType != null">log_type,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">#{id},</if>
|
||||
|
@ -57,6 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="operateUser != null">#{operateUser},</if>
|
||||
<if test="operateTime != null">#{operateTime},</if>
|
||||
<if test="projectId != null">#{projectId},</if>
|
||||
<if test="logType != null">#{logType},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
@ -67,6 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="operateUser != null">operate_user = #{operateUser},</if>
|
||||
<if test="operateTime != null">operate_time = #{operateTime},</if>
|
||||
<if test="projectId != null">project_id = #{projectId},</if>
|
||||
<if test="logType != null">log_type = #{logType},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
|
Loading…
Reference in New Issue