知识库代码提交

This commit is contained in:
Mr-wang 2023-08-11 10:27:17 +08:00
parent e4bf4617f3
commit 9722a1b6d0
137 changed files with 28171 additions and 4894 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 1.2 MiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -0,0 +1,47 @@
package com.actionsoft.apps.kms;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import com.actionsoft.apps.kms.model.VersionModel;
import com.actionsoft.apps.listener.AppListener;
import com.actionsoft.apps.resource.AppContext;
import com.actionsoft.bpms.commons.database.BatchPreparedStatementSetter;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UUIDGener;
public class AfterInstallationEvent implements AppListener {
@Override
public void after(AppContext appContext) {
// 如果版本号表(APP_ACT_KMS_VERSION)为空则从1.0到10.0初始化10条版本号
long count = DBSql.getLong("SELECT COUNT(*) AS C FROM " + KMSConstant.ENTITY_NAME_VERSION, "C");
if (count == 0L) {
final String[] versionNOArr = new String[] { "1.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0" };
String sql = "INSERT INTO " + KMSConstant.ENTITY_NAME_VERSION + " (" + VersionModel.ID + "," + VersionModel.VERSIONNO + "," + VersionModel.CREATETIME + "," + VersionModel.CREATEUSER + "," + VersionModel.MEMO + ") VALUES (?,?,?,?,?)";
DBSql.batch(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement pstmt, int index) throws SQLException {
String versionNO = versionNOArr[index];
pstmt.setString(1, UUIDGener.getObjectId());
pstmt.setString(2, versionNO);
pstmt.setTimestamp(3, new Timestamp(System.currentTimeMillis()));
pstmt.setString(4, "admin");
pstmt.setString(5, "系统初始化");
}
@Override
public int getBatchSize() {
return versionNOArr.length;
}
});
}
}
@Override
public boolean before(AppContext appContext) {
return true;
}
}

View File

@ -0,0 +1,134 @@
package com.actionsoft.apps.kms;
/**
* @author wangshibao
*/
public class KMSConstant {
/** 导航菜单ID */
public static final String NAV_ID_KNWL_CENTER = "obj_21d0b756a48946ccb5d38668f32943b2";
public static final String NAV_ID_KNWL_SEARCH = "obj_9db6edd0ccf5433f82fe0af6fd67b7cc";
public static final String NAV_ID_DIMENSION_MGR = "obj_4f48f895966349beb2bd3e01bda46b69";
public static final String NAV_ID_META_MGR = "obj_9acae9a8b50142daac7d98efda6d13d6";
public static final String NAV_ID_VALIDDATE_MGR = "obj_28b304cc5bad4636adfa780f45317033";
public static final String NAV_ID_SYSTEM_MGR = "obj_50e47d2f2cac4738b4b819bf68dc1f81";
/** 应用ID */
public static final String APP_ID = "com.actionsoft.apps.kms";
/** doccenter目录 */
public static final String DOC_REPOSITORY_NAME = "-doc-";
// public static final String ONLINEDOC_REPOSITORY_NAME = "onlinedoc"; //替换为onlinedoc之后无需再解密
public static final String DOC_REPOSITORY_HOTSPOT = "hotspot";
/** 全文检索目录 */
public static final String FULLSEARCH_REPOSITORY_NAME = "kmsDoc";
public static final String APP_KMS_FULLSEARCH_INDEX="com.actionsoft.apps.kms_kmsdoc";
public static final String APP_KMS_FULLSEARCH_TYPE="kmsdoc";
public static final String APP_KMS_FULLSEARCH_INDEX_CARD = "com.actionsoft.apps.kms_kmsdoc_card";
public static final String APP_KMS_FULLSEARCH_TYPE_CARD = "kmsdoc_card";
public static final String APP_FULLSEARCH = "com.actionsoft.apps.addons.es";// 全文检索
/** 知识参数-manifest文件使用 */
public static final String SYSTEM_PARAM_KEY = "systemParam";
/** 表名 */
public static final String ENTITY_NAME_DIMENSION = "APP_ACT_KMS_DIMENSION";
public static final String ENTITY_NAME_CARD = "APP_ACT_KMS_CARD";
public static final String ENTITY_NAME_OPT = "APP_ACT_KMS_OPT";
public static final String ENTITY_NAME_FILE = "APP_ACT_KMS_FILE";
public static final String ENTITY_NAME_HOTSPOT_DEF = "APP_ACT_KMS_HOTSPOT_DEF";
public static final String ENTITY_NAME_HOTSPOT = "APP_ACT_KMS_HOTSPOT";
public static final String ENTITY_NAME_LOG = "APP_ACT_KMS_LOG";
public static final String ENTITY_NAME_PUBLISH = "APP_ACT_KMS_PUBLISH";
public static final String ENTITY_NAME_VERSION = "APP_ACT_KMS_VERSION";
public static final String ENTITY_NAME_META_SCHEMA = "APP_ACT_KMS_META_SCHEMA";
public static final String ENTITY_NAME_META_ATTR = "APP_ACT_KMS_META_ATTR";
public static final String ENTITY_NAME_META_DATA = "APP_ACT_KMS_META_DATA";
public static final String ENTITY_NAME_COLLECTION = "APP_ACT_KMS_COLLECTION";
/** BO表名 */
public static final String BO_ENTITY_NAME_BORROW = "BO_ACT_KMS_BORROW";
public static final String BO_ENTITY_NAME_PUBLISH = "BO_ACT_KMS_PUBLISH";
public static final String BO_ENTITY_NAME_CANCEL_PUBLISH = "BO_ACT_KMS_CANCEL_PUBLISH";
/** 维度类型 */
public static final int SHOWTYPE_CATEGORY = 2;// 仅做分类不允许发布知识
public static final int SHOWTYPE_DIMENSION = 1;// 普通维度知识列表
public static final int SHOWTYPE_HOTSPOT = 0;// 知识地图
/** 启用 不启用 */
public static final int ENABLED = 1;
public static final int UNABLED = 0;
/** 发布 未发布 */
public static final int PUBLISHED = 1;
public static final int UNPUBLISHED = 0;
/** 审批 不审批 */
public static final int EXAMINE = 1;
public static final int UNEXAMINE = 0;
/** 标签分隔符数据库中varchar类型 */
public static final String TAG_SEPRATOR = "@`@";
/** 知识管理员AC类型 */
public static final String AC_RESOURCE_TYPE_KNWL_MGR = "kms.knwlmgr";
public static final String AC_RESOURCE_TYPE_XPAGE_MGR = "kms.xpagemgr";
/** 知识管理员资源ID */
public static final String AC_RESOURCE_ID_KNWL_MGR = "kms.knwlmgr.id";
/** 二级知识管理员AC类型 */
public static final String AC_RESOURCE_TYPE_DIMENSION_MGR = "kms.dimensionmgr";
/** 知识访问AC类型 */
public static final String AC_RESOURCE_TYPE_CARD = "kms.card";
/** 元数据发布访问AC类型 */
public static final String AC_RESOURCE_TYPE_META_SCHEMA = "kms.metaSchema";
/** 借阅流程的定义ID */
public static final String BORROW_PROCESS_DEF_ID = "obj_bcf0034b766f4a3d9cda8e0288e1c8c6";
/** 借阅流程开始事件的ID */
public static final String BORROW_START_EVENT_ID = "obj_c71e56d36b2000011759a1271e0057e0";
/** 发布流程的定义ID */
public static final String PUBLISH_PROCESS_DEF_ID = "obj_073f4f28416946e39db3d9f3fb981021";
/** 发布流程开始事件的ID */
public static final String PUBLISH_START_EVENT_ID = "obj_c71fa098cae00001d2e9a78ff250c020";
/** 取消发布流程的定义ID */
public static final String CANCEL_PUBLISH_PROCESS_DEF_ID = "obj_65be24aea7284f07a693e37c8c8deef3";
/** 取消发布流程开始事件的ID */
public static final String CANCEL_PUBLISH_START_EVENT_ID = "obj_c7329417b7600001be6d139b2db09490";
/** KMS OPT 类型 1、评论 2、评分 3、反馈 */
public static final int OPT_TYPE_COMMENT = 1;
/** KMS OPT 类型 1、评论 2、评分 3、反馈 */
public static final int OPT_TYPE_RATE = 2;
/** KMS OPT 类型 1、评论 2、评分 3、反馈 */
public static final int OPT_TYPE_REPORT = 3;
/** 我的收藏-KMS的分类名称 */
public static final String FAVORITE_CATEGORY_KMS = "KMS";
public static final String FILE_SUFFIX_DOC = "doc";
public static final String FILE_SUFFIX_PICTURE = "picture";
public static final String FILE_SUFFIX_AUDIO = "audio";
public static final String FILE_SUFFIX_VIDEO = "video";
public static final int LOG_ACCESS_CARD = 0;// 访问知识卡片
public static final int LOG_DOWNLOAD_FILE = 1;// 下载文件
public static final int LOG_ACCESS_FILE = 2;// 在线浏览文件
public static final int LOG_ACCESS_OTHER = 3;// 在线浏览文件
public static final String NOTIFICATION_SYSTEM_NAME = "知识阅读邀请";
public static final String REPORT_SYSTEM_NAME = "知识反馈";
public static final String DOC_GROUP_HOTSPOT = "grouphotspot";
public static final String DOC_FILE_HOTSPOT = "filehotspot";
// 调用积分接口参数
public final static String POINT_DOWN_LOAD = "KMS下载文件";
public final static String POINT_LOOK_ATCART = "KMS阅读知识卡片";
public final static String POINT_LOOK_ATFILE= "KMS预览文件";
public final static String POINT_PUBLSH = "KMS发布知识";
public final static int POINT_COUNT = 1;//0为加积分1为扣积分
public final static String POINT_ISADD_POINT = "1";//参数控制为1即调用aslp,0不调用
public final static String POINTS_APPID = "com.actionsoft.apps.points";
public static final String DOC_CARDCONTENT_REPOSITORY_NAME = "-doccardcontent-";
}

View File

@ -0,0 +1,84 @@
package com.actionsoft.apps.kms;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.actionsoft.apps.kms.model.LogModel;
import com.actionsoft.apps.lifecycle.log.AppsLogger;
import com.actionsoft.bpms.commons.database.BatchPreparedStatementSetter;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.sdk.local.SDK;
/**
* 记录KMS日志(采用线程池提高性能)
*
* @author wangshibao
*
*/
public class KMSLogUtil {
private static ExecutorService logExecutorService = Executors.newCachedThreadPool();
/**
* 记录日志入口方法
*
* @param logModels
* @author wangshibao
*/
public static void log(final LogModel... logModels) {
logExecutorService.execute(new Runnable() {
@Override
public void run() {
insertLogs(logModels);
}
});
}
/**
* 插入数据库
*
* @param logModels
* @author wangshibao
*/
private static void insertLogs(final LogModel... logModels) {
try {
if (logModels == null || logModels.length == 0) {
return;
}
String sql = "INSERT INTO " + KMSConstant.ENTITY_NAME_LOG + " (" + LogModel.ID + "," + LogModel.CARDID + "," + LogModel.FILEID + "," + LogModel.ACCESSUSER + "," + LogModel.ACCESSTIME + "," + LogModel.IPADDRESS + "," + LogModel.LOGTYPE + "," + LogModel.LOGINFO + ") VALUES (?,?,?,?,?,?,?,?)";
DBSql.batch(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement pstmt, int index) throws SQLException {
LogModel logModel = logModels[index];
pstmt.setString(1, UUIDGener.getObjectId());
pstmt.setString(2, logModel.getCardId());
if (logModel.getFileId() == null) {
pstmt.setNull(3, Types.VARCHAR);
} else {
pstmt.setString(3, logModel.getFileId());
}
pstmt.setString(4, logModel.getAccessUser());
pstmt.setTimestamp(5, logModel.getAccessTime());
pstmt.setString(6, logModel.getIpAddress());
pstmt.setInt(7, logModel.getLogType());
pstmt.setString(8, logModel.getLogInfo());
}
@Override
public int getBatchSize() {
return logModels.length;
}
});
} catch (Exception e) {
AppsLogger.err(SDK.getAppAPI().getAppContext(KMSConstant.APP_ID), "记录KMS日志出错" + e.getMessage());
e.printStackTrace();
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,198 @@
package com.actionsoft.apps.kms;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.ac.CardACCM;
import com.actionsoft.apps.kms.ac.DimensionMgrACCM;
import com.actionsoft.apps.kms.ac.KnwlMgrACCM;
import com.actionsoft.apps.kms.ac.MetaSchemaACCM;
import com.actionsoft.apps.kms.ac.XpageMgrACCM;
import com.actionsoft.apps.kms.aslp.CreateDimension;
import com.actionsoft.apps.kms.aslp.CreateFile;
import com.actionsoft.apps.kms.aslp.CreateFileByInputStream;
import com.actionsoft.apps.kms.aslp.CreateFormLink;
import com.actionsoft.apps.kms.aslp.CreateKnwl;
import com.actionsoft.apps.kms.aslp.FullSearch;
import com.actionsoft.apps.kms.aslp.GetDimension;
import com.actionsoft.apps.kms.aslp.GetFile;
import com.actionsoft.apps.kms.aslp.GetKnwl;
import com.actionsoft.apps.kms.aslp.PublishKnwl;
import com.actionsoft.apps.kms.aslp.SearchDimensionList;
import com.actionsoft.apps.kms.aslp.SearchFileList;
import com.actionsoft.apps.kms.aslp.SearchKnwlList;
import com.actionsoft.apps.kms.aslp.UpdateDimension;
import com.actionsoft.apps.kms.aslp.UpdateKnwl;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.cache.CardPermCache;
import com.actionsoft.apps.kms.cache.DimensionCache;
import com.actionsoft.apps.kms.cache.DimensionPermCache;
import com.actionsoft.apps.kms.cache.DimensionTreeCache;
import com.actionsoft.apps.kms.cache.FileCache;
import com.actionsoft.apps.kms.cache.HotspotCache;
import com.actionsoft.apps.kms.cache.MetaAttrCache;
import com.actionsoft.apps.kms.cache.MetaDataCache;
import com.actionsoft.apps.kms.cache.MetaSchemaCache;
import com.actionsoft.apps.kms.cache.OptCache;
import com.actionsoft.apps.kms.cache.PublishCache;
import com.actionsoft.apps.kms.cache.VersionCache;
import com.actionsoft.apps.kms.dc.DocCardContentProcessor;
import com.actionsoft.apps.kms.dc.DocFileProcessor;
import com.actionsoft.apps.kms.dc.HotspotFileProcessor;
import com.actionsoft.apps.kms.dc.TmpFileProcessor;
import com.actionsoft.apps.kms.formatter.KMSNotificationFormatter;
import com.actionsoft.apps.kms.formatter.KMSReportFormatter;
import com.actionsoft.apps.kms.service.PermChangeByOrgSync;
import com.actionsoft.apps.kms.ui.FormUIComponentKnwlImpl;
import com.actionsoft.apps.kms.web.FavoriteWeb;
import com.actionsoft.apps.listener.PluginListener;
import com.actionsoft.apps.resource.AppContext;
import com.actionsoft.apps.resource.plugin.profile.ACPluginProfile;
import com.actionsoft.apps.resource.plugin.profile.ASLPPluginProfile;
import com.actionsoft.apps.resource.plugin.profile.AWSPluginProfile;
import com.actionsoft.apps.resource.plugin.profile.AppExtensionProfile;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.apps.resource.plugin.profile.DCPluginProfile;
import com.actionsoft.apps.resource.plugin.profile.FormUIPluginProfile;
import com.actionsoft.apps.resource.plugin.profile.FullSearchPluginProfile;
import com.actionsoft.apps.resource.plugin.profile.HttpASLP;
import com.actionsoft.apps.resource.plugin.profile.OrgSyncPluginProfile;
import com.actionsoft.bpms.commons.htmlframework.HtmlPageTemplate;
/**
* @author wangshibao
*/
public class Plugins implements PluginListener {
@Override
public List<AWSPluginProfile> register(AppContext appContext) {
List<AWSPluginProfile> awsPluginProfiles = new ArrayList<AWSPluginProfile>();
// 缓存
awsPluginProfiles.add(new CachePluginProfile(DimensionCache.class));
awsPluginProfiles.add(new CachePluginProfile(CardCache.class));
awsPluginProfiles.add(new CachePluginProfile(PublishCache.class));// publish是card和dimension的中间表应在两者之后加载cache
awsPluginProfiles.add(new CachePluginProfile(FileCache.class));
awsPluginProfiles.add(new CachePluginProfile(OptCache.class));
awsPluginProfiles.add(new CachePluginProfile(VersionCache.class));
awsPluginProfiles.add(new CachePluginProfile(HotspotCache.class));
awsPluginProfiles.add(new CachePluginProfile(MetaSchemaCache.class));
awsPluginProfiles.add(new CachePluginProfile(MetaAttrCache.class));
awsPluginProfiles.add(new CachePluginProfile(MetaDataCache.class));
awsPluginProfiles.add(new CachePluginProfile(CardPermCache.class));
awsPluginProfiles.add(new CachePluginProfile(DimensionPermCache.class));
awsPluginProfiles.add(new CachePluginProfile(DimensionTreeCache.class));
// aslp
awsPluginProfiles.add(new ASLPPluginProfile("createDimension", CreateDimension.class.getName(), "创建维度", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("updateDimension", UpdateDimension.class.getName(), "修改维度", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("searchDimensionList", SearchDimensionList.class.getName(), "查询维度列表", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("GetDimension", GetDimension.class.getName(), "查询单个维度", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("CreateKnwl", CreateKnwl.class.getName(), "创建知识", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("UpdateKnwl", UpdateKnwl.class.getName(), "修改知识", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("SearchKnwlList", SearchKnwlList.class.getName(), "查询知识多个参数之间是AND关系单个参数内部是OR关系", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("GetKnwl", GetKnwl.class.getName(), "查询单个知识", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("GetFile", GetFile.class.getName(), "查询单个文件", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("CreateFile", CreateFile.class.getName(), "创建文件", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("CreateFileByInputStream", CreateFileByInputStream.class.getName(), "通过流创建文件", null));
awsPluginProfiles.add(new ASLPPluginProfile("CreateFormLink", CreateFormLink.class.getName(), "创建表单链接类文件", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("SearchFileList", SearchFileList.class.getName(), "查询文件", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("FullSearch", FullSearch.class.getName(), "全文检索由于KMS的权限限制返回结果可能大于rowsPerPage条", new HttpASLP(HttpASLP.AUTH_RSA, null)));
awsPluginProfiles.add(new ASLPPluginProfile("PublishKnwl", PublishKnwl.class.getName(), "发布知识", new HttpASLP(HttpASLP.AUTH_RSA, null)));
// ac
KnwlMgrACCM knwlMgrACCM = new KnwlMgrACCM();
//awsPluginProfiles.add(new ACPluginProfile(KnwlMgrACCM.resourceType, knwlMgrACCM.getResourceName(), null, knwlMgrACCM.getAccessModes(), false, true));// 知识管理员
awsPluginProfiles.add(new ACPluginProfile(knwlMgrACCM));// 知识管理员
XpageMgrACCM xpageMgrACCM = new XpageMgrACCM();
//awsPluginProfiles.add(new ACPluginProfile(KnwlMgrACCM.resourceType, knwlMgrACCM.getResourceName(), null, knwlMgrACCM.getAccessModes(), false, true));// 知识管理员
awsPluginProfiles.add(new ACPluginProfile(xpageMgrACCM));// XPAGE内容管理员
DimensionMgrACCM dimensionMgrACCM = new DimensionMgrACCM();
//awsPluginProfiles.add(new ACPluginProfile(DimensionMgrACCM.resourceType, dimensionMgrACCM.getResourceName(), null, dimensionMgrACCM.getAccessModes(), false, true));// 维度管理员
awsPluginProfiles.add(new ACPluginProfile(dimensionMgrACCM));// 维度管理员
MetaSchemaACCM metaSchemaACCM = new MetaSchemaACCM();
awsPluginProfiles.add(new ACPluginProfile(MetaSchemaACCM.resourceType, metaSchemaACCM.getResourceName(), null, metaSchemaACCM.getAccessModes(), false, true));
CardACCM cardACCM = new CardACCM();
//awsPluginProfiles.add(new ACPluginProfile(CardACCM.resourceType, cardACCM.getResourceName(), null, cardACCM.getAccessModes(), false, true));
awsPluginProfiles.add(new ACPluginProfile(cardACCM));
// dc
awsPluginProfiles.add(new DCPluginProfile(KMSConstant.DOC_REPOSITORY_NAME, DocFileProcessor.class.getName(), "普通文档文档存放到该应用的doc目录下", false, true));
awsPluginProfiles.add(new DCPluginProfile(KMSConstant.DOC_CARDCONTENT_REPOSITORY_NAME, DocCardContentProcessor.class.getName(), "卡片正文", false));
awsPluginProfiles.add(new DCPluginProfile("tmp", TmpFileProcessor.class.getName(), "知识地图临时图片", false, false));
// awsPluginProfiles.add(new DCPluginProfile(KMSConstant.ONLINEDOC_REPOSITORY_NAME, OnlinedocFileProcessor.class.getName(), "onlinedoc生成图片和pdf到该目录下", false));
awsPluginProfiles.add(new DCPluginProfile(KMSConstant.DOC_REPOSITORY_HOTSPOT, HotspotFileProcessor.class.getName(), "用户上传的知识地图目录", false, false));
// 全文检索
awsPluginProfiles.add(new FullSearchPluginProfile(KMSConstant.FULLSEARCH_REPOSITORY_NAME, false, "KMS全文检索"));
// 注册应用扩展点-收藏
Map<String, Object> params1 = new HashMap<String, Object>();
params1.put("categoryName", KMSConstant.FAVORITE_CATEGORY_KMS);
params1.put("mainClass", FavoriteWeb.class.getName());
awsPluginProfiles.add(new AppExtensionProfile("我的收藏->KMS", "aslp://com.actionsoft.apps.favorite/registerApp", params1));
// 注册应用扩展点-通知-阅读邀请
Map<String, Object> params2 = new HashMap<String, Object>();
params2.put("systemName", KMSConstant.NOTIFICATION_SYSTEM_NAME);
params2.put("icon", "");
params2.put("formatter", KMSNotificationFormatter.class.getName());
awsPluginProfiles.add(new AppExtensionProfile("通知中心->浏览知识", "aslp://com.actionsoft.apps.notification/registerApp", params2));
// 注册应用扩展点-通知-知识反馈
Map<String, Object> params3 = new HashMap<String, Object>();
params3.put("systemName", KMSConstant.REPORT_SYSTEM_NAME);
params3.put("icon", "");
params3.put("formatter", KMSReportFormatter.class.getName());
awsPluginProfiles.add(new AppExtensionProfile("通知中心->知识反馈", "aslp://com.actionsoft.apps.notification/registerApp", params3));
//表单UI组件
FormUIPluginProfile formUIPluginProfile = new FormUIPluginProfile("高级组件", "AWSUI.KnwlPortal", FormUIComponentKnwlImpl.class.getName(), "知识门户", "有访问权限的知识列表", false, true, false, false, false, true, true, false, false);
Class clazz = formUIPluginProfile.getClass();
try {
Method setIconFont = clazz.getDeclaredMethod("setIconFont", String.class, String.class, String.class);
setIconFont.invoke(formUIPluginProfile, "awsui-iconfont", "&#xe85d;", "#0c6e9f");
} catch (Exception e) {
}
awsPluginProfiles.add(formUIPluginProfile);
// addons页面
// awsPluginProfiles.add(new AddOnsPluginProfile(AddonsWeb.class.getName()));
//注册全文检索
Map<String, Object> params4 = new HashMap<String, Object>();
params4.put("name", "知识");
params4.put("url", "./w?cmd=com.actionsoft.apps.kms_es_search&sid=$sid&q=$q");
params4.put("placeholder", "请输入要查询的内容...");
params4.put("orderIndex", 45);
awsPluginProfiles.add(new AppExtensionProfile("知识", "aslp://com.actionsoft.apps.addons.es/registerApp", params4));
//注册xpages
String contextAll5 = HtmlPageTemplate.merge(KMSConstant.APP_ID, "kms.latest.xPageRegister.htm", null);
Map<String, Object> params5 = new HashMap<String, Object>();
params5.put("systemName", "最新KMS知识");
params5.put("type", "3");
params5.put("functionPre", "kmslatest");
params5.put("urlIdentifier", "com.actionsoft.apps.kms_xpages");
params5.put("xpagesContent", contextAll5);
awsPluginProfiles.add(new AppExtensionProfile("最新KMS知识", "aslp://com.actionsoft.apps.addons.xpages/registerApp", params5));
String contextAll = HtmlPageTemplate.merge(KMSConstant.APP_ID, "kms.directory.xPageRegister.htm", null);
Map<String, Object> params6 = new HashMap<String, Object>();
params6.put("systemName", "KMS目录");
params6.put("type", "3");
params6.put("functionPre", "kmsdirectory");
params6.put("urlIdentifier", "com.actionsoft.apps.kms_xpage_opencardbydirctory");
params6.put("xpagesContent", contextAll);
awsPluginProfiles.add(new AppExtensionProfile("KMS目录", "aslp://com.actionsoft.apps.addons.xpages/registerApp", params6));
String contextAll7 = HtmlPageTemplate.merge(KMSConstant.APP_ID, "kms.card.xPageRegister.htm", null);
Map<String, Object> params7 = new HashMap<String, Object>();
params7.put("systemName", "KMS知识");
params7.put("type", "3");
params7.put("xpagesContent", contextAll7);
params7.put("urlIdentifier", "com.actionsoft.apps.kms_xpage_openfastcard");
params7.put("functionPre", "kmscard");
awsPluginProfiles.add(new AppExtensionProfile("KMS知识", "aslp://com.actionsoft.apps.addons.xpages/registerApp", params7));
awsPluginProfiles.add(new OrgSyncPluginProfile(PermChangeByOrgSync.class.getName(), "组织结构变化同步维度知识权限"));
return awsPluginProfiles;
}
}

View File

@ -0,0 +1,63 @@
package com.actionsoft.apps.kms.ac;
import java.util.List;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.CardPermCache;
import com.actionsoft.apps.kms.cache.DimensionTreeCache;
import com.actionsoft.bpms.commons.security.ac.model.ACAccessMode;
import com.actionsoft.bpms.commons.security.ac.model.ACCM;
import com.actionsoft.bpms.commons.security.ac.model.AccessControlModel;
/**
* 知识访问ac
*
* @author wangshibao
*/
public class CardACCM extends ACCM {
public static ACAccessMode CARD = new ACAccessMode("知识访问", 0);
public static String resourceType = KMSConstant.AC_RESOURCE_TYPE_CARD;
public String resourceName = "知识访问";
private String[] assignmentTypes;
private static ACAccessMode[] accessModes = new ACAccessMode[] { CARD };
private boolean isolationCompany;
private boolean orgAdminSecurity = true;
@Override
public String getResourceType() {
return resourceType;
}
@Override
public String getResourceName() {
return resourceName;
}
@Override
public String[] getAssignmentTypes() {
return assignmentTypes;
}
@Override
public ACAccessMode[] getAccessModes() {
return accessModes;
}
@Override
public boolean isIsolationCompany() {
return isolationCompany;
}
@Override
public boolean isOrgAdminSecurity() {
return orgAdminSecurity;
}
@Override
public void callBack(List<AccessControlModel> acModelList) {
DimensionTreeCache.getCache().destroy(true);
for (AccessControlModel accessControlModel : acModelList) {
CardPermCache.getCache().remove(accessControlModel._resourceId);
}
}
}

View File

@ -0,0 +1,67 @@
package com.actionsoft.apps.kms.ac;
import java.util.List;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.DimensionPermCache;
import com.actionsoft.apps.kms.cache.DimensionTreeCache;
import com.actionsoft.bpms.commons.security.ac.model.ACAccessMode;
import com.actionsoft.bpms.commons.security.ac.model.ACCM;
import com.actionsoft.bpms.commons.security.ac.model.AccessControlModel;
/**
* 二级知识管理员ac(或者叫维度管理员ac,区别于知识管理员)
*
* @author wangshibao
*/
public class DimensionMgrACCM extends ACCM {
public static ACAccessMode PUBLISH = new ACAccessMode("发布", 3);
public static ACAccessMode ACCESS = new ACAccessMode("访问", 0);
public static ACAccessMode BORROW = new ACAccessMode("借阅", 1);
public static ACAccessMode DIMENSION_MGR = new ACAccessMode("维度管理员", 2);
public static String resourceType = KMSConstant.AC_RESOURCE_TYPE_DIMENSION_MGR;
public String resourceName = "维度管理员";
private String[] assignmentTypes;
private static ACAccessMode[] accessModes = new ACAccessMode[] { PUBLISH, ACCESS, BORROW, DIMENSION_MGR };
private boolean isolationCompany;
private boolean orgAdminSecurity = true;
@Override
public String getResourceType() {
return resourceType;
}
@Override
public String getResourceName() {
return resourceName;
}
@Override
public String[] getAssignmentTypes() {
return assignmentTypes;
}
@Override
public ACAccessMode[] getAccessModes() {
return accessModes;
}
@Override
public boolean isIsolationCompany() {
return isolationCompany;
}
@Override
public boolean isOrgAdminSecurity() {
return orgAdminSecurity;
}
@Override
public void callBack(List<AccessControlModel> acModelList) {
DimensionTreeCache.getCache().destroy(true);
for (AccessControlModel accessControlModel : acModelList) {
DimensionPermCache.getCache().remove(accessControlModel._resourceId);
DimensionTreeCache.getCache().destroy(true);
}
}
}

View File

@ -0,0 +1,63 @@
package com.actionsoft.apps.kms.ac;
import java.util.List;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.CardPermCache;
import com.actionsoft.apps.kms.cache.DimensionPermCache;
import com.actionsoft.apps.kms.cache.DimensionTreeCache;
import com.actionsoft.bpms.commons.security.ac.model.ACAccessMode;
import com.actionsoft.bpms.commons.security.ac.model.ACCM;
import com.actionsoft.bpms.commons.security.ac.model.AccessControlModel;
/**
* 知识管理员ac
*
* @author wangshibao
*/
public class KnwlMgrACCM extends ACCM {
public static ACAccessMode KNWLMGR = new ACAccessMode("知识管理员", 0);
public static String resourceType = KMSConstant.AC_RESOURCE_TYPE_KNWL_MGR;
public String resourceName = "知识管理员";
private String[] assignmentTypes;
private static ACAccessMode[] accessModes = new ACAccessMode[] { KNWLMGR };
private boolean isolationCompany;
private boolean orgAdminSecurity = true;
@Override
public String getResourceType() {
return resourceType;
}
@Override
public String getResourceName() {
return resourceName;
}
@Override
public String[] getAssignmentTypes() {
return assignmentTypes;
}
@Override
public ACAccessMode[] getAccessModes() {
return accessModes;
}
@Override
public boolean isIsolationCompany() {
return isolationCompany;
}
@Override
public boolean isOrgAdminSecurity() {
return orgAdminSecurity;
}
@Override
public void callBack(List<AccessControlModel> acModelList) {
DimensionTreeCache.getCache().destroy(true);
DimensionPermCache.getCache().destroy(true);
CardPermCache.getCache().destroy(true);
}
}

View File

@ -0,0 +1,52 @@
package com.actionsoft.apps.kms.ac;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.bpms.commons.security.ac.model.ACAccessMode;
import com.actionsoft.bpms.commons.security.ac.model.ACCM;
/**
* 元数据ac(发布和访问)
*
* @author wangshibao
*/
public class MetaSchemaACCM extends ACCM {
public static ACAccessMode PUBLISH = new ACAccessMode("发布", 0);
public static ACAccessMode READ = new ACAccessMode("访问", 1);
public static String resourceType = KMSConstant.AC_RESOURCE_TYPE_META_SCHEMA;
public String resourceName = "元数据发布访问权限";
private String[] assignmentTypes;
private static ACAccessMode[] accessModes = new ACAccessMode[] { PUBLISH, READ };
private boolean isolationCompany;
private boolean orgAdminSecurity = true;
@Override
public String getResourceType() {
return resourceType;
}
@Override
public String getResourceName() {
return resourceName;
}
@Override
public String[] getAssignmentTypes() {
return assignmentTypes;
}
@Override
public ACAccessMode[] getAccessModes() {
return accessModes;
}
@Override
public boolean isIsolationCompany() {
return isolationCompany;
}
@Override
public boolean isOrgAdminSecurity() {
return orgAdminSecurity;
}
}

View File

@ -0,0 +1,51 @@
package com.actionsoft.apps.kms.ac;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.bpms.commons.security.ac.model.ACAccessMode;
import com.actionsoft.bpms.commons.security.ac.model.ACCM;
/**
* xpage内容管理员ac
*
* @author wangshibao
*/
public class XpageMgrACCM extends ACCM {
public static ACAccessMode XPAGEMGR = new ACAccessMode("xpage内容管理员", 0);
public static String resourceType = KMSConstant.AC_RESOURCE_TYPE_XPAGE_MGR;
public String resourceName = "xpage内容管理员";
private String[] assignmentTypes;
private static ACAccessMode[] accessModes = new ACAccessMode[] { XPAGEMGR };
private boolean isolationCompany;
private boolean orgAdminSecurity = true;
@Override
public String getResourceType() {
return resourceType;
}
@Override
public String getResourceName() {
return resourceName;
}
@Override
public String[] getAssignmentTypes() {
return assignmentTypes;
}
@Override
public ACAccessMode[] getAccessModes() {
return accessModes;
}
@Override
public boolean isIsolationCompany() {
return isolationCompany;
}
@Override
public boolean isOrgAdminSecurity() {
return orgAdminSecurity;
}
}

View File

@ -0,0 +1,83 @@
package com.actionsoft.apps.kms.aslp;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.DimensionCache;
import com.actionsoft.apps.kms.model.DimensionModel;
import com.actionsoft.apps.kms.service.DimensionService;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
/**
* @author wangshibao
*/
public class CreateDimension implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'dimensionName', required: true, desc: '维度名称'", "name: 'parentId', required: true, desc: '父维度Id\"\"表示根维度'", "name: 'showType', required: true, desc: '维度类型1允许发布知识 2不允许发布知识'", "name: 'isExamine', required: true, desc: '发布是否需要审批默认false'", "name: 'memo', required: false, desc: '维度描述'", "name: 'isEnabled', required: true, desc: '是否启用,默认启用'", "name: 'createUser', required: false, desc: '创建人'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String dimensionName = (String) params.get("dimensionName");
if (UtilString.isEmpty(dimensionName) || UtilString.isEmpty(dimensionName.trim())) {
ro = ResponseObject.newErrResponse("维度名称不允许为空");
return ro;
}
String parentId = (String) params.get("parentId");
if (!parentId.equals("")) {
DimensionModel dimensionModel = DimensionCache.getCache().get(parentId);
if (dimensionModel == null) {
ro = ResponseObject.newErrResponse("父维度Id不存在");
return ro;
}
}
Integer showTypeI = Integer.valueOf(params.get("showType").toString());
if (showTypeI != null) {
int showType = showTypeI.intValue();
if (showType != KMSConstant.SHOWTYPE_CATEGORY && showType != KMSConstant.SHOWTYPE_DIMENSION) {
ro = ResponseObject.newErrResponse("维度类型不正确");
return ro;
}
}
String createUser = UserContext.fromSessionId(sid).getUID();
if (params.containsKey("createUser")) {
createUser = (String) params.get("createUser");
}
UserModel createUserModel = SDK.getORGAPI().getUser(createUser);
if (createUserModel == null || createUserModel.isClosed()) {
ro = ResponseObject.newErrResponse("创建人UID不存在或已注销");
return ro;
}
boolean isExamine = Boolean.valueOf(params.get("isExamine").toString());
String memo = (String) params.get("memo");
boolean isEnabled = Boolean.valueOf(params.get("isEnabled").toString());
DimensionService dimensionService = new DimensionService();
String dimensionId = dimensionService.createDimension(dimensionName, parentId, showTypeI.intValue(), isExamine, memo, createUser, "", isEnabled);
ro = ResponseObject.newOkResponse("创建成功").put("dimensionId", dimensionId);
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,60 @@
package com.actionsoft.apps.kms.aslp;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.dc.DCProfileManager;
import com.actionsoft.bpms.server.fs.dc.DCUtil;
import com.actionsoft.sdk.local.SDK;
/**
* @author wangshibao
*/
public class CreateFile implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'cardId', required: true, desc: '知识ID'", "name: 'dc', required: true, desc: 'DCContext对象'", "name: 'extParams',required:false,desc:'扩展信息JSON字符串'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String cardId = (String) params.get("cardId");
CardModel cardModel = CardCache.getCache().get(cardId);
if (cardModel == null) {
ro = ResponseObject.newErrResponse("知识不存在");
return ro;
}
DCContext dcContext = (DCContext) params.get("dc");
String fileVersion = KMSUtil.getNextFileVersion(cardId, dcContext.getFileName());
DCContext newDCContext = new DCContext(UserContext.fromSessionId(sid), DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardId, dcContext.getFileName());
boolean result = DCUtil.copyDCFile(dcContext, newDCContext);
if (result) {
ro = ResponseObject.newOkResponse("创建成功").put("fileId", (String) newDCContext.getDCMessage().getAttrs().get("fileId"));
} else {
ro = ResponseObject.newErrResponse("创建失败复制DC失败");
}
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,72 @@
package com.actionsoft.apps.kms.aslp;
import java.io.InputStream;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.dc.DCProfileManager;
import com.actionsoft.bpms.server.fs.file.WriteDCFile;
import com.actionsoft.sdk.local.SDK;
/**
* @author wangshibao
*/
public class CreateFileByInputStream implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'cardId', required: true, desc: '知识ID'", "name: 'in', required: true, desc: 'inputstream对象'", "name: 'fileName', required: true, desc: '文件名称'", "name: 'extParams',required:false,desc:'扩展信息JSON字符串'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String cardId = (String) params.get("cardId");
CardModel cardModel = CardCache.getCache().get(cardId);
if (cardModel == null) {
ro = ResponseObject.newErrResponse("知识不存在");
return ro;
}
InputStream inputStream = (InputStream) params.get("in");
String fileName = (String) params.get("fileName");
String fileVersion = KMSUtil.getNextFileVersion(cardId, fileName);
DCContext newDCContext = new DCContext(UserContext.fromSessionId(sid), DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardId, fileName);
boolean result = copyDCFile(inputStream, newDCContext);
if (result) {
ro = ResponseObject.newOkResponse("创建成功").put("fileId", (String) newDCContext.getDCMessage().getAttrs().get("fileId"));
} else {
ro = ResponseObject.newErrResponse("创建失败复制DC失败");
}
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
public boolean copyDCFile(InputStream sourceFileByte, DCContext targetContext) {
try {
return WriteDCFile.getInstance().write(sourceFileByte, targetContext);
} finally {
try {
sourceFileByte.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

View File

@ -0,0 +1,89 @@
package com.actionsoft.apps.kms.aslp;
import java.sql.Timestamp;
import java.util.Map;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.dao.FileDao;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.apps.kms.model.FileModel;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONObject;
/**
* @author wangshibao
*/
public class CreateFormLink implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'cardId', required: true, desc: '知识ID'", "name: 'formJSON', required: true, desc: '表单链接所需的JSON信息格式&#x7b;&quot;processInstId&quot;&#x3a;&quot;xxx&quot;,&quot;taskInstId&quot;&#x3a;&quot;xxx&quot;,&quot;formName&quot;&#x3a;&quot;xxx&quot;&#x7d;'", "name: 'createUser', required: false, desc: '表单链接创建人某些特殊场景下sid和createUser代表的用户并不一样如果此参数为null则使用sid代表的用户'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String cardId = (String) params.get("cardId");
CardModel cardModel = CardCache.getCache().get(cardId);
if (cardModel == null) {
ro = ResponseObject.newErrResponse("知识不存在");
return ro;
}
String createUser;
String createUserParam = (String) params.get("createUser");
if (createUserParam == null) {
createUser = UserContext.fromSessionId(sid).getUID();
} else {
createUser = createUserParam;
}
UserModel createUserModel = SDK.getORGAPI().getUser(createUser);
if (createUserModel == null || createUserModel.isClosed()) {
ro = ResponseObject.newErrResponse("创建人UID不存在或已注销");
return ro;
}
String formJSON = (String) params.get("formJSON");
JSONObject formJO = JSONObject.parseObject(formJSON);
if (!formJO.containsKey("processInstId") || !formJO.containsKey("taskInstId") || !formJO.containsKey("formName")) {
ro = ResponseObject.newErrResponse("[表单链接所需的JSON信息]格式错误");
return ro;
}
FileModel fileModel = new FileModel();
fileModel.setCardId(cardId);
fileModel.setCreateTime(new Timestamp(System.currentTimeMillis()));
fileModel.setCreateUser(createUser);
fileModel.setFileName(formJSON);
fileModel.setFileSize(-1);
fileModel.setFileVer("-1");
String fileId = UUIDGener.getObjectId();
fileModel.setId(fileId);
fileModel.setFileState(2);//2代表表单链接
fileModel.setIsFullsearch(2);//2代表无需全文检索
FileDao fileDao = new FileDao();
int result = fileDao.insert(fileModel);
if (result == 1) {
ro = ResponseObject.newOkResponse("创建成功").put("fileId", fileId);
} else {
ro = ResponseObject.newErrResponse("创建失败");
}
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,99 @@
package com.actionsoft.apps.kms.aslp;
import java.util.Date;
import java.util.Map;
import com.actionsoft.apps.kms.service.CardService;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
/**
* @author wangshibao
*/
public class CreateKnwl implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: false, desc: 'sid如果为空则需要传createUser参数'", "name: 'knwlName', required: true, desc: '知识名称'", "name: 'createUser', required: false, desc: '知识创建人某些特殊场景下sid和createUser代表的用户并不一样如果此参数为null则使用sid代表的用户'", "name: 'validDate', required: false, desc: '有效期:yyyy-MM-dd'", "name: 'onlineLevel', required: true, desc: '只读控制1在线阅读和下载 0在线阅读'", "name: 'securityLevel', required: true, desc: '保密级别, 0: 普通 1秘密 2机密'", "name: 'isComment', required: true, desc: '是否可以评论'", "name: 'isRate', required: true, desc: '是否可以评分'",
"name:'cardContext',required:false,desc:'知识内容'", "name: 'externalUrl',required:false,desc:'外部知识链接,可以展示外部知识的链接'", "name: 'extParams',required:false,desc:'扩展信息JSON字符串'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (UtilString.isNotEmpty(sid) && !SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String knwlName = (String) params.get("knwlName");
if (UtilString.isEmpty(knwlName) || UtilString.isEmpty(knwlName.trim())) {
ro = ResponseObject.newErrResponse("知识名称不允许为空");
return ro;
}
Date validDate = params.get("validDate") == null ? null : UtilDate.parse(params.get("validDate").toString());
Integer onlineLevel = (Integer) params.get("onlineLevel");
if (onlineLevel.intValue() != 1 && onlineLevel.intValue() != 0) {
ro = ResponseObject.newErrResponse("只读控制值不正确");
return ro;
}
Integer securityLevel = (Integer) params.get("securityLevel");
if (securityLevel.intValue() != 0 && securityLevel.intValue() != 1 && securityLevel.intValue() != 2) {
ro = ResponseObject.newErrResponse("保密级别值不正确");
return ro;
}
Boolean isComment = (Boolean) params.get("isComment");
Boolean isRate = (Boolean) params.get("isRate");
String url = (String) params.get("externalUrl");
String extParams = (String) params.get("extParams");
String createUser;
String createUserParam = (String) params.get("createUser");
if (createUserParam == null) {
if (UtilString.isEmpty(sid)) {
ro = ResponseObject.newErrResponse("sid和createUser不能都为空值");
return ro;
}
createUser = UserContext.fromSessionId(sid).getUID();
} else {
createUser = createUserParam;
}
UserModel createUserModel = SDK.getORGAPI().getUser(createUser);
if (createUserModel == null || createUserModel.isClosed()) {
ro = ResponseObject.newErrResponse("创建人UID不存在或已注销");
return ro;
}
CardService cardService = new CardService();
String cardId = UUIDGener.getObjectId();
String cardContext = "";
if (params.containsKey("cardContext")) {
cardContext = (String) params.get("cardContext");
}
boolean result = cardService.insertCard(createUser, cardId, knwlName, validDate == null ? null : new java.sql.Date(validDate.getTime()), onlineLevel, securityLevel, 0, isComment == true ? 1 : 0, isRate == true ? 1 : 0, cardContext, url, extParams);
if (result) {
ro = ResponseObject.newOkResponse("创建成功").put("cardId", cardId);
} else {
ro = ResponseObject.newOkResponse("创建失败");
}
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,62 @@
package com.actionsoft.apps.kms.aslp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.service.SearchService;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONArray;
/**
* @author wangshibao
*/
public class FullSearch implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'curPage', required: true, desc: '当前页码从0开始'", "name: 'rowsPerPage', required: true, desc: '每页的条数'", "name: 'searchText', required: true, desc: '查询的关键词'", "name: 'docTypes', required: false, desc: '文档类型JSON数组格式&#x5b;&quot;pdf&quot;,&quot;doc&quot;,&quot;ppt&quot;,&quot;xls&quot;,&quot;txt&quot;&#x5d;'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String uid = UserContext.fromSessionId(sid).getUID();
UserModel userModel = SDK.getORGAPI().getUser(uid);
if (userModel == null || userModel.isClosed()) {
ro = ResponseObject.newErrResponse("查询者UID不存在或已注销");
return ro;
}
Integer curPage = Integer.valueOf(params.get("curPage").toString());
Integer rowsPerPage = Integer.valueOf(params.get("rowsPerPage").toString());
String searchText = (String) params.get("searchText");
String docTypes = (String) params.get("docTypes");
List<String> docTypeList = new ArrayList<>();
if (docTypes != null) {
docTypeList = JSONArray.parseArray(docTypes, String.class);
}
String result = new SearchService().fullSearchWrap(UserContext.fromSessionId(sid), curPage, rowsPerPage, searchText, docTypeList, "1");
ResponseObject resultRO = ResponseObject.parse(result);
if (resultRO.isOk()) {
ro = resultRO.msg("查询成功");
}
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,61 @@
package com.actionsoft.apps.kms.aslp;
import java.util.Map;
import com.actionsoft.apps.kms.cache.DimensionCache;
import com.actionsoft.apps.kms.model.DimensionModel;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.cache.UserCache;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONObject;
/**
* @author wangshibao
*/
public class GetDimension implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'dimensionId', required: true, desc: '维度ID'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String dimensionId = (String) params.get("dimensionId");
DimensionModel dimensionModel = DimensionCache.getCache().get(dimensionId);
if (dimensionModel == null) {
ro = ResponseObject.newErrResponse("维度不存在");
return ro;
}
JSONObject dimensionJO = new JSONObject();
dimensionJO.put("id", dimensionModel.getId());
dimensionJO.put("dimensionName", dimensionModel.getDimensionName());
dimensionJO.put("showType", dimensionModel.getShowType());
dimensionJO.put("isExamine", dimensionModel.getIsExamine() == 1 ? true : false);
dimensionJO.put("memo", dimensionModel.getMemo());
dimensionJO.put("createUsername", UserCache.getModel(dimensionModel.getCreateUser()) == null ? dimensionModel.getCreateUser() : UserCache.getModel(dimensionModel.getCreateUser()).getUserName());
dimensionJO.put("createTime", UtilDate.datetimeFormat(dimensionModel.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
dimensionJO.put("isEnabled", dimensionModel.getIsEnabled() == 1 ? true : false);
dimensionJO.put("hotspotDefId", dimensionModel.getHotspotDefId());
dimensionJO.put("orderIndex", dimensionModel.getOrderIndex());
ro = ResponseObject.newOkResponse("查询成功").put("dimension", dimensionJO);
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,77 @@
package com.actionsoft.apps.kms.aslp;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.cache.FileCache;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.apps.kms.model.FileModel;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.dc.DCProfileManager;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONObject;
/**
* @author wangshibao
*/
public class GetFile implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'fileId', required: true, desc: '文件ID'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String fileId = (String) params.get("fileId");
FileModel fileModel = FileCache.getCache().get(fileId);
if (fileModel == null) {
ro = ResponseObject.newErrResponse("文件不存在");
return ro;
}
JSONObject fileJO = new JSONObject();
fileJO.put("fileId", fileModel.getId());
fileJO.put("cardId", fileModel.getCardId());
fileJO.put("fileName", fileModel.getFileName());
fileJO.put("fileVer", fileModel.getFileVer());
fileJO.put("fileSize", fileModel.getFileSize());
fileJO.put("fileState", fileModel.getFileState());
fileJO.put("createTime", UtilDate.datetimeFormat24(fileModel.getCreateTime()));
fileJO.put("createUser", fileModel.getCreateUser());
String knwlId=fileModel.getCardId();
fileJO.put("isFullsearch", fileModel.getIsFullsearch());
String fileName = fileModel.getFileName();
CardCache cardCache = CardCache.getCache();
CardModel cardModel = cardCache.get(fileModel.getCardId());
DCContext dcContext = new DCContext(UserContext.fromSessionId(sid), DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), knwlId, KMSUtil.getFileNameOfVersion(fileName, fileModel.getFileVer()));
dcContext.setFileNameShow(fileName);
fileJO.put("fileDownloadURL", dcContext.getDownloadURL());
fileJO.put("repositoryName", KMSConstant.DOC_REPOSITORY_NAME);
fileJO.put("groupValue", cardModel.getCreateUser());
fileJO.put("fileValue", knwlId);
fileJO.put("fileName", KMSUtil.getFileNameOfVersion(fileName, fileModel.getFileVer()));
fileJO.put("extParams", "{}");
ro = ResponseObject.newOkResponse("查询成功").put("file", fileJO);
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,68 @@
package com.actionsoft.apps.kms.aslp;
import java.util.Map;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONObject;
/**
* @author wangshibao
*/
public class GetKnwl implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'knwlId', required: true, desc: '知识ID'", "name: 'isPage', required: false, desc: '是否是独立页面(非侧边栏打开)'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String knwlId = (String) params.get("knwlId");
CardModel cardModel = CardCache.getCache().get(knwlId);
if (cardModel == null) {
ro = ResponseObject.newErrResponse("知识不存在");
return ro;
}
boolean isPage = false;
if (params.containsKey("isPage")) {
isPage = Boolean.valueOf(params.get("isPage").toString());
}
JSONObject cardJO = new JSONObject();
cardJO.put("knwlId", cardModel.getId());
cardJO.put("knwlName", cardModel.getCardName());
cardJO.put("createUser", cardModel.getCreateUser());
cardJO.put("createTime", UtilDate.datetimeFormat24(cardModel.getCreateTime()));
cardJO.put("lastUpdate", UtilDate.datetimeFormat24(cardModel.getLastUpdate()));
cardJO.put("onlineLevel", cardModel.getOnlineLevel());
cardJO.put("securityLevel", cardModel.getSecurityLevel());
cardJO.put("readCount", cardModel.getReadCount());
cardJO.put("isPublished", cardModel.getIsPublished() == 1 ? true : false);
cardJO.put("validDate", UtilDate.dateFormat(cardModel.getValidDate()));
cardJO.put("isComment", cardModel.getIsComment() == 1 ? true : false);
cardJO.put("isRate", cardModel.getIsRate() == 1 ? true : false);
cardJO.put("accessURL", "./w?sid=" + sid + "&cmd=com.actionsoft.apps.kms_knwl_center_browse_card_page&cardId=" + knwlId + "&isPage=" + isPage);
cardJO.put("externalUrl", cardModel.getExternalUrl());
cardJO.put("extParams", cardModel.getExtParams());
ro = ResponseObject.newOkResponse("查询成功").put("knwl", cardJO);
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,90 @@
package com.actionsoft.apps.kms.aslp;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.cache.DimensionCache;
import com.actionsoft.apps.kms.service.CardService;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* @author wangshibao
*/
public class PublishKnwl implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'knwlIDArray', required: true, desc: '要发布的知识ID的JSON数组字符串'", "name: 'dimensionIDArray', required: true, desc: '要发布到的维度ID的JSON数组字符串'",
"name: 'schemaMetaDataObject', required: false, desc: '元数据,格式:&#x7b;&quot;2&quot;&#x3a;&#x5b;&#x7b;&quot;metaValue&quot;&#x3a;&quot;&#x7c7b;&#x578b;&#x4e3a;&#x6587;&#x672c;&#x6846;&#x7684;&#x503c;&quot;,&quot;schemaId&quot;&#x3a;&quot;&#x5143;&#x6570;&#x636e;ID&quot;&#x7d;&#x5d;,&quot;01&quot;&#x3a;&#x5b;&#x7b;&quot;attrId&quot;&#x3a;&quot;&#x5c5e;&#x6027;ID&quot;,&quot;schemaId&quot;&#x3a;&quot;&#x5143;&#x6570;&#x636e;ID&quot;&#x7d;&#x5d;&#x7d;'", "name: 'tagArray', required: false, desc: '标签的JSON数组字符串'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String uid = UserContext.fromSessionId(sid).getUID();
UserModel userModel = SDK.getORGAPI().getUser(uid);
if (userModel == null || userModel.isClosed()) {
ro = ResponseObject.newErrResponse("查询者UID不存在或已注销");
return ro;
}
JSONArray publishKnwlIDArray = JSONArray.parseArray(params.get("knwlIDArray").toString());
for (int i = 0; i < publishKnwlIDArray.size(); i++) {
String knwlId = publishKnwlIDArray.getString(i);
if (CardCache.getCache().get(knwlId) == null) {
ro = ResponseObject.newErrResponse("知识不存在:" + knwlId);
return ro;
}
}
JSONArray publishDimensionIDArray = JSONArray.parseArray(params.get("dimensionIDArray").toString());
for (int i = 0; i < publishDimensionIDArray.size(); i++) {
String dimensionId = publishDimensionIDArray.getString(i);
if (DimensionCache.getCache().get(dimensionId) == null) {
ro = ResponseObject.newErrResponse("维度不存在:" + dimensionId);
return ro;
}
}
JSONObject schemaMetaDataJO = null;
if (params.get("schemaMetaDataObject") == null) {
schemaMetaDataJO = new JSONObject();
schemaMetaDataJO.put("01", new JSONArray());
schemaMetaDataJO.put("2", new JSONArray());
} else {
schemaMetaDataJO = JSONObject.parseObject(params.get("schemaMetaDataObject").toString());
}
JSONArray tagArray = new JSONArray();
if (params.get("tagArray") != null) {
tagArray = JSONArray.parseArray(params.get("tagArray").toString());
}
String join = "";
if (tagArray != null) {
join = StringUtils.join(tagArray.toArray(new String[0]), KMSConstant.TAG_SEPRATOR);
}
CardService cardService = new CardService();
cardService.publishCard(UserContext.fromSessionId(sid), publishKnwlIDArray, publishDimensionIDArray, schemaMetaDataJO, join, null);
ro = ResponseObject.newOkResponse("发布成功");
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,107 @@
package com.actionsoft.apps.kms.aslp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.cache.DimensionCache;
import com.actionsoft.apps.kms.model.DimensionModel;
import com.actionsoft.apps.kms.service.DimensionService;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.cache.UserCache;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* @author wangshibao
*/
public class SearchDimensionList implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'parentId', required: true, desc: '父维度ID'", "name: 'permType', required: false, desc: '维度的权限类型manage、access分别代表管理权限、访问权限默认是管理权限'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String parentId = (String) params.get("parentId");
if (!UtilString.isEmpty(parentId)) {
DimensionModel dimensionModel = DimensionCache.getCache().get(parentId);
if (dimensionModel == null) {
ro = ResponseObject.newErrResponse("父维度Id不存在");
return ro;
}
}
String permType = "manage";
if (params.containsKey("permType")) {
permType = (String) params.get("permType");
}
if (!permType.equals("manage") && !permType.equals("access") && !permType.equals("all") && !permType.equals("allenable")) {
ro = ResponseObject.newErrResponse("权限类型错误");
return ro;
}
if ("root".equals(parentId)) {
parentId = "";
}
JSONArray dimensionJA = new JSONArray();
DimensionService dimensionService = new DimensionService();
List<DimensionModel> dimensionModels = new ArrayList<>();
if (permType.equals("manage")) {
dimensionModels = dimensionService.queryListMgrDimensionsByParentId(parentId, UserContext.fromSessionId(sid).getUID());
} else if (permType.equals("access")) {
String uid = UserContext.fromSessionId(sid).getUID();
dimensionModels = dimensionService.queryTreeAccessDimensionsByParentId(parentId, uid, KMSUtil.isKnwlManager(uid));
} else if (permType.equals("all")) {
dimensionModels = dimensionService.queryListMgrDimensionsByParentId(parentId);
} else if (permType.equals("allenable")) {
dimensionModels = dimensionService.queryTreeEnabledDimensionsByParentId(parentId);
}
for (DimensionModel dimensionModel : dimensionModels) {
if (!hasRepeatDimension(dimensionJA, dimensionModel)) {
JSONObject dimensionJO = new JSONObject();
dimensionJO.put("id", dimensionModel.getId());
dimensionJO.put("dimensionName", dimensionModel.getDimensionName());
dimensionJO.put("showType", dimensionModel.getShowType());
dimensionJO.put("isExamine", dimensionModel.getIsExamine() == 1 ? true : false);
dimensionJO.put("memo", dimensionModel.getMemo());
dimensionJO.put("createUsername", UserCache.getModel(dimensionModel.getCreateUser()) == null ? dimensionModel.getCreateUser() : UserCache.getModel(dimensionModel.getCreateUser()).getUserName());
dimensionJO.put("createTime", UtilDate.datetimeFormat(dimensionModel.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
dimensionJO.put("isEnabled", dimensionModel.getIsEnabled() == 1 ? true : false);
dimensionJO.put("hotspotDefId", dimensionModel.getHotspotDefId());
dimensionJO.put("orderIndex", dimensionModel.getOrderIndex());
dimensionJO.put("hasPerm", dimensionModel.isHasPerm());
dimensionJA.add(dimensionJO);
}
}
ro = ResponseObject.newOkResponse("查询成功").put("list", dimensionJA);
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
public boolean hasRepeatDimension(JSONArray dimensions, DimensionModel dimensionModel) {
for (int i = 0; i < dimensions.size(); i++) {
JSONObject dimensionJO = dimensions.getJSONObject(i);
if (dimensionModel.getId().equals(dimensionJO.getString("id"))) {
return true;
}
}
return false;
}
}

View File

@ -0,0 +1,92 @@
package com.actionsoft.apps.kms.aslp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.apps.kms.model.FileModel;
import com.actionsoft.apps.kms.service.FileService;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.dc.DCProfileManager;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* @author wangshibao
*/
public class SearchFileList implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'knwlId', required: true, desc: '知识ID'", "name: 'isLatestVersion', required: false, desc: '是否只返回最新版的文件默认false'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String uid = UserContext.fromSessionId(sid).getUID();
UserModel userModel = SDK.getORGAPI().getUser(uid);
if (userModel == null || userModel.isClosed()) {
ro = ResponseObject.newErrResponse("查询者UID不存在或已注销");
return ro;
}
String knwlId = (String) params.get("knwlId");
if (CardCache.getCache().get(knwlId) == null) {
ro = ResponseObject.newErrResponse("知识不存在");
return ro;
}
Boolean isLatestVersion = (Boolean) params.get("isLatestVersion");
List<FileModel> fileModels = new ArrayList<>();
if (isLatestVersion != null && isLatestVersion == true) {
fileModels = new FileService().queryLatestFiles(knwlId);
} else {
fileModels = new FileService().queryFiles(knwlId);
}
JSONArray dataJson = new JSONArray();
CardCache cardCache = CardCache.getCache();
for (FileModel fileModel : fileModels) {
JSONObject fileJO = new JSONObject();
String fileName = fileModel.getFileName();
CardModel cardModel = cardCache.get(fileModel.getCardId());
DCContext dcContext = new DCContext(UserContext.fromSessionId(sid), DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), knwlId, KMSUtil.getFileNameOfVersion(fileName, fileModel.getFileVer()));
dcContext.setFileNameShow(fileName);
fileJO.put("fileDownloadURL", dcContext.getDownloadURL());
fileJO.put("id", fileModel.getId());
fileJO.put("fileName", fileName);
fileJO.put("versionFileName", KMSUtil.getFileNameOfVersion(fileName, fileModel.getFileVer()));
fileJO.put("fileVer", fileModel.getFileVer());
fileJO.put("fileSize", fileModel.getFileSize());
fileJO.put("createTime", UtilDate.datetimeFormat(fileModel.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
fileJO.put("createUser", fileModel.getCreateUser());
fileJO.put("fileState", fileModel.getFileState());
fileJO.put("extParams", "{}");
dataJson.add(fileJO);
}
ro = ResponseObject.newOkResponse("查询成功").put("searchResult", dataJson);
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,135 @@
package com.actionsoft.apps.kms.aslp;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.model.PublishModel;
import com.actionsoft.apps.kms.service.DimensionService;
import com.actionsoft.apps.kms.service.SearchService;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.cache.UserCache;
import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* @author wangshibao
*/
public class SearchKnwlList implements ASLP {
// 元数据格式Html.encodeForHTML("{\"2\":[{\"metaValue\":\"类型为文本框的值\",\"schemaId\":\"元数据ID\"}],\"01\":[{\"attrId\":\"属性ID\",\"schemaId\":\"元数据ID\"}]}");
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'curPage', required: true, desc: '当前页码'", "name: 'rowsPerPage', required: true, desc: '每页的条数'", "name: 'sortIndx', required: true, desc: '排序字段READCOUNT 阅读次数、CARDNAME 知识名称、PUBLISHTIME 发布时间、COMMENTCOUNT 评论次数'", "name: 'sortDir', required: true, desc: '顺序up 升序down 降序'", "name: 'dimensionIdArray', required: false, desc: '维度ID的JSON数组字符串'",
"name: 'schemaMetaDataObject', required: false, desc: '元数据,格式:&#x7b;&quot;2&quot;&#x3a;&#x5b;&#x7b;&quot;metaValue&quot;&#x3a;&quot;&#x7c7b;&#x578b;&#x4e3a;&#x6587;&#x672c;&#x6846;&#x7684;&#x503c;&quot;,&quot;schemaId&quot;&#x3a;&quot;&#x5143;&#x6570;&#x636e;ID&quot;&#x7d;&#x5d;,&quot;01&quot;&#x3a;&#x5b;&#x7b;&quot;attrId&quot;&#x3a;&quot;&#x5c5e;&#x6027;ID&quot;,&quot;schemaId&quot;&#x3a;&quot;&#x5143;&#x6570;&#x636e;ID&quot;&#x7d;&#x5d;&#x7d;'", "name: 'knwlName', required: false, desc: '知识名称'",
"name: 'publishStartDate', required: false, desc: '发布开始时间 yyyy-MM-dd'", "name: 'publishEndDate', required: false, desc: '发布结束时间 yyyy-MM-dd'", "name: 'publishUsers', required: false, desc: '发布人UID的JSON数组字符串'", "name: 'tag', required: false, desc: '标签'", "name: 'lastPublishId', required: false, desc: '上一页最后一个publishId用于增强查询性能'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String uid = UserContext.fromSessionId(sid).getUID();
UserModel userModel = SDK.getORGAPI().getUser(uid);
if (userModel == null || userModel.isClosed()) {
ro = ResponseObject.newErrResponse("查询者UID不存在或已注销");
return ro;
}
Integer curPage = Integer.valueOf(params.get("curPage").toString());
Integer rowsPerPage = Integer.valueOf(params.get("rowsPerPage").toString());
String sortIndx = (String) params.get("sortIndx");
if (!sortIndx.equals("READCOUNT") && !sortIndx.equals("CARDNAME") && !sortIndx.equals("PUBLISHTIME") && !sortIndx.equals("COMMENTCOUNT")) {
ro = ResponseObject.newErrResponse("排序字段值不正确");
return ro;
}
String sortDir = (String) params.get("sortDir");
if (!sortDir.equals("up") && !sortDir.equals("down")) {
ro = ResponseObject.newErrResponse("顺序值不正确");
return ro;
}
List<String> dimensionIdList = params.get("dimensionIdArray") == null ? new ArrayList<String>() : JSONArray.parseArray(params.get("dimensionIdArray").toString(), String.class);
JSONObject schemaMetaDataJO = null;
if (params.get("schemaMetaDataObject") == null) {
schemaMetaDataJO = new JSONObject();
schemaMetaDataJO.put("01", new JSONArray());
schemaMetaDataJO.put("2", new JSONArray());
} else {
schemaMetaDataJO = JSONObject.parseObject(params.get("schemaMetaDataObject").toString());
}
String cardName = (String) params.get("knwlName");
Timestamp publishStartDate = params.get("publishStartDate") == null ? null : UtilDate.parseTsFromDate(params.get("publishStartDate").toString());
Timestamp publishEndDate = params.get("publishEndDate") == null ? null : UtilDate.parseTsFromDate(params.get("publishEndDate").toString());
List<String> publishUsers = params.get("publishUsers") == null ? new ArrayList<String>() : JSONArray.parseArray(params.get("publishUsers").toString(), String.class);
List<String> tagList = new ArrayList<>();
if (params.get("tag") != null) {
tagList.add(params.get("tag").toString());
}
String lastPublishId = params.get("lastPublishId") == null ? "" : params.get("lastPublishId").toString();
DimensionService dimensionService = new DimensionService();
SearchService searchService = new SearchService();
List<PublishModel> publishModels = searchService.attrSearchCard(curPage, rowsPerPage, sortIndx, sortDir, uid, dimensionIdList, schemaMetaDataJO, cardName, publishStartDate, publishEndDate, publishUsers, tagList, lastPublishId, "","");
JSONObject dataJson = new JSONObject();
if (publishModels.size() < rowsPerPage + 1L) {
dataJson.put("totalRecords", (curPage - 1) * rowsPerPage + publishModels.size());
} else {
dataJson.put("totalRecords", searchService.totalRecords);
if (publishModels.size() > 0) {
publishModels.remove(publishModels.size() - 1);//移除最后一条
}
}
JSONArray cardJA = new JSONArray();
for (PublishModel publishModel : publishModels) {
JSONObject cardJO = new JSONObject();
cardJO.put("cardId", publishModel.getCardModel().getId());
cardJO.put("cardName", publishModel.getCardModel().getCardName());
cardJO.put("cardType", publishModel.getCardModel().getCardType());
cardJO.put("onlineLevel", publishModel.getCardModel().getOnlineLevel());
cardJO.put("securityLevel", publishModel.getCardModel().getSecurityLevel());
// cardJO.put("lastUpdate", publishModel.getCardModel().getLastUpdate());
cardJO.put("readCount", publishModel.getCardModel().getReadCount());
cardJO.put("commentCount", publishModel.getCardModel().getCommentCount());
cardJO.put("isPublished", publishModel.getCardModel().getIsPublished());
cardJO.put("validDate", UtilDate.dateFormat(publishModel.getCardModel().getValidDate()));
UserModel publishUserModel = UserCache.getModel(publishModel.getPublishUser());
cardJO.put("publishUsername", publishUserModel == null ? publishModel.getPublishUser() : publishUserModel.getUserName());
cardJO.put("publishTime", UtilDate.datetimeFormat(publishModel.getPublishTime(), "yyyy-MM-dd HH:mm:ss"));
cardJO.put("dimensionId", publishModel.getDimensionId());
cardJO.put("dimensionPath", dimensionService.getDimensionPath(publishModel.getDimensionId(), " > "));
cardJO.put("externalUrl", "https://www.awspaas.com");
cardJO.put("extParams", "{}");
cardJA.add(cardJO);
}
dataJson.put("data", cardJA);
dataJson.put("curPage", curPage);
ro = ResponseObject.newOkResponse("查询成功").put("searchResult", dataJson);
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,101 @@
package com.actionsoft.apps.kms.aslp;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.DimensionCache;
import com.actionsoft.apps.kms.model.DimensionModel;
import com.actionsoft.apps.kms.service.DimensionService;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.sdk.local.SDK;
/**
* @author wangshibao
*/
public class UpdateDimension implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'dimensionId', required: true, desc: '维度ID'", "name: 'dimensionName', required: false, desc: '维度名称'", "name: 'parentId', required: false, desc: '父维度Id\"\"表示根维度'", "name: 'showType', required: false, desc: '维度类型1允许发布知识 2不允许发布知识'", "name: 'isExamine', required: false, desc: '发布是否需要审批默认false'", "name: 'memo', required: false, desc: '维度描述'", "name: 'isEnabled', required: false, desc: '是否启用,默认启用'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String dimensionId = (String) params.get("dimensionId");
DimensionModel dimensionModel = DimensionCache.getCache().get(dimensionId);
if (dimensionId == null || dimensionModel == null) {
ro = ResponseObject.newErrResponse("维度不存在");
return ro;
}
String dimensionName = (String) params.get("dimensionName");
if (dimensionName == null) {
dimensionName = dimensionModel.getDimensionName();
} else if (dimensionName.trim().equals("")) {
ro = ResponseObject.newErrResponse("维度名称不允许为空");
return ro;
}
String parentId = (String) params.get("parentId");
if (parentId == null) {
parentId = dimensionModel.getParentId();
} else if (parentId.equals("")) {
} else {
DimensionModel parentDimensionModel = DimensionCache.getCache().get(parentId);
if (parentDimensionModel == null) {
ro = ResponseObject.newErrResponse("父维度不存在");
return ro;
}
}
Integer showTypeI = params.get("showType") == null ? null : Integer.valueOf(params.get("showType").toString());
if (showTypeI == null) {
showTypeI = dimensionModel.getShowType();
} else {
int showType = showTypeI.intValue();
if (showType != KMSConstant.SHOWTYPE_CATEGORY && showType != KMSConstant.SHOWTYPE_DIMENSION) {
ro = ResponseObject.newErrResponse("维度类型不正确");
return ro;
}
}
Boolean isExamine = params.get("isExamine") == null ? null : Boolean.valueOf(params.get("isExamine").toString());
if (isExamine == null) {
isExamine = dimensionModel.getIsExamine() == KMSConstant.EXAMINE;
}
String memo = (String) params.get("memo");
if (memo == null) {
memo = dimensionModel.getMemo();
}
Boolean isEnabled = params.get("isEnabled") == null ? null : Boolean.valueOf(params.get("isEnabled").toString());
if (isEnabled == null) {
isEnabled = dimensionModel.getIsEnabled() == KMSConstant.ENABLED;
}
DimensionService dimensionService = new DimensionService();
int result = dimensionService.updateDimension(dimensionId, dimensionName, showTypeI, isExamine, memo, "", isEnabled);
if (result == 1) {
ro = ResponseObject.newOkResponse("修改成功");
} else {
ro = ResponseObject.newErrResponse("修改失败");
}
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,95 @@
package com.actionsoft.apps.kms.aslp;
import java.util.Date;
import java.util.Map;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.apps.kms.service.CardService;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.sdk.local.SDK;
/**
* @author wangshibao
*/
public class UpdateKnwl implements ASLP {
@Override
@Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", "name: 'knwlId', required: true, desc: '知识ID'", "name: 'knwlName', required: false, desc: '知识名称'", "name: 'validDate', required: false, desc: '有效期:yyyy-MM-dd,如果为null则表示长期有效'", "name: 'onlineLevel', required: false, desc: '只读控制1在线阅读和下载 0在线阅读'", "name: 'securityLevel', required: false, desc: '保密级别, 0: 普通 1秘密 2机密'", "name: 'isComment', required: false, desc: '是否可以评论'", "name: 'isRate', required: false, desc: '是否可以评分'", "name:'cardContext',required:false,desc:'知识内容'",
"name: 'externalUrl',required:false,desc:'外部知识链接,可以展示外部知识的链接'", "name: 'extParams',required:false,desc:'扩展信息JSON字符串'" })
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newWarnResponse("结果未知");
try {
// 校验参数
String sid = (String) params.get("sid");
if (!SDK.getPortalAPI().checkSession(sid)) {
ro = ResponseObject.newErrResponse("sid无效");
return ro;
}
String knwlId = (String) params.get("knwlId");
CardModel cardModel = CardCache.getCache().get(knwlId);
if (cardModel == null) {
ro = ResponseObject.newErrResponse("知识不存在");
return ro;
}
String knwlName = (String) params.get("knwlName");
if (knwlName == null) {
knwlName = cardModel.getCardName();
}
Date validDate = params.get("validDate") == null ? null : UtilDate.parse(params.get("validDate").toString());
Integer onlineLevel = params.get("onlineLevel") == null ? cardModel.getOnlineLevel() : Integer.parseInt(params.get("onlineLevel").toString());
if (params.get("onlineLevel") != null) {
if (onlineLevel.intValue() != 1 && onlineLevel.intValue() != 0) {
ro = ResponseObject.newErrResponse("只读控制值不正确");
return ro;
}
}
Integer securityLevel = params.get("securityLevel") == null ? cardModel.getSecurityLevel() : Integer.parseInt(params.get("securityLevel").toString());
if (params.get("securityLevel") != null) {
if (securityLevel.intValue() != 0 && securityLevel.intValue() != 1 && securityLevel.intValue() != 2) {
ro = ResponseObject.newErrResponse("保密级别值不正确");
return ro;
}
}
Boolean isComment = params.get("isComment") == null ? (cardModel.getIsComment() == 1 ? true : false) : Boolean.parseBoolean(params.get("isComment").toString());
Boolean isRate = params.get("isRate") == null ? (cardModel.getIsRate() == 1 ? true : false) : Boolean.parseBoolean(params.get("isRate").toString());
String createUser = UserContext.fromSessionId(sid).getUID();
UserModel createUserModel = SDK.getORGAPI().getUser(createUser);
if (createUserModel == null || createUserModel.isClosed()) {
ro = ResponseObject.newErrResponse("创建人UID不存在或已注销");
return ro;
}
String cardContext = (String) params.get("cardContext");
if (cardContext == null) {
cardContext = "";
}
CardService cardService = new CardService();
boolean result = cardService.updateCard(createUser, knwlId, knwlName, validDate == null ? null : new java.sql.Date(validDate.getTime()), onlineLevel, securityLevel, 0, isComment == true ? 1 : 0, isRate == true ? 1 : 0, cardContext);
if (result) {
ro = ResponseObject.newOkResponse("修改成功");
} else {
ro = ResponseObject.newOkResponse("创建失败");
}
} catch (Exception e) {
e.printStackTrace();
ro = ResponseObject.newErrResponse(e.getMessage());
}
return ro;
}
}

View File

@ -0,0 +1,37 @@
package com.actionsoft.apps.kms.cache;
import java.util.List;
import com.actionsoft.apps.kms.dao.CardDao;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.actionsoft.bpms.commons.mvc.dao.IDaoQuery;
/**
* 知识缓存
*
* @author wangshibao
*/
public class CardCache extends Cache<String, CardModel> {
public CardCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
CardDao cardDao = new CardDao();
IDaoQuery<CardModel> iDaoQuery = cardDao.query();
List<CardModel> cardModels = iDaoQuery.list();
for (CardModel cardModel : cardModels) {
put(cardModel.getId(), cardModel, false);
}
}
public static CardCache getCache() {
return CacheManager.getCache(CardCache.class);
}
}

View File

@ -0,0 +1,58 @@
package com.actionsoft.apps.kms.cache;
import java.util.HashMap;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
/**
* 知识缓存
*
* @author wangshibao
*/
public class CardPermCache extends Cache<String, HashMap<String, Boolean>> {
public CardPermCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
}
public static CardPermCache getCache() {
return CacheManager.getCache(CardPermCache.class);
}
public static void put(String cardId, String uid, boolean isPerm) {
HashMap<String, Boolean> uidMap = getCache().get(cardId);
if (uidMap != null) {
if (!uidMap.containsKey(uid)) {
uidMap.put(uid, isPerm);
getCache().put(cardId, uidMap);
}
} else {
uidMap = new HashMap<String, Boolean>();
uidMap.put(uid, isPerm);
getCache().put(cardId, uidMap);
}
}
public static boolean getPermByUID(String cardId, String uid) {
HashMap<String, Boolean> uidMap = getCache().get(cardId);
if (uidMap == null) {
return false;
}
return uidMap.get(uid);
}
public static boolean hasCacheByUID(String cardId, String uid) {
HashMap<String, Boolean> uidMap = getCache().get(cardId);
if (uidMap == null) {
return false;
}
return uidMap.containsKey(uid);
}
}

View File

@ -0,0 +1,51 @@
package com.actionsoft.apps.kms.cache;
import java.util.List;
import com.actionsoft.apps.kms.dao.DimensionDao;
import com.actionsoft.apps.kms.model.DimensionModel;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.actionsoft.bpms.commons.cache.ListValueIndex;
import com.actionsoft.bpms.commons.mvc.dao.IDaoQuery;
/**
* 维度缓存
*
* @author wangshibao
*/
public class DimensionCache extends Cache<String, DimensionModel> {
public DimensionCache(CachePluginProfile configuration) {
super(configuration);
registeIndex(DimensionParentIndex.class, new DimensionParentIndex());
}
public List<DimensionModel> getDimensionListOfParent(String parentDimensionId) {
List<DimensionModel> list = iteratorToList(getCache().getByIndex(DimensionParentIndex.class, parentDimensionId));
return list;
}
@Override
protected void load() {
DimensionDao dimensionDao = new DimensionDao();
IDaoQuery<DimensionModel> iDaoQuery = dimensionDao.query();
List<DimensionModel> dimensionModels = iDaoQuery.list();
for (DimensionModel dimensionModel : dimensionModels) {
put(dimensionModel.getId(), dimensionModel, false);
}
}
public static DimensionCache getCache() {
return CacheManager.getCache(DimensionCache.class);
}
class DimensionParentIndex extends ListValueIndex<String, DimensionModel> {
@Override
public String key(DimensionModel t) {
return t.getParentId();
}
}
}

View File

@ -0,0 +1,58 @@
package com.actionsoft.apps.kms.cache;
import java.util.HashMap;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
/**
* 维度缓存
*
* @author wangshibao
*/
public class DimensionPermCache extends Cache<String, HashMap<String, Boolean>> {
public DimensionPermCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
}
public static DimensionPermCache getCache() {
return CacheManager.getCache(DimensionPermCache.class);
}
public static void put(String dimensionId, String uid, boolean isPerm) {
HashMap<String, Boolean> uidMap = getCache().get(dimensionId);
if (uidMap != null) {
if (!uidMap.containsKey(uid)) {
uidMap.put(uid, isPerm);
getCache().put(dimensionId, uidMap);
}
} else {
uidMap = new HashMap<String, Boolean>();
uidMap.put(uid, isPerm);
getCache().put(dimensionId, uidMap);
}
}
public static boolean getPermByUID(String dimensionId, String uid) {
HashMap<String, Boolean> uidMap = getCache().get(dimensionId);
if (uidMap == null) {
return false;
}
return uidMap.get(uid);
}
public static boolean hasCacheByUID(String dimensionId, String uid) {
HashMap<String, Boolean> uidMap = getCache().get(dimensionId);
if (uidMap == null) {
return false;
}
return uidMap.containsKey(uid);
}
}

View File

@ -0,0 +1,27 @@
package com.actionsoft.apps.kms.cache;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.alibaba.fastjson.JSONArray;
/**
* 知识缓存
*
* @author wangshibao
*/
public class DimensionTreeCache extends Cache<String, JSONArray> {
public DimensionTreeCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
}
public static DimensionTreeCache getCache() {
return CacheManager.getCache(DimensionTreeCache.class);
}
}

View File

@ -0,0 +1,36 @@
package com.actionsoft.apps.kms.cache;
import java.util.List;
import com.actionsoft.apps.kms.dao.FileDao;
import com.actionsoft.apps.kms.model.FileModel;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.actionsoft.bpms.commons.mvc.dao.IDaoQuery;
/**
* 文件缓存
*
* @author wangshibao
*
*/
public class FileCache extends Cache<String, FileModel> {
public FileCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
FileDao fileDao = new FileDao();
IDaoQuery<FileModel> iDaoQuery = fileDao.query();
List<FileModel> fileModels = iDaoQuery.list();
for (FileModel fileModel : fileModels) {
put(fileModel.getId(), fileModel, false);
}
}
public static FileCache getCache() {
return CacheManager.getCache(FileCache.class);
}
}

View File

@ -0,0 +1,37 @@
package com.actionsoft.apps.kms.cache;
import java.util.List;
import com.actionsoft.apps.kms.dao.HotspotDao;
import com.actionsoft.apps.kms.model.HotspotModel;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.actionsoft.bpms.commons.mvc.dao.IDaoQuery;
/**
* 知识地图缓存(图形和维度的绑定缓存)
*
* @author wangshibao
*
*/
public class HotspotCache extends Cache<String, HotspotModel> {
public HotspotCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
HotspotDao hotspotDao = new HotspotDao();
IDaoQuery<HotspotModel> iDaoQuery = hotspotDao.query();
List<HotspotModel> hotspotModels = iDaoQuery.list();
for (HotspotModel hotspotModel : hotspotModels) {
put(hotspotModel.getId(), hotspotModel, false);
}
}
public static HotspotCache getCache() {
return CacheManager.getCache(HotspotCache.class);
}
}

View File

@ -0,0 +1,30 @@
package com.actionsoft.apps.kms.cache;
import java.util.List;
import com.actionsoft.apps.kms.dao.MetaAttrDao;
import com.actionsoft.apps.kms.model.MetaAttrModel;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.actionsoft.bpms.commons.mvc.dao.IDaoQuery;
public class MetaAttrCache extends Cache<String, MetaAttrModel> {
public MetaAttrCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
MetaAttrDao metaAttrDao = new MetaAttrDao();
IDaoQuery<MetaAttrModel> iDaoQuery = metaAttrDao.query();
List<MetaAttrModel> metaAttrModels = iDaoQuery.list();
for (MetaAttrModel metaAttrModel : metaAttrModels) {
put(metaAttrModel.getId(), metaAttrModel, false);
}
}
public static MetaAttrCache getCache() {
return CacheManager.getCache(MetaAttrCache.class);
}
}

View File

@ -0,0 +1,45 @@
package com.actionsoft.apps.kms.cache;
import java.util.List;
import com.actionsoft.apps.kms.dao.MetaDataDao;
import com.actionsoft.apps.kms.model.MetaDataModel;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.actionsoft.bpms.commons.cache.ListValueIndex;
import com.actionsoft.bpms.commons.mvc.dao.IDaoQuery;
public class MetaDataCache extends Cache<String, MetaDataModel> {
public MetaDataCache(CachePluginProfile configuration) {
super(configuration);
registeIndex(metaDataCardIndex.class, new metaDataCardIndex());
}
@Override
protected void load() {
MetaDataDao metaDataDao = new MetaDataDao();
IDaoQuery<MetaDataModel> iDaoQuery = metaDataDao.query();
List<MetaDataModel> metaDataModels = iDaoQuery.list();
for (MetaDataModel metaDataModel : metaDataModels) {
put(metaDataModel.getId(), metaDataModel, false);
}
}
public static MetaDataCache getCache() {
return CacheManager.getCache(MetaDataCache.class);
}
public List<MetaDataModel> getMetaDataListOfCardId(String cardId) {
List<MetaDataModel> list = iteratorToList(getCache().getByIndex(metaDataCardIndex.class, cardId));
return list;
}
class metaDataCardIndex extends ListValueIndex<String, MetaDataModel> {
@Override
public String key(MetaDataModel t) {
return t.getCardId();
}
}
}

View File

@ -0,0 +1,36 @@
package com.actionsoft.apps.kms.cache;
import java.util.List;
import com.actionsoft.apps.kms.dao.MetaSchemaDao;
import com.actionsoft.apps.kms.model.MetaSchemaModel;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.actionsoft.bpms.commons.mvc.dao.IDaoQuery;
/**
* 元数据缓存
*
* @author wangshibao
*
*/
public class MetaSchemaCache extends Cache<String, MetaSchemaModel> {
public MetaSchemaCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
MetaSchemaDao metaSchemaDao = new MetaSchemaDao();
IDaoQuery<MetaSchemaModel> iDaoQuery = metaSchemaDao.query();
List<MetaSchemaModel> metaschemaModels = iDaoQuery.list();
for (MetaSchemaModel metaSchemaModel : metaschemaModels) {
put(metaSchemaModel.getId(), metaSchemaModel, false);
}
}
public static MetaSchemaCache getCache() {
return CacheManager.getCache(MetaSchemaCache.class);
}
}

View File

@ -0,0 +1,37 @@
package com.actionsoft.apps.kms.cache;
import java.util.List;
import com.actionsoft.apps.kms.dao.OptDao;
import com.actionsoft.apps.kms.model.OptModel;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.actionsoft.bpms.commons.mvc.dao.IDaoQuery;
/**
* 操作缓存(评论评分反馈)
*
* @author wangshibao
*
*/
public class OptCache extends Cache<String, OptModel> {
public OptCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
OptDao optDao = new OptDao();
IDaoQuery<OptModel> iDaoQuery = optDao.query();
List<OptModel> optModels = iDaoQuery.list();
for (OptModel optModel : optModels) {
put(optModel.getId(), optModel, false);
}
}
public static OptCache getCache() {
return CacheManager.getCache(OptCache.class);
}
}

View File

@ -0,0 +1,32 @@
package com.actionsoft.apps.kms.cache;
import java.util.List;
import com.actionsoft.apps.kms.dao.PublishDao;
import com.actionsoft.apps.kms.model.PublishModel;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.actionsoft.bpms.commons.mvc.dao.IDaoQuery;
public class PublishCache extends Cache<String, PublishModel> {
public PublishCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
PublishDao publishDao = new PublishDao();
IDaoQuery<PublishModel> iDaoQuery = publishDao.query();
List<PublishModel> publishModels = iDaoQuery.list();
for (PublishModel publishModel : publishModels) {
put(publishModel.getId(), publishModel, false);
}
}
public static PublishCache getCache() {
return CacheManager.getCache(PublishCache.class);
}
}

View File

@ -0,0 +1,30 @@
package com.actionsoft.apps.kms.cache;
import java.util.List;
import com.actionsoft.apps.kms.dao.VersionDao;
import com.actionsoft.apps.kms.model.VersionModel;
import com.actionsoft.apps.resource.plugin.profile.CachePluginProfile;
import com.actionsoft.bpms.commons.cache.Cache;
import com.actionsoft.bpms.commons.cache.CacheManager;
import com.actionsoft.bpms.commons.mvc.dao.IDaoQuery;
public class VersionCache extends Cache<String, VersionModel> {
public VersionCache(CachePluginProfile configuration) {
super(configuration);
}
@Override
protected void load() {
VersionDao versionDao = new VersionDao();
IDaoQuery<VersionModel> iDaoQuery = versionDao.query();
List<VersionModel> versionModels = iDaoQuery.list();
for (VersionModel versionModel : versionModels) {
put(versionModel.getId(), versionModel, false);
}
}
public static VersionCache getCache() {
return CacheManager.getCache(VersionCache.class);
}
}

View File

@ -0,0 +1,388 @@
package com.actionsoft.apps.kms.controller;
import java.sql.Date;
import com.actionsoft.apps.kms.cache.PublishCache;
import com.actionsoft.apps.kms.web.KnwlCenterWeb;
import com.actionsoft.apps.processon.HotspotWeb;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.bind.annotation.Controller;
import com.actionsoft.bpms.server.bind.annotation.Mapping;
/**
* 知识中心KMS前台控制器类
*
* @author wangshibao 知识中心
*/
@Controller public class KnwlCenterController {
/* 知识中心iframe框架 */
@Mapping("com.actionsoft.apps.kms_knwl")
public String getKnwlHome(UserContext uc, String page) {
PublishCache.getCache().reload();
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getKnwlHome(page);
}
/* 知识中心主页面 */
@Mapping("com.actionsoft.apps.kms_knwl_center")
public String getKnwlCenterHome(UserContext uc) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getKnwlCenterHome();
}
/* 知识中心主页面 */
@Mapping("com.actionsoft.apps.kms_knwl_mobile_center_knowladge_count")
public String getMobileKnwlCenterCount(UserContext uc) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getKnowladgeCount();
}
/* 知识中心-个人-我的知识-知识列表json */
@Mapping("com.actionsoft.apps.kms_knwl_center_me_card_list_json")
public String getMeCardListJson(UserContext uc, int curPage, int rowsPerPage, String sortIndx, String sortDir, String filter) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getMeCardListJson(curPage, rowsPerPage, sortIndx, sortDir, filter);
}
/* 知识中心-个人-我发布的-知识列表json */
@Mapping("com.actionsoft.apps.kms_knwl_center_publish_card_list_json")
public String getPublishCardListJson(UserContext uc, int curPage, int rowsPerPage, String sortIndx, String sortDir, String filter) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getPublishListJson(curPage, rowsPerPage, sortIndx, sortDir, filter);
}
/* 知识中心-个人-我借阅的-知识列表json */
@Mapping("com.actionsoft.apps.kms_knwl_center_borrow_card_list_json")
public String getBorrowCardListJson(UserContext uc, int curPage, int rowsPerPage, String sortIndx, String sortDir, String filter) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getBorrowListJson(curPage, rowsPerPage, sortIndx, sortDir, filter);
}
/* 知识中心-个人-发布待审-知识列表json */
@Mapping("com.actionsoft.apps.kms_knwl_center_publish_examine_card_list_json")
public String getPublishExamineCardListJson(UserContext uc, int curPage, int rowsPerPage) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getPublishExamineListJson(curPage, rowsPerPage);
}
/* 知识中心-全部-获取维度树json */
@Mapping("com.actionsoft.apps.kms_knwl_center_dimension_tree_json")
public String getDimensionTreeJson(UserContext uc, String parentId, boolean isDimensionKnwlPage) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getDimensionTreeJson(parentId, isDimensionKnwlPage);
}
/* 知识中心-个人-发布知识-获取元数据以及属性json */
@Mapping("com.actionsoft.apps.kms_knwl_center_schema_attr_list_json")
public String getSchemaAttrJson(UserContext uc) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getSchemaAttr();
}
/* 知识中心-个人-发布知识-获取维度树json */
@Mapping("com.actionsoft.apps.kms_knwl_center_me_publish_dimension_tree_json")
public String getMeDimensionTreeJson(UserContext uc, String parentId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getMeDimensionTreeJson(parentId);
}
/* 知识中心-全部-知识列表json */
@Mapping("com.actionsoft.apps.kms_knwl_center_dimension_card_list_json")
public String getDimensionCardListJson(UserContext uc, String dimensionId, int curPage, int rowsPerPage, String sortIndx, String sortDir, String filter) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getDimensionCardListJson(dimensionId, curPage, rowsPerPage, sortIndx, sortDir, filter);
}
/* 知识中心-全部-知识列表json(不分页) */
@Mapping("com.actionsoft.apps.kms_knwl_center_dimension_card_list_all_json")
public String getDimensionCardListAllJson(UserContext uc, String dimensionId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getDimensionCardListAllJson(dimensionId);
}
/* 知识中心-删除文件 */
@Mapping("com.actionsoft.apps.kms_knwl_center_delete_file")
public String deleteFile(UserContext uc, String cardId, String fileId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.deleteFile(cardId, fileId);
}
/* 知识中心-新建知识 */
@Mapping("com.actionsoft.apps.kms_knwl_center_insert_card")
public String insertCard(UserContext uc, String cardId, String cardName, Date validDate, int onlineLevel, int securityLevel, int cardType, boolean isComment, boolean isRate, String cardContext) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.insertCard(cardId, cardName, validDate, onlineLevel, securityLevel, cardType, isComment, isRate, cardContext);
}
/* 知识中心-编辑知识 */
@Mapping("com.actionsoft.apps.kms_knwl_center_update_card")
public String updateCard(UserContext uc, String cardId, String cardName, Date validDate, int onlineLevel, int securityLevel, int cardType, boolean isComment, boolean isRate, String cardContext) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.updateCard(cardId, cardName, validDate, onlineLevel, securityLevel, cardType, isComment, isRate, cardContext);
}
/* 知识中心-删除知识 */
@Mapping("com.actionsoft.apps.kms_knwl_center_delete_card")
public String deleteFile(UserContext uc, String cardIds) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.deleteCards(cardIds);
}
/* 知识中心-文件列表json */
@Mapping("com.actionsoft.apps.kms_knwl_center_file_list_json")
public String getFileListJson(UserContext uc, String cardId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getFileListJson(cardId);
}
/* 知识中心-发布知识 */
@Mapping("com.actionsoft.apps.kms_knwl_center_publish_card")
public String publishCard(UserContext uc, String publishCardIds, String publishDimensionIds, String schemaMetaData, String tags, String publishMemo) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.publishCard(uc,publishCardIds, publishDimensionIds, schemaMetaData, tags, publishMemo);
}
/* 知识中心-给知识评分 */
@Mapping("com.actionsoft.apps.kms_knwl_center_rate_card")
public String rateCard(UserContext uc, String rateId, String cardId, Integer rateLevel) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.rateCard(rateId, cardId, rateLevel);
}
/* 知识中心-查询浏览信息 */
@Mapping("com.actionsoft.apps.kms_knwl_center_browse_card_info_json")
public String getBrowseCardInfo(UserContext uc, String cardId, boolean isBorrow, String boId, boolean isEdit, String dimensionId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getBrowseCardInfo(uc,cardId, isBorrow, boId, isEdit, dimensionId);
}
/* 知识中心-发送邀请 */
@Mapping("com.actionsoft.apps.kms_knwl_center_send_browse_invitation")
public String sendBrowseInvitation(UserContext uc,String dimensionId, String cardId, String targetUsers) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.sendBrowseInvitation(dimensionId,cardId, targetUsers);
}
/* 知识中心-打开浏览页面 */
@Mapping("com.actionsoft.apps.kms_knwl_center_browse_card_page")
public String openBrowseCardPage(UserContext uc,String dimensionId, String cardId, boolean isPage) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.openBrowseCardPage(dimensionId,cardId, isPage);
}
/* 知识中心-新增评论 */
@Mapping("com.actionsoft.apps.kms_knwl_center_comment_insert")
public String insertComment(UserContext uc, String cardId, String commentContent) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.insertComment(cardId, commentContent);
}
/* 知识中心-统计数据 */
@Mapping("com.actionsoft.apps.kms_knwl_center_stat_json")
public String statCardFile(UserContext uc) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.statCardFile();
}
/* 启动借阅流程 */
@Mapping("com.actionsoft.apps.kms_knwl_center_borrow_card_process_start")
public String startBorrowProcwss(UserContext uc, String cardId, String dimensionId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.startBorrowProcessType(cardId, dimensionId);
}
/* 启动发布流程 */
@Mapping("com.actionsoft.apps.kms_knwl_center_publish_card_process_start")
public String startPublishProcess(UserContext uc, String cardIds, String dimensionId, String schemaMetaData, String tags, String publishMemo) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.startPublishProcessType(cardIds, dimensionId, schemaMetaData, tags, publishMemo);
}
/* 取消发布知识 */
@Mapping("com.actionsoft.apps.kms_knwl_center_cancel_publish_card")
public String cancelPublishCard(UserContext uc, String publishId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.cancelPublishCard(publishId);
}
/* 打开知识地图home页 */
@Mapping("com.actionsoft.apps.kms_hotspot_home")
public String getHotspotHome(UserContext uc, String dimensionId) {
HotspotWeb hotspotWeb = new HotspotWeb(uc);
return hotspotWeb.getHotspot(dimensionId);
}
/* 查询维度的tree路径 */
@Mapping("com.actionsoft.apps.kms_get_dimension_path_from_root")
public String getDimensionPath(UserContext uc, String dimensionId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getDimensionPath(dimensionId);
}
/* 打包下载 */
@Mapping("com.actionsoft.apps.kms_knwl_center_package_files")
public String packageFiels(UserContext uc, String cardId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.packageFiels(cardId);
}
/* 收藏知识 */
@Mapping("com.actionsoft.apps.kms_knwl_center_collect_card")
public String collectCard(UserContext uc, String cardId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.collectCard(cardId);
}
/* 删除未保存的知识卡片上传的文件 */
@Mapping("com.actionsoft.apps.kms_knwl_center_delete_unsaved_files")
public String deleteUnsavedFiles(UserContext uc, String cardId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.deleteUnsavedFiles(cardId);
}
/* 反馈 */
@Mapping("com.actionsoft.apps.kms_knwl_center_report_card")
public String reportCard(UserContext uc, String cardId, String dimensionId, String reportContent) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.reportCard(cardId, dimensionId, reportContent);
}
/* 预览 */
@Mapping("com.actionsoft.apps.kms_knwl_center_preview_file")
public String previewFile(UserContext uc, String fileId, boolean isDownload, boolean isCopy) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.previewFile(uc, fileId, isDownload, isCopy);
}
/* 下载文件 */
@Mapping("com.actionsoft.apps.kms_knwl_center_download_file")
public String downloadFile(UserContext uc, String fileId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.downloadFile(uc,fileId);
}
/* 知识中心-个人-我的知识-知识列表json */
@Mapping("com.actionsoft.apps.kms_knwl_center_log_list")
public String getLogListJson(UserContext uc, int curPage, int rowsPerPage, String cardId, String sortIndx, String sortDir) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getLogListJson(curPage, rowsPerPage, cardId, sortIndx, sortDir);
}
/* 知识中心-个人-我的知识-知识列表json */
@Mapping("com.actionsoft.apps.kms_knwl_center_latest_comment")
public String getLatestComment(UserContext uc) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getLatestComment();
}
/* 加载工作网络树页面 */
@Mapping("com.actionsoft.apps.kms_knwl_center_get_network_page")
public String getNetworkPage(UserContext uc, String cardId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getNetWorkPage(cardId);
}
/* 加载工作网络树 */
@Mapping("com.actionsoft.apps.kms_knwl_center_get_network_tree")
public String getNetworkTree(UserContext uc) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getNetworkTree();
}
/* 分享到工作网络 */
@Mapping("com.actionsoft.apps.kms_knwl_center_shareto_network")
public String shareToNetwork(UserContext uc, String cardId, String teamId, String networkId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.shareToNetwork(cardId, teamId, networkId);
}
/* 知识中心-全部-移动复制知识-获取维度树json */
@Mapping("com.actionsoft.apps.kms_knwl_center_all_move_dimension_tree_json")
public String getMoveKnwlDimensionTreeJson(UserContext uc, String parentId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.getMoveKnwlDimensionTreeJson(parentId);
}
/* 知识中心-全部-移动知识 */
@Mapping("com.actionsoft.apps.kms_knwl_center_move_card")
public String moveCard(UserContext uc, String cardIds, String dimensionIds, String currDimensionId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.moveCard(cardIds, dimensionIds, currDimensionId);
}
/* 知识中心-全部-复制知识 */
@Mapping("com.actionsoft.apps.kms_knwl_center_copy_card")
public String copyCard(UserContext uc, String cardIds, String dimensionIds, String currDimensionId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.copyCard(cardIds, dimensionIds, currDimensionId);
}
/* 知识中心-全部-移交知识 */
@Mapping("com.actionsoft.apps.kms_knwl_center_change_carduser")
public String changeCardUser(UserContext uc, String cardIds, String handoverCardUser) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.changeCardUser(cardIds, handoverCardUser);
}
/* 知识中心-发布-检查知识下是否存在文件 */
@Mapping("com.actionsoft.apps.kms_knwl_center_check_card_has_file")
public String checkCardHasFile(UserContext uc, String cardIds) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.checkCardHasFile(cardIds);
}
/* 知识中心-发布-检查知识下是否存在文件 */
@Mapping("com.actionsoft.apps.kms_knwl_center_cancel_publish_card_process_start")
public String startCancelPublishProcess(UserContext uc, String publishId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.startCancelPublishProcess(publishId);
}
/* 浏览器预览文件区别于onlinedoc */
@Mapping("com.actionsoft.apps.kms_knwl_browser_preview")
public String browserPreview(UserContext uc, String fileId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.browserPreview(fileId);
}
/* 浏览器预览图片 */
@Mapping("com.actionsoft.apps.kms_knwl_browser_preview_image")
public String browserPreviewImg(UserContext uc, String fileId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.browserPreviewImg(fileId);
}
/* 浏览器预览表单 */
@Mapping("com.actionsoft.apps.kms_knwl_browser_preview_form")
public String browserPreviewForm(UserContext uc, String fileId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.browserPreviewForm(fileId);
}
/* 加载公共维度知识列表html */
@Mapping("com.actionsoft.apps.kms_dimension_grid_html")
public String dimensionGridHtml(UserContext uc) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.dimensionGridHtml();
}
/* 独立知识展示页面 iframe(为了和知识中心的架构保持一致) */
@Mapping("com.actionsoft.apps.kms_dimension_grid_page_iframe")
public String dimensionGridPageIframe(UserContext uc, String dimensionId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.dimensionGridPageIframe(dimensionId);
}
/* 独立知识展示页面 */
@Mapping("com.actionsoft.apps.kms_dimension_grid_page")
public String dimensionGridPage(UserContext uc, String dimensionId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.dimensionGridPage(dimensionId);
}
/* 独立知识展示页面 */
@Mapping("com.actionsoft.apps.kms_dimension_write_log")
public String dimensionGridWriteLog(UserContext uc, String fileId, String cardId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.dimensionWriteLog(fileId, cardId);
}
}

View File

@ -0,0 +1,246 @@
package com.actionsoft.apps.kms.controller;
import com.actionsoft.apps.kms.web.KnwlMgrWeb;
import com.actionsoft.apps.processon.HotspotWeb;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.bind.annotation.Controller;
import com.actionsoft.bpms.server.bind.annotation.Mapping;
/**
* 知识维护(KMS后台)控制器类
*
* @author wangshibao
*/
@Controller
public class KnwlMgrController {
/* 知识维护主页面 */
@Mapping("com.actionsoft.apps.kms_mgr")
public String getMgrHome(UserContext uc, String page, String tab) {
KnwlMgrWeb mgrWeb = new KnwlMgrWeb(uc);
return mgrWeb.getMgrHome(page, tab);
}
/* 知识维护主页面 */
@Mapping("com.actionsoft.apps.kms_knwl_mgr")
public String getKnwlMgrHome(UserContext uc) {
KnwlMgrWeb mgrWeb = new KnwlMgrWeb(uc);
return mgrWeb.getKnwlMgrHome();
}
/* 获取维度树json-维度维护 */
@Mapping("com.actionsoft.apps.kms_dimension_tree_json")
public String getDimensionTreeJson(UserContext uc, String parentId) {
KnwlMgrWeb mgrWeb = new KnwlMgrWeb(uc);
return mgrWeb.getDimensionTreeJson(parentId);
}
/* 获取维度树json-设置知识地图 */
@Mapping("com.actionsoft.apps.kms_dimension_tree_bindhotspot_json")
public String getDimensionBindHotspotTreeJson(UserContext uc, String parentId) {
KnwlMgrWeb mgrWeb = new KnwlMgrWeb(uc);
return mgrWeb.getDimensionBindHotspotTreeJson(parentId);
}
/* 获取维度树json-有效期维度 */
@Mapping("com.actionsoft.apps.kms_dimension_validdate_tree_json")
public String getDimensionValiddateTreeJson(UserContext uc, String parentId) {
KnwlMgrWeb mgrWeb = new KnwlMgrWeb(uc);
return mgrWeb.getDimensionValiddateTreeJson(parentId);
}
/* 获取维度树json-有效期维度-全部加载 */
@Mapping("com.actionsoft.apps.kms_dimension_validdate_tree_all_json")
public String getDimensionValiddateTreeAllJson(UserContext uc) {
KnwlMgrWeb mgrWeb = new KnwlMgrWeb(uc);
return mgrWeb.getDimensionValiddateTreeAllJson();
}
/* 获取维度树json */
@Mapping("com.actionsoft.apps.kms_dimension_list_json")
public String getDimensionJson(UserContext uc, String parentId) {
KnwlMgrWeb mgrWeb = new KnwlMgrWeb(uc);
return mgrWeb.getDimensionListJson(parentId);
}
/* 新建维度 */
@Mapping("com.actionsoft.apps.kms_add_dimension")
public String addDimension(UserContext uc, String parentId, String dimensionNames, boolean showtype, boolean isPublishKnwl, boolean isExamine, String memo, String hotspotName, boolean isEnabled) {
KnwlMgrWeb mgrWeb = new KnwlMgrWeb(uc);
return mgrWeb.createDimension(dimensionNames, parentId, showtype, isPublishKnwl, isExamine, memo, hotspotName, isEnabled);
}
/* 修改维度 */
@Mapping("com.actionsoft.apps.kms_update_dimension")
public String updateDimension(UserContext uc, String id, String dimensionName, boolean showtype, boolean isPublishKnwl, boolean isExamine, String memo, String hotspotName, boolean isEnabled) {
KnwlMgrWeb mgrWeb = new KnwlMgrWeb(uc);
return mgrWeb.updateDimension(id, dimensionName, showtype, isPublishKnwl, isExamine, memo, hotspotName, isEnabled);
}
/* 删除维度 */
@Mapping("com.actionsoft.apps.kms_delete_dimension")
public String deleteDimension(UserContext uc, String ids) {
KnwlMgrWeb mgrWeb = new KnwlMgrWeb(uc);
return mgrWeb.deleteDimension(ids);
}
/* 知识维护-元数据-列表json */
@Mapping("com.actionsoft.apps.kms_knwl_mgr_schema_list_json")
public String getSchemaListJson(UserContext uc, int curPage, int rowsPerPage, String sortIndx, String sortDir) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.getSchemaListJson(curPage, rowsPerPage, sortIndx, sortDir);
}
/* 知识维护-有效期-列表json */
@Mapping("com.actionsoft.apps.kms_knwl_mgr_valid_date_card_list_json")
public String getValidDateCardListJson(UserContext uc, int curPage, int rowsPerPage, String dimensionIdArr, String validDate, String sortIndx, String sortDir) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.getValidDateCardListJson(curPage, rowsPerPage, dimensionIdArr, validDate, sortIndx, sortDir);
}
/* 知识维护-元数据-属性列表json */
@Mapping("com.actionsoft.apps.kms_meta_attr_list_json")
public String getMetaAttrListJson(UserContext uc, String schemaId) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.getMetaAttrListJson(schemaId);
}
/* 知识维护-元数据-新建元数据 (包括属性) */
@Mapping("com.actionsoft.apps.kms_knwl_mgr_add_meta_schema")
public String addMetaSchema(UserContext uc, String schemaTitle, int schemaShowtype, boolean isNullable, boolean isSearch, String schemaDesc, String metaAttr) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.addMetaSchema(schemaTitle, schemaShowtype, isNullable, isSearch, schemaDesc, metaAttr);
}
/* 知识维护-元数据-修改元数据 (包括属性) */
@Mapping("com.actionsoft.apps.kms_knwl_mgr_update_meta_schema")
public String updateMetaSchema(UserContext uc, String schemaId, String schemaTitle, int schemaShowtype, boolean isNullable, boolean isSearch, String schemaDesc, String metaAttr) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.updateMetaSchema(schemaId, schemaTitle, schemaShowtype, isNullable, isSearch, schemaDesc, metaAttr);
}
/* 知识维护-元数据-删除元数据 (包括属性) */
@Mapping("com.actionsoft.apps.kms_knwl_mgr_delete_meta_schema")
public String deleteMetaSchema(UserContext uc, String schemaIds) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.deleteSchema(schemaIds);
}
/* 打开绑定维度到知识地图页面 */
@Mapping("com.actionsoft.apps.kms_hotspot_binding")
public String getBindingHotspotHome(UserContext uc, String dimensionId) {
HotspotWeb hotspotWeb = new HotspotWeb(uc, dimensionId);
return hotspotWeb.getBindHotspot(dimensionId);
}
/* 绑定维度到知识地图 */
@Mapping("com.actionsoft.apps.kms_hotspot_bind")
public String bindHotspot(UserContext uc, String dimensionId, String shapeId, String hotspotDefId) {
HotspotWeb hotspotWeb = new HotspotWeb(uc);
return hotspotWeb.bindHotspot(dimensionId, shapeId, hotspotDefId);
}
/* 绑定知识到知识地图 */
@Mapping("com.actionsoft.apps.kms_hotspot_bind_card")
public String bindHotspotCard(UserContext uc, String cardId, String shapeId, String hotspotDefId) {
HotspotWeb hotspotWeb = new HotspotWeb(uc);
return hotspotWeb.bindHotspotCard(cardId, shapeId, hotspotDefId);
}
/* 绑定维度到知识地图 */
@Mapping("com.actionsoft.apps.kms_hotspot_bind_linkurl")
public String bindHotspotLinkURL(UserContext uc, String linkurl, String target, String shapeId, String hotspotDefId) {
HotspotWeb hotspotWeb = new HotspotWeb(uc);
return hotspotWeb.bindHotspotLinkURL(linkurl, target, shapeId, hotspotDefId);
}
/* 删除绑定知识地图 */
@Mapping("com.actionsoft.apps.kms_hotspot_delete_bind")
public String deleteHotspot(UserContext uc, String hotspotId) {
HotspotWeb hotspotWeb = new HotspotWeb(uc);
return hotspotWeb.deleteHotspot(hotspotId);
}
/* 删除绑定知识地图 */
@Mapping("com.actionsoft.apps.kms_hotspot_render_hotspot_div")
public String getAsyncBindingShapeHotspot(UserContext uc, String dimensionId, String shapeId) {
HotspotWeb hotspotWeb = new HotspotWeb(uc);
return hotspotWeb.getAsyncBindingShapeHotspot(dimensionId, shapeId);
}
/* 移动维度 */
@Mapping("com.actionsoft.apps.kms_move_dimension")
public String moveDimension(UserContext uc, String sourceDimensionId, String targetDimensionId, String sort) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.moveDimension(sourceDimensionId, targetDimensionId, sort);
}
/* 延期维度 */
@Mapping("com.actionsoft.apps.kms_delay_validdate")
public String delayValiddate(UserContext uc, String cardIdArr, String validDate, String sort) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.delayValiddate(cardIdArr, validDate);
}
/* 元数据排序 */
@Mapping("com.actionsoft.apps.kms_knwl_mgr_meta_schema_order_index_save")
public String saveMetaSchemaOrderIndex(UserContext uc, String sourceId, String targetId) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.saveMetaSchemaOrderIndex(sourceId, targetId);
}
/* 有效期-取消发布知识(全部维度)前的检查 */
@Mapping("com.actionsoft.apps.kms_knwl_center_cancel_publishes_card_check")
public String cancelPublishesCardCheck(UserContext uc, String cardId) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.cancelPublishesCardCheck(cardId);
}
/* 有效期-取消发布知识(全部维度) */
@Mapping("com.actionsoft.apps.kms_knwl_center_cancel_publishes_card")
public String cancelPublishesCard(UserContext uc, String cardId) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.cancelPublishesCard(cardId);
}
/* 有效期-取消发布知识(全部维度) */
@Mapping("com.actionsoft.apps.kms_knwl_mgr_get_examine_user")
public String getExamineUser(UserContext uc, String dimensionId) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.getExamineUser(dimensionId);
}
/* usertask-维度树页面 */
@Mapping("com.actionsoft.apps.kms_usertask_html")
public String getKMSUsertaskHTML(UserContext uc, String formToKMSOptionDimensionIdJA) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.getKMSUsertaskHTML(formToKMSOptionDimensionIdJA);
}
/* 维度策略报告 */
@Mapping("com.actionsoft.apps.kms_knwl_mgr_report")
public String getDimensionReport(UserContext uc, String dimensionId) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.getDimensionReport(dimensionId);
}
/* 应用当前维度的ac权限到后代 */
@Mapping("com.actionsoft.apps.kms_knwl_mgr_dimension_ac_to_des")
public String dimensionACToDes(UserContext uc, String dimensionId, String style) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.dimensionACToDes(dimensionId, style);
}
/* 复制维度 */
@Mapping("com.actionsoft.apps.kms_knwl_mgr_dimension_copy")
public String copyDimension(UserContext uc, String newDimensionName, String currDimensionId) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.copyDimension(uc, newDimensionName, currDimensionId);
}
/* 移交维度 */
@Mapping("com.actionsoft.apps.kms_knwl_center_change_dimensionuser")
public String changeCardUser(UserContext uc, String dimensionIds, String handoverCardUser) {
KnwlMgrWeb knwlMgrWeb = new KnwlMgrWeb(uc);
return knwlMgrWeb.changeDimensionUser(dimensionIds, handoverCardUser);
}
}

View File

@ -0,0 +1,60 @@
package com.actionsoft.apps.kms.controller;
import com.actionsoft.apps.kms.web.KnwlCenterWeb;
import com.actionsoft.apps.kms.web.KnwlMobileWeb;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.bind.annotation.Controller;
import com.actionsoft.bpms.server.bind.annotation.Mapping;
@Controller
public class KnwlMobileController {
/* 主页面 */
@Mapping("com.actionsoft.apps.kms_mobile_home")
public String getMobileHome(UserContext uc) {
KnwlMobileWeb web = new KnwlMobileWeb(uc);
return web.getMobileHome();
}
@Mapping("com.actionsoft.apps.kms_mobile_lists")
public String getLists(UserContext uc, String sortIndx, String sortDir, String searchDimensionIds, String schemaMetaData, String cardName, String publishTime, String publishUser, String tags, String lastPublishId, String searchType,String departId) {
KnwlMobileWeb web = new KnwlMobileWeb(uc);
return web.mobileListsData(uc, sortIndx, sortDir, searchDimensionIds, schemaMetaData, cardName, publishTime, publishUser, tags, lastPublishId, searchType,departId);
}
/* 启动发布流程 */
@Mapping("com.actionsoft.apps.kms_knwl_center_publish_card_process_start_mobile")
public String startPublishProcess(UserContext uc, String cardIds, String dimensionId, String schemaMetaData, String tags, String publishMemo) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.startPublishProcess(cardIds, dimensionId, schemaMetaData, tags, publishMemo, "mobile");
}
/* 启动借阅流程 */
@Mapping("com.actionsoft.apps.kms_knwl_center_borrow_card_process_start_mobile")
public String startBorrowProcwss(UserContext uc, String cardId, String dimensionId) {
KnwlCenterWeb knwlCenterWeb = new KnwlCenterWeb(uc);
return knwlCenterWeb.startBorrowProcess(cardId, dimensionId, "mobile");
}
@Mapping("com.actionsoft.apps.kms_mobile_center_dimension_tree_json")
public String getDimensionTreeJson(UserContext uc, String parentId, boolean isDimensionKnwlPage) {
KnwlMobileWeb web = new KnwlMobileWeb(uc);
return web.getDimensionTreeJson(uc, parentId, isDimensionKnwlPage);
}
@Mapping("com.actionsoft.apps.kms_mobile_center_dimension_search")
public String getDimensionSearchByName(UserContext uc, String key) {
KnwlMobileWeb web = new KnwlMobileWeb(uc);
return web.getDimensionSearchByName(uc, key);
}
@Mapping("com.actionsoft.apps.kms_knwl_center_mobile_schema_attr_list_json")
public String getSchemaMobile(UserContext uc) {
KnwlMobileWeb web = new KnwlMobileWeb(uc);
return web.getSchemaMobile();
}
@Mapping("com.actionsoft.apps.kms_knwl_center_mobile_check_fullsearch")
public String checkFullsearchAppActive(UserContext uc) {
KnwlMobileWeb web = new KnwlMobileWeb(uc);
return web.checkFullsearchAppActive(uc);
}
}

View File

@ -0,0 +1,167 @@
package com.actionsoft.apps.kms.controller;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.web.KnwlSearchWeb;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.bind.annotation.Controller;
import com.actionsoft.bpms.server.bind.annotation.Mapping;
/**
* @author wangshibao
*/
@Controller
public class KnwlSearchController {
/* 知识检索home页 */
@Mapping("com.actionsoft.apps.kms_knwl_search")
public String getKnwlMgrHome(UserContext uc, String searchType, String sortIndx) {
KnwlSearchWeb knwlSearchWeb = new KnwlSearchWeb(uc);
return knwlSearchWeb.getKnwlSearchHome(searchType, sortIndx);
}
/* 知识检索-属性-维度树json */
@Mapping("com.actionsoft.apps.kms_knwl_search_attr_dimension_tree_json")
public String getAttrSearchDimensionTreeJson(UserContext uc, String parentId) {
KnwlSearchWeb knwlSearchWeb = new KnwlSearchWeb(uc);
return knwlSearchWeb.getAttrSearchDimensionTreeJson(parentId, KMSUtil.isKnwlManager(uc.getUID()));
}
/* 知识检索-属性-维度树json */
@Mapping("com.actionsoft.apps.kms_knwl_search_attr_dimension_tree_all_json")
public String getAttrSearchDimensionTreeAllJson(UserContext uc) {
KnwlSearchWeb knwlSearchWeb = new KnwlSearchWeb(uc);
return knwlSearchWeb.getAttrSearchDimensionTreeAllJson();
}
/* 知识检索-属性-元数据列表json */
@Mapping("com.actionsoft.apps.kms_knwl_search_schema_attr_list_json")
public String getSchemaAttrListJson(UserContext uc) {
KnwlSearchWeb knwlSearchWeb = new KnwlSearchWeb(uc);
return knwlSearchWeb.getSchemaAttr();
}
/* 知识检索-属性-检索数据库 */
@Mapping("com.actionsoft.apps.kms_knwl_attr_search_dosearch")
public String attrSearchCard(UserContext uc, int curPage, int rowsPerPage, String sortIndx, String sortDir, String searchDimensionIds, String schemaMetaData, String cardName, String publishUser, String publishTime, String tags, String lastPublishId, String searchType,String departId) {
KnwlSearchWeb knwlSearchWeb = new KnwlSearchWeb(uc);
System.out.println("departId>>>>>>>>>>>"+departId);
return knwlSearchWeb.attrSearchCard(curPage, rowsPerPage, sortIndx, sortDir, searchDimensionIds, schemaMetaData, cardName, publishTime, publishUser, tags, lastPublishId, searchType,departId);
}
/* 全文检索 */
@Mapping("com.actionsoft.apps.kms_knwl_fullsearch_list_json")
public String fullSearch(UserContext uc, int curPage, int rowsPerPage, String searchText, String docTypes, String searchType) {
KnwlSearchWeb knwlSearchWeb = new KnwlSearchWeb(uc);
return knwlSearchWeb.fullSearch(curPage, rowsPerPage, searchText, docTypes, searchType);
}
// 键盘地址本查询团队成员模糊匹配
@Mapping("com.actionsoft.apps.kms_knwl_memberlist")
public String getApplicationManagementDeploy(UserContext uc, String term) {
KnwlSearchWeb knwlSearchWeb = new KnwlSearchWeb(uc);
// term为组件默认参数
return knwlSearchWeb.getUserList(term);
}
/**
* 全文检索查询
*
* @param me
* @param q 关键词
* @return
*/
@Mapping("com.actionsoft.apps.kms_es_search")
public String openEsSearchPage(UserContext me, String q) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.openEsSearchPage(q);
}
/**
* kms注册的xpages页面
*
* @param me
* @return
*/
@Mapping("com.actionsoft.apps.kms_xpages")
public String kmsXPages(UserContext me, String showIndex, String showStyle) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.kmsXPages(showIndex, showStyle);
}
@Mapping("com.actionsoft.apps.kms_querycardtoplist")
public String queryCardTopList(UserContext me, String sortIndx) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.queryCardTopList(sortIndx);
}
@Mapping("com.actionsoft.apps.kms_querycardtoplistpage")
public String queryCardTopPage(UserContext me, String sortIndx) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.queryCardTopPage(sortIndx);
}
@Mapping("com.actionsoft.apps.kms_xpage_opencardbydirctory")
public String openCardbyDirctory(UserContext me, String rootDirectoryId, String showType, String showIndex, String ifShowDirectory, String sortIndx, String showStyle, String publishTimeFormat) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.openCardByDirctory(rootDirectoryId, showType, showIndex, ifShowDirectory, sortIndx, showStyle, publishTimeFormat);
}
@Mapping("com.actionsoft.apps.kms_xpage_getcardbydirctory")
public String getCardByDirctory(UserContext me, String directoryId, String sortIndx, String hasPerm, String publishTimeFormat) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.getCardByDirctory(directoryId, sortIndx, hasPerm, publishTimeFormat);
}
@Mapping("com.actionsoft.apps.kms_xpage_getxpagecategory")
public String getXpageCategory(UserContext me) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.getXpageCategory();
}
@Mapping("com.actionsoft.apps.kms_xpage_savexpagecategory")
public String saveXpageCategory(UserContext me, String categoryName) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.saveXpageCategory(categoryName);
}
@Mapping("com.actionsoft.apps.kms_xpage_openfastcard")
public String openFastCard(UserContext me, String category, String showType, String showIndex, String showStyle, String publishTimeFormat) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.openFastCard(category, showType, showIndex, showStyle, publishTimeFormat);
}
@Mapping("com.actionsoft.apps.kms_xpage_savexpagefastcard")
public String saveXpageFastCard(UserContext me, String categoryName, String cardIds) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.saveXpageFastCard(categoryName, cardIds);
}
@Mapping("com.actionsoft.apps.kms_xpage_deletexpagefastcard")
public String deleteXpageFastCard(UserContext me, String id) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.deleteXpageFastCard(id);
}
@Mapping("com.actionsoft.apps.kms_xpage_loadfastcard")
public String loadFastCard(UserContext me, String categoryName, String publishTimeFormat) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.loadFastCard(categoryName, publishTimeFormat);
}
@Mapping("com.actionsoft.apps.kms_xpage_savefastcardorder")
public String saveFastCardOrder(UserContext me, String data) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.saveFastCardOrder(data);
}
@Mapping("com.actionsoft.apps.kms_xpage_getcardtree")
public String getCardTree(UserContext me) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.getCardTree();
}
@Mapping("com.actionsoft.apps.kms_xpage_getcardtreedata")
public String getCardTreeData(UserContext me, String type, String pid, String hasPerm) {
KnwlSearchWeb web = new KnwlSearchWeb(me);
return web.getCardTreeData(type, pid, hasPerm);
}
}

View File

@ -0,0 +1,83 @@
package com.actionsoft.apps.kms.controller;
import com.actionsoft.apps.kms.web.SystemMgrWeb;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.bind.annotation.Controller;
import com.actionsoft.bpms.server.bind.annotation.Mapping;
/**
*
* @author wangshibao
*/
@Controller
public class SystemMgrController {
/* 系统维护home页 */
@Mapping("com.actionsoft.apps.kms_system_mgr")
public String getKnwlMgrHome(UserContext uc) {
SystemMgrWeb systemMgrWeb = new SystemMgrWeb(uc);
return systemMgrWeb.getSystemMgrHome();
}
/* 系统维护版本号列表json */
@Mapping("com.actionsoft.apps.kms_version_list_json")
public String getVersionListJson(UserContext uc) {
SystemMgrWeb systemMgrWeb = new SystemMgrWeb(uc);
return systemMgrWeb.getVersionListJson();
}
/* 系统维护知识地图定义列表json */
@Mapping("com.actionsoft.apps.kms_hotspot_def_list_json")
public String getHotspotDefListJson(UserContext uc) {
SystemMgrWeb systemMgrWeb = new SystemMgrWeb(uc);
return systemMgrWeb.getHotspotDefListJson();
}
/* 保存知识参数 */
@Mapping("com.actionsoft.apps.kms_system_mgr_save_param")
public String saveSystemParam(UserContext uc, String maxFileSize, String blackFileList, String gridRowPP, String browserPreview) {
SystemMgrWeb systemMgrWeb = new SystemMgrWeb(uc);
return systemMgrWeb.saveSystemParam(maxFileSize, blackFileList, gridRowPP, browserPreview);
}
/* 获取知识参数 */
@Mapping("com.actionsoft.apps.kms_system_mgr_get_param_json")
public String getSystemParam(UserContext uc) {
SystemMgrWeb systemMgrWeb = new SystemMgrWeb(uc);
return systemMgrWeb.getSystemParam();
}
/* 新建版本号 */
@Mapping("com.actionsoft.apps.kms_system_mgr_add_version")
public String addVersion(UserContext uc, String versionNo, String memo) {
SystemMgrWeb systemMgrWeb = new SystemMgrWeb(uc);
return systemMgrWeb.addVersion(versionNo, memo);
}
/* 新建知识地图定义 */
@Mapping("com.actionsoft.apps.kms_system_mgr_add_hotspot_def")
public String addHotspotDef(UserContext uc, String hotspotName, String hotspotMetaId, String memo) {
SystemMgrWeb systemMgrWeb = new SystemMgrWeb(uc);
return systemMgrWeb.addHotspotDef(hotspotName, hotspotMetaId, memo);
}
/* 删除版本号 */
@Mapping("com.actionsoft.apps.kms_knwl_center_delete_version")
public String deleteVersions(UserContext uc, String versionNos) {
SystemMgrWeb systemMgrWeb = new SystemMgrWeb(uc);
return systemMgrWeb.deleteVersions(versionNos);
}
/* 删除知识地图定义 */
@Mapping("com.actionsoft.apps.kms_knwl_center_delete_hotspot_def")
public String deleteHotspotDefs(UserContext uc, String hotspotDefIds) {
SystemMgrWeb systemMgrWeb = new SystemMgrWeb(uc);
return systemMgrWeb.deleteHotspotDefs(hotspotDefIds);
}
/* 删除知识地图定义 */
@Mapping("com.actionsoft.apps.kms_knwl_center_delete_hotspot_check")
public String deleteHotspotDefsCheck(UserContext uc, String hotspotDefIds) {
SystemMgrWeb systemMgrWeb = new SystemMgrWeb(uc);
return systemMgrWeb.deleteHotspotDefsCheck(hotspotDefIds);
}
}

View File

@ -0,0 +1,170 @@
package com.actionsoft.apps.kms.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.bpms.bo.engine.SQLNullValue;
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 com.actionsoft.exception.AWSException;
/**
* 知识
*
* @author wangshibao
*/
public class CardDao extends DaoObject<CardModel> {
@Override
public int insert(CardModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(CardModel.ID, model.getId());
paraMap.put(CardModel.CARDNAME, model.getCardName());
paraMap.put(CardModel.CARDTYPE, model.getCardType());
paraMap.put(CardModel.CREATETIME, model.getCreateTime());
paraMap.put(CardModel.CREATEUSER, model.getCreateUser());
paraMap.put(CardModel.ONLINELEVEL, model.getOnlineLevel());
paraMap.put(CardModel.ISPUBLISHED, model.getIsPublished());
paraMap.put(CardModel.ISFULLSEARCH, model.getIsFullSearch());
paraMap.put(CardModel.READCOUNT, model.getReadCount());
paraMap.put(CardModel.SECURITYLEVEL, model.getSecurityLevel());
if (model.getLastUpdate() == null) {
SQLNullValue lastUpdateNull = SQLNullValue.newInstance(Types.DATE);
paraMap.put(CardModel.LASTUPDATE, lastUpdateNull);
} else {
paraMap.put(CardModel.LASTUPDATE, model.getLastUpdate());
}
if (model.getValidDate() == null) {
SQLNullValue validDateNull = SQLNullValue.newInstance(Types.DATE);
paraMap.put(CardModel.VALIDDATE, validDateNull);
} else {
paraMap.put(CardModel.VALIDDATE, model.getValidDate());
}
paraMap.put(CardModel.ISCOMMENT, model.getIsComment());
paraMap.put(CardModel.ISRATE, model.getIsRate());
paraMap.put(CardModel.CARDCONTEXT, "");
if (model.getExternalUrl() == null) {
paraMap.put(CardModel.EXTERNALURL, "");
} else {
paraMap.put(CardModel.EXTERNALURL, model.getExternalUrl());
}
if (model.getExtParams() == null) {
paraMap.put(CardModel.EXTPARAMS, "");
} else {
paraMap.put(CardModel.EXTPARAMS, model.getExtParams());
}
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
if (result == 1) {
CardCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int update(CardModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(CardModel.CARDNAME, model.getCardName());
paraMap.put(CardModel.CARDTYPE, model.getCardType());
paraMap.put(CardModel.CREATETIME, model.getCreateTime());
paraMap.put(CardModel.CREATEUSER, model.getCreateUser());
paraMap.put(CardModel.ONLINELEVEL, model.getOnlineLevel());
paraMap.put(CardModel.ISPUBLISHED, model.getIsPublished());
paraMap.put(CardModel.ISFULLSEARCH, model.getIsFullSearch());
paraMap.put(CardModel.READCOUNT, model.getReadCount());
paraMap.put(CardModel.SECURITYLEVEL, model.getSecurityLevel());
if (model.getLastUpdate() == null) {
SQLNullValue lastUpdateNull = SQLNullValue.newInstance(Types.DATE);
paraMap.put(CardModel.LASTUPDATE, lastUpdateNull);
} else {
paraMap.put(CardModel.LASTUPDATE, model.getLastUpdate());
}
if (model.getValidDate() == null) {
SQLNullValue validDateNull = SQLNullValue.newInstance(Types.DATE);
paraMap.put(CardModel.VALIDDATE, validDateNull);
} else {
paraMap.put(CardModel.VALIDDATE, model.getValidDate());
}
paraMap.put(CardModel.ISCOMMENT, model.getIsComment());
paraMap.put(CardModel.ISRATE, model.getIsRate());
paraMap.put(CardModel.CARDCONTEXT, "");
if (model.getExternalUrl() == null) {
paraMap.put(CardModel.EXTERNALURL, "");
} else {
paraMap.put(CardModel.EXTERNALURL, model.getExternalUrl());
}
if (model.getExtParams() == null) {
paraMap.put(CardModel.EXTPARAMS, "");
} else {
paraMap.put(CardModel.EXTPARAMS, model.getExtParams());
}
int result = update(model.getId(), paraMap);
if (result == 1) {
CardCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_CARD;
}
@Override
public RowMapper<CardModel> rowMapper() {
return new RowMapper<CardModel>() {
@Override
public CardModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public CardModel record2Model(ResultSet rs) {
CardModel cardModel = null;
try {
if (rs.getString(CardModel.CARDTYPE) == null) {
return cardModel;
}
cardModel = new CardModel();
cardModel.setId(rs.getString(CardModel.ID));
cardModel.setCardName(rs.getString(CardModel.CARDNAME));
cardModel.setCardType(rs.getInt(CardModel.CARDTYPE));
cardModel.setCreateTime(rs.getTimestamp(CardModel.CREATETIME));
cardModel.setCreateUser(rs.getString(CardModel.CREATEUSER));
cardModel.setIsPublished(rs.getInt(CardModel.ISPUBLISHED));
cardModel.setLastUpdate(rs.getTimestamp(CardModel.LASTUPDATE));
cardModel.setOnlineLevel(rs.getInt(CardModel.ONLINELEVEL));
cardModel.setReadCount(rs.getLong(CardModel.READCOUNT));
cardModel.setSecurityLevel(rs.getInt(CardModel.SECURITYLEVEL));
cardModel.setValidDate(rs.getDate(CardModel.VALIDDATE));
cardModel.setIsComment(rs.getInt(CardModel.ISCOMMENT));
cardModel.setIsRate(rs.getInt(CardModel.ISRATE));
cardModel.setCardContext(rs.getString(CardModel.CARDCONTEXT));
cardModel.setIsFullSearch(rs.getInt(CardModel.ISFULLSEARCH));
cardModel.setExternalUrl(rs.getString(cardModel.EXTERNALURL));
cardModel.setExtParams(rs.getString(cardModel.EXTPARAMS));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return cardModel;
}
}

View File

@ -0,0 +1,217 @@
package com.actionsoft.apps.kms.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.DimensionCache;
import com.actionsoft.apps.kms.model.DimensionModel;
import com.actionsoft.bpms.bo.engine.SQLNullValue;
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 com.actionsoft.exception.AWSException;
/**
* 维度
*
* @author wangshibao
*/
public class DimensionDao extends DaoObject<DimensionModel> {
/**
* 重载方法传入Connection提高效率
*
* @param conn
* @param model
* @return
* @throws AWSDataAccessException
* @author wangshibao
*/
public int insert(Connection conn, DimensionModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(DimensionModel.ID, model.getId());
paraMap.put(DimensionModel.DIMENSIONNAME, model.getDimensionName());
paraMap.put(DimensionModel.CREATEUSER, model.getCreateUser());
paraMap.put(DimensionModel.CREATETIME, model.getCreateTime());
paraMap.put(DimensionModel.HOTSPOTDEFID, model.getHotspotDefId());
paraMap.put(DimensionModel.ISENABLED, model.getIsEnabled());
paraMap.put(DimensionModel.ISEXAMINE, model.getIsExamine());
if (model.getMemo() == null) {
paraMap.put(DimensionModel.MEMO, SQLNullValue.newInstance(Types.VARCHAR));
} else {
paraMap.put(DimensionModel.MEMO, model.getMemo());
}
paraMap.put(DimensionModel.PARENTID, model.getParentId());
paraMap.put(DimensionModel.SHOWTYPE, model.getShowType());
if (model.getLastUpdate() == null) {
paraMap.put(DimensionModel.LASTUPDATE, SQLNullValue.newInstance(Types.DATE));
} else {
paraMap.put(DimensionModel.LASTUPDATE, model.getLastUpdate());
}
paraMap.put(DimensionModel.ORDERINDEX, model.getOrderIndex());
int result = 0;
if (conn == null) {
result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
} else {
result = DBSql.update(conn, DBSql.getInsertStatement(entityName(), paraMap), paraMap);
}
if (result == 1) {// 更新cache
DimensionCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int insert(DimensionModel model) throws AWSDataAccessException {
return insert(null, model);
}
/**
* 重载方法传入Connection提高效率
*
* @param conn
* @param model
* @return
* @throws AWSDataAccessException
* @author wangshibao
*/
public int update(Connection conn, DimensionModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(DimensionModel.DIMENSIONNAME, model.getDimensionName());
paraMap.put(DimensionModel.CREATEUSER, model.getCreateUser());
paraMap.put(DimensionModel.CREATETIME, model.getCreateTime());
paraMap.put(DimensionModel.HOTSPOTDEFID, model.getHotspotDefId());
paraMap.put(DimensionModel.ISENABLED, model.getIsEnabled());
paraMap.put(DimensionModel.ISEXAMINE, model.getIsExamine());
paraMap.put(DimensionModel.MEMO, model.getMemo());
paraMap.put(DimensionModel.PARENTID, model.getParentId());
paraMap.put(DimensionModel.SHOWTYPE, model.getShowType());
if (model.getLastUpdate() == null) {
paraMap.put(DimensionModel.LASTUPDATE, SQLNullValue.newInstance(Types.DATE));
} else {
paraMap.put(DimensionModel.LASTUPDATE, model.getLastUpdate());
}
paraMap.put(DimensionModel.ORDERINDEX, model.getOrderIndex());
int result = 0;
if (conn == null) {
result = update(model.getId(), paraMap);
} else {
result = update(conn, model.getId(), paraMap);
}
if (result == 1) {// 更新cache
DimensionCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int update(DimensionModel model) throws AWSDataAccessException {
return update(null, model);
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_DIMENSION;
}
@Override
public RowMapper<DimensionModel> rowMapper() {
return new RowMapper<DimensionModel>() {
@Override
public DimensionModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public DimensionModel record2Model(ResultSet rs) {
DimensionModel dimensionModel = new DimensionModel();
try {
dimensionModel.setId(rs.getString(DimensionModel.ID));
dimensionModel.setCreateTime(rs.getTimestamp(DimensionModel.CREATETIME));
dimensionModel.setCreateUser(rs.getString(DimensionModel.CREATEUSER));
dimensionModel.setDimensionName(rs.getString(DimensionModel.DIMENSIONNAME));
dimensionModel.setHotspotDefId(rs.getString(DimensionModel.HOTSPOTDEFID));
dimensionModel.setIsEnabled(rs.getInt(DimensionModel.ISENABLED));
dimensionModel.setIsExamine(rs.getInt(DimensionModel.ISEXAMINE));
dimensionModel.setLastUpdate(rs.getTimestamp(DimensionModel.LASTUPDATE));
dimensionModel.setMemo(rs.getString(DimensionModel.MEMO));
String parentId = rs.getString(DimensionModel.PARENTID);
dimensionModel.setParentId(parentId == null ? "" : parentId.trim());// sqlserver和db2把char(36)类型的空字符串默认处理为36位空格 oracle把char(36)类型的空字符串处理为NULL
dimensionModel.setShowType(rs.getInt(DimensionModel.SHOWTYPE));
dimensionModel.setOrderIndex(rs.getInt(DimensionModel.ORDERINDEX));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return dimensionModel;
}
/**
* 删除维度一并删除子维度
*
* @param dimensionIdList 维度集合
* @return
* @throws AWSDataAccessException
* @author wangshibao
*/
public int delete(List<String> dimensionIdList) throws AWSDataAccessException {
StringBuilder sqlWhere = new StringBuilder("(");
for (int i = 0; i < dimensionIdList.size(); i++) {
sqlWhere.append("'" + dimensionIdList.get(i) + "',");
}
String sqlWhere1 = sqlWhere.substring(0, sqlWhere.lastIndexOf(","));
sqlWhere1 += ")";
String sql = "DELETE FROM " + entityName() + " WHERE " + pkFieldName() + " IN " + sqlWhere1;
int result = DBSql.update(sql);
// 更新cache
DimensionCache dimensionCache = DimensionCache.getCache();
for (String id : dimensionIdList) {
dimensionCache.remove(id);
}
return result;
}
/**
* 填充后代维度id
*
* @param id
* @param dimensionIds
* @author wangshibao
*/
public void fillDescendantDimensions(String id, List<String> dimensionIds) {
Iterator<DimensionModel> iterator = DimensionCache.getCache().iterator();
while (iterator.hasNext()) {
DimensionModel dimensionModel = iterator.next();
if (id.equals(dimensionModel.getParentId())) {
dimensionIds.add(dimensionModel.getId());
String id1 = dimensionModel.getId();
fillDescendantDimensions(id1, dimensionIds);
}
}
}
}

View File

@ -0,0 +1,117 @@
package com.actionsoft.apps.kms.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.FileCache;
import com.actionsoft.apps.kms.model.FileModel;
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 com.actionsoft.exception.AWSException;
/**
* 知识-文件
*
* @author wangshibao
*/
public class FileDao extends DaoObject<FileModel> {
@Override
public int insert(FileModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(FileModel.ID, model.getId());
paraMap.put(FileModel.CARDID, model.getCardId());
paraMap.put(FileModel.CREATETIME, model.getCreateTime());
paraMap.put(FileModel.CREATEUSER, model.getCreateUser());
paraMap.put(FileModel.FILENAME, model.getFileName());
paraMap.put(FileModel.FILESIZE, model.getFileSize());
paraMap.put(FileModel.FILESTATE, model.getFileState());
paraMap.put(FileModel.FILEVER, model.getFileVer());
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
if (result == 1) {
// 更新缓存
FileCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int update(FileModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(FileModel.CARDID, model.getCardId());
paraMap.put(FileModel.CREATETIME, model.getCreateTime());
paraMap.put(FileModel.CREATEUSER, model.getCreateUser());
paraMap.put(FileModel.FILENAME, model.getFileName());
paraMap.put(FileModel.FILESIZE, model.getFileSize());
paraMap.put(FileModel.FILESTATE, model.getFileState());
paraMap.put(FileModel.FILEVER, model.getFileVer());
paraMap.put(FileModel.ISFULLSEARCH, model.getIsFullsearch());
int result = update(model.getId(), paraMap);
if (result == 1) {
// 更新缓存
FileCache.getCache().put(model.getId(), model);
}
return result;
}
/**
* 删除文件但不删除缓存在调用方删除缓存
*
* @param id
* @return
* @throws AWSDataAccessException
* @author wangshibao
*/
public int delete(String id) throws AWSDataAccessException {
int result = super.delete(id);
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_FILE;
}
@Override
public RowMapper<FileModel> rowMapper() {
return new RowMapper<FileModel>() {
@Override
public FileModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public FileModel record2Model(ResultSet rs) {
FileModel fileModel = new FileModel();
try {
fileModel.setCardId(rs.getString(FileModel.CARDID));
fileModel.setCreateTime(rs.getTimestamp(FileModel.CREATETIME));
fileModel.setCreateUser(rs.getString(FileModel.CREATEUSER));
fileModel.setFileName(rs.getString(FileModel.FILENAME));
fileModel.setFileSize(rs.getLong(FileModel.FILESIZE));
fileModel.setFileState(rs.getInt(FileModel.FILESTATE));
fileModel.setFileVer(rs.getString(FileModel.FILEVER));
fileModel.setId(rs.getString(FileModel.ID));
fileModel.setIsFullsearch(rs.getInt(FileModel.ISFULLSEARCH));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return fileModel;
}
}

View File

@ -0,0 +1,144 @@
package com.actionsoft.apps.kms.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.HotspotCache;
import com.actionsoft.apps.kms.model.HotspotModel;
import com.actionsoft.bpms.bo.engine.SQLNullValue;
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 com.actionsoft.exception.AWSException;
/**
* 知识地图
*
* @author wangshibao
*/
public class HotspotDao extends DaoObject<HotspotModel> {
@Override
public int insert(HotspotModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getObjectId());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(HotspotModel.ID, model.getId());
paraMap.put(HotspotModel.HOTSPOTDEFID, model.getHotspotDefId());
if (model.getDimensionId() == null) {
paraMap.put(HotspotModel.DIMENSIONID, SQLNullValue.newInstance(Types.VARCHAR));
} else {
paraMap.put(HotspotModel.DIMENSIONID, model.getDimensionId());
}
paraMap.put(HotspotModel.SHAPEID, model.getShapeId());
paraMap.put(HotspotModel.BINDTYPE, model.getBindType());
if (model.getLinkURL() == null) {
paraMap.put(HotspotModel.LINKURL, SQLNullValue.newInstance(Types.VARCHAR));
} else {
paraMap.put(HotspotModel.LINKURL, model.getLinkURL());
}
if (model.getTarget() == null) {
paraMap.put(HotspotModel.TARGET, SQLNullValue.newInstance(Types.VARCHAR));
} else {
paraMap.put(HotspotModel.TARGET, model.getTarget());
}
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
if (result == 1) {
// 更新缓存
HotspotCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int update(HotspotModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(HotspotModel.HOTSPOTDEFID, model.getHotspotDefId());
if (model.getDimensionId() == null) {
paraMap.put(HotspotModel.DIMENSIONID, SQLNullValue.newInstance(Types.VARCHAR));
} else {
paraMap.put(HotspotModel.DIMENSIONID, model.getDimensionId());
}
paraMap.put(HotspotModel.SHAPEID, model.getShapeId());
paraMap.put(HotspotModel.BINDTYPE, model.getBindType());
if (model.getLinkURL() == null) {
paraMap.put(HotspotModel.LINKURL, SQLNullValue.newInstance(Types.VARCHAR));
} else {
paraMap.put(HotspotModel.LINKURL, model.getLinkURL());
}
if (model.getTarget() == null) {
paraMap.put(HotspotModel.TARGET, SQLNullValue.newInstance(Types.VARCHAR));
} else {
paraMap.put(HotspotModel.TARGET, model.getTarget());
}
int result = update(model.getId(), paraMap);
if (result == 1) {
// 更新缓存
HotspotCache.getCache().put(model.getId(), model);
}
return result;
}
public int delete(String id) throws AWSDataAccessException {
int result = super.delete(id);
if (result == 1) {
HotspotCache.getCache().remove(id);
}
return result;
}
public int delete(Connection conn, String id) throws AWSDataAccessException {
int result = super.delete(conn, id);
if (result == 1) {
HotspotCache.getCache().remove(id);
}
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_HOTSPOT;
}
@Override
public RowMapper<HotspotModel> rowMapper() {
return new RowMapper<HotspotModel>() {
@Override
public HotspotModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public HotspotModel record2Model(ResultSet rs) {
HotspotModel hotspotModel = new HotspotModel();
try {
hotspotModel.setDimensionId(rs.getString(HotspotModel.DIMENSIONID));
hotspotModel.setShapeId(rs.getString(HotspotModel.SHAPEID));
hotspotModel.setHotspotDefId(rs.getString(HotspotModel.HOTSPOTDEFID));
hotspotModel.setId(rs.getString(HotspotModel.ID));
hotspotModel.setBindType(rs.getInt(HotspotModel.BINDTYPE));
hotspotModel.setLinkURL(rs.getString(HotspotModel.LINKURL));
hotspotModel.setTarget(rs.getString(hotspotModel.TARGET));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return hotspotModel;
}
}

View File

@ -0,0 +1,99 @@
package com.actionsoft.apps.kms.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.model.HotspotDefModel;
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 com.actionsoft.exception.AWSException;
/**
* 知识地图定义
*
* @author wangshibao
*/
public class HotspotDefDao extends DaoObject<HotspotDefModel> {
@Override
public int insert(HotspotDefModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(HotspotDefModel.ID, model.getId());
paraMap.put(HotspotDefModel.CREATETIME, model.getCreateTime());
paraMap.put(HotspotDefModel.CREATEUSER, model.getCreateUser());
paraMap.put(HotspotDefModel.HOTSPOTNAME, model.getHotspotName());
paraMap.put(HotspotDefModel.HOTSPOTMETAID, model.getHotspotMetaId());
paraMap.put(HotspotDefModel.MEMO, model.getMemo());
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
return result;
}
@Override
public int update(HotspotDefModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(HotspotDefModel.CREATETIME, model.getCreateTime());
paraMap.put(HotspotDefModel.CREATEUSER, model.getCreateUser());
paraMap.put(HotspotDefModel.HOTSPOTNAME, model.getHotspotName());
paraMap.put(HotspotDefModel.HOTSPOTMETAID, model.getHotspotMetaId());
paraMap.put(HotspotDefModel.MEMO, model.getMemo());
int result = update(model.getId(), paraMap);
return result;
}
public int delete(String id) throws AWSDataAccessException {
int result = super.delete(id);
return result;
}
public int delete(Connection conn, String id) throws AWSDataAccessException {
int result = super.delete(conn, id);
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_HOTSPOT_DEF;
}
@Override
public RowMapper<HotspotDefModel> rowMapper() {
return new RowMapper<HotspotDefModel>() {
@Override
public HotspotDefModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public HotspotDefModel record2Model(ResultSet rs) {
HotspotDefModel hotspotDefModel = new HotspotDefModel();
try {
hotspotDefModel.setCreateTime(rs.getTimestamp(HotspotDefModel.CREATETIME));
hotspotDefModel.setId(rs.getString(HotspotDefModel.ID));
hotspotDefModel.setCreateUser(rs.getString(HotspotDefModel.CREATEUSER));
hotspotDefModel.setHotspotName(rs.getString(HotspotDefModel.HOTSPOTNAME));
hotspotDefModel.setHotspotMetaId(rs.getString(HotspotDefModel.HOTSPOTMETAID));
hotspotDefModel.setMemo(rs.getString(HotspotDefModel.MEMO));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return hotspotDefModel;
}
}

View File

@ -0,0 +1,107 @@
package com.actionsoft.apps.kms.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.model.LogModel;
import com.actionsoft.bpms.bo.engine.SQLNullValue;
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 com.actionsoft.exception.AWSException;
/**
* 日志
*
* @author wangshibao
*/
public class LogDao extends DaoObject<LogModel> {
@Override
public int insert(LogModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(LogModel.ID, model.getId());
paraMap.put(LogModel.ACCESSTIME, model.getAccessTime());
paraMap.put(LogModel.ACCESSUSER, model.getAccessUser());
paraMap.put(LogModel.CARDID, model.getCardId());
if (model.getFileId() == null) {
SQLNullValue fileIdNull = SQLNullValue.newInstance(Types.VARCHAR);
paraMap.put(LogModel.FILEID, fileIdNull);
} else {
paraMap.put(LogModel.FILEID, model.getFileId());
}
paraMap.put(LogModel.IPADDRESS, model.getIpAddress());
paraMap.put(LogModel.LOGTYPE, model.getLogType());
paraMap.put(LogModel.LOGINFO, model.getLogInfo());
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
return result;
}
@Override
public int update(LogModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(LogModel.ACCESSTIME, model.getAccessTime());
paraMap.put(LogModel.ACCESSUSER, model.getAccessUser());
paraMap.put(LogModel.CARDID, model.getCardId());
if (model.getFileId() == null) {
SQLNullValue fileIdNull = SQLNullValue.newInstance(Types.VARCHAR);
paraMap.put(LogModel.FILEID, fileIdNull);
} else {
paraMap.put(LogModel.FILEID, model.getFileId());
}
paraMap.put(LogModel.IPADDRESS, model.getIpAddress());
paraMap.put(LogModel.LOGTYPE, model.getLogType());
paraMap.put(LogModel.LOGINFO, model.getLogInfo());
int result = update(model.getId(), paraMap);
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_LOG;
}
@Override
public RowMapper<LogModel> rowMapper() {
return new RowMapper<LogModel>() {
@Override
public LogModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public LogModel record2Model(ResultSet rs) {
LogModel logModel = new LogModel();
try {
logModel.setAccessTime(rs.getTimestamp(LogModel.ACCESSTIME));
logModel.setAccessUser(rs.getString(LogModel.ACCESSUSER));
logModel.setCardId(rs.getString(LogModel.CARDID));
logModel.setFileId(rs.getString(LogModel.FILEID));
logModel.setId(rs.getString(LogModel.ID));
logModel.setIpAddress(rs.getString(LogModel.IPADDRESS));
logModel.setLogType(rs.getInt(LogModel.LOGTYPE));
logModel.setLogInfo(rs.getString(LogModel.LOGINFO));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return logModel;
}
}

View File

@ -0,0 +1,107 @@
package com.actionsoft.apps.kms.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.MetaAttrCache;
import com.actionsoft.apps.kms.model.MetaAttrModel;
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 com.actionsoft.exception.AWSException;
/**
* 元数据-属性
*
* @author wangshibao
*/
public class MetaAttrDao extends DaoObject<MetaAttrModel> {
@Override
public int insert(MetaAttrModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(MetaAttrModel.ID, model.getId());
paraMap.put(MetaAttrModel.ATTRTITLE, model.getAttrTitle());
paraMap.put(MetaAttrModel.CREATETIME, model.getCreateTime());
paraMap.put(MetaAttrModel.CREATEUSER, model.getCreateUser());
paraMap.put(MetaAttrModel.SCHEMAID, model.getSchemaId());
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
if (result == 1) {
MetaAttrCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int update(MetaAttrModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(MetaAttrModel.ATTRTITLE, model.getAttrTitle());
int result = update(model.getId(), paraMap);
if (result == 1) {
MetaAttrModel metaAttrModel = MetaAttrCache.getCache().get(model.getId());
metaAttrModel.setAttrTitle(model.getAttrTitle());
MetaAttrCache.getCache().put(model.getId(), metaAttrModel);
}
return result;
}
public int delete(String id) throws AWSDataAccessException {
int result = super.delete(id);
if (result == 1) {
MetaAttrCache.getCache().remove(id);
}
return result;
}
public int delete(Connection conn, String id) throws AWSDataAccessException {
int result = super.delete(conn, id);
if (result == 1) {
MetaAttrCache.getCache().remove(id);
}
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_META_ATTR;
}
@Override
public RowMapper<MetaAttrModel> rowMapper() {
return new RowMapper<MetaAttrModel>() {
@Override
public MetaAttrModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public MetaAttrModel record2Model(ResultSet rs) {
MetaAttrModel metaAttrModel = new MetaAttrModel();
try {
metaAttrModel.setAttrTitle(rs.getString(MetaAttrModel.ATTRTITLE));
metaAttrModel.setCreateTime(rs.getTimestamp(MetaAttrModel.CREATETIME));
metaAttrModel.setCreateUser(rs.getString(MetaAttrModel.CREATEUSER));
metaAttrModel.setId(rs.getString(MetaAttrModel.ID));
metaAttrModel.setSchemaId(rs.getString(MetaAttrModel.SCHEMAID));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return metaAttrModel;
}
}

View File

@ -0,0 +1,116 @@
package com.actionsoft.apps.kms.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.MetaDataCache;
import com.actionsoft.apps.kms.model.MetaDataModel;
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 com.actionsoft.exception.AWSException;
/**
* 元数据-数据
*
* @author wangshibao
*/
public class MetaDataDao extends DaoObject<MetaDataModel> {
@Override
public int insert(MetaDataModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(MetaDataModel.ID, model.getId());
paraMap.put(MetaDataModel.ATTRID, model.getAttrId());
paraMap.put(MetaDataModel.CARDID, model.getCardId());
paraMap.put(MetaDataModel.CREATETIME, model.getCreateTime());
paraMap.put(MetaDataModel.CREATEUSER, model.getCreateUser());
paraMap.put(MetaDataModel.METATEXT, model.getMetaText());
paraMap.put(MetaDataModel.SCHEMAID, model.getSchemaId());
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
if (result == 1) {
MetaDataCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int update(MetaDataModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(MetaDataModel.ATTRID, model.getAttrId());
paraMap.put(MetaDataModel.CARDID, model.getCardId());
paraMap.put(MetaDataModel.CREATETIME, model.getCreateTime());
paraMap.put(MetaDataModel.CREATEUSER, model.getCreateUser());
paraMap.put(MetaDataModel.METATEXT, model.getMetaText());
paraMap.put(MetaDataModel.SCHEMAID, model.getSchemaId());
int result = update(model.getId(), paraMap);
if (result == 1) {
MetaDataCache.getCache().put(model.getId(), model);
}
return result;
}
public int delete(String id) throws AWSDataAccessException {
int result = super.delete(id);
if (result == 1) {
MetaDataCache.getCache().remove(id);
}
return result;
}
public int delete(Connection conn, String id) throws AWSDataAccessException {
int result = super.delete(conn, id);
if (result == 1) {
MetaDataCache.getCache().remove(id);
}
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_META_DATA;
}
@Override
public RowMapper<MetaDataModel> rowMapper() {
return new RowMapper<MetaDataModel>() {
@Override
public MetaDataModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public MetaDataModel record2Model(ResultSet rs) {
MetaDataModel metaDataModel = new MetaDataModel();
try {
metaDataModel.setAttrId(rs.getString(MetaDataModel.ATTRID));
metaDataModel.setCardId(rs.getString(MetaDataModel.CARDID));
metaDataModel.setCreateTime(rs.getTimestamp(MetaDataModel.CREATETIME));
metaDataModel.setCreateUser(rs.getString(MetaDataModel.CREATEUSER));
metaDataModel.setId(rs.getString(MetaDataModel.ID));
metaDataModel.setMetaText(rs.getString(MetaDataModel.METATEXT));
metaDataModel.setSchemaId(rs.getString(MetaDataModel.SCHEMAID));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return metaDataModel;
}
}

View File

@ -0,0 +1,134 @@
package com.actionsoft.apps.kms.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.MetaSchemaCache;
import com.actionsoft.apps.kms.model.MetaSchemaModel;
import com.actionsoft.bpms.bo.engine.SQLNullValue;
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 com.actionsoft.exception.AWSException;
/**
* 元数据
*
* @author wangshibao
*/
public class MetaSchemaDao extends DaoObject<MetaSchemaModel> {
@Override
public int insert(MetaSchemaModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(MetaSchemaModel.ID, model.getId());
paraMap.put(MetaSchemaModel.CREATETIME, model.getCreateTime());
paraMap.put(MetaSchemaModel.CREATEUSER, model.getCreateUser());
paraMap.put(MetaSchemaModel.ISNULLABLE, model.getIsNullable());
paraMap.put(MetaSchemaModel.ISSEARCH, model.getIsSearch());
paraMap.put(MetaSchemaModel.SCHEMADESC, model.getSchemaDesc());
paraMap.put(MetaSchemaModel.SCHEMASHOWTYPE, model.getSchemaShowtype());
paraMap.put(MetaSchemaModel.SCHEMATITLE, model.getSchemaTitle());
if (model.getLastUpdate() == null) {
paraMap.put(MetaSchemaModel.LASTUPDATE, SQLNullValue.newInstance(Types.DATE));
} else {
paraMap.put(MetaSchemaModel.LASTUPDATE, model.getLastUpdate());
}
paraMap.put(MetaSchemaModel.ORDERINDEX, model.getOrderIndex());
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
if (result == 1) {
MetaSchemaCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int update(MetaSchemaModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(MetaSchemaModel.ISNULLABLE, model.getIsNullable());
paraMap.put(MetaSchemaModel.CREATETIME, model.getCreateTime());
paraMap.put(MetaSchemaModel.CREATEUSER, model.getCreateUser());
paraMap.put(MetaSchemaModel.ISSEARCH, model.getIsSearch());
paraMap.put(MetaSchemaModel.SCHEMADESC, model.getSchemaDesc());
paraMap.put(MetaSchemaModel.SCHEMASHOWTYPE, model.getSchemaShowtype());
paraMap.put(MetaSchemaModel.SCHEMATITLE, model.getSchemaTitle());
if (model.getLastUpdate() == null) {
paraMap.put(MetaSchemaModel.LASTUPDATE, SQLNullValue.newInstance(Types.DATE));
} else {
paraMap.put(MetaSchemaModel.LASTUPDATE, model.getLastUpdate());
}
paraMap.put(MetaSchemaModel.ORDERINDEX, model.getOrderIndex());
int result = update(model.getId(), paraMap);
if (result == 1) {
MetaSchemaCache.getCache().put(model.getId(), model);
}
return result;
}
public int delete(String id) throws AWSDataAccessException {
int result = super.delete(id);
if (result == 1) {
MetaSchemaCache.getCache().remove(id);
}
return result;
}
public int delete(Connection conn, String id) throws AWSDataAccessException {
int result = super.delete(conn, id);
if (result == 1) {
MetaSchemaCache.getCache().remove(id);
}
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_META_SCHEMA;
}
@Override
public RowMapper<MetaSchemaModel> rowMapper() {
return new RowMapper<MetaSchemaModel>() {
@Override
public MetaSchemaModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public MetaSchemaModel record2Model(ResultSet rs) {
MetaSchemaModel schemaModel = new MetaSchemaModel();
try {
schemaModel.setCreateTime(rs.getTimestamp(MetaSchemaModel.CREATETIME));
schemaModel.setCreateUser(rs.getString(MetaSchemaModel.CREATEUSER));
schemaModel.setId(rs.getString(MetaSchemaModel.ID));
schemaModel.setIsNullable(rs.getInt(MetaSchemaModel.ISNULLABLE));
schemaModel.setIsSearch(rs.getInt(MetaSchemaModel.ISSEARCH));
schemaModel.setLastUpdate(rs.getTimestamp(MetaSchemaModel.LASTUPDATE));
schemaModel.setSchemaDesc(rs.getString(MetaSchemaModel.SCHEMADESC));
schemaModel.setSchemaShowtype(rs.getInt(MetaSchemaModel.SCHEMASHOWTYPE));
schemaModel.setSchemaTitle(rs.getString(MetaSchemaModel.SCHEMATITLE));
schemaModel.setOrderIndex(rs.getInt(MetaSchemaModel.ORDERINDEX));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return schemaModel;
}
}

View File

@ -0,0 +1,107 @@
package com.actionsoft.apps.kms.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.OptCache;
import com.actionsoft.apps.kms.model.OptModel;
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 com.actionsoft.exception.AWSException;
public class OptDao extends DaoObject<OptModel> {
@Override
public int insert(OptModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(OptModel.ID, model.getId());
paraMap.put(OptModel.CARDID, model.getCardId());
paraMap.put(OptModel.OPTCONTENT, model.getOptContent());
paraMap.put(OptModel.OPTTIME, model.getOptTime());
paraMap.put(OptModel.OPTUSER, model.getOptUser());
paraMap.put(OptModel.OPTTYPE, model.getOptType());
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
if (result == 1) {// 更新cache
OptCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int update(OptModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(OptModel.CARDID, model.getCardId());
paraMap.put(OptModel.OPTCONTENT, model.getOptContent());
paraMap.put(OptModel.OPTTIME, model.getOptTime());
paraMap.put(OptModel.OPTUSER, model.getOptUser());
paraMap.put(OptModel.OPTTYPE, model.getOptType());
int result = update(model.getId(), paraMap);
if (result == 1) {// 更新cache
OptCache.getCache().put(model.getId(), model);
}
return result;
}
public int delete(String id) throws AWSDataAccessException {
int result = super.delete(id);
if (result == 1) {
OptCache.getCache().remove(id);
}
return result;
}
public int delete(Connection conn, String id) throws AWSDataAccessException {
int result = super.delete(conn, id);
if (result == 1) {
OptCache.getCache().remove(id);
}
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_OPT;
}
@Override
public RowMapper<OptModel> rowMapper() {
return new RowMapper<OptModel>() {
@Override
public OptModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public OptModel record2Model(ResultSet rs) {
try {
OptModel optModel = new OptModel();
optModel.setCardId(rs.getString(OptModel.CARDID));
optModel.setId(rs.getString(OptModel.ID));
optModel.setOptContent(rs.getString(OptModel.OPTCONTENT));
optModel.setOptTime(rs.getTimestamp(OptModel.OPTTIME));
optModel.setOptUser(rs.getString(OptModel.OPTUSER));
optModel.setOptType(rs.getInt(OptModel.OPTTYPE));
return optModel;
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
}
}

View File

@ -0,0 +1,144 @@
package com.actionsoft.apps.kms.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.cache.DimensionCache;
import com.actionsoft.apps.kms.cache.PublishCache;
import com.actionsoft.apps.kms.model.PublishModel;
import com.actionsoft.bpms.bo.engine.SQLNullValue;
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 com.actionsoft.exception.AWSException;
/**
* 发布
*
* @author wangshibao
*/
public class PublishDao extends DaoObject<PublishModel> {
@Override
public int insert(PublishModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(PublishModel.ID, model.getId());
paraMap.put(PublishModel.CARDID, model.getCardId());
paraMap.put(PublishModel.DIMENSIONID, model.getDimensionId());
paraMap.put(PublishModel.MEMO, model.getMemo());
paraMap.put(PublishModel.PUBLISHTIME, model.getPublishTime());
paraMap.put(PublishModel.PUBLISHUSER, model.getPublishUser());
paraMap.put(PublishModel.TAG, model.getTag());
if (model.getExamineInfo() == null) {
SQLNullValue examineNull = SQLNullValue.newInstance(Types.VARCHAR);
paraMap.put(PublishModel.EXAMINEINFO, examineNull);
} else {
paraMap.put(PublishModel.EXAMINEINFO, model.getExamineInfo());
}
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
if (result == 1) {
// 更新缓存
PublishCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int update(PublishModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(PublishModel.CARDID, model.getCardId());
paraMap.put(PublishModel.DIMENSIONID, model.getDimensionId());
paraMap.put(PublishModel.MEMO, model.getMemo());
paraMap.put(PublishModel.PUBLISHTIME, model.getPublishTime());
paraMap.put(PublishModel.PUBLISHUSER, model.getPublishUser());
paraMap.put(PublishModel.TAG, model.getTag());
if (model.getExamineInfo() == null) {
SQLNullValue examineNull = SQLNullValue.newInstance(Types.VARCHAR);
paraMap.put(PublishModel.EXAMINEINFO, examineNull);
} else {
paraMap.put(PublishModel.EXAMINEINFO, model.getExamineInfo());
}
int result = update(model.getId(), paraMap);
if (result == 1) {
// 更新缓存
PublishCache.getCache().put(model.getId(), model);
}
return result;
}
public int delete(String id) throws AWSDataAccessException {
int result = super.delete(id);
if (result == 1) {
// 更新缓存
PublishCache.getCache().remove(id);
}
return result;
}
public int delete(Connection conn, String id) throws AWSDataAccessException {
int result = super.delete(conn, id);
if (result == 1) {
// 更新缓存
PublishCache.getCache().remove(id);
}
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_PUBLISH;
}
@Override
public RowMapper<PublishModel> rowMapper() {
return new RowMapper<PublishModel>() {
@Override
public PublishModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public PublishModel record2Model(ResultSet rs) {
PublishModel publishModel = new PublishModel();
try {
publishModel.setCardId(rs.getString(PublishModel.CARDID));
// 处理CardModel
publishModel.setCardModel(CardCache.getCache().get(publishModel.getCardId()));
publishModel.setDimensionId(rs.getString(PublishModel.DIMENSIONID));
// 处理DimensionModel
publishModel.setDimensionModel(DimensionCache.getCache().get(publishModel.getDimensionId()));
publishModel.setId(rs.getString(PublishModel.ID));
publishModel.setMemo(rs.getString(PublishModel.MEMO));
publishModel.setPublishTime(rs.getTimestamp(PublishModel.PUBLISHTIME));
publishModel.setPublishUser(rs.getString(PublishModel.PUBLISHUSER));
publishModel.setTag(rs.getString(PublishModel.TAG));
publishModel.setExamineInfo(rs.getString(PublishModel.EXAMINEINFO));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return publishModel;
}
}

View File

@ -0,0 +1,106 @@
package com.actionsoft.apps.kms.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.model.SchemaModel;
import com.actionsoft.bpms.bo.engine.SQLNullValue;
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 com.actionsoft.exception.AWSException;
/**
* 元数据
*
* @author wangshibao
*/
public class SchemaDao extends DaoObject<SchemaModel> {
@Override
public int insert(SchemaModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(SchemaModel.ID, model.getId());
paraMap.put(SchemaModel.CREATETIME, model.getCreateTime());
paraMap.put(SchemaModel.CREATEUSER, model.getCreateUser());
paraMap.put(SchemaModel.ISNULLABLE, model.getIsNullable());
paraMap.put(SchemaModel.ISSEARCH, model.getIsSearch());
paraMap.put(SchemaModel.SCHEMADESC, model.getSchemaDesc());
paraMap.put(SchemaModel.SCHEMASHOWTYPE, model.getSchemaShowtype());
paraMap.put(SchemaModel.SCHEMATITLE, model.getSchemaTitle());
if (model.getLastUpdate() == null) {
paraMap.put(SchemaModel.LASTUPDATE, SQLNullValue.newInstance(Types.DATE));
} else {
paraMap.put(SchemaModel.LASTUPDATE, model.getLastUpdate());
}
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
return result;
}
@Override
public int update(SchemaModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(SchemaModel.ISNULLABLE, model.getIsNullable());
paraMap.put(SchemaModel.ISSEARCH, model.getIsSearch());
paraMap.put(SchemaModel.SCHEMADESC, model.getSchemaDesc());
paraMap.put(SchemaModel.SCHEMASHOWTYPE, model.getSchemaShowtype());
paraMap.put(SchemaModel.SCHEMATITLE, model.getSchemaTitle());
if (model.getLastUpdate() == null) {
paraMap.put(SchemaModel.LASTUPDATE, SQLNullValue.newInstance(Types.DATE));
} else {
paraMap.put(SchemaModel.LASTUPDATE, model.getLastUpdate());
}
int result = update(model.getId(), paraMap);
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_META_SCHEMA;
}
@Override
public RowMapper<SchemaModel> rowMapper() {
return new RowMapper<SchemaModel>() {
@Override
public SchemaModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public SchemaModel record2Model(ResultSet rs) {
SchemaModel schemaModel = new SchemaModel();
try {
schemaModel.setCreateTime(rs.getTimestamp(SchemaModel.CREATETIME));
schemaModel.setCreateUser(rs.getString(SchemaModel.CREATEUSER));
schemaModel.setId(rs.getString(SchemaModel.ID));
schemaModel.setIsNullable(rs.getInt(SchemaModel.ISNULLABLE));
schemaModel.setIsSearch(rs.getInt(SchemaModel.ISSEARCH));
schemaModel.setLastUpdate(rs.getTimestamp(SchemaModel.LASTUPDATE));
schemaModel.setSchemaDesc(rs.getString(SchemaModel.SCHEMADESC));
schemaModel.setSchemaShowtype(rs.getInt(SchemaModel.SCHEMASHOWTYPE));
schemaModel.setSchemaTitle(rs.getString(SchemaModel.SCHEMATITLE));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return schemaModel;
}
}

View File

@ -0,0 +1,109 @@
package com.actionsoft.apps.kms.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.VersionCache;
import com.actionsoft.apps.kms.model.VersionModel;
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 com.actionsoft.exception.AWSException;
/**
* 版本号
*
* @author wangshibao
*/
public class VersionDao extends DaoObject<VersionModel> {
@Override
public int insert(VersionModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
model.setId(UUIDGener.getUUID());
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(VersionModel.ID, model.getId());
paraMap.put(VersionModel.CREATETIME, model.getCreateTime());
paraMap.put(VersionModel.CREATEUSER, model.getCreateUser());
paraMap.put(VersionModel.VERSIONNO, model.getVersionNo());
paraMap.put(VersionModel.MEMO, model.getMemo());
int result = DBSql.update(DBSql.getInsertStatement(entityName(), paraMap), paraMap);
if (result == 1) {
VersionCache.getCache().put(model.getId(), model);
}
return result;
}
@Override
public int update(VersionModel model) throws AWSDataAccessException {
if (UtilString.isEmpty(model.getId())) {
throw new AWSDataAccessException("Method getId() Does Not Allow Empty");
}
Map<String, Object> paraMap = new HashMap<>();
paraMap.put(VersionModel.CREATETIME, model.getCreateTime());
paraMap.put(VersionModel.CREATEUSER, model.getCreateUser());
paraMap.put(VersionModel.VERSIONNO, model.getVersionNo());
paraMap.put(VersionModel.MEMO, model.getMemo());
int result = update(model.getId(), paraMap);
if (result == 1) {
VersionCache.getCache().put(model.getId(), model);
}
return result;
}
public int delete(String id) throws AWSDataAccessException {
int result = super.delete(id);
if (result == 1) {
VersionCache.getCache().remove(id);
}
return result;
}
public int delete(Connection conn, String id) throws AWSDataAccessException {
int result = super.delete(conn, id);
if (result == 1) {
VersionCache.getCache().remove(id);
}
return result;
}
@Override
public String entityName() {
return KMSConstant.ENTITY_NAME_VERSION;
}
@Override
public RowMapper<VersionModel> rowMapper() {
return new RowMapper<VersionModel>() {
@Override
public VersionModel mapRow(ResultSet rs, int rowNum) throws SQLException {
return record2Model(rs);
}
};
}
public VersionModel record2Model(ResultSet rs) {
VersionModel versionModel = new VersionModel();
try {
versionModel.setCreateTime(rs.getTimestamp(VersionModel.CREATETIME));
versionModel.setId(rs.getString(VersionModel.ID));
versionModel.setCreateUser(rs.getString(VersionModel.CREATEUSER));
versionModel.setVersionNo(rs.getString(VersionModel.VERSIONNO));
versionModel.setMemo(rs.getString(VersionModel.MEMO));
} catch (Exception e) {
e.printStackTrace();
throw new AWSException(e);
}
return versionModel;
}
}

View File

@ -0,0 +1,8 @@
package com.actionsoft.apps.kms.dc;
import com.actionsoft.bpms.server.fs.AbstFileProcessor;
import com.actionsoft.bpms.server.fs.FileProcessorListener;
public class DocCardContentProcessor extends AbstFileProcessor implements FileProcessorListener {
}

View File

@ -0,0 +1,152 @@
package com.actionsoft.apps.kms.dc;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.cache.FileCache;
import com.actionsoft.apps.kms.dao.FileDao;
import com.actionsoft.apps.kms.model.FileModel;
import com.actionsoft.apps.resource.AppContext;
import com.actionsoft.bpms.commons.database.LocalTxManager;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.cache.UserCache;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.fs.AbstFileProcessor;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.FileProcessorListener;
import com.actionsoft.bpms.server.fs.dc.DCMessage;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.sdk.local.SDK;
import com.actionsoft.sdk.local.api.AppAPI;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* @author wangshibao
*/
public class DocFileProcessor extends AbstFileProcessor implements FileProcessorListener {
@Override
public boolean uploadReady(Map<String, Object> param) throws Exception {
DCContext dcContext = ((DCContext) param.get("DCContext"));
// 根据版本重命名(加上版本号信息防止文件名冲突)
String cardId = dcContext.getFileValue();
String fileName = dcContext.getFileName();
param.put("originalFileName", fileName);
//判断是否有文件版本存在则使用原版本文件移交操作
Map<String, Object> extParams = dcContext.getExtParams();
String fileVersion = "";
if (extParams.containsKey("transferFileVersion")) {
fileVersion = extParams.get("transferFileVersion").toString();
} else {
fileVersion = KMSUtil.getNextFileVersion(cardId, fileName);
}
param.put("fileVersion", fileVersion);
dcContext.setFileName(KMSUtil.getFileNameOfVersion(fileName, fileVersion));
return super.uploadReady(param);
}
/**
* 将文件信息插入数据库
*/
@Override
public void uploadSuccess(Map<String, Object> param) {
try {
DCContext dcContext = (DCContext) param.get("DCContext");
LocalTxManager.getInstance().begin();
FileModel fileModel = new FileModel();
fileModel.setCardId(dcContext.getFileValue());
fileModel.setCreateTime(new Timestamp(System.currentTimeMillis()));
fileModel.setCreateUser(dcContext.getSession().getUID());
fileModel.setFileName((String) param.get("originalFileName"));
fileModel.setFileSize(Long.parseLong(dcContext.getFileLength()));
String fileId = UUIDGener.getObjectId();
fileModel.setId(fileId);
fileModel.setFileVer((String) param.get("fileVersion"));
fileModel.setFileState(1);
// 更新其他版本为老版本
int result = DBSql.update("UPDATE " + KMSConstant.ENTITY_NAME_FILE + " SET " + FileModel.FILESTATE + " = 0 WHERE " + FileModel.CARDID + " = ? AND " + FileModel.FILENAME + " = ? AND " + FileModel.FILESTATE + " = 1 AND " + FileModel.ID + "<> ?", new Object[] { dcContext.getFileValue(), (String) param.get("originalFileName"), fileId });
// 新建file模型
FileDao fileDao = new FileDao();
fileDao.insert(fileModel);
LocalTxManager.getInstance().commit();
if (result != 0) {
// 更新缓存
FileCache fileCache = FileCache.getCache();
Iterator<FileModel> fileIterator = fileCache.iterator();
while (fileIterator.hasNext()) {
FileModel fileModel2 = fileIterator.next();
if (dcContext.getFileValue().equals(fileModel2.getCardId()) && fileModel2.getFileName().equals(param.get("originalFileName")) && fileModel2.getFileState() == 1 && !fileModel2.getId().equals(fileId)) {
fileModel2.setFileState(0);
fileCache.put(fileModel2.getId(), fileModel2);
}
}
}
dcContext.setDCMessage(DCMessage.OK, "");
dcContext.setFileNameShow((String) param.get("originalFileName"));
dcContext.getDCMessage().addAttr("fileDownloadURL", dcContext.getDownloadURL());
dcContext.getDCMessage().addAttr("fileId", fileModel.getId());
dcContext.getDCMessage().addAttr("fileVer", fileModel.getFileVer());
dcContext.getDCMessage().addAttr("createUsername", UserCache.getCache().get(dcContext.getSession().getUID()).getUserName());
dcContext.getDCMessage().addAttr("createTime", UtilDate.datetimeFormat(fileModel.getCreateTime(), "yyyy-MM-dd HH:mm"));
dcContext.getDCMessage().addAttr("fileSuffixIcon", KMSUtil.getFileIconName((String) param.get("originalFileName")));
dcContext.getDCMessage().addAttr("fileCreateUserPhoto", SDK.getPortalAPI().getUserPhoto(dcContext.getSession(), fileModel.getCreateUser()));
dcContext.getDCMessage().addAttr("fileCreateUser", fileModel.getCreateUser());
//调用转换服务.在预览之前提前进行转换
new Thread(new Runnable() {
@Override
public void run() {
fileCovert(dcContext.getSession(), dcContext, "true");
fileCovert(dcContext.getSession(), dcContext, "false");
}
}).start();
} catch (Exception e) {
LocalTxManager.getInstance().rollback();
}
}
public static ResponseObject fileCovert(UserContext me, DCContext sourceDc, String isCopy) {
ResponseObject ro = ResponseObject.newOkResponse();
AppAPI appAPI = SDK.getAppAPI();
AppContext onlinedocApp = SDK.getAppAPI().getAppContext("com.actionsoft.apps.addons.wpsonline");
if (onlinedocApp != null && SDK.getAppAPI().isActive(onlinedocApp.getId())) {
String sourceAppId = KMSConstant.APP_ID;
// 服务地址
String aslp = "aslp://com.actionsoft.apps.addons.wpsonline/filePreviewUrl";
Map<String, Object> params = new HashMap<String, Object>();
try {
params.put("sid", me.getSessionId());
//文件DC
params.put("sourceDc", sourceDc);
//文件是否允许复制
params.put("isCopy", isCopy);
params.put("isPDFCovertPNG", "0");
ro = appAPI.callASLP(appAPI.getAppContext(sourceAppId), aslp, params);
} catch (Exception e) {
e.printStackTrace();
ro.err(e.getMessage());
}
}
return ro;
}
@Override
public boolean downloadValidate(Map<String, Object> param) {
DCContext context = (DCContext) param.get("DCContext");
System.out.println("下载校验--" + context.getPath() + context.getFileName());
return true;
}
}

View File

@ -0,0 +1,72 @@
package com.actionsoft.apps.kms.dc;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.dao.HotspotDefDao;
import com.actionsoft.apps.kms.model.HotspotDefModel;
import com.actionsoft.apps.processon.posreader.PosReader;
import com.actionsoft.apps.processon.posreader.model.Document;
import com.actionsoft.bpms.server.fs.AbstFileProcessor;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.FileProcessorListener;
import com.actionsoft.bpms.server.fs.dc.DCMessage;
import com.actionsoft.bpms.util.UtilFile;
import com.actionsoft.exception.AWSException;
public class HotspotFileProcessor extends AbstFileProcessor implements FileProcessorListener {
@Override
public boolean uploadReady(Map<String, Object> param) {
DCContext dcContext = (DCContext) param.get("DCContext");
String fileName = dcContext.getFileName();
HotspotDefDao hotspotDefDao = new HotspotDefDao();
List<HotspotDefModel> hotspotDefModels = hotspotDefDao.query(HotspotDefModel.HOTSPOTNAME + " = ?", new Object[] { fileName }).list();
if (hotspotDefModels != null && hotspotDefModels.size() > 0) {
// 返回状态
dcContext.getDCMessage();
dcContext.setDCMessage(DCMessage.ERROR, "不能上传重名文件");
return false;
}
return true;
}
@Override
public void uploadSuccess(Map<String, Object> param) {
super.uploadSuccess(param);
// 判断是否已经上传过该文件(根据文件内容的meta的id判断)
DCContext dcContext = (DCContext) param.get("DCContext");
UtilFile posFile = new UtilFile(dcContext.getFilePath());
PosReader reader = new PosReader();
Document document = null;
try {
document = reader.read(posFile.readStr(StandardCharsets.UTF_8.name()));
} catch (Exception e) {
e.printStackTrace();
}
if (document == null) {
// 先删除文件再返回异常
dcContext.delete();
// 返回状态
dcContext.getDCMessage().addAttr("hotspotResult", "文件解析错误,请检查知识地图版本是否正确");
throw new AWSException("文件解析错误,请检查知识地图版本是否正确");
}
HotspotDefDao hotspotDefDao = new HotspotDefDao();
List<HotspotDefModel> hotspotDefModels = hotspotDefDao.query(HotspotDefModel.HOTSPOTMETAID + " = ?", new Object[] { document.getMeta().getId() }).list();
if (hotspotDefModels != null && hotspotDefModels.size() > 0) {
// 先删除文件再返回异常
dcContext.delete();
// 返回状态
dcContext.getDCMessage().addAttr("hotspotResult", "不能上传重复文件(重命名文件视为一个文件)");
throw new AWSException("不能上传重复文件(重命名文件视为一个文件)");
}
// 返回hotspotMetaId
dcContext.getDCMessage().addAttr("hotspotMetaId", document.getMeta().getId());
}
}

View File

@ -0,0 +1,8 @@
package com.actionsoft.apps.kms.dc;
import com.actionsoft.bpms.server.fs.AbstFileProcessor;
import com.actionsoft.bpms.server.fs.FileProcessorListener;
public class OnlinedocFileProcessor extends AbstFileProcessor implements FileProcessorListener {
}

View File

@ -0,0 +1,18 @@
package com.actionsoft.apps.kms.dc;
import com.actionsoft.bpms.server.fs.AbstFileProcessor;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.FileProcessorListener;
import java.util.Map;
public class TmpFileProcessor extends AbstFileProcessor implements FileProcessorListener {
@Override
public boolean downloadValidate(Map<String, Object> param) {
DCContext context = (DCContext) param.get("DCContext");
System.out.println("下载校验--" + context.getPath() + context.getFileName());
return true;
}
}

View File

@ -0,0 +1,29 @@
package com.actionsoft.apps.kms.event.borrow;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListener;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListenerInterface;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
/**
* 借阅申请任务完成前事件
*
* @author wangshibao
*
*/
public class ApplyBeforeComplete extends InterruptListener implements InterruptListenerInterface {
@Override
public boolean execute(ProcessExecutionContext pec) throws Exception {
if (SDK.getTaskAPI().isChoiceActionMenu(pec.getTaskInstance(), "作废")) {
String processInstId = pec.getProcessInstance().getId();
// 更新bo状态为作废
String sqlBO = "UPDATE " + KMSConstant.BO_ENTITY_NAME_BORROW + " SET STATUS = '作废' WHERE BINDID = ?";
DBSql.update(sqlBO, new Object[] { processInstId });
}
return true;
}
}

View File

@ -0,0 +1,19 @@
package com.actionsoft.apps.kms.event.borrow;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
/**
* 借阅申请表单加载后事件
*
* @author wangshibao
*
*/
public class ApplyFormAfterLoad extends ExecuteListener {
@Override
public void execute(ProcessExecutionContext pec) throws Exception {
KMSUtil.commonFormAfterLoad(pec);
}
}

View File

@ -0,0 +1,23 @@
package com.actionsoft.apps.kms.event.borrow;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
import com.actionsoft.bpms.util.DBSql;
/***
* 借阅审批任务创建后事件
*
* @author wangshibao
*
*/
public class ExaminingAfterCreate extends ExecuteListener {
@Override
public void execute(ProcessExecutionContext pec) throws Exception {
// 修改状态为"审批中"
String sql = "UPDATE " + KMSConstant.BO_ENTITY_NAME_BORROW + " SET STATUS = '审批中' WHERE BINDID = ?";
DBSql.update(sql, new Object[] { pec.getProcessInstance().getId() });
}
}

View File

@ -0,0 +1,30 @@
package com.actionsoft.apps.kms.event.borrow;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListener;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListenerInterface;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
/**
* 借阅审批任务完成前事件
*
* @author wangshibao
*
*/
public class ExaminingBeforeComplete extends InterruptListener implements InterruptListenerInterface {
@Override
public boolean execute(ProcessExecutionContext pec) throws Exception {
// 修改状态
if (SDK.getTaskAPI().isChoiceActionMenu(pec.getTaskInstance(), "不同意")) {
String sql = "UPDATE " + KMSConstant.BO_ENTITY_NAME_BORROW + " SET STATUS = '不同意', READTIMES = 0 WHERE BINDID = ?";
DBSql.update(sql, new Object[] { pec.getProcessInstance().getId() });
} else if (SDK.getTaskAPI().isChoiceActionMenu(pec.getTaskInstance(), "同意")) {
String sql = "UPDATE " + KMSConstant.BO_ENTITY_NAME_BORROW + " SET STATUS = '同意', READTIMES = 0 WHERE BINDID = ?";
DBSql.update(sql, new Object[] { pec.getProcessInstance().getId() });
}
return true;
}
}

View File

@ -0,0 +1,32 @@
package com.actionsoft.apps.kms.event.borrow;
import java.util.Map;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
import com.actionsoft.bpms.bpmn.engine.listener.ListenerConst;
/**
* 借阅审批表单加载后事件
*
* @author wangshibao
*
*/
public class ExaminingFormAfterLoad extends ExecuteListener {
@Override
public void execute(ProcessExecutionContext pec) throws Exception {
// 查询文件列表
BO bo = (BO) pec.getParameter(ListenerConst.FORM_EVENT_PARAM_BODATA);
String cardId = bo.getString("CARDID");
Map<String, Object> macroLibraries = pec.getParameterOfMap(ListenerConst.FORM_EVENT_PARAM_TAGS);
KMSUtil.commonFormAfterLoad(pec);
KMSUtil.browseFormAfterLoad(pec);
macroLibraries.put("CARDID", cardId);
}
}

View File

@ -0,0 +1,29 @@
package com.actionsoft.apps.kms.event.cancelpublish;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListener;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListenerInterface;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
/**
* 取消发布申请任务完成前事件
*
* @author wangshibao
*
*/
public class ApplyBeforeComplete extends InterruptListener implements InterruptListenerInterface {
@Override
public boolean execute(ProcessExecutionContext pec) throws Exception {
if (SDK.getTaskAPI().isChoiceActionMenu(pec.getTaskInstance(), "作废")) {
String processInstId = pec.getProcessInstance().getId();
// 更新bo状态为作废
String sqlBO = "UPDATE " + KMSConstant.BO_ENTITY_NAME_CANCEL_PUBLISH + " SET STATUS = '作废' WHERE BINDID = ?";
DBSql.update(sqlBO, new Object[] { processInstId });
}
return true;
}
}

View File

@ -0,0 +1,28 @@
package com.actionsoft.apps.kms.event.cancelpublish;
import java.util.Map;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
import com.actionsoft.bpms.bpmn.engine.listener.ListenerConst;
/**
* 取消发布申请表单加载后事件
*
* @author wangshibao
*
*/
public class ApplyFormAfterLoad extends ExecuteListener {
@Override
public void execute(ProcessExecutionContext pec) throws Exception {
KMSUtil.commonFormAfterLoad(pec);
KMSUtil.browseFormAfterLoad(pec);
Map<String, Object> macroLibraries = pec.getParameterOfMap(ListenerConst.FORM_EVENT_PARAM_TAGS);
BO bo = (BO) pec.getParameter(ListenerConst.FORM_EVENT_PARAM_BODATA);
String cardId = bo.getString("CARDID");
macroLibraries.put("CARDID", cardId);
}
}

View File

@ -0,0 +1,23 @@
package com.actionsoft.apps.kms.event.cancelpublish;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
import com.actionsoft.bpms.util.DBSql;
/**
* 取消发布流程任务创建后事件
*
* @author wangshibao
*
*/
public class ExaminingAfterCreate extends ExecuteListener {
@Override
public void execute(ProcessExecutionContext pec) throws Exception {
// 修改状态为"审批中"
String sql = "UPDATE " + KMSConstant.BO_ENTITY_NAME_CANCEL_PUBLISH + " SET STATUS = '审批中' WHERE BINDID = ?";
DBSql.update(sql, new Object[] { pec.getProcessInstance().getId() });
}
}

View File

@ -0,0 +1,71 @@
package com.actionsoft.apps.kms.event.cancelpublish;
import java.sql.Connection;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.service.CardService;
import com.actionsoft.apps.kms.service.PublishService;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListener;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListenerInterface;
import com.actionsoft.bpms.commons.database.LocalTxManager;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.exception.AWSException;
import com.actionsoft.sdk.local.SDK;
/**
* 取消发布审批任务完成前事件
*
* @author wangshibao
*
*/
public class ExaminingBeforeComplete extends InterruptListener implements InterruptListenerInterface {
@Override
public boolean execute(ProcessExecutionContext pec) throws Exception {
// 修改状态
if (SDK.getTaskAPI().isChoiceActionMenu(pec.getTaskInstance(), "同意")) {
boolean isInTx = false;// 标识是否当前方法打开的事务
Connection conn = null;
try {
if (!LocalTxManager.getInstance().inTransaction()) {
LocalTxManager.getInstance().begin();
isInTx = true;
}
conn = DBSql.open();
String sql = "UPDATE " + KMSConstant.BO_ENTITY_NAME_CANCEL_PUBLISH + " SET STATUS = '同意' WHERE BINDID = ?";
DBSql.update(conn, sql, new Object[] { pec.getProcessInstance().getId() });
// 删除发布信息
String publishId = (String) SDK.getBOAPI().query(KMSConstant.BO_ENTITY_NAME_CANCEL_PUBLISH).detailByBindId(pec.getProcessInstance().getId(), "PUBLISHID");
PublishService publishService = new PublishService();
boolean result = publishService.delete(conn, publishId);
if (!result) {
throw new AWSException("删除知识发布信息失败");
} else {
// 判断并修改知识的发布状态
CardService cardService = new CardService();
String cardId = (String) SDK.getBOAPI().getByProcess(KMSConstant.BO_ENTITY_NAME_CANCEL_PUBLISH, pec.getProcessInstance().getId(), "CARDID");
cardService.updateCardIsPublishedStatus(conn, cardId);
// 判断并删除全文检索
publishService.deleteFullSearch(cardId);
}
if (isInTx) {
LocalTxManager.getInstance().commit();
}
} catch (Exception e) {
if (isInTx) {
LocalTxManager.getInstance().rollback();
}
e.printStackTrace();
throw e;
} finally {
DBSql.close(conn);
}
} else if (SDK.getTaskAPI().isChoiceActionMenu(pec.getTaskInstance(), "不同意")) {
String sql = "UPDATE " + KMSConstant.BO_ENTITY_NAME_CANCEL_PUBLISH + " SET STATUS = '不同意' WHERE BINDID = ?";
DBSql.update(sql, new Object[] { pec.getProcessInstance().getId() });
}
return true;
}
}

View File

@ -0,0 +1,32 @@
package com.actionsoft.apps.kms.event.cancelpublish;
import java.util.Map;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
import com.actionsoft.bpms.bpmn.engine.listener.ListenerConst;
/**
* 取消发布审批表单加载后事件
*
* @author wangshibao
*
*/
public class ExaminingFormAfterLoad extends ExecuteListener {
@Override
public void execute(ProcessExecutionContext pec) throws Exception {
// 查询文件列表
BO bo = (BO) pec.getParameter(ListenerConst.FORM_EVENT_PARAM_BODATA);
String cardId = bo.getString("CARDID");
Map<String, Object> macroLibraries = pec.getParameterOfMap(ListenerConst.FORM_EVENT_PARAM_TAGS);
KMSUtil.commonFormAfterLoad(pec);
KMSUtil.browseFormAfterLoad(pec);
macroLibraries.put("CARDID", cardId);
}
}

View File

@ -0,0 +1,55 @@
package com.actionsoft.apps.kms.event.publish;
import java.util.ArrayList;
import java.util.List;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.PublishCache;
import com.actionsoft.apps.kms.model.PublishModel;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListener;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListenerInterface;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONArray;
/**
* 发布申请任务完成前事件
*
* @author wangshibao
*
*/
public class ApplyBeforeComplete extends InterruptListener implements InterruptListenerInterface {
@Override
public boolean execute(ProcessExecutionContext pec) throws Exception {
if (SDK.getTaskAPI().isChoiceActionMenu(pec.getTaskInstance(), "作废")) {
String processInstId = pec.getProcessInstance().getId();
// 更新bo状态为作废
String sqlBO = "UPDATE " + KMSConstant.BO_ENTITY_NAME_PUBLISH + " SET STATUS = '作废' WHERE BINDID = ?";
DBSql.update(sqlBO, new Object[] { processInstId });
// 删除临时publish信息
BO bo = SDK.getBOAPI().query(KMSConstant.BO_ENTITY_NAME_PUBLISH).detailByBindId(processInstId);
String publishIds = bo.getString("PUBLISHIDS");
List<String> publishIdList = JSONArray.parseArray(publishIds, String.class);
String sql = "DELETE FROM " + KMSConstant.ENTITY_NAME_PUBLISH + " WHERE " + PublishModel.ID + " IN (";
List<String> params = new ArrayList<>();
for (String publishId : publishIdList) {
sql += "?,";
params.add(publishId);
}
sql = sql.substring(0, sql.length() - 1);
sql += ")";
DBSql.update(sql, params.toArray());
// 更新缓存
for (String publishId : publishIdList) {
PublishCache.getCache().remove(publishId);
}
}
return true;
}
}

View File

@ -0,0 +1,50 @@
package com.actionsoft.apps.kms.event.publish;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
import com.actionsoft.bpms.bpmn.engine.listener.ListenerConst;
import com.actionsoft.bpms.util.UtilString;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* 发布申请表单加载后事件
*
* @author wangshibao
*
*/
public class ApplyFormAfterLoad extends ExecuteListener {
@Override
public void execute(ProcessExecutionContext pec) throws Exception {
KMSUtil.commonFormAfterLoad(pec);
KMSUtil.browseFormAfterLoad(pec);
Map<String, Object> macroLibraries = pec.getParameterOfMap(ListenerConst.FORM_EVENT_PARAM_TAGS);
BO bo = (BO) pec.getParameter(ListenerConst.FORM_EVENT_PARAM_BODATA);
if (bo != null) {
String cardIds = bo.getString("CARDIDS");
if (UtilString.isNotEmpty(cardIds)) {
List<String> cardIdList = JSONArray.parseArray(cardIds, String.class);
JSONArray cardInfoJA = new JSONArray();
for (String cardId : cardIdList) {
JSONObject cardInfoJO = new JSONObject();
cardInfoJO.put("cardId", cardId);
CardModel cardModel = CardCache.getCache().get(cardId);
cardInfoJO.put("cardName", cardModel == null ? "知识不存在" : cardModel.getCardName());
cardInfoJA.add(cardInfoJO);
}
macroLibraries.put("cardInfoJA", cardInfoJA.toString());
} else {
macroLibraries.put("cardInfoJA", "");
}
}
}
}

View File

@ -0,0 +1,48 @@
package com.actionsoft.apps.kms.event.publish;
import java.util.Iterator;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.PublishCache;
import com.actionsoft.apps.kms.model.PublishModel;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
import com.actionsoft.bpms.util.DBSql;
import com.alibaba.fastjson.JSONObject;
/**
* 发布审批任务创建后事件
*
* @author wangshibao
*
*/
public class ExaminingAfterCreate extends ExecuteListener {
@Override
public void execute(ProcessExecutionContext pec) throws Exception {
String processInstId = pec.getProcessInstance().getId();
// 修改BO状态为"审批中"
String sql = "UPDATE " + KMSConstant.BO_ENTITY_NAME_PUBLISH + " SET STATUS = '审批中' WHERE BINDID = ?";
DBSql.update(sql, new Object[] { processInstId });
// 修改publish状态为审批中
JSONObject examineInfoJO1 = new JSONObject();
examineInfoJO1.put("processInstId", processInstId);
examineInfoJO1.put("status", "申请中");
JSONObject examineInfoJO2 = new JSONObject();
examineInfoJO2.put("processInstId", processInstId);
examineInfoJO2.put("status", "审批中");
String tempPublishSql = "UPDATE " + KMSConstant.ENTITY_NAME_PUBLISH + " SET " + PublishModel.EXAMINEINFO + " =? WHERE " + PublishModel.EXAMINEINFO + " LIKE ?";
DBSql.update(tempPublishSql, new Object[] { examineInfoJO2.toString(), "%" + processInstId + "%" });
// 更新publish缓存
Iterator<PublishModel> publishIterator = PublishCache.getCache().iterator();
while (publishIterator.hasNext()) {
PublishModel publishModel = publishIterator.next();
if (publishModel.getExamineInfo() != null && publishModel.getExamineInfo().contains(processInstId)) {
publishModel.setExamineInfo(examineInfoJO2.toString());
PublishCache.getCache().put(publishModel.getId(), publishModel);
}
}
}
}

View File

@ -0,0 +1,81 @@
package com.actionsoft.apps.kms.event.publish;
import java.util.Iterator;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.cache.PublishCache;
import com.actionsoft.apps.kms.model.PublishModel;
import com.actionsoft.apps.kms.service.CardService;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListener;
import com.actionsoft.bpms.bpmn.engine.listener.InterruptListenerInterface;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* 发布审批任务完成前事件
*
* @author wangshibao
*
*/
public class ExaminingBeforeComplete extends InterruptListener implements InterruptListenerInterface {
@Override
public boolean execute(ProcessExecutionContext pec) throws Exception {
String processInstId = pec.getProcessInstance().getId();
if (SDK.getTaskAPI().isChoiceActionMenu(pec.getTaskInstance(), "同意")) {
// 修改BO状态
String sql = "UPDATE " + KMSConstant.BO_ENTITY_NAME_PUBLISH + " SET STATUS = '同意' WHERE BINDID = ?";
DBSql.update(sql, new Object[] { processInstId });
// 删除临时发布的publish数据
BO bo = SDK.getBOAPI().query(KMSConstant.BO_ENTITY_NAME_PUBLISH).detailByBindId(processInstId);
String tempPublishSql = "DELETE FROM " + KMSConstant.ENTITY_NAME_PUBLISH + " WHERE " + PublishModel.EXAMINEINFO + " LIKE ?";
DBSql.update(tempPublishSql, new Object[] { "%" + processInstId + "%" });
// 更新publish缓存
Iterator<PublishModel> publishIterator = PublishCache.getCache().iterator();
while (publishIterator.hasNext()) {
PublishModel publishModel = publishIterator.next();
if (publishModel.getExamineInfo() != null && publishModel.getExamineInfo().contains(processInstId)) {
PublishCache.getCache().remove(publishModel.getId());
}
}
// 发布
JSONArray publishCardJA = JSONArray.parseArray(bo.getString("CARDIDS"));
JSONArray publishDimensionJA = new JSONArray();
publishDimensionJA.add(bo.getString("DIMENSIONID"));
JSONObject schemaMetaDataJO = JSONObject.parseObject(bo.getString("SCHEMAMETADATA"));
String tags = bo.getString("TAGS");
String publishMemo = bo.getString("PUBLISHMEMO");
CardService cardService = new CardService();
JSONObject examineInfoJO3 = new JSONObject();
examineInfoJO3.put("processInstId", processInstId);
examineInfoJO3.put("status", "同意");
cardService.publishCard(UserContext.fromUID(bo.getString("APPLYUSER")), publishCardJA, publishDimensionJA, schemaMetaDataJO, tags, publishMemo, examineInfoJO3.toString());
} else if (SDK.getTaskAPI().isChoiceActionMenu(pec.getTaskInstance(), "不同意")) {
String sql = "UPDATE " + KMSConstant.BO_ENTITY_NAME_PUBLISH + " SET STATUS = '不同意' WHERE BINDID = ?";
DBSql.update(sql, new Object[] { pec.getProcessInstance().getId() });
// 修改publish表的发布信息
JSONObject examineInfoJO3 = new JSONObject();
examineInfoJO3.put("processInstId", processInstId);
examineInfoJO3.put("status", "不同意");
String tempPublishSql = "UPDATE " + KMSConstant.ENTITY_NAME_PUBLISH + " SET " + PublishModel.EXAMINEINFO + " =? WHERE " + PublishModel.EXAMINEINFO + " LIKE ?";
DBSql.update(tempPublishSql, new Object[] { examineInfoJO3.toString(), "%" + processInstId + "%" });
// 更新publish缓存
Iterator<PublishModel> publishIterator = PublishCache.getCache().iterator();
while (publishIterator.hasNext()) {
PublishModel publishModel = publishIterator.next();
if (publishModel.getExamineInfo() != null && publishModel.getExamineInfo().contains(processInstId)) {
publishModel.setExamineInfo(examineInfoJO3.toString());
PublishCache.getCache().put(publishModel.getId(), publishModel);
}
}
}
return true;
}
}

View File

@ -0,0 +1,44 @@
package com.actionsoft.apps.kms.event.publish;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
import com.actionsoft.bpms.bpmn.engine.listener.ListenerConst;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* 发布审批表单加载后事件
*
* @author wangshibao
*
*/
public class ExaminingFormAfterLoad extends ExecuteListener {
@Override
public void execute(ProcessExecutionContext pec) throws Exception {
KMSUtil.commonFormAfterLoad(pec);
KMSUtil.browseFormAfterLoad(pec);
Map<String, Object> macroLibraries = pec.getParameterOfMap(ListenerConst.FORM_EVENT_PARAM_TAGS);
BO bo = (BO) pec.getParameter(ListenerConst.FORM_EVENT_PARAM_BODATA);
String cardIds = bo.getString("CARDIDS");
List<String> cardIdList = JSONArray.parseArray(cardIds, String.class);
JSONArray cardInfoJA = new JSONArray();
for (String cardId : cardIdList) {
JSONObject cardInfoJO = new JSONObject();
cardInfoJO.put("cardId", cardId);
CardModel cardModel = CardCache.getCache().get(cardId);
cardInfoJO.put("cardName", cardModel == null ? "知识不存在" : cardModel.getCardName());
cardInfoJA.add(cardInfoJO);
}
macroLibraries.put("cardInfoJA", cardInfoJA.toString());
}
}

View File

@ -0,0 +1,48 @@
package com.actionsoft.apps.kms.formatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.bpms.client.notification.NotificationMessageFormatter;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONObject;
public class KMSNotificationFormatter implements NotificationMessageFormatter {
/**
* KMS阅读邀请当用户接收到提醒窗口或在通知中心点击通知条目时被触发格式化通知的内容
*
* @param userContext 通知查看人
* @param content 发送的原始内容
* @return ResponseObject包含content和buttons两个变量
*/
@Override public ResponseObject parser(UserContext userContext, String content) {
ResponseObject ro = ResponseObject.newOkResponse();
JSONObject contentJO = JSONObject.parseObject(content);
String cardId = contentJO.getString("cardId");
String dimensionId = contentJO.getString("dimensionId");
String inviteUser = contentJO.getString("inviteUser");
String cardName = contentJO.getString("cardName");
ro.put("content", inviteUser + "邀请您阅读知识:" + cardName);
List<Map<String, String>> buttons = new ArrayList<>();
if (!userContext.isMobileClient()){
Map<String, String> button = new HashMap<>();
button.put("name", "阅读知识");
button.put("target", "side");// 新窗口不常用只允许四个常量_blank/mainFrame/ajax/app
button.put("action", "./w?sid=" + userContext.getSessionId() + "&cmd=com.actionsoft.apps.kms_knwl_center_browse_card_page&dimensionId="+dimensionId+"&cardId=" + cardId + "&isPage=true");
button.put("color", "blue");// 只允许三个常量blue/white/red
button.put("functionId", SDK.getAppAPI().getAppContext(KMSConstant.APP_ID).getId());
button.put("functionName", "浏览知识");
buttons.add(button);
}
ro.put("buttons", buttons);
return ro;
}
}

View File

@ -0,0 +1,48 @@
package com.actionsoft.apps.kms.formatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.bpms.client.notification.NotificationMessageFormatter;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONObject;
public class KMSReportFormatter implements NotificationMessageFormatter {
/**
* KMS阅读邀请当用户接收到提醒窗口或在通知中心点击通知条目时被触发格式化通知的内容
*
* @param userContext 通知查看人
* @param content 发送的原始内容
* @return ResponseObject包含content和buttons两个变量
*/
@Override public ResponseObject parser(UserContext userContext, String content) {
ResponseObject ro = ResponseObject.newOkResponse();
JSONObject contentJO = JSONObject.parseObject(content);
String cardId = contentJO.getString("cardId");
String reportUser = contentJO.getString("reportUser");
String cardName = contentJO.getString("cardName");
String reportContent = contentJO.getString("reportContent");
ro.put("content", "来自" + reportUser + "的关于知识[" + cardName + "]的反馈:" + reportContent);
List<Map<String, String>> buttons = new ArrayList<>();
if (!userContext.isMobileClient()){
Map<String, String> button = new HashMap<>();
button.put("name", "查看知识");
button.put("target", "mainFrame");// 新窗口不常用只允许四个常量_blank/mainFrame/ajax/app
button.put("action", "./w?sid=" + userContext.getSessionId() + "&cmd=com.actionsoft.apps.kms_knwl_center_browse_card_page&cardId=" + cardId);
button.put("color", "blue");// 只允许三个常量blue/white/red
button.put("functionId", SDK.getAppAPI().getAppContext(KMSConstant.APP_ID).getId());
button.put("functionName", "浏览知识");
buttons.add(button);
}
ro.put("buttons", buttons);
return ro;
}
}

View File

@ -0,0 +1,33 @@
package com.actionsoft.apps.kms.humanperformer;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.service.DimensionService;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.model.def.UserTaskModel;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.TaskInstance;
import com.actionsoft.bpms.bpmn.engine.performer.HumanPerformerAbst;
import com.actionsoft.bpms.bpmn.engine.performer.HumanPerformerInterface;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.sdk.local.SDK;
/**
* 借阅流程-审批的参与者实现
*
* @author wangshibao
*/
public class BorrowerExamineHP extends HumanPerformerAbst implements HumanPerformerInterface {
@Override
public String getHumanPerformer(UserContext me, ProcessInstance processInstance, TaskInstance taskInstance, UserTaskModel userTaskModel, Map<String, Object> params) {
BO bo = SDK.getBOAPI().query(KMSConstant.BO_ENTITY_NAME_BORROW).detailByBindId(processInstance.getId());
return new DimensionService().getDimensionAdmin(bo.getString("DIMENSIONID"));
}
@Override
public String getSetting(UserContext arg0, Map<String, Object> arg1) {
return null;
}
}

View File

@ -0,0 +1,33 @@
package com.actionsoft.apps.kms.humanperformer;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.service.DimensionService;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.model.def.UserTaskModel;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.TaskInstance;
import com.actionsoft.bpms.bpmn.engine.performer.HumanPerformerAbst;
import com.actionsoft.bpms.bpmn.engine.performer.HumanPerformerInterface;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.sdk.local.SDK;
/**
* 发布流程-审批的参与者实现
*
* @author wangshibao
*/
public class CancelPublishExamineHP extends HumanPerformerAbst implements HumanPerformerInterface {
@Override
public String getHumanPerformer(UserContext me, ProcessInstance processInstance, TaskInstance taskInstance, UserTaskModel userTaskModel, Map<String, Object> params) {
BO bo = SDK.getBOAPI().query(KMSConstant.BO_ENTITY_NAME_CANCEL_PUBLISH).detailByBindId(processInstance.getId());
return new DimensionService().getDimensionAdmin(bo.getString("DIMENSIONID"));
}
@Override
public String getSetting(UserContext arg0, Map<String, Object> arg1) {
return null;
}
}

View File

@ -0,0 +1,33 @@
package com.actionsoft.apps.kms.humanperformer;
import java.util.Map;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.service.DimensionService;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.model.def.UserTaskModel;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.TaskInstance;
import com.actionsoft.bpms.bpmn.engine.performer.HumanPerformerAbst;
import com.actionsoft.bpms.bpmn.engine.performer.HumanPerformerInterface;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.sdk.local.SDK;
/**
* 发布流程-审批的参与者实现
*
* @author wangshibao
*/
public class PublishExamineHP extends HumanPerformerAbst implements HumanPerformerInterface {
@Override
public String getHumanPerformer(UserContext me, ProcessInstance processInstance, TaskInstance taskInstance, UserTaskModel userTaskModel, Map<String, Object> params) {
BO bo = SDK.getBOAPI().query(KMSConstant.BO_ENTITY_NAME_PUBLISH).detailByBindId(processInstance.getId());
return new DimensionService().getDimensionAdmin(bo.getString("DIMENSIONID"));
}
@Override
public String getSetting(UserContext arg0, Map<String, Object> arg1) {
return null;
}
}

View File

@ -0,0 +1,316 @@
package com.actionsoft.apps.kms.job;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.cache.FileCache;
import com.actionsoft.apps.kms.dao.CardDao;
import com.actionsoft.apps.kms.dao.FileDao;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.apps.kms.model.FileModel;
import com.actionsoft.apps.kms.service.CardService;
import com.actionsoft.apps.resource.AppContext;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.schedule.IJob;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.conf.server.AWSServerConf;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.dc.DCProfileManager;
import com.actionsoft.bpms.server.fs.file.ReadDCFile;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.bpms.util.UtilFile;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.actionsoft.sdk.local.api.AppAPI;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* 全文检索入库
*
* @author wangshibao
*/
public class FullsearchCreatedByFile implements IJob {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
AppContext kmsApp = SDK.getAppAPI().getAppContext(KMSConstant.APP_ID);
FileCache fileCache = FileCache.getCache();
CardCache cardCache = CardCache.getCache();
CardService cardService = new CardService();
//知识卡片入库
Iterator<CardModel> cardIterator = cardCache.iterator();
CardDao cardDao = new CardDao();
JSONArray contents = new JSONArray();
List<CardModel> cardModelList = new ArrayList<CardModel>();
while (cardIterator.hasNext()) {
CardModel cardModel = cardIterator.next();
if (cardModel.getIsPublished() == 1 && cardModel.getIsFullSearch() == 0) {
cardModelList.add(cardModel);
JSONObject json = new JSONObject();
String cardContext = cardModel.getCardContext();
if (UtilString.isEmpty(cardContext) || cardModel.getId().equals(cardContext)) {
//查询正文
DCContext dc = new DCContext(null, DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_CARDCONTENT_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardModel.getId(), cardModel.getId());
cardContext = cardService.getCardContent(dc);
cardContext = KMSUtil.getPlainText(cardContext);
cardContext = KMSUtil.replaceText(cardContext);
}
json.put("documentId", cardModel.getId());
json.put("content", "");//信息附件
json.put("abstract", cardContext);//信息摘要
json.put("title", cardModel.getCardName());//信息标题
json.put("createTime", UtilDate.datetimeFormat(cardModel.getCreateTime()));
contents.add(json);
}
}
String aslp = "aslp://" + KMSConstant.APP_FULLSEARCH + "/createIndexesByContent";
Map<String, Object> params = new HashMap<String, Object>();
params.put("index", KMSConstant.APP_KMS_FULLSEARCH_INDEX_CARD);
params.put("type", KMSConstant.APP_KMS_FULLSEARCH_TYPE_CARD);
params.put("contents", contents);
AppAPI appAPI = SDK.getAppAPI();
ResponseObject resultRO = appAPI.callASLP(appAPI.getAppContext(KMSConstant.APP_ID), aslp, params);
if (!resultRO.isOk()) {
System.err.println("入库知识卡片时发生错误:" + resultRO.getMsg());
SDK.getAppAPI().info(kmsApp, "---------入库全文检索时发生错误:" + resultRO.getMsg() + "---------");
} else {
for (CardModel cardModel : cardModelList) {
cardModel.setIsFullSearch(1);
cardDao.update(cardModel);
}
}
Iterator<FileModel> fileIterator = fileCache.iterator();
// key:fileId File:解密后的文件
Map<String, File> targetFileMap = new HashMap<>();
JSONObject fileNames = new JSONObject();
while (fileIterator.hasNext()) {
FileModel fileModel = fileIterator.next();
if (fileModel != null) {
if (fileModel.getIsFullsearch() == 0 && !fileModel.getFileName().contains("processInstId")) {// 未入库的文件//流程链接不入库
CardModel cardModel = cardCache.get(fileModel.getCardId());
if (cardModel != null && cardModel.getIsPublished() == 1) {// 已发布的知识
File targetFile = null;
try {
/* 开始入库操作 */
// 1构建文件DC
DCContext dcContext = new DCContext(UserContext.fromUID("admin"), DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardModel.getId(), KMSUtil.getFileNameOfVersion(fileModel.getFileName(), fileModel.getFileVer()));
// 2解密到tmp目录
String targetDir = AWSServerConf.getProperty("dc.path") + File.separator + KMSConstant.APP_ID + File.separator + "tmp" + File.separator + cardModel.getId() + File.separator + fileModel.getId() + File.separator;// groupValue为cardId fileValue为fileId(在搜索全文检索时使用)
File targetFileDir = new File(targetDir);
if (!targetFileDir.exists()) {
targetFileDir.mkdirs();
}
String newFileName = KMSUtil.toDigestUTF8(fileModel.getFileName()) + "." + fileModel.getFileName().substring(fileModel.getFileName().lastIndexOf(".") + 1);
targetFile = new File(targetDir + newFileName);// 名字不带版本号
if (!targetFile.exists()) {
targetFile.createNewFile();
}
OutputStream out = new FileOutputStream(targetFile);
try {
ReadDCFile.getInstance().read(out, dcContext);
targetFileMap.put(fileModel.getId(), targetFile);
fileNames.put(newFileName, fileModel.getFileName());
} catch (Exception e) {
if ((e instanceof FileNotFoundException) || (e.getMessage() != null && e.getMessage().contains("key does not exist"))) {
System.err.println("[" + fileModel.getCreateUser() + "]的文件[" + fileModel.getCardId() + "][" + fileModel.getFileName() + "]文件不存在");
} else {
throw e;
}
} finally {
out.close();
}
} catch (Exception e) {
System.err.println("[" + fileModel.getCreateUser() + "]的文件[" + fileModel.getFileName() + "]入库全文检索时发生错误");
e.printStackTrace();
} catch (Error e) {
System.err.println("[" + fileModel.getCreateUser() + "]的文件[" + fileModel.getFileName() + "]入库全文检索时发生错误");
e.printStackTrace();
}
}
}
}
}
creatCardModelContentFile(cardCache, fileCache, targetFileMap, fileNames, cardService);
try {
Set<String> fileIdSet = targetFileMap.keySet();
if (fileIdSet.size() > 0) {
FileDao fileDao = new FileDao();
JSONArray docPathJA = new JSONArray();
for (String fileId : fileIdSet) {
FileModel fileModel = fileCache.get(fileId);
CardModel cardModel = null;
if (fileModel != null) {
cardModel = cardCache.get(fileModel.getCardId());
} else {
cardModel = cardCache.get(fileId);
}
getCardData(cardService, targetFileMap, docPathJA, fileId, cardModel);
}
// 3入库全文检索
aslp = "aslp://" + KMSConstant.APP_FULLSEARCH + "/createIndexesByFile";
Map<String, Object> params1 = new HashMap<String, Object>();
params1.put("index", KMSConstant.APP_KMS_FULLSEARCH_INDEX);
params1.put("type", KMSConstant.APP_KMS_FULLSEARCH_TYPE);
params1.put("documentsPath", docPathJA.toString());
params1.put("fileNames", fileNames.toString());
resultRO = appAPI.callASLP(appAPI.getAppContext(KMSConstant.APP_ID), aslp, params1);
if (!resultRO.isOk()) {
System.err.println("入库全文检索时发生错误:" + resultRO.getMsg());
} else {
// 4标记FileModel为已入库
for (String fileId : fileIdSet) {
try {
FileModel fileModel = FileCache.getCache().get(fileId);
if (fileModel != null) {
fileModel.setIsFullsearch(1);
fileDao.update(fileModel);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
for (String fileId : fileIdSet) {
try {
File targetFile = targetFileMap.get(fileId);
// 5删除tmp文件
if (targetFile != null && targetFile.exists()) {
targetFile.delete();
File parentFileValueDir = targetFile.getParentFile();// 四级存储获取名称为后三位的父文件夹
if (parentFileValueDir.list().length == 0) {
UtilFile.removeFile(parentFileValueDir);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void getCardData(CardService cardService, Map<String, File> targetFileMap, JSONArray docPathJA, String fileId, CardModel cardModel) {
JSONObject docInfo = new JSONObject();
if (cardModel != null) {
String cardName = cardModel.getCardName();
docInfo.put("cardName", cardName);
String cardContext = cardModel.getCardContext();
if (UtilString.isEmpty(cardContext) || cardModel.getId().equals(cardContext)) {
//查询正文
DCContext dc = new DCContext(null, DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_CARDCONTENT_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardModel.getId(), cardModel.getId());
cardContext = cardService.getCardContent(dc);
cardContext = KMSUtil.getPlainText(cardContext);
cardContext = KMSUtil.replaceText(cardContext);
}
docInfo.put("cardContent", cardContext);
} else {
docInfo.put("cardName", "");
docInfo.put("cardContent", "");
}
docInfo.put("documentPath", targetFileMap.get(fileId).getPath());
docPathJA.add(docInfo);
}
/**
* @Author hunter
* @Datetime 2020/11/11 18:47
* @Param
* @Return void
* @Description Todo-hul 创建知识简介的临时文件
**/
public void creatCardModelContentFile(CardCache cardCache, FileCache fileCache, Map<String, File> targetFileMap, JSONObject fileNames, CardService cardService) {
Iterator<CardModel> cardIterator = cardCache.iterator();
Iterator<FileModel> fileModelIterator = fileCache.iterator();
Map<String, CardModel> map = new HashMap<String, CardModel>();
while (cardIterator.hasNext()) {
CardModel cardModel = cardIterator.next();
List<Object> arrayList = new ArrayList<>();
if (fileModelIterator.hasNext()) {
while (fileModelIterator.hasNext()) {
FileModel fileModel = fileModelIterator.next();
String cardId = fileModel.getCardId();
arrayList.add(cardId);
}
}
if (arrayList.size() > 0) {
if (!arrayList.contains(cardModel.getId())) {
map.put(cardModel.getId(), cardModel);
}
} else {
map.put(cardModel.getId(), cardModel);
}
}
if (map.size() > 0) {
for (CardModel cardModel : map.values()) {
File targetFile = null;
String cardContext = cardModel.getCardContext();
OutputStream out = null;
if (cardModel.getIsPublished() == 1) {
if (UtilString.isEmpty(cardContext) || cardModel.getId().equals(cardContext)) {
//查询正文
DCContext dc = new DCContext(null, DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_CARDCONTENT_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardModel.getId(), cardModel.getId());
cardContext = cardService.getCardContent(dc);
cardContext = KMSUtil.getPlainText(cardContext);
cardContext = KMSUtil.replaceText(cardContext);
}
if (UtilString.isEmpty(cardContext)) {
return;
}
try {
String targetDir = AWSServerConf.getProperty("dc.path") + File.separator + KMSConstant.APP_ID + File.separator + "tmp" + File.separator + cardModel.getId() + File.separator + cardModel.getId() + File.separator;// groupValue为cardId fileValue为fileId(在搜索全文检索时使用)
File targetFileDir = new File(targetDir);
if (!targetFileDir.exists()) {
boolean mkdirs = targetFileDir.mkdirs();
}
String newFileName = KMSUtil.toDigestUTF8(cardModel.getCardName()) + ".doc";
targetFile = new File(targetDir + newFileName);// 名字不带版本号
if (!targetFile.exists()) {
targetFile.createNewFile();
}
byte bytes[] = new byte[512];
bytes = cardContext.getBytes();
out = new FileOutputStream(targetFile);
out.write(bytes);
targetFileMap.put(cardModel.getId(), targetFile);
fileNames.put(newFileName, newFileName);
} catch (IOException e) {
System.err.println("[" + cardModel.getCreateUser() + "]创建的知识[" + cardModel.getCardName() + "],知识简介部分入库全文检索时发生错误");
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,378 @@
package com.actionsoft.apps.kms.job;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.io.IOUtils;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.cache.FileCache;
import com.actionsoft.apps.kms.dao.CardDao;
import com.actionsoft.apps.kms.dao.FileDao;
import com.actionsoft.apps.kms.model.CardModel;
import com.actionsoft.apps.kms.model.FileModel;
import com.actionsoft.apps.kms.service.CardService;
import com.actionsoft.apps.kms.service.SearchService;
import com.actionsoft.apps.resource.AppContext;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.schedule.IJob;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.conf.server.AWSServerConf;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.dc.DCProfileManager;
import com.actionsoft.bpms.server.fs.dc.DCUtil;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.bpms.util.UtilFile;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.actionsoft.sdk.local.api.AppAPI;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* 重新初始索引
*
* @author lishan
*/
public class ReIndexFullsearch implements IJob {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//将app_act_kms_file是否索引字段改成否
AppContext kmsApp = SDK.getAppAPI().getAppContext(KMSConstant.APP_ID);
String sql = "UPDATE APP_ACT_KMS_FILE SET ISFULLSEARCH = 0 ";
DBSql.update(sql);
sql = "UPDATE APP_ACT_KMS_CARD SET ISFULLSEARCH = 0 ";
DBSql.update(sql);
//重新加载缓存
FileCache.getCache().reload();
CardCache.getCache().reload();
//删除索引
SearchService searchService = new SearchService();
System.err.println("删除KMS全部索引");
searchService.deleteAllIndex();
//重新建立索引
FileCache fileCache = FileCache.getCache();
CardCache cardCache = CardCache.getCache();
CardService cardService = new CardService();
//知识卡片入库
Iterator<CardModel> cardIterator = cardCache.iterator();
CardDao cardDao = new CardDao();
JSONArray contents = new JSONArray();
List<CardModel> cardModelList = new ArrayList<CardModel>();
while (cardIterator.hasNext()) {
CardModel cardModel = cardIterator.next();
if (cardModel.getIsPublished() == 1 && cardModel.getIsFullSearch() == 0) {
cardModelList.add(cardModel);
JSONObject json = new JSONObject();
String cardContext = cardModel.getCardContext();
if (UtilString.isEmpty(cardContext) || cardModel.getId().equals(cardContext)) {
//查询正文
DCContext dc = new DCContext(null, DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_CARDCONTENT_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardModel.getId(), cardModel.getId());
cardContext = cardService.getCardContent(dc);
cardContext = KMSUtil.getPlainText(cardContext);
cardContext = KMSUtil.replaceText(cardContext);
}
json.put("documentId", cardModel.getId());
json.put("content", "");//信息附件
json.put("abstract", cardContext);//信息摘要
json.put("title", cardModel.getCardName());//信息标题
json.put("createTime", UtilDate.datetimeFormat(cardModel.getCreateTime()));
contents.add(json);
}
}
String aslp = "aslp://" + KMSConstant.APP_FULLSEARCH + "/createIndexesByContent";
Map<String, Object> params = new HashMap<String, Object>();
params.put("index", KMSConstant.APP_KMS_FULLSEARCH_INDEX_CARD);
params.put("type", KMSConstant.APP_KMS_FULLSEARCH_TYPE_CARD);
params.put("contents", contents);
AppAPI appAPI = SDK.getAppAPI();
ResponseObject resultRO = appAPI.callASLP(appAPI.getAppContext(KMSConstant.APP_ID), aslp, params);
if (!resultRO.isOk()) {
System.err.println("入库知识卡片时发生错误:" + resultRO.getMsg());
SDK.getAppAPI().info(kmsApp, "---------入库全文检索时发生错误:" + resultRO.getMsg() + "---------");
} else {
for (CardModel cardModel : cardModelList) {
cardModel.setIsFullSearch(1);
cardDao.update(cardModel);
}
}
Iterator<FileModel> fileIterator = fileCache.iterator();
// key:fileId File:解密后的文件
Map<String, File> targetFileMap = new HashMap<>();
JSONObject fileNames = new JSONObject();
while (fileIterator.hasNext()) {
FileModel fileModel = fileIterator.next();
if (fileModel.getIsFullsearch() == 0 && fileModel.getFileState() == 1) {// 未入库的文件
CardModel cardModel = cardCache.get(fileModel.getCardId());
if (cardModel != null && cardModel.getIsPublished() == 1) {// 已发布的知识
File targetFile = null;
try {
/* 开始入库操作 */
// 1构建文件DC
DCContext dcContext = new DCContext(UserContext.fromUID("admin"), DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardModel.getId(), KMSUtil.getFileNameOfVersion(fileModel.getFileName(), fileModel.getFileVer()));
// 2解密到tmp目录
String targetDir = AWSServerConf.getProperty("dc.path") + File.separator + KMSConstant.APP_ID + File.separator + "tmp" + File.separator + cardModel.getId() + File.separator + fileModel.getId() + File.separator;// groupValue为cardId fileValue为fileId(在搜索全文检索时使用)
File targetFileDir = new File(targetDir);
if (!targetFileDir.exists()) {
targetFileDir.mkdirs();
}
String newFileName = KMSUtil.toDigestUTF8(fileModel.getFileName()) + "." + fileModel.getFileName().substring(fileModel.getFileName().lastIndexOf(".") + 1);
targetFile = new File(targetDir + newFileName);// 名字不带版本号
if (!targetFile.exists()) {
targetFile.createNewFile();
}
OutputStream out = new FileOutputStream(targetFile);
InputStream in = DCUtil.decryptFile(dcContext);
try {
IOUtils.copy(in, out);
in.close();
out.close();
} finally {
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(out);
}
targetFileMap.put(fileModel.getId(), targetFile);
fileNames.put(newFileName, fileModel.getFileName());
} catch (Exception e) {
System.err.println("[" + fileModel.getCreateUser() + "]的文件[" + fileModel.getFileName() + "]入库全文检索时发生错误");
System.err.println("[知识ID" + cardModel.getId() + "] [文件版本:" + fileModel.getFileVer() + "]");
e.printStackTrace();
} catch (Error e) {
System.err.println("[" + fileModel.getCreateUser() + "]的文件[" + fileModel.getFileName() + "]入库全文检索时发生错误");
System.err.println("[知识ID" + cardModel.getId() + "] [文件版本:" + fileModel.getFileVer() + "]");
e.printStackTrace();
}
}
}
}
creatCardModelContentFile(cardCache, fileCache, targetFileMap, fileNames, cardService);
try {
Set<String> fileIdSet = targetFileMap.keySet();
if (fileIdSet.size() > 0) {
FileDao fileDao = new FileDao();
JSONArray docPathJA = new JSONArray();
for (String fileId : fileIdSet) {
FileModel fileModel = fileCache.get(fileId);
CardModel cardModel = null;
if (fileModel != null) {
cardModel = cardCache.get(fileModel.getCardId());
} else {
cardModel = cardCache.get(fileId);
}
getCardData(cardService, targetFileMap, docPathJA, fileId, cardModel);
}
// 3入库全文检索
System.err.println("KMS全库初始化开始...");
SDK.getAppAPI().info(kmsApp, "---------KMS全库初始化开始---------");
aslp = "aslp://" + KMSConstant.APP_FULLSEARCH + "/createIndexesByFile";
Map<String, Object> params1 = new HashMap<String, Object>();
params1.put("index", KMSConstant.APP_KMS_FULLSEARCH_INDEX);
params1.put("type", KMSConstant.APP_KMS_FULLSEARCH_TYPE);
params1.put("documentsPath", docPathJA.toString());
params1.put("fileNames", fileNames.toString());
resultRO = appAPI.callASLP(appAPI.getAppContext(KMSConstant.APP_ID), aslp, params1);
if (!resultRO.isOk()) {
System.err.println("入库全文检索时发生错误:" + resultRO.getMsg());
SDK.getAppAPI().info(kmsApp, "---------入库全文检索时发生错误:" + resultRO.getMsg() + "---------");
} else {
System.err.println("KMS全库初始化完成...");
SDK.getAppAPI().info(kmsApp, "---------KMS全库初始化完成---------");
// 4标记FileModel为已入库
for (String fileId : fileIdSet) {
try {
FileModel fileModel = FileCache.getCache().get(fileId);
if (fileModel != null) {
fileModel.setIsFullsearch(1);
fileDao.update(fileModel);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
for (String fileId : fileIdSet) {
try {
File targetFile = targetFileMap.get(fileId);
// 5删除tmp文件
if (targetFile != null && targetFile.exists()) {
targetFile.delete();
File parentFileValueDir = targetFile.getParentFile();// 四级存储获取名称为后三位的父文件夹
if (parentFileValueDir.list().length == 0) {
UtilFile.removeFile(parentFileValueDir);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void getCardData(CardService cardService, Map<String, File> targetFileMap, JSONArray docPathJA, String fileId, CardModel cardModel) {
JSONObject docInfo = new JSONObject();
if (cardModel != null) {
String cardName = cardModel.getCardName();
docInfo.put("cardName", cardName);
String cardContext = cardModel.getCardContext();
if (UtilString.isEmpty(cardContext) || cardModel.getId().equals(cardContext)) {
//查询正文
DCContext dc = new DCContext(null, DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_CARDCONTENT_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardModel.getId(), cardModel.getId());
cardContext = cardService.getCardContent(dc);
cardContext = KMSUtil.getPlainText(cardContext);
cardContext = KMSUtil.replaceText(cardContext);
}
docInfo.put("cardContent", cardContext);
} else {
docInfo.put("cardName", "");
docInfo.put("cardContent", "");
}
docInfo.put("documentPath", targetFileMap.get(fileId).getPath());
docPathJA.add(docInfo);
}
/**
* @Author hunter
* @Datetime 2020/11/11 18:47
* @Param
* @Return void
* @Description Todo-hul 创建知识简介的临时文件
**/
public void creatCardModelContentFile(CardCache cardCache, FileCache fileCache, Map<String, File> targetFileMap, JSONObject fileNames, CardService cardService) {
Iterator<CardModel> cardIterator = cardCache.iterator();
Iterator<FileModel> fileModelIterator = fileCache.iterator();
Map<String, CardModel> map = new HashMap<String, CardModel>();
while (cardIterator.hasNext()) {
CardModel cardModel = cardIterator.next();
List<Object> arrayList = new ArrayList<>();
if (fileModelIterator.hasNext()) {
while (fileModelIterator.hasNext()) {
FileModel fileModel = fileModelIterator.next();
String cardId = fileModel.getCardId();
arrayList.add(cardId);
}
}
if (arrayList.size() > 0) {
if (!arrayList.contains(cardModel.getId())) {
map.put(cardModel.getId(), cardModel);
}
} else {
map.put(cardModel.getId(), cardModel);
}
}
if (map.size() > 0) {
for (CardModel cardModel : map.values()) {
File targetFile = null;
String cardContext = cardModel.getCardContext();
OutputStream out = null;
if (cardModel.getIsPublished() == 1) {
if (UtilString.isEmpty(cardContext) || cardModel.getId().equals(cardContext)) {
//查询正文
DCContext dc = new DCContext(null, DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_CARDCONTENT_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardModel.getId(), cardModel.getId());
cardContext = cardService.getCardContent(dc);
cardContext = KMSUtil.getPlainText(cardContext);
cardContext = KMSUtil.replaceText(cardContext);
}
if (UtilString.isEmpty(cardContext)) {
return;
}
try {
String targetDir = AWSServerConf.getProperty("dc.path") + File.separator + KMSConstant.APP_ID + File.separator + "tmp" + File.separator + cardModel.getId() + File.separator + cardModel.getId() + File.separator;// groupValue为cardId fileValue为fileId(在搜索全文检索时使用)
File targetFileDir = new File(targetDir);
if (!targetFileDir.exists()) {
boolean mkdirs = targetFileDir.mkdirs();
}
String newFileName = KMSUtil.toDigestUTF8(cardModel.getCardName()) + ".doc";
targetFile = new File(targetDir + newFileName);// 名字不带版本号
if (!targetFile.exists()) {
targetFile.createNewFile();
}
byte bytes[] = new byte[512];
bytes = cardContext.getBytes();
out = new FileOutputStream(targetFile);
out.write(bytes);
targetFileMap.put(cardModel.getId(), targetFile);
fileNames.put(newFileName, newFileName);
} catch (IOException e) {
System.err.println("[" + cardModel.getCreateUser() + "]创建的知识[" + cardModel.getCardName() + "],知识简介部分入库全文检索时发生错误");
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
}
public void notFileFullsearch(AppContext kmsApp) {
CardCache cardCache = CardCache.getCache();
CardService cardService = new CardService();
Iterator<CardModel> iterator = cardCache.iterator();
JSONArray docPathJA = new JSONArray();
AppAPI appAPI = SDK.getAppAPI();
while (iterator.hasNext()) {
CardModel cardModel = iterator.next();
JSONObject docInfo = new JSONObject();
if (cardModel != null && cardModel.getIsPublished() == 1) {
String cardName = cardModel.getCardName();
docInfo.put("cardName", cardName);
String cardContext = cardModel.getCardContext();
if (UtilString.isEmpty(cardContext) || cardModel.getId().equals(cardContext)) {
//查询正文
DCContext dc = new DCContext(null, DCProfileManager.getDCProfile(KMSConstant.APP_ID, KMSConstant.DOC_CARDCONTENT_REPOSITORY_NAME), KMSConstant.APP_ID, cardModel.getCreateUser(), cardModel.getId(), cardModel.getId());
cardContext = cardService.getCardContent(dc);
cardContext = KMSUtil.getPlainText(cardContext);
cardContext = KMSUtil.replaceText(cardContext);
}
docInfo.put("cardContent", cardContext);
} else {
docInfo.put("cardName", "");
docInfo.put("cardContent", "");
}
docInfo.put("documentPath", "");
docPathJA.add(docInfo);
System.err.println("KMS全库初正文始化开始...");
SDK.getAppAPI().info(kmsApp, "---------KMS全库正文初始化开始---------");
String aslp = "aslp://" + KMSConstant.APP_FULLSEARCH + "/createIndexesByFile";
Map<String, Object> params1 = new HashMap<String, Object>();
params1.put("index", KMSConstant.APP_KMS_FULLSEARCH_INDEX);
params1.put("type", KMSConstant.APP_KMS_FULLSEARCH_TYPE);
params1.put("documentsPath", docPathJA.toString());
params1.put("fileNames", "");
ResponseObject resultRO = appAPI.callASLP(appAPI.getAppContext(KMSConstant.APP_ID), aslp, params1);
if (!resultRO.isOk()) {
System.err.println("正文入库全文检索时发生错误:" + resultRO.getMsg());
SDK.getAppAPI().info(kmsApp, "---------正文入库全文检索时发生错误:" + resultRO.getMsg() + "---------");
} else {
System.err.println("KMS全库正文初始化完成...");
SDK.getAppAPI().info(kmsApp, "---------KMS全库正文初始化完成---------");
}
}
}
}

View File

@ -0,0 +1,40 @@
package com.actionsoft.apps.kms.job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.actionsoft.apps.kms.cache.CardCache;
import com.actionsoft.apps.kms.cache.DimensionCache;
import com.actionsoft.apps.kms.cache.FileCache;
import com.actionsoft.apps.kms.cache.HotspotCache;
import com.actionsoft.apps.kms.cache.MetaAttrCache;
import com.actionsoft.apps.kms.cache.MetaDataCache;
import com.actionsoft.apps.kms.cache.MetaSchemaCache;
import com.actionsoft.apps.kms.cache.OptCache;
import com.actionsoft.apps.kms.cache.PublishCache;
import com.actionsoft.apps.kms.cache.VersionCache;
import com.actionsoft.bpms.schedule.IJob;
/**
* 同步将数据库和缓存数据库操作使用了事务预防某些异常导致的数据库和缓存不同步
*
* @author wangshibao
*
*/
public class ReloadCache implements IJob {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
CardCache.getCache().reload();
DimensionCache.getCache().reload();
PublishCache.getCache().reload();
FileCache.getCache().reload();
HotspotCache.getCache().reload();
MetaSchemaCache.getCache().reload();
MetaAttrCache.getCache().reload();
MetaDataCache.getCache().reload();
OptCache.getCache().reload();
VersionCache.getCache().reload();
}
}

View File

@ -0,0 +1,209 @@
package com.actionsoft.apps.kms.model;
import java.sql.Date;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 知识
*
* @author wangshibao
*/
public class CardModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String CARDNAME = "CARDNAME";
public static final String CARDTYPE = "CARDTYPE";
public static final String CREATEUSER = "CREATEUSER";
public static final String CREATETIME = "CREATETIME";
public static final String LASTUPDATE = "LASTUPDATE";
public static final String READCOUNT = "READCOUNT";
public static final String ONLINELEVEL = "ONLINELEVEL";
public static final String SECURITYLEVEL = "SECURITYLEVEL";
public static final String ISPUBLISHED = "ISPUBLISHED";
public static final String VALIDDATE = "VALIDDATE";
public static final String ISCOMMENT = "ISCOMMENT";
public static final String ISRATE = "ISRATE";
public static final String CARDCONTEXT = "CARDCONTEXT";
public static final String ISFULLSEARCH = "ISFULLSEARCH";
public static final String EXTERNALURL = "EXTERNALURL";
public static final String EXTPARAMS = "EXTPARAMS";
private String id;
private String cardName;
private int cardType;
private String createUser;
private Timestamp createTime;
private Timestamp lastUpdate;
private long readCount;
private int onlineLevel;
private int securityLevel;
private int isPublished;
private int isFullSearch;
private Date validDate;
private int isComment;
private int isRate;
private String externalUrl;
private String extParams;
private int commentCount;// 内存使用不存入数据库
public double getRateScore() {
return rateScore;
}
public void setRateScore(double rateScore) {
this.rateScore = rateScore;
}
private double rateScore;// 内存使用不存入数据库
public String getCardContext() {
return cardContext;
}
public void setCardContext(String cardContext) {
this.cardContext = cardContext;
}
private String cardContext;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public int getCardType() {
return cardType;
}
public void setCardType(int cardType) {
this.cardType = cardType;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public Timestamp getCreateTime() {
return createTime;
}
public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
}
public Timestamp getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(Timestamp lastUpdate) {
this.lastUpdate = lastUpdate;
}
public long getReadCount() {
return readCount;
}
public void setReadCount(long readCount) {
this.readCount = readCount;
}
public int getOnlineLevel() {
return onlineLevel;
}
public void setOnlineLevel(int onlineLevel) {
this.onlineLevel = onlineLevel;
}
public int getSecurityLevel() {
return securityLevel;
}
public void setSecurityLevel(int securityLevel) {
this.securityLevel = securityLevel;
}
public int getIsPublished() {
return isPublished;
}
public void setIsPublished(int isPublished) {
this.isPublished = isPublished;
}
public int getIsFullSearch() {
return isFullSearch;
}
public void setIsFullSearch(int isFullSearch) {
this.isFullSearch = isFullSearch;
}
public Date getValidDate() {
return validDate;
}
public void setValidDate(Date validDate) {
this.validDate = validDate;
}
public int getIsComment() {
return isComment;
}
public void setIsComment(int isComment) {
this.isComment = isComment;
}
public int getCommentCount() {
return commentCount;
}
public void setCommentCount(int commentCount) {
this.commentCount = commentCount;
}
public int getIsRate() {
return isRate;
}
public void setIsRate(int isRate) {
this.isRate = isRate;
}
public String getExternalUrl() {
return externalUrl;
}
public void setExternalUrl(String externalUrl) {
this.externalUrl = externalUrl;
}
public String getExtParams() {
return extParams;
}
public void setExtParams(String extParams) {
this.extParams = extParams;
}
}

View File

@ -0,0 +1,173 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 维度
*
* 将String类的null值处理为""
*
* @author wangshibao
*/
public class DimensionModel extends ModelBean implements IModelBean, Cloneable {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String DIMENSIONNAME = "DIMENSIONNAME";
public static final String PARENTID = "PARENTID";
public static final String SHOWTYPE = "SHOWTYPE";
public static final String ISEXAMINE = "ISEXAMINE";
public static final String MEMO = "MEMO";
public static final String CREATEUSER = "CREATEUSER";
public static final String CREATETIME = "CREATETIME";
public static final String LASTUPDATE = "LASTUPDATE";
public static final String HOTSPOTDEFID = "HOTSPOTDEFID";
public static final String ISENABLED = "ISENABLED";
public static final String ORDERINDEX = "ORDERINDEX";
private String id;
private String dimensionName;
private String parentId;
private int showType;
private int isExamine;
private String memo;
private String createUser;
private Timestamp createTime;
private Timestamp lastUpdate;
private String hotspotDefId;
private int isEnabled;
private int orderIndex;
private boolean hasPerm = true;// 是否有权限仅逻辑上使用不存入数据库(默认有权限)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDimensionName() {
if (dimensionName == null) {
dimensionName = "";
}
return dimensionName;
}
public void setDimensionName(String dimensionName) {
this.dimensionName = dimensionName;
}
public String getParentId() {
if (parentId == null) {
parentId = "";
}
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public int getShowType() {
return showType;
}
public void setShowType(int showType) {
this.showType = showType;
}
public int getIsExamine() {
return isExamine;
}
public void setIsExamine(int isExamine) {
this.isExamine = isExamine;
}
public String getMemo() {
if (memo == null) {
memo = "";
}
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
public String getCreateUser() {
if (createUser == null) {
createUser = "";
}
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public Timestamp getCreateTime() {
return createTime;
}
public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
}
public Timestamp getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(Timestamp lastUpdate) {
this.lastUpdate = lastUpdate;
}
public String getHotspotDefId() {
if (hotspotDefId == null) {
hotspotDefId = "";
}
return hotspotDefId;
}
public void setHotspotDefId(String hotspotDefId) {
this.hotspotDefId = hotspotDefId;
}
public int getIsEnabled() {
return isEnabled;
}
public void setIsEnabled(int isEnabled) {
this.isEnabled = isEnabled;
}
public int getOrderIndex() {
return orderIndex;
}
public void setOrderIndex(int orderIndex) {
this.orderIndex = orderIndex;
}
public boolean isHasPerm() {
return hasPerm;
}
public void setHasPerm(boolean hasPerm) {
this.hasPerm = hasPerm;
}
@Override
public DimensionModel clone() {
try {
return (DimensionModel) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
}

View File

@ -0,0 +1,119 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 知识-文件
*
* @author wangshibao
*/
public class FileModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String CARDID = "CARDID";
public static final String FILENAME = "FILENAME";
public static final String FILEVER = "FILEVER";
public static final String FILESIZE = "FILESIZE";
public static final String FILESTATE = "FILESTATE";
public static final String CREATETIME = "CREATETIME";
public static final String CREATEUSER = "CREATEUSER";
public static final String ISFULLSEARCH = "ISFULLSEARCH";//0未入库 1已入库 2无需入库比如表单类虚拟文件
public static final String SECURITYLEVEL = "SECURITYLEVEL";//0未入库 1已入库 2无需入库比如表单类虚拟文件
private String id;
private String cardId;
private String fileName;
private String fileVer;
private long fileSize;
private int fileState;
private Timestamp createTime;
private String createUser;
private int isFullsearch;
private int securityLevel;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileVer() {
return fileVer;
}
public void setFileVer(String fileVer) {
this.fileVer = fileVer;
}
public long getFileSize() {
return fileSize;
}
public void setFileSize(long fileSize) {
this.fileSize = fileSize;
}
public int getFileState() {
return fileState;
}
public void setFileState(int fileState) {
this.fileState = fileState;
}
public Timestamp getCreateTime() {
return createTime;
}
public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public int getIsFullsearch() {
return isFullsearch;
}
public void setIsFullsearch(int isFullsearch) {
this.isFullsearch = isFullsearch;
}
public int getSecurityLevel() {
return securityLevel;
}
public void setSecurityLevel(int securityLevel) {
this.securityLevel = securityLevel;
}
}

View File

@ -0,0 +1,78 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 知识地图-定义
*
* @author wangshibao
*/
public class HotspotDefModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String HOTSPOTNAME = "HOTSPOTNAME";
public static final String HOTSPOTMETAID = "HOTSPOTMETAID";
public static final String CREATETIME = "CREATETIME";
public static final String CREATEUSER = "CREATEUSER";
public static final String MEMO = "MEMO";
private String id;
private String hotspotName;
private String hotspotMetaId;
private Timestamp createTime;
private String createUser;
private String memo;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getHotspotName() {
return hotspotName;
}
public void setHotspotName(String hotspotName) {
this.hotspotName = hotspotName;
}
public String getHotspotMetaId() {
return hotspotMetaId;
}
public void setHotspotMetaId(String hotspotMetaId) {
this.hotspotMetaId = hotspotMetaId;
}
public Timestamp getCreateTime() {
return createTime;
}
public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
}

View File

@ -0,0 +1,86 @@
package com.actionsoft.apps.kms.model;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 流程
*
* @author wangshibao
*/
public class HotspotModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String HOTSPOTDEFID = "HOTSPOTDEFID";
public static final String SHAPEID = "SHAPEID";
public static final String DIMENSIONID = "DIMENSIONID";
public static final String BINDTYPE = "BINDTYPE";
public static final String LINKURL = "LINKURL";
public static final String TARGET = "TARGET";
private String id;
private String hotspotDefId;
private String shapeId;
private String dimensionId;// todo 重构成sourceId因为此id在bindType为1的时候代表维度idbindType为2的时候代表知识id
private int bindType;
private String linkURL;
private String target;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getHotspotDefId() {
return hotspotDefId;
}
public void setHotspotDefId(String hotspotDefId) {
this.hotspotDefId = hotspotDefId;
}
public String getShapeId() {
return shapeId;
}
public void setShapeId(String shapeId) {
this.shapeId = shapeId;
}
public String getDimensionId() {
return dimensionId;
}
public void setDimensionId(String dimensionId) {
this.dimensionId = dimensionId;
}
public int getBindType() {
return bindType;
}
public void setBindType(int bindType) {
this.bindType = bindType;
}
public String getLinkURL() {
return linkURL;
}
public void setLinkURL(String linkURL) {
this.linkURL = linkURL;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
}

View File

@ -0,0 +1,100 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 日志
*
* @author wangshibao
*/
public class LogModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String CARDID = "CARDID";
public static final String FILEID = "FILEID";
public static final String ACCESSUSER = "ACCESSUSER";
public static final String ACCESSTIME = "ACCESSTIME";
public static final String IPADDRESS = "IPADDRESS";
public static final String LOGTYPE = "LOGTYPE";
public static final String LOGINFO = "LOGINFO";
private String id;
private String cardId;
private String fileId;
private String accessUser;
private Timestamp accessTime;
private String ipAddress;
private int logType;
private String logInfo;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getFileId() {
return fileId;
}
public void setFileId(String fileId) {
this.fileId = fileId;
}
public String getAccessUser() {
return accessUser;
}
public void setAccessUser(String accessUser) {
this.accessUser = accessUser;
}
public Timestamp getAccessTime() {
return accessTime;
}
public void setAccessTime(Timestamp accessTime) {
this.accessTime = accessTime;
}
public String getIpAddress() {
return ipAddress;
}
public void setIpAddress(String ipAddress) {
this.ipAddress = ipAddress;
}
public int getLogType() {
return logType;
}
public void setLogType(int logType) {
this.logType = logType;
}
public String getLogInfo() {
if (logInfo == null) {
return "";
}
return logInfo;
}
public void setLogInfo(String logInfo) {
this.logInfo = logInfo;
}
}

View File

@ -0,0 +1,67 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 元数据-属性
*
* @author wangshibao
*/
public class MetaAttrModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String SCHEMAID = "SCHEMAID";
public static final String ATTRTITLE = "ATTRTITLE";
public static final String CREATETIME = "CREATETIME";
public static final String CREATEUSER = "CREATEUSER";
private String id;
private String schemaId;
private String attrTitle;
private Timestamp createTime;
private String createUser;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSchemaId() {
return schemaId;
}
public void setSchemaId(String schemaId) {
this.schemaId = schemaId;
}
public String getAttrTitle() {
return attrTitle;
}
public void setAttrTitle(String attrTitle) {
this.attrTitle = attrTitle;
}
public Timestamp getCreateTime() {
return createTime;
}
public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
}

View File

@ -0,0 +1,87 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 元数据-数据
* @author wangshibao
*/
public class MetaDataModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String CARDID = "CARDID";
public static final String SCHEMAID = "SCHEMAID";
public static final String ATTRID = "ATTRID";
public static final String CREATETIME = "CREATETIME";
public static final String CREATEUSER = "CREATEUSER";
public static final String METATEXT = "METATEXT";
private String id;
private String cardId;
private String schemaId;
private String attrId;
private Timestamp createTime;
private String createUser;
private String metaText;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getSchemaId() {
return schemaId;
}
public void setSchemaId(String schemaId) {
this.schemaId = schemaId;
}
public String getAttrId() {
return attrId;
}
public void setAttrId(String attrId) {
this.attrId = attrId;
}
public Timestamp getCreateTime() {
return createTime;
}
public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public String getMetaText() {
return metaText;
}
public void setMetaText(String metaText) {
this.metaText = metaText;
}
}

View File

@ -0,0 +1,118 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 元数据
*
* @author wangshibao
*/
public class MetaSchemaModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String SCHEMATITLE = "SCHEMATITLE";
public static final String SCHEMASHOWTYPE = "SCHEMASHOWTYPE";
public static final String SCHEMADESC = "SCHEMADESC";
public static final String CREATETIME = "CREATETIME";
public static final String LASTUPDATE = "LASTUPDATE";
public static final String CREATEUSER = "CREATEUSER";
public static final String ISNULLABLE = "ISNULLABLE";
public static final String ISSEARCH = "ISSEARCH";
public static final String ORDERINDEX = "ORDERINDEX";
private String id;
private String schemaTitle;
private int schemaShowtype;
private String schemaDesc;
private Timestamp createTime;
private Timestamp lastUpdate;
private String createUser;
private int isNullable;
private int isSearch;
private int orderIndex;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSchemaTitle() {
return schemaTitle;
}
public void setSchemaTitle(String schemaTitle) {
this.schemaTitle = schemaTitle;
}
public int getSchemaShowtype() {
return schemaShowtype;
}
public void setSchemaShowtype(int schemaShowtype) {
this.schemaShowtype = schemaShowtype;
}
public String getSchemaDesc() {
return schemaDesc;
}
public void setSchemaDesc(String schemaDesc) {
this.schemaDesc = schemaDesc;
}
public Timestamp getCreateTime() {
return createTime;
}
public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
}
public Timestamp getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(Timestamp lastUpdate) {
this.lastUpdate = lastUpdate;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public int getIsNullable() {
return isNullable;
}
public void setIsNullable(int isNullable) {
this.isNullable = isNullable;
}
public int getIsSearch() {
return isSearch;
}
public void setIsSearch(int isSearch) {
this.isSearch = isSearch;
}
public int getOrderIndex() {
return orderIndex;
}
public void setOrderIndex(int orderIndex) {
this.orderIndex = orderIndex;
}
}

View File

@ -0,0 +1,73 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
public class OptModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String CARDID = "CARDID";
public static final String OPTUSER = "OPTUSER";
public static final String OPTTYPE = "OPTTYPE";
public static final String OPTTIME = "OPTTIME";
public static final String OPTCONTENT = "OPTCONTENT";
private String id;
private String cardId;
private String optUser;
private int optType;
private Timestamp optTime;
private String optContent;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getOptUser() {
return optUser;
}
public void setOptUser(String optUser) {
this.optUser = optUser;
}
public int getOptType() {
return optType;
}
public void setOptType(int optType) {
this.optType = optType;
}
public Timestamp getOptTime() {
return optTime;
}
public void setOptTime(Timestamp optTime) {
this.optTime = optTime;
}
public String getOptContent() {
return optContent;
}
public void setOptContent(String optContent) {
this.optContent = optContent;
}
}

View File

@ -0,0 +1,118 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 发布
*
* @author wangshibao
*/
public class PublishModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String CARDID = "CARDID";
public static final String DIMENSIONID = "DIMENSIONID";
public static final String PUBLISHUSER = "PUBLISHUSER";
public static final String PUBLISHTIME = "PUBLISHTIME";
public static final String TAG = "TAG";
public static final String MEMO = "MEMO";
public static final String EXAMINEINFO = "EXAMINEINFO";
private String id;
private String cardId;
private String dimensionId;
private String publishUser;
private Timestamp publishTime;
private String tag;
private String memo;
private String examineInfo;
// model
private CardModel cardModel;
private DimensionModel dimensionModel;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getDimensionId() {
return dimensionId;
}
public void setDimensionId(String dimensionId) {
this.dimensionId = dimensionId;
}
public String getPublishUser() {
return publishUser;
}
public void setPublishUser(String publishUser) {
this.publishUser = publishUser;
}
public Timestamp getPublishTime() {
return publishTime;
}
public void setPublishTime(Timestamp publishTime) {
this.publishTime = publishTime;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
public CardModel getCardModel() {
return cardModel;
}
public void setCardModel(CardModel cardModel) {
this.cardModel = cardModel;
}
public DimensionModel getDimensionModel() {
return dimensionModel;
}
public void setDimensionModel(DimensionModel dimensionModel) {
this.dimensionModel = dimensionModel;
}
public String getExamineInfo() {
return examineInfo;
}
public void setExamineInfo(String examineInfo) {
this.examineInfo = examineInfo;
}
}

View File

@ -0,0 +1,108 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 元数据
*
* @author wangshibao
*/
public class SchemaModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String SCHEMATITLE = "SCHEMATITLE";
public static final String SCHEMASHOWTYPE = "SCHEMASHOWTYPE";
public static final String SCHEMADESC = "SCHEMADESC";
public static final String CREATETIME = "CREATETIME";
public static final String LASTUPDATE = "LASTUPDATE";
public static final String CREATEUSER = "CREATEUSER";
public static final String ISNULLABLE = "ISNULLABLE";
public static final String ISSEARCH = "ISSEARCH";
private String id;
private String schemaTitle;
private int schemaShowtype;
private String schemaDesc;
private Timestamp createTime;
private Timestamp lastUpdate;
private String createUser;
private int isNullable;
private int isSearch;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSchemaTitle() {
return schemaTitle;
}
public void setSchemaTitle(String schemaTitle) {
this.schemaTitle = schemaTitle;
}
public int getSchemaShowtype() {
return schemaShowtype;
}
public void setSchemaShowtype(int schemaShowtype) {
this.schemaShowtype = schemaShowtype;
}
public String getSchemaDesc() {
return schemaDesc;
}
public void setSchemaDesc(String schemaDesc) {
this.schemaDesc = schemaDesc;
}
public Timestamp getCreateTime() {
return createTime;
}
public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
}
public Timestamp getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(Timestamp lastUpdate) {
this.lastUpdate = lastUpdate;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public int getIsNullable() {
return isNullable;
}
public void setIsNullable(int isNullable) {
this.isNullable = isNullable;
}
public int getIsSearch() {
return isSearch;
}
public void setIsSearch(int isSearch) {
this.isSearch = isSearch;
}
}

View File

@ -0,0 +1,68 @@
package com.actionsoft.apps.kms.model;
import java.sql.Timestamp;
import com.actionsoft.bpms.commons.mvc.model.IModelBean;
import com.actionsoft.bpms.commons.mvc.model.ModelBean;
/**
* 版本号
*
* @author wangshibao
*/
public class VersionModel extends ModelBean implements IModelBean {
private static final long serialVersionUID = 1L;
public static final String ID = "ID";
public static final String VERSIONNO = "VERSIONNO";
public static final String CREATETIME = "CREATETIME";
public static final String CREATEUSER = "CREATEUSER";
public static final String MEMO = "MEMO";
private String id;
private String versionNo;
private Timestamp createTime;
private String createUser;
private String memo;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getVersionNo() {
return versionNo;
}
public void setVersionNo(String versionNo) {
this.versionNo = versionNo;
}
public Timestamp getCreateTime() {
return createTime;
}
public void setCreateTime(Timestamp createTime) {
this.createTime = createTime;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
}

View File

@ -0,0 +1,38 @@
package com.actionsoft.apps.kms.pal;
import java.util.Timer;
public class CoEConstant {
public static final String APP_ID = "com.actionsoft.apps.coe.pal"; //App name
/**
* DC下资产库文件根目录
*/
public static final String REPOSITORY_ROOT_DIR = "workspace";
public static final String PROPERTY_CUSTOM_DEFINE_SCHEMA = "CUSTOM_DEFINE_SCHEMA"; //属性-是否允许用户自定义0不允许1允许
public static final String PROPERTY_DEFAULT_WSID = "DEFAULT_WSID"; //属性-默认的流程资产库Id
public static final String PROPERTY_PLDEPT_LAYER = "PLDEPT_LAYER"; //属性-流程责任部门组织级别
public static final String PROPERTY_RELATION_TYPE = "RELATION_TYPE"; //属性-责任人和责任部门关联方式
public static final String PROPERTY_SYS_AUTOSAVE = "SYS_AUTOSAVE"; //属性-流程自动保存
public static Timer timer1 = new Timer(); //用于清理设计器协作的同步消息
public static final Timer timer2 = new Timer(); //用于清理设计器出现复制的同步消息
// 收藏模型文件标识
public static final String COMMON_REPOSITORY_VERSIONID = "commonRepositoryVersionId";
public static final String APP_PROCESSLINK_ID = "com.actionsoft.apps.coe.pal.processlink";// 串联分析应用id
public static final String APP_OUTPUT_ID = "com.actionsoft.apps.coe.pal.output";// 报告生成器应用id
public static final String APP_OUTPUT_PR_ID = "com.actionsoft.apps.coe.pal.output.pr";// 流程手册应用id
public static final String APP_ONLINE_DOC_ID = "com.actionsoft.apps.addons.onlinedoc";// 预览应用id
public static final String APP_BATCH_ID = "com.actionsoft.apps.coe.pal.batch";// 流程批处理id
public static final String APP_SUB_PROCESS_ID = "com.actionsoft.apps.coe.method.process.subprocess"; // 端到端应用ID
}

Some files were not shown because too many files have changed in this diff Show More