---添加数据日志查询功能
This commit is contained in:
@ -12,5 +12,10 @@ public interface ExceptionCommonCode {
|
||||
*/
|
||||
final BusinessCode DATA_FIELD_DUPLICATION = BusinessCode.of(10501,"字段【{}】不允许重复");
|
||||
|
||||
/**
|
||||
* 数据删除时,id不能为空
|
||||
*/
|
||||
final BusinessCode DATA_DEL_ID_IS_NULL = BusinessCode.of(10510,"删除数据时,表【{}】的主键为空,删除失败!");
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#Generated by Maven
|
||||
#Wed Sep 24 16:43:44 CST 2025
|
||||
#Tue Oct 21 16:19:00 CST 2025
|
||||
version=2.0.4
|
||||
groupId=com.geg
|
||||
artifactId=itc-pcitc-dependencies-api
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
com\pictc\enums\BSalesCode.class
|
||||
com\pictc\annotations\datalog\LogField.class
|
||||
com\pictc\annotations\datalog\LogTable.class
|
||||
com\pictc\enums\BContractCode.class
|
||||
com\pictc\annotations\datalog\JoinValueType.class
|
||||
com\pictc\constant\ContractLiteflowRule.class
|
||||
com\pictc\annotations\datalog\LogJoin.class
|
||||
com\xjrsoft\module\datalog\vo\DataChangeLogDto.class
|
||||
com\pictc\annotations\datalog\LogJoinColumn.class
|
||||
com\pictc\annotations\datalog\ValueDirectionType.class
|
||||
com\pictc\enums\BReserveCode.class
|
||||
com\pictc\enums\ExceptionCommonCode.class
|
||||
com\pictc\annotations\datalog\SourceType.class
|
||||
com\xjrsoft\module\datalog\vo\OperationType.class
|
||||
com\pictc\common\mybatis\JsonTypeHandler.class
|
||||
com\pictc\enums\BusinessCode.class
|
||||
com\pictc\enums\BTransportCode.class
|
||||
com\xjrsoft\module\datalog\vo\FieldChangeDto.class
|
||||
com\pictc\enums\BProcurementCode.class
|
||||
com\pictc\enums\BFinanceCode.class
|
||||
com\pictc\annotations\datalog\JoinCaseType.class
|
||||
com\pictc\annotations\datalog\JoinType.class
|
||||
|
||||
@ -1,13 +1,22 @@
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\xjrsoft\module\datalog\vo\FieldChangeDto.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BProcurementCode.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BSalesCode.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\xjrsoft\module\datalog\vo\OperationType.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BContractCode.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\JoinCaseType.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BFinanceCode.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogField.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\JoinValueType.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogJoin.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\JoinType.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\common\mybatis\JsonTypeHandler.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BusinessCode.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\ExceptionCommonCode.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\xjrsoft\module\datalog\vo\DataChangeLogDto.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\ValueDirectionType.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\SourceType.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogTable.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\constant\ContractLiteflowRule.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BTransportCode.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogJoinColumn.java
|
||||
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BReserveCode.java
|
||||
|
||||
@ -48,10 +48,14 @@ import com.pictc.converts.ConverUtil;
|
||||
import com.pictc.datalog.LogFieldInfo;
|
||||
import com.pictc.datalog.LogJoinInfo;
|
||||
import com.pictc.datalog.LogTableInfo;
|
||||
import com.pictc.enums.BusinessCode;
|
||||
import com.pictc.enums.ExceptionCommonCode;
|
||||
import com.pictc.exceptions.OrmException;
|
||||
import com.pictc.jdbc.JdbcContext;
|
||||
import com.pictc.jdbc.ResultSetUtils;
|
||||
import com.pictc.jdbc.model.JdbcParam;
|
||||
import com.xjrsoft.common.enums.YesOrNoEnum;
|
||||
import com.xjrsoft.common.exception.BusinessException;
|
||||
import com.xjrsoft.common.utils.SecureUtil;
|
||||
import com.xjrsoft.module.datalog.entity.DataChangeLog;
|
||||
import com.xjrsoft.module.datalog.entity.json.FieldChange;
|
||||
@ -124,7 +128,7 @@ public class DataLogTools {
|
||||
|
||||
public static final String SQL_LIST = "SELECT * FROM ${TBL_NAME} WHERE entity_id = ? ORDER BY operation_time DESC, flow_id DESC";
|
||||
|
||||
public static final Set<String> excludeFields = SetUtils.of("tenantId","dataVersion","tenantId","tenantId","tenantId");
|
||||
public static final Set<String> excludeFields = SetUtils.of("tenantId","dataVersion","createUserId","createDate","modifyUserId","modifyDate","modifyDate","deleteMark");
|
||||
|
||||
|
||||
public static DataChangeLog createLog(Class<?> klazz,OperationType type) {
|
||||
@ -250,6 +254,13 @@ public class DataLogTools {
|
||||
}
|
||||
|
||||
|
||||
public static boolean deleteByIds(Class<?> klazz, @Valid List<Long> ids) {
|
||||
for (Long id : ids) {
|
||||
deleteById(klazz, id);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static <T>T deleteById(Class<T> klazz,Long id) {
|
||||
LogTableInfo tabInfo = getAnnotation(klazz);
|
||||
BaseMapper mapper = MybatisTools.getMapper(tabInfo.getEntityType());
|
||||
@ -274,13 +285,68 @@ public class DataLogTools {
|
||||
return entity;
|
||||
}
|
||||
|
||||
public static boolean deleteByIds(Class<?> klazz, @Valid List<Long> ids) {
|
||||
private static void delete(Object entity,LogTableInfo tableinfo,BaseMapper mapper){
|
||||
Long idValue = tableinfo.getIdValue(entity);
|
||||
if(idValue!=null && idValue > 0) {
|
||||
mapper.deleteById(idValue);
|
||||
}else {
|
||||
throw new BusinessException(BusinessCode.ofArgs(ExceptionCommonCode.DATA_DEL_ID_IS_NULL,tableinfo.getTableName()));
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean enable(Class<?> klazz, @Valid List<Long> ids) {
|
||||
for (Long id : ids) {
|
||||
deleteById(klazz, id);
|
||||
enableById(klazz, id);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static <T>T enableById(Class<T> klazz,Long id) {
|
||||
LogTableInfo tabInfo = getAnnotation(klazz);
|
||||
BaseMapper mapper = MybatisTools.getMapper(tabInfo.getEntityType());
|
||||
Object entity = findNativeById(klazz, id);
|
||||
if(entity==null) return null;
|
||||
T old = BeanUtils.newInstance(klazz);
|
||||
BeanUtil.copyProperties(entity,old,true);
|
||||
List<DataChangeLog> logs = CollectionUtils.newArrayList();
|
||||
tabInfo.setFieldValue(entity,"valid",YesOrNoEnum.YES.getTextCode());
|
||||
mapper.updateById(entity);
|
||||
T dto = (T)tabInfo.toDto(entity);
|
||||
DataChangeLog datalog = createLog(klazz,OperationType.UPDATE);
|
||||
datalog.setEntityId(id);
|
||||
buildFields(datalog,tabInfo,dto,null);
|
||||
logs.add(datalog);
|
||||
saveLogs(tabInfo,logs);
|
||||
return dto;
|
||||
}
|
||||
|
||||
public static boolean disable(Class<?> klazz, @Valid List<Long> ids) {
|
||||
for (Long id : ids) {
|
||||
enableById(klazz, id);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static <T>T disableById(Class<T> klazz,Long id) {
|
||||
LogTableInfo tabInfo = getAnnotation(klazz);
|
||||
BaseMapper mapper = MybatisTools.getMapper(tabInfo.getEntityType());
|
||||
Object entity = findNativeById(klazz, id);
|
||||
if(entity==null) return null;
|
||||
T old = BeanUtils.newInstance(klazz);
|
||||
BeanUtil.copyProperties(entity,old,true);
|
||||
List<DataChangeLog> logs = CollectionUtils.newArrayList();
|
||||
tabInfo.setFieldValue(entity,"valid",YesOrNoEnum.NO.getTextCode());
|
||||
mapper.updateById(entity);
|
||||
T dto = (T)tabInfo.toDto(entity);
|
||||
DataChangeLog datalog = createLog(klazz,OperationType.UPDATE);
|
||||
datalog.setEntityId(id);
|
||||
buildFields(datalog,tabInfo,dto,null);
|
||||
logs.add(datalog);
|
||||
saveLogs(tabInfo,logs);
|
||||
return dto;
|
||||
}
|
||||
|
||||
|
||||
public static <T>T findById(Class<T> klazz,Serializable id){
|
||||
return findById(klazz,id,false);
|
||||
}
|
||||
@ -294,7 +360,14 @@ public class DataLogTools {
|
||||
initJoinValues(tabInfo,dto,SetUtils.of(klazz), full);
|
||||
return dto;
|
||||
}
|
||||
|
||||
|
||||
private static Object findNativeById(Class<?> klazz, Serializable id) {
|
||||
LogTableInfo tabInfo = getAnnotation(klazz);
|
||||
BaseMapper mapper = MybatisTools.getMapper(tabInfo.getEntityType());
|
||||
return mapper.selectById(id);
|
||||
}
|
||||
|
||||
public static void initJoinValues(LogTableInfo tabInfo,Object entity,Set<Class<?>> classPath,boolean full){
|
||||
List<LogJoinInfo> joins = tabInfo.getJoins();
|
||||
BaseMapper mapper = MybatisTools.getMapper(tabInfo.getEntityType());
|
||||
@ -362,18 +435,8 @@ public class DataLogTools {
|
||||
}
|
||||
|
||||
|
||||
private static void delete(Object entity,LogTableInfo tableinfo,BaseMapper mapper){
|
||||
Long idValue = tableinfo.getIdValue(entity);
|
||||
if(idValue!=null && idValue > 0) {
|
||||
// QueryChainWrapper wrapper = new QueryChainWrapper(mapper);
|
||||
// wrapper.eq(tableinfo.getIdColumn(),tableinfo.getIdValue(entity));
|
||||
// mapper.delete(wrapper);
|
||||
mapper.deleteById(idValue);
|
||||
}else {
|
||||
throw new RuntimeException("删除数据时,表【"+tableinfo.getName()+"】的主键为空,删除失败!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static <T>void initJoinValue(T entity,LogTableInfo tabInfo,Set<Class<?>> classes) {
|
||||
if(classes==null) {
|
||||
@ -881,4 +944,6 @@ public class DataLogTools {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -18,8 +18,12 @@ public interface DatalogService {
|
||||
|
||||
public <T>T deleteById(Class<T> klazz,long id);
|
||||
|
||||
public <T>List<DataChangeLog> findByEntityId(Class<T> klazz,long id);
|
||||
public <T>List<DataChangeLog> findLogsByEntityId(Class<T> klazz,long id);
|
||||
|
||||
public <T>boolean deleteByIds(Class<T> class1, @Valid List<Long> ids);
|
||||
|
||||
public <T>boolean enable(Class<T> class1, @Valid List<Long> ids);
|
||||
|
||||
public <T>boolean disable(Class<T> class1, @Valid List<Long> ids);
|
||||
|
||||
}
|
||||
|
||||
@ -52,16 +52,26 @@ public class DatalogServiceImpl implements DatalogService{
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public <T> boolean deleteByIds(Class<T> class1, @Valid List<Long> ids) {
|
||||
return DataLogTools.deleteByIds(class1, ids);
|
||||
public <T> boolean deleteByIds(Class<T> klazz, @Valid List<Long> ids) {
|
||||
return DataLogTools.deleteByIds(klazz, ids);
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
@Override
|
||||
public <T> List<DataChangeLog> findByEntityId(Class<T> klazz, long dataId) {
|
||||
public <T> List<DataChangeLog> findLogsByEntityId(Class<T> klazz, long dataId) {
|
||||
return DataLogTools.findLogsByEntityId(klazz, dataId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> boolean enable(Class<T> klazz, @Valid List<Long> ids) {
|
||||
return DataLogTools.enable(klazz, ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> boolean disable(Class<T> klazz, @Valid List<Long> ids) {
|
||||
return DataLogTools.disable(klazz, ids);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user