---初始化项目

This commit is contained in:
2025-10-10 09:20:48 +08:00
parent a8e0f1c377
commit 7f74c186da
203 changed files with 14674 additions and 0 deletions

View File

@ -0,0 +1,30 @@
package com.xjrsoft.common;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.pictc.utils.DataLogTools;
@Service
public class CommonEnhancedService {
@Transactional(rollbackFor = Exception.class)
public <T>T insert(T entity) {
return DataLogTools.insert(entity);
}
public <T>T updateById(T entity) {
return DataLogTools.update(entity);
}
public <T>T delete(T entity) {
return DataLogTools.delete(entity);
}
public <T>T deleteById(Class<T> klazz,long id) {
return DataLogTools.deleteById(klazz, id);
}
}

View File

@ -0,0 +1,120 @@
package com.xjrsoft.module.datalog.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableField;
import com.pictc.common.mybatis.JsonTypeHandler;
import com.xjrsoft.module.datalog.entity.json.FieldChange;
import com.xjrsoft.module.datalog.vo.OperationType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 数据变更日志实体类
* 用于记录数据库字段修改和实体删除操作
*/
@ApiModel(value = "DataChangeLog对象", description = "数据变更日志")
@Data
@Accessors(chain = true)
public class DataChangeLog implements Serializable{
/**
* @Fields {todo}(用一句话描述这个变量表示什么)
*/
private static final long serialVersionUID = 1L;
/**
* 日志ID主键
*/
@ApiModelProperty("主键")
private String id;
/**
* 日志ID主键
*/
@ApiModelProperty("流水id")
private String flowId;
/**
* 父表ID,根节点#
*/
@ApiModelProperty("父表ID")
private String pid = "#";
/**
* 实体类名称(全类名)
*/
@ApiModelProperty("实体类名称(全类名)")
private String entityClassName;
/**
* 实体类简称(简单类名)
*/
@ApiModelProperty("业务名称")
private String busName;
/**
* 操作的实体ID主键值
*/
@ApiModelProperty("操作的实体ID主键值")
private Long entityId;
/**
* 字段变更详情
* key: 字段名
* value: 包含旧值和新值的Map
*/
@TableField(typeHandler = JsonTypeHandler.class)
@ApiModelProperty("属性值记录")
private List<FieldChange> fieldChanges = new ArrayList<FieldChange>();
/**
* 操作类型INSERT-新增UPDATE-修改DELETE-删除
*/
@ApiModelProperty("操作类型INSERT-新增UPDATE-修改DELETE-删除")
private OperationType operationType;
/**
* 操作人ID
*/
@ApiModelProperty("操作人ID")
private Long operatorId;
/**
* 操作人姓名
*/
@ApiModelProperty("操作人姓名")
private String operatorName;
/**
* 操作时间
*/
@ApiModelProperty("操作时间")
private LocalDateTime operationTime;
/**
* 操作IP地址
*/
@ApiModelProperty("操作IP地址")
private String operationIp;
/**
* 判断是否有字段变更
*/
public boolean hasFieldChanges() {
return !this.fieldChanges.isEmpty();
}
public void addFiledChnage(FieldChange change) {
fieldChanges.add(change);
}
}

View File

@ -0,0 +1,39 @@
package com.xjrsoft.module.datalog.entity.json;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
@ApiModel(value = "FieldChange对象", description = "数据变更字段记录")
@Data
@Accessors(chain = true)
public class FieldChange implements Serializable{
private static final long serialVersionUID = 1L;
@ApiModelProperty("属性名称")
private String name;
@ApiModelProperty("属性")
private String field;
/**
* 旧值
*/
@ApiModelProperty("旧值")
private String oldValue;
/**
* 新值
*/
@ApiModelProperty("新值")
private String newValue;
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.module.datalog.service;
import java.util.List;
import javax.validation.Valid;
import com.xjrsoft.module.datalog.entity.DataChangeLog;
public interface DatalogService {
public <T>T insert(T entity);
public <T>List<T> insertBatch(List<T> entity);
public <T>boolean updateById(T entity);
public <T>T delete(T entity);
public <T>T deleteById(Class<T> klazz,long id);
public <T>List<DataChangeLog> findByEntityId(Class<T> klazz,long id);
public <T>boolean deleteByIds(Class<T> class1, @Valid List<Long> ids);
}

View File

@ -0,0 +1,18 @@
package com.xjrsoft.module.datalog.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.pictc.jdbc.model.ParamQueryBo;
import com.pictc.jdbc.model.QueryParameter;
public interface QueryService {
public JSONArray queryList(QueryParameter param);
public IPage<JSONObject> queryPage(QueryParameter param);
public JSONArray queryParamsList(ParamQueryBo param);
}

View File

@ -0,0 +1,69 @@
package com.xjrsoft.module.datalog.service.impl;
import java.util.List;
import javax.validation.Valid;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.google.api.client.util.Lists;
import com.pictc.utils.DataLogTools;
import com.xjrsoft.module.datalog.entity.DataChangeLog;
import com.xjrsoft.module.datalog.service.DatalogService;
@Service
public class DatalogServiceImpl implements DatalogService{
@Transactional(rollbackFor = Exception.class)
@Override
public <T> T insert(T entity) {
return DataLogTools.insert(entity);
}
@Transactional(rollbackFor = Exception.class)
@Override
public <T> List<T> insertBatch(List<T> entitys) {
List<T> res = Lists.newArrayList();
for (T entity : entitys) {
res.add(DataLogTools.insert(entity));
}
return res;
}
@Transactional(rollbackFor = Exception.class)
@Override
public <T> boolean updateById(T entity) {
DataLogTools.update(entity);
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public <T> T delete(T entity) {
return DataLogTools.delete(entity);
}
@Transactional(rollbackFor = Exception.class)
@Override
public <T> T deleteById(Class<T> klazz, long id) {
return DataLogTools.deleteById(klazz, id);
}
@Transactional(rollbackFor = Exception.class)
@Override
public <T> boolean deleteByIds(Class<T> class1, @Valid List<Long> ids) {
return DataLogTools.deleteByIds(class1, ids);
}
@Transactional(readOnly = true)
@Override
public <T> List<DataChangeLog> findByEntityId(Class<T> klazz, long dataId) {
return DataLogTools.findLogsByEntityId(klazz, dataId);
}
}

View File

@ -0,0 +1,62 @@
package com.xjrsoft.module.datalog.service.impl;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.pictc.jdbc.JdbcTools;
import com.pictc.jdbc.SqlBuilder;
import com.pictc.jdbc.model.JdbcParam;
import com.pictc.jdbc.model.ParamItem;
import com.pictc.jdbc.model.ParamQueryBo;
import com.pictc.jdbc.model.QueryParameter;
import com.pictc.utils.ListUtils;
import com.xjrsoft.module.datalog.service.QueryService;
@Service
public class QueryServiceImpl implements QueryService{
public static final String SQL_FIND_SQL = "select sql from lng_sql_rpt where id = ?";
public String getQuerySql(String queryId) {
String sql= JdbcTools.queryPrimitive(SQL_FIND_SQL,String.class,ListUtils.ofArray(JdbcParam.of(Types.VARCHAR, String.class, queryId)));
if(sql.contains("call")) {
return sql;
}
return "SELECT * FROM ("+sql+") t";
}
@Transactional(rollbackFor = Exception.class)
@Override
public JSONArray queryList(QueryParameter param) {
return JdbcTools.query(getQuerySql(param.getQueryId()),param);
}
@Transactional(rollbackFor = Exception.class)
@Override
public IPage<JSONObject> queryPage(QueryParameter param) {
return JdbcTools.queryPage(getQuerySql(param.getQueryId()), param);
}
@Transactional(rollbackFor = Exception.class)
@Override
public JSONArray queryParamsList(ParamQueryBo param) {
SqlBuilder sql = new SqlBuilder();
sql.append(getQuerySql(param.getQueryId()));
List<ParamItem> params2 = param.getParams();
List<JdbcParam> params = new ArrayList<JdbcParam>();
if(params2!=null && !params2.isEmpty()) {
for (ParamItem item : params2) {
params.add(item.toParam());
}
}
return JdbcTools.queryArray(sql.toString(), params);
}
}