流程数据迁移,日志相关db、操作方法

This commit is contained in:
446052889@qq.com 2022-07-01 17:29:13 +08:00
parent 9b16093b95
commit 0081b0e1bb
6 changed files with 526 additions and 0 deletions

View File

@ -0,0 +1 @@
CREATE TABLE APP_ACT_COE_PAL_DATAM_LOG(ID CHAR(36) NOT NULL ,WSID CHAR(36),FILENAME VARCHAR(100), FILLPATH VARCHAR(500), LOGPATH VARCHAR(500), CREATEUSER VARCHAR(20),CREATEUSERNAME VARCHAR(20),CREATEDATE DATETIME, STARTDATE DATETIME, ENDTIME DATETIME, RESULTSTATUS SMALLINT(1), MAININFO VARCHAR(500), EXT1 VARCHAR(64),EXT2 VARCHAR(128),EXT3 VARCHAR(255),EXT4 VARCHAR(255) ,CONSTRAINT APP_ACT_COE_PAL_DATAM_LOG_PK PRIMARY KEY (ID));

View File

@ -0,0 +1 @@
CREATE TABLE APP_ACT_COE_PAL_DATAM_LOG(ID CHAR(36) NOT NULL ,WSID CHAR(36),FILENAME NVARCHAR2(100), FILLPATH NVARCHAR2(500), LOGPATH NVARCHAR2(500), CREATEUSER NVARCHAR2(20),CREATEUSERNAME NVARCHAR2(20), CREATEDATE DATE, STARTDATE DATE, ENDTIME DATE, RESULTSTATUS NUMBER(1), MAININFO NVARCHAR2(500), EXT1 NVARCHAR2(64),EXT2 NVARCHAR2(128),EXT3 NVARCHAR2(255),EXT4 NVARCHAR2(255) ,CONSTRAINT APP_ACT_COE_PAL_DATAM_LOG_PK PRIMARY KEY (ID));

View File

@ -58,4 +58,16 @@ public class Constant {
// 存放与流程同名的角色模型的文件夹名称
public static final String DEFAULT_FOLDER_NAME = "角色模型";
// 日志常量记录
public static final String LOG_SUCCESS = "成功";
public static final String LOG_WARNING = "警告";
public static final String LOG_ERROR = "错误";
}

View File

@ -0,0 +1,169 @@
package com.actionsoft.apps.coe.pal.datamigration.log.dao;
import com.actionsoft.apps.coe.pal.datamigration.log.model.LogModel;
import com.actionsoft.bpms.commons.database.RowMapper;
import com.actionsoft.bpms.commons.mvc.dao.DaoObject;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.exception.AWSDataAccessException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class LogDao extends DaoObject<LogModel> {
@Override
public int insert(LogModel model) throws AWSDataAccessException {
if (model == null) {
return 0;
}
Connection conn = DBSql.open();
int r = 0;
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<String, Object>();
paraMap.put(LogModel.ID, model.getId());
paraMap.put(LogModel.WSID, model.getWsId());
paraMap.put(LogModel.FILENAME, model.getFileName());
paraMap.put(LogModel.FILEPATH, model.getFilePath());
paraMap.put(LogModel.LOGPATH, model.getLogPath());
paraMap.put(LogModel.CREATEUSER, model.getCreateUser());
paraMap.put(LogModel.CREATEUSERNAME, model.getCreateUserName());
paraMap.put(LogModel.CREATEDATE, model.getCreateDate());
paraMap.put(LogModel.STARTDATE, model.getStartDate());
paraMap.put(LogModel.ENDDATE, model.getEndDate());
paraMap.put(LogModel.RESULTTYPE, model.getResultType());
paraMap.put(LogModel.MAININFO, model.getMainInfo());
paraMap.put(LogModel.EXT1, model.getExt1());
paraMap.put(LogModel.EXT2, model.getExt2());
paraMap.put(LogModel.EXT3, model.getExt3());
paraMap.put(LogModel.EXT4, model.getExt4());
String sql = DBSql.getInsertStatement(entityName(), paraMap);
r = DBSql.update(conn, sql, paraMap);
DBSql.close(conn);
return r;
}
@Override
public int update(LogModel model) throws AWSDataAccessException {
String updateSql = "UPDATE "+ entityName()
+ " SET "+ LogModel.WSID +"=?, "
+ LogModel.FILENAME +"=?, "
+ LogModel.FILEPATH +"=?, "
+ LogModel.LOGPATH +"=?, "
+ LogModel.CREATEUSER +"=?, "
+ LogModel.CREATEUSERNAME +"=?, "
+ LogModel.CREATEDATE +"=?, "
+ LogModel.STARTDATE +"=?, "
+ LogModel.ENDDATE +"=?, "
+ LogModel.RESULTTYPE +"=?, "
+ LogModel.MAININFO +"=?, "
+ LogModel.EXT1 +"=?, "
+ LogModel.EXT2 +"=?, "
+ LogModel.EXT3 +"=?, "
+ LogModel.EXT4 +"=? "
+ "WHERE "+ LogModel.ID +"=? ";
return DBSql.update(updateSql, new Object[] {model.getWsId(), model.getFileName(), model.getFilePath(), model.getLogPath(), model.getCreateUser(), model.getCreateUserName(),
model.getCreateDate(), model.getStartDate(), model.getEndDate(), model.getResultType(), model.getMainInfo(), model.getExt1(), model.getExt2(), model.getExt3(), model.getExt4(), model.getId()});
}
/**
* 更新关键信息
* @param id
* @param endDate
* @param resultType
* @param mainInfo
* @return
*/
public int update(String id, Timestamp endDate, int resultType, String mainInfo) {
String updateSql = "UPDATE "+ entityName()
+ " SET "+ LogModel.ENDDATE +"=?, "
+ LogModel.RESULTTYPE +"=?, "
+ LogModel.MAININFO +"=? "
+ "WHERE "+ LogModel.ID +"=? ";
return DBSql.update(updateSql, new Object[] {endDate, resultType, mainInfo, id});
}
@Override
public String entityName() {
return LogModel.DATABASE_ENTITY;
}
@Override
public RowMapper<LogModel> rowMapper() {
return new Mapper();
}
/**
* 获取单条日志记录信息
* @param id
* @return
*/
public LogModel getInstance(String id) {
String sql = "SELECT * FROM " + entityName() + " WHERE ID = ?";
return DBSql.getObject(sql, rowMapper(), id);
}
/**
* 获取所有日志按照创建时间倒序查询
* @return
*/
public List<LogModel> getAllInstance() {
String sql = "SELECT * FROM " + entityName() + " ORDER BY " + LogModel.CREATEDATE + " DESC";
return DBSql.query(sql, rowMapper());
}
/**
* 删除
* @param id
* @throws AWSDataAccessException
*/
public void remove(String id) throws AWSDataAccessException{
String sql = "DELETE FROM " + entityName()
+ " WHERE " + LogModel.ID + "=?";
DBSql.update(sql, new Object[]{id});
}
/**
* 删除所有
*/
public void removeAll() throws AWSDataAccessException{
String sql = "DELETE FROM " + entityName();
DBSql.update(sql);
}
private class Mapper implements RowMapper<LogModel> {
public LogModel mapRow(ResultSet rset, int rowNum) throws SQLException {
LogModel model = new LogModel();
try {
model.setId(rset.getString(LogModel.ID));
model.setWsId(rset.getString(LogModel.WSID));
model.setFileName(rset.getString(LogModel.FILENAME));
model.setFilePath(rset.getString(LogModel.FILEPATH));
model.setLogPath(rset.getString(LogModel.LOGPATH));
model.setCreateUser(rset.getString(LogModel.CREATEUSER));
model.setCreateUserName(rset.getString(LogModel.CREATEUSERNAME));
model.setCreateDate(rset.getTimestamp(LogModel.CREATEDATE));
model.setStartDate(rset.getTimestamp(LogModel.STARTDATE));
model.setEndDate(rset.getTimestamp(LogModel.ENDDATE));
model.setResultType(rset.getInt(LogModel.RESULTTYPE));
model.setMainInfo(rset.getString(LogModel.MAININFO));
model.setExt1(rset.getString(LogModel.EXT1));
model.setExt2(rset.getString(LogModel.EXT2));
model.setExt3(rset.getString(LogModel.EXT3));
model.setExt4(rset.getString(LogModel.EXT4));
} catch (Exception e) {
e.printStackTrace();
}
return model;
}
}
}

View File

@ -0,0 +1,177 @@
package com.actionsoft.apps.coe.pal.datamigration.log.model;
import java.sql.Timestamp;
/**
* 日志记录表
*/
public class LogModel {
public static final String DATABASE_ENTITY = "APP_ACT_COE_PAL_DATAM_LOG";
public static final String ID = "ID";
public static final String WSID = "WSID";
public static final String FILENAME = "FILENAME";
public static final String FILEPATH = "FILEPATH";
public static final String LOGPATH = "LOGPATH";
public static final String CREATEUSER = "CREATEUSER";
public static final String CREATEUSERNAME = "CREATEUSERNAME";
public static final String CREATEDATE = "CREATEDATE";
public static final String STARTDATE = "STARTDATE";
public static final String ENDDATE = "ENDDATE";
public static final String RESULTTYPE = "RESULTTYPE";
public static final String MAININFO = "MAININFO";
public static final String EXT1 = "EXT1";
public static final String EXT2 = "EXT2";
public static final String EXT3 = "EXT3";
public static final String EXT4 = "EXT4";
private String id;
private String wsId;// 资产库ID
private String fileName;// 上传文件名若若是多个文件只写一个文件例如xxxxx文件等xx个文件
private String filePath;// dc路径包含此次上传所有文件的上级文件夹路径
private String logPath;// dc路径存储日志文件的路径
private String createUser;// 创建人userId
private String createUserName;// 创建人中文名称
private Timestamp createDate;// 上传时间程序开始导入时间
private Timestamp startDate;// 上传时间程序开始导入时间
private Timestamp endDate;// 最终结束时间成功/失败都需要记录
private int resultType;// 结果0进行中1成功2失败
private String mainInfo;// 一句话简介整个上传结果内容无限制示例若是进行中可描述为正在上传若是失败可描述为具体的异常信息若是成功可描述为上传多少条成功多少条信息
private String ext1;// 扩展字段
private String ext2;// 扩展字段
private String ext3;// 扩展字段
private String ext4;// 扩展字段
public LogModel() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getWsId() {
return wsId;
}
public void setWsId(String wsId) {
this.wsId = wsId;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getLogPath() {
return logPath;
}
public void setLogPath(String logPath) {
this.logPath = logPath;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public String getCreateUserName() {
return createUserName;
}
public void setCreateUserName(String createUserName) {
this.createUserName = createUserName;
}
public Timestamp getCreateDate() {
return createDate;
}
public void setCreateDate(Timestamp createDate) {
this.createDate = createDate;
}
public Timestamp getStartDate() {
return startDate;
}
public void setStartDate(Timestamp startDate) {
this.startDate = startDate;
}
public Timestamp getEndDate() {
return endDate;
}
public void setEndDate(Timestamp endDate) {
this.endDate = endDate;
}
public int getResultType() {
return resultType;
}
public void setResultType(int resultType) {
this.resultType = resultType;
}
public String getMainInfo() {
return mainInfo;
}
public void setMainInfo(String mainInfo) {
this.mainInfo = mainInfo;
}
public String getExt1() {
return ext1;
}
public void setExt1(String ext1) {
this.ext1 = ext1;
}
public String getExt2() {
return ext2;
}
public void setExt2(String ext2) {
this.ext2 = ext2;
}
public String getExt3() {
return ext3;
}
public void setExt3(String ext3) {
this.ext3 = ext3;
}
public String getExt4() {
return ext4;
}
public void setExt4(String ext4) {
this.ext4 = ext4;
}
}

View File

@ -0,0 +1,166 @@
package com.actionsoft.apps.coe.pal.datamigration.util;
import com.actionsoft.apps.coe.pal.datamigration.log.dao.LogDao;
import com.actionsoft.apps.coe.pal.datamigration.log.model.LogModel;
import com.actionsoft.bpms.commons.log.auditing.constant.AuditConst;
import com.actionsoft.bpms.commons.security.logging.model.Level;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.sdk.local.SDK;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.sql.Timestamp;
import java.util.List;
public class LogUtil {
/**
* 追加日志内容
* @param content 内容
* @param file 文件
*/
public static void appendLog(String content, File file) {
try {
String logFilePath = file.getPath();
// 构造函数中的第二个参数true表示以追加形式写文件
FileOutputStream fos = new FileOutputStream(logFilePath, true);
OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
osw.write(content + "\n");
osw.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件写入失败!" + e);
}
}
public static void appendLog(String content, File ... files) {
for (File file : files) {
appendLog(content, file);
}
}
public static String getStackTrace(Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
try {
t.printStackTrace(pw);
return sw.toString();
} finally {
pw.close();
}
}
public static String getLogContent(File file) {
StringBuilder builder = new StringBuilder();
InputStreamReader reader = null;
BufferedReader br = null;
try {
reader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
br = new BufferedReader(reader);
String s;
while ((s = br.readLine()) != null) {
builder.append(s).append("\n");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return builder.toString();
}
/**
* 记录一条审计日志
* @param me
* @param op
* @param obj
* @param info
* @param level
*/
public static void recordAuditLog(UserContext me, String op, String obj, String info, Level level) {
SDK.getLogAPI().audit(AuditConst.CHANNEL_CLIENT, AuditConst.CATALOG_PROCESS, me.getUID(), op, obj, info, me.getClientIP(), level);
}
/*
创建日志
查询日志
删除日志
更新日志
*/
/**
* 创建日志
* @param model
* @return
*/
public static int createLog(LogModel model) {
return new LogDao().insert(model);
}
/**
* 查询日志
* @param id
* @return
*/
public static LogModel queryLog(String id) {
return new LogDao().getInstance(id);
}
/**
* 删除日志
* @param id
*/
public static void removeLog(String id) {
new LogDao().remove(id);
}
/**
* 清空日志
*/
public static void removeAllLog() {
new LogDao().removeAll();
}
/**
* 查询所有日志按照创建时间倒序
* @return
*/
public static List<LogModel> queryAllLog() {
return new LogDao().getAllInstance();
}
/**
* 更新日志
* @param model
* @return
*/
public static int updateLog(LogModel model) {
return new LogDao().update(model);
}
/**
* 更新日志
* @param id
* @param endDate 结束时间
* @param resultType 结果状态
* @param mainInfo 主要信息
* @return
*/
public static int updateLog(String id, Timestamp endDate, int resultType, String mainInfo) {
return new LogDao().update(id, endDate, resultType, mainInfo);
}
}