Revert "Fix Bug #550: AI修复"

This reverts commit 16c42ca108.
This commit is contained in:
2026-05-27 08:59:07 +08:00
parent bd14563691
commit 9db5ced4e3
5432 changed files with 778638 additions and 171 deletions

View File

@@ -0,0 +1,36 @@
package com.openhis.sys.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.core.common.core.domain.HisBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 系统操作记录Entity实体
*
* @author system
* @date 2025-02-20
*/
@Data
@TableName("sys_operation_record")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class OperationRecord extends HisBaseEntity {
/** ID */
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/** 操作类型|1新增,2修改,3删除 */
private String dbOpType;
/** 表名 */
private String tableName;
/** 参数json */
private String paramJson;
}

View File

@@ -0,0 +1,36 @@
package com.openhis.sys.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.core.common.core.domain.HisBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 系统选项配置Entity实体
*
* @author system
* @date 2025-02-20
*/
@Data
@TableName("sys_option")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class Option extends HisBaseEntity {
/** ID */
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/** 选项key */
private String optionKey;
/** 选项value */
private String optionValue;
/** 说明 */
private String optionDesc;
}

View File

@@ -0,0 +1,16 @@
package com.openhis.sys.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.openhis.sys.domain.OperationRecord;
import org.springframework.stereotype.Repository;
/**
* 系统操作记录Mapper接口
*
* @author system
* @date 2025-02-20
*/
@Repository
public interface OperationRecordMapper extends BaseMapper<OperationRecord> {
}

View File

@@ -0,0 +1,16 @@
package com.openhis.sys.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.openhis.sys.domain.Option;
import org.springframework.stereotype.Repository;
/**
* 系统选项配置Mapper接口
*
* @author system
* @date 2025-02-20
*/
@Repository
public interface OptionMapper extends BaseMapper<Option> {
}

View File

@@ -0,0 +1,34 @@
package com.openhis.sys.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.sys.domain.OperationRecord;
import java.util.List;
/**
* 系统操作记录Service接口
*
* @author system
* @date 2025-02-20
*/
public interface IOperationRecordService extends IService<OperationRecord> {
/**
* 新增操作记录(实体参数)
*
* @param dbOpType 操作类型
* @param tableName 表名
* @param entity 参数
*/
void addEntityOperationRecord(String dbOpType, String tableName, Object entity);
/**
* 新增操作记录(ids参数)
*
* @param dbOpType 操作类型
* @param tableName 表名
* @param ids 参数
*/
void addIdsOperationRecord(String dbOpType, String tableName, List<Long> ids);
}

View File

@@ -0,0 +1,14 @@
package com.openhis.sys.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.sys.domain.Option;
/**
* 系统选项配置Service接口
*
* @author system
* @date 2025-02-20
*/
public interface IOptionService extends IService<Option> {
}

View File

@@ -0,0 +1,118 @@
package com.openhis.sys.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.core.common.core.domain.model.LoginUser;
import com.core.common.utils.SecurityUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.openhis.sys.domain.OperationRecord;
import com.openhis.sys.mapper.OperationRecordMapper;
import com.openhis.sys.service.IOperationRecordService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 系统操作记录Service业务层处理
*
* @author system
* @date 2025-02-20
*/
@Slf4j
@Service
@AllArgsConstructor
public class OperationRecordServiceImpl extends ServiceImpl<OperationRecordMapper, OperationRecord>
implements IOperationRecordService {
private static final ObjectMapper objectMapper = new ObjectMapper();
/**
* 新增操作记录
*
* @param dbOpType 操作类型
* @param tableName 表名
* @param entity 参数
*/
@Override
public void addEntityOperationRecord(String dbOpType, String tableName, Object entity) {
try {
String paramJson = serializeToKeyValueString(entity);
OperationRecord operationRecord = new OperationRecord();
operationRecord.setDbOpType(dbOpType);
operationRecord.setTableName(tableName);
operationRecord.setParamJson(paramJson);
// 统一补全必填字段create_by、tenant_id、create_time
setRequiredFields(operationRecord);
baseMapper.insert(operationRecord);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
/**
* 新增操作记录(ids参数)
*
* @param dbOpType 操作类型
* @param tableName 表名
* @param ids 参数
*/
@Override
public void addIdsOperationRecord(String dbOpType, String tableName, List<Long> ids) {
String paramJson = ids.stream().map(String::valueOf) // 将 Long 转为 String
.collect(Collectors.joining(","));
OperationRecord operationRecord = new OperationRecord();
operationRecord.setDbOpType(dbOpType);
operationRecord.setTableName(tableName);
operationRecord.setParamJson(paramJson);
// 统一补全必填字段create_by、tenant_id、create_time
setRequiredFields(operationRecord);
baseMapper.insert(operationRecord);
}
/**
* 将对象序列化为键值对JSON字符串
*
* @param entity 任意对象
* @return JSON字符串
*/
private static String serializeToKeyValueString(Object entity) throws JsonProcessingException {
// 使用Jackson库将对象转为Map
Map<String, Object> map = objectMapper.convertValue(entity, Map.class);
return objectMapper.writeValueAsString(map);
}
/**
* 设置操作记录的必需字段tenant_id、create_by、create_time确保插入时不为null
*
* @param operationRecord 操作记录对象
*/
private void setRequiredFields(OperationRecord operationRecord) {
String createBy = "system";
Integer tenantId = null;
try {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null) {
createBy = loginUser.getUsername();
tenantId = loginUser.getTenantId();
}
} catch (Exception e) {
// 如果获取失败,使用默认值
}
operationRecord.setCreateBy(createBy != null ? createBy : "system");
operationRecord.setTenantId(tenantId != null ? tenantId : 1);
if (operationRecord.getCreateTime() == null) {
operationRecord.setCreateTime(new Date());
}
}
}

View File

@@ -0,0 +1,22 @@
package com.openhis.sys.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.openhis.sys.domain.Option;
import com.openhis.sys.mapper.OptionMapper;
import com.openhis.sys.service.IOptionService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 系统选项配置Service业务层处理
*
* @author system
* @date 2025-02-20
*/
@Slf4j
@Service
@AllArgsConstructor
public class OptionServiceImpl extends ServiceImpl<OptionMapper, Option> implements IOptionService {
}