pioneer
2 years ago
commit
c1d4edf13d
26 changed files with 2507 additions and 0 deletions
@ -0,0 +1,7 @@
|
||||
|
||||
# open-JSD-9885 |
||||
|
||||
JSD-9885 用户申请流程场景开发\ |
||||
免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ |
||||
仅作为开发者学习参考使用!禁止用于任何商业用途!\ |
||||
为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系【pioneer】处理。 |
Binary file not shown.
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<plugin> |
||||
<id>com.fr.plugin.cdia.v10</id> |
||||
<name><![CDATA[自定义提交数据和用户处理_EK]]></name> |
||||
<active>yes</active> |
||||
<version>2.3.5</version> |
||||
<env-version>10.0</env-version> |
||||
<jartime>2018-07-31</jartime> |
||||
<vendor>fr.open</vendor> |
||||
<description><![CDATA[自定义提交数据和用户处理]]></description> |
||||
<change-notes><![CDATA[ |
||||
[2022-10-06]JSD-11336管会系统接口调整<br/> |
||||
[2022-04-06]JSD-9885插件初始化<br/> |
||||
[2022-04-06]支持多人申请、自定义提交支持添加多个用户角色、审批流程回调第三方接口<br/> |
||||
OA创建流程、审批意见查询接口国产化。<br/> |
||||
自定义提交数据和用户处理。<br/> |
||||
]]></change-notes> |
||||
<main-package>com.fr.plugin.cdia</main-package> |
||||
<prefer-packages> |
||||
<prefer-package>com.fanruan.api</prefer-package> |
||||
</prefer-packages> |
||||
<lifecycle-monitor class="com.fr.plugin.cdia.PluginMonitor"/> |
||||
<extra-core> |
||||
<LocaleFinder class="com.fr.plugin.cdia.LocaleFinder"/> |
||||
<DBAccessProvider class="com.fr.plugin.cdia.ProcessDBAccess"/> |
||||
</extra-core> |
||||
<extra-decision> |
||||
<WebResourceProvider class="com.fr.plugin.cdia.JSCSSBridge"/> |
||||
<WebResourceProvider class="com.fr.plugin.cdia.JSCSSMainBridge"/> |
||||
<HttpHandlerProvider class="com.fr.plugin.cdia.ProcessHttpHandlerProvider"/> |
||||
<URLAliasProvider class="com.fr.plugin.cdia.ProcessURLAliasProvider"/> |
||||
</extra-decision> |
||||
<extra-designer> |
||||
<SubmitProvider class="com.fr.plugin.cdia.submit.SubmitUIBridge"/> |
||||
</extra-designer> |
||||
<function-recorder class="com.fr.plugin.cdia.web.WebResourceComponent"/> |
||||
</plugin> |
@ -0,0 +1,34 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: JSCSSBridge |
||||
* Author: |
||||
* Date: 2020/8/31 16:34 |
||||
*/ |
||||
package com.fr.plugin.cdia; |
||||
|
||||
import com.fr.decision.fun.impl.AbstractWebResourceProvider; |
||||
import com.fr.decision.web.UserComponent; |
||||
import com.fr.plugin.cdia.web.WebResourceComponent; |
||||
import com.fr.stable.fun.Authorize; |
||||
import com.fr.web.struct.Atom; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <平台组件定制JSCSSBridge> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
@Authorize(callSignKey = WebResourceComponent.PLUGIN_ID) |
||||
public class JSCSSBridge extends AbstractWebResourceProvider { |
||||
@Override |
||||
public Atom attach() { |
||||
return UserComponent.KEY; |
||||
} |
||||
|
||||
@Override |
||||
public Atom client() { |
||||
return WebResourceComponent.KEY; |
||||
} |
||||
} |
@ -0,0 +1,32 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: JSCSSMainBridge |
||||
* Author: |
||||
* Date: 2020/9/24 13:36 |
||||
*/ |
||||
package com.fr.plugin.cdia; |
||||
|
||||
import com.fr.decision.fun.impl.AbstractWebResourceProvider; |
||||
import com.fr.decision.web.MainComponent; |
||||
import com.fr.plugin.cdia.web.WebResourceComponent; |
||||
import com.fr.web.struct.Atom; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <平台组件定制> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class JSCSSMainBridge extends AbstractWebResourceProvider { |
||||
@Override |
||||
public Atom attach() { |
||||
return MainComponent.KEY; |
||||
} |
||||
|
||||
@Override |
||||
public Atom client() { |
||||
return WebResourceComponent.KEY; |
||||
} |
||||
} |
@ -0,0 +1,29 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: LocaleFinder |
||||
* Author: |
||||
* Date: 2020/8/31 22:19 |
||||
*/ |
||||
package com.fr.plugin.cdia; |
||||
|
||||
import com.fr.stable.fun.impl.AbstractLocaleFinder; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <LocaleFinder> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class LocaleFinder extends AbstractLocaleFinder { |
||||
@Override |
||||
public String find() { |
||||
return "com/fr/plugin/cdia/locale/lang"; |
||||
} |
||||
|
||||
@Override |
||||
public int currentAPILevel() { |
||||
return CURRENT_LEVEL; |
||||
} |
||||
} |
@ -0,0 +1,34 @@
|
||||
/* |
||||
* Copyright (C), 2018-2021 |
||||
* Project: starter |
||||
* FileName: PluginMonitor |
||||
* Author: |
||||
* Date: 2021/3/30 15:10 |
||||
*/ |
||||
package com.fr.plugin.cdia; |
||||
|
||||
import com.fr.plugin.context.PluginContext; |
||||
import com.fr.plugin.cdia.config.CdiaConfig; |
||||
import com.fr.plugin.observer.inner.AbstractPluginLifecycleMonitor; |
||||
|
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <PluginMonitor> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class PluginMonitor extends AbstractPluginLifecycleMonitor { |
||||
public PluginMonitor() { |
||||
} |
||||
|
||||
@Override |
||||
public void afterRun(PluginContext pluginContext) { |
||||
CdiaConfig.getInstance(); |
||||
} |
||||
|
||||
@Override |
||||
public void beforeStop(PluginContext pluginContext) { |
||||
} |
||||
} |
@ -0,0 +1,55 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: RoleGroupDBAccess |
||||
* Author: |
||||
* Date: 2020/6/4 11:48 |
||||
*/ |
||||
package com.fr.plugin.cdia; |
||||
|
||||
import com.fr.plugin.db.AbstractDBAccessProvider; |
||||
import com.fr.plugin.cdia.dao.ProcessAssignDao; |
||||
import com.fr.plugin.cdia.entity.ProcessAssignEntity; |
||||
import com.fr.stable.db.accessor.DBAccessor; |
||||
import com.fr.stable.db.dao.BaseDAO; |
||||
import com.fr.stable.db.dao.DAOProvider; |
||||
|
||||
/** |
||||
* 〈Function Description〉<br> |
||||
* 〈ProcessDBAccess〉 |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class ProcessDBAccess extends AbstractDBAccessProvider { |
||||
private static DBAccessor accessor; |
||||
|
||||
public ProcessDBAccess() { |
||||
} |
||||
|
||||
public static DBAccessor getAccessor() { |
||||
return accessor; |
||||
} |
||||
|
||||
@Override |
||||
public DAOProvider[] registerDAO() { |
||||
return new DAOProvider[]{ |
||||
new DAOProvider() { |
||||
@Override |
||||
public Class getEntityClass() { |
||||
return ProcessAssignEntity.class; |
||||
} |
||||
|
||||
@Override |
||||
public Class<? extends BaseDAO> getDAOClass() { |
||||
return ProcessAssignDao.class; |
||||
} |
||||
} |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
public void onDBAvailable(DBAccessor dbAccessor) { |
||||
accessor = dbAccessor; |
||||
} |
||||
} |
@ -0,0 +1,37 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: ProcessHttpHandlerProvider |
||||
* Author: |
||||
* Date: 2020/9/11 8:41 |
||||
*/ |
||||
package com.fr.plugin.cdia; |
||||
|
||||
import com.fr.decision.fun.impl.AbstractHttpHandlerProvider; |
||||
import com.fr.decision.fun.impl.BaseHttpHandler; |
||||
import com.fr.plugin.cdia.service.AssignServiceHandler; |
||||
import com.fr.plugin.cdia.service.QueryServiceHandler; |
||||
import com.fr.stable.fun.Authorize; |
||||
|
||||
import static com.fr.plugin.cdia.web.WebResourceComponent.PLUGIN_ID; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <ProcessHttpHandlerProvider> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
@Authorize(callSignKey = PLUGIN_ID) |
||||
public class ProcessHttpHandlerProvider extends AbstractHttpHandlerProvider { |
||||
public ProcessHttpHandlerProvider() { |
||||
} |
||||
|
||||
@Override |
||||
public BaseHttpHandler[] registerHandlers() { |
||||
return new BaseHttpHandler[]{ |
||||
new AssignServiceHandler(), |
||||
new QueryServiceHandler() |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,36 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: ProcessURLAliasProvider |
||||
* Author: |
||||
* Date: 2020/9/11 8:47 |
||||
*/ |
||||
package com.fr.plugin.cdia; |
||||
|
||||
import com.fr.decision.fun.impl.AbstractURLAliasProvider; |
||||
import com.fr.decision.webservice.url.alias.URLAlias; |
||||
import com.fr.decision.webservice.url.alias.URLAliasFactory; |
||||
|
||||
import static com.fr.plugin.cdia.service.AssignServiceHandler.API_ASSIGN_PROCESS; |
||||
import static com.fr.plugin.cdia.service.QueryServiceHandler.API_QUERY_PROCESS; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <ProcessURLAliasProvider> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class ProcessURLAliasProvider extends AbstractURLAliasProvider { |
||||
|
||||
public ProcessURLAliasProvider() { |
||||
} |
||||
|
||||
@Override |
||||
public URLAlias[] registerAlias() { |
||||
return new URLAlias[]{ |
||||
URLAliasFactory.createPluginAlias(API_ASSIGN_PROCESS, API_ASSIGN_PROCESS, true), |
||||
URLAliasFactory.createPluginAlias(API_QUERY_PROCESS, API_QUERY_PROCESS, true) |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,39 @@
|
||||
/* |
||||
* Copyright (C), 2018-2022 |
||||
* Project: starter |
||||
* FileName: ProcessAssignBean |
||||
* Author: xx |
||||
* Date: 2022/4/8 15:46 |
||||
*/ |
||||
package com.fr.plugin.cdia.bean; |
||||
|
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.cdia.entity.ProcessAssignEntity; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <ProcessAssignBean> |
||||
* |
||||
* @author xx |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class ProcessAssignBean { |
||||
private ProcessAssignEntity processAssignEntity; |
||||
private JSONObject paramsJSON; |
||||
|
||||
public ProcessAssignEntity getProcessAssignEntity() { |
||||
return processAssignEntity; |
||||
} |
||||
|
||||
public void setProcessAssignEntity(ProcessAssignEntity processAssignEntity) { |
||||
this.processAssignEntity = processAssignEntity; |
||||
} |
||||
|
||||
public JSONObject getParamsJSON() { |
||||
return paramsJSON; |
||||
} |
||||
|
||||
public void setParamsJSON(JSONObject paramsJSON) { |
||||
this.paramsJSON = paramsJSON; |
||||
} |
||||
} |
@ -0,0 +1,75 @@
|
||||
/* |
||||
* Copyright (C), 2018-2021 |
||||
* Project: starter |
||||
* FileName: CdiaConfig |
||||
* Author: |
||||
* Date: 2021/3/30 9:38 |
||||
*/ |
||||
package com.fr.plugin.cdia.config; |
||||
|
||||
import com.fr.config.*; |
||||
import com.fr.config.holder.Conf; |
||||
import com.fr.config.holder.factory.Holders; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <CdiaConfig> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
@Visualization(category = "Plugin-cdia_Group") |
||||
public class CdiaConfig extends DefaultConfiguration { |
||||
public static final String CREATE_PROCESS_DEFAULT = "http://xx:1000/api/v1/create/saveProcess"; |
||||
public static final String PROC_FORM_OP_INDEX_DEFAULT = "http://xx:9000/workflowService/api/v1/baseForm/findProcFormOpIndexUrl"; |
||||
public static final String PROC_NODE_DEFAULT = "http://xx:9000//odpsService/api/v1/formBase/findProcFormOpinion"; |
||||
public static final String ASSIGN_NMA_AUTH_URL = "http://xx:8001/rms/ws/autoAssignRoleAndDataAuthAndMdReportAuthService"; |
||||
private static volatile CdiaConfig config = null; |
||||
@Identifier(value = "createProcessUrl", name = "Plugin-cdia_Config_CreateProcessUrl", description = "Plugin-cdia_Config_CreateProcessUrl_Description", status = Status.SHOW) |
||||
private final Conf<String> createProcessUrl = Holders.simple(CREATE_PROCESS_DEFAULT); |
||||
@Identifier(value = "procFormOpIndexUrl", name = "Plugin-cdia_Config_ProcFormOpIndexUrl", description = "Plugin-cdia_Config_ProcFormOpIndexUrl_Description", status = Status.SHOW) |
||||
private final Conf<String> procFormOpIndexUrl = Holders.simple(PROC_FORM_OP_INDEX_DEFAULT); |
||||
@Identifier(value = "procNodeUrl", name = "Plugin-cdia_Config_ProcNodeUrl", description = "Plugin-cdia_Config_ProcNodeUrl_Description", status = Status.SHOW) |
||||
private final Conf<String> procNodeUrl = Holders.simple(PROC_NODE_DEFAULT); |
||||
@Identifier(value = "assignNmaAuthUrl", name = "Plugin-cdia_Config_AssignNmaAuthUrl", description = "Plugin-cdia_Config_AssignNmaAuthUrl_Description", status = Status.SHOW) |
||||
private final Conf<String> assignNmaAuthUrl = Holders.simple(ASSIGN_NMA_AUTH_URL); |
||||
|
||||
public static CdiaConfig getInstance() { |
||||
if (config == null) { |
||||
config = ConfigContext.getConfigInstance(CdiaConfig.class); |
||||
} |
||||
return config; |
||||
} |
||||
|
||||
public String getCreateProcessUrl() { |
||||
return createProcessUrl.get(); |
||||
} |
||||
|
||||
public void setCreateProcessUrl(String createProcessUrl) { |
||||
this.createProcessUrl.set(createProcessUrl); |
||||
} |
||||
|
||||
public String getProcFormOpIndexUrl() { |
||||
return procFormOpIndexUrl.get(); |
||||
} |
||||
|
||||
public void setProcFormOpIndexUrl(String procFormOpIndexUrl) { |
||||
this.procFormOpIndexUrl.set(procFormOpIndexUrl); |
||||
} |
||||
|
||||
public String getProcNodeUrl() { |
||||
return procNodeUrl.get(); |
||||
} |
||||
|
||||
public void setProcNodeUrl(String procNodeUrl) { |
||||
this.procNodeUrl.set(procNodeUrl); |
||||
} |
||||
|
||||
public String getAssignNmaAuthUrl() { |
||||
return assignNmaAuthUrl.get(); |
||||
} |
||||
|
||||
public void setAssignNmaAuthUrl(String assignNmaAuthUrl) { |
||||
this.assignNmaAuthUrl.set(assignNmaAuthUrl); |
||||
} |
||||
} |
@ -0,0 +1,52 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: ProcessAssignDao |
||||
* Author: |
||||
* Date: 2020/9/3 21:41 |
||||
*/ |
||||
package com.fr.plugin.cdia.dao; |
||||
|
||||
import com.fr.plugin.cdia.ProcessDBAccess; |
||||
import com.fr.plugin.cdia.entity.ProcessAssignEntity; |
||||
import com.fr.stable.db.action.DBAction; |
||||
import com.fr.stable.db.dao.BaseDAO; |
||||
import com.fr.stable.db.dao.DAOContext; |
||||
import com.fr.stable.db.session.DAOSession; |
||||
import com.fr.stable.query.QueryFactory; |
||||
import com.fr.stable.query.restriction.RestrictionFactory; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <ProcessAssignDao> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class ProcessAssignDao extends BaseDAO<ProcessAssignEntity> { |
||||
public ProcessAssignDao(DAOSession daoSession) { |
||||
super(daoSession); |
||||
} |
||||
|
||||
/** |
||||
* 通过流程单号查询流程Entity |
||||
* |
||||
* @param procInstId |
||||
* @return |
||||
* @throws Exception |
||||
*/ |
||||
public static List<ProcessAssignEntity> findEntityByProc(final String procInstId) throws Exception { |
||||
return ProcessDBAccess.getAccessor().runQueryAction(new DBAction<List<ProcessAssignEntity>>() { |
||||
@Override |
||||
public List<ProcessAssignEntity> run(DAOContext daoContext) throws Exception { |
||||
return daoContext.getDAO(ProcessAssignDao.class).find(QueryFactory.create().addRestriction(RestrictionFactory.eq("procInstId", procInstId))); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
protected Class<ProcessAssignEntity> getEntityClass() { |
||||
return ProcessAssignEntity.class; |
||||
} |
||||
} |
@ -0,0 +1,613 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: ProcessAssignEntity |
||||
* Author: |
||||
* Date: 2020/9/3 21:43 |
||||
*/ |
||||
package com.fr.plugin.cdia.entity; |
||||
|
||||
import com.fr.general.ComparatorUtils; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.db.entity.BaseEntity; |
||||
import com.fr.third.javax.persistence.Column; |
||||
import com.fr.third.javax.persistence.Entity; |
||||
import com.fr.third.javax.persistence.Table; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <流程申请及审核意见ProcessAssignEntity> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
@Entity |
||||
@Table(name = "cmbc_process_assign") |
||||
public class ProcessAssignEntity extends BaseEntity { |
||||
|
||||
public static final String DRAF_ID = "DRAF_ID"; |
||||
public static final String DRAF_NAME = "DRAF_NAME"; |
||||
public static final String DRAF_DEPT_ID = "DRAF_DEPT_ID"; |
||||
public static final String DRAF_DEPT_NAME = "DRAF_DEPT_NAME"; |
||||
public static final String DRAF_DATE = "DRAF_DATE"; |
||||
public static final String DRAF_TEL = "DRAF_TEL"; |
||||
public static final String DOC_TITLE = "DOC_TITLE"; |
||||
public static final String APP_ID = "APP_ID"; |
||||
public static final String APP_NUMBER = "APP_NUMBER"; |
||||
public static final String APP_NAME = "APP_NAME"; |
||||
public static final String APP_OPER_NAME = "APP_OPER_NAME"; |
||||
public static final String APP_OPER_ID = "APP_OPER_ID"; |
||||
public static final String APP_DEPT_NAME = "APP_DEPT_NAME"; |
||||
public static final String APP_TEL = "APP_TEL"; |
||||
public static final String APP_MAIL = "APP_MAIL"; |
||||
public static final String APP_TYPE = "APP_TYPE"; |
||||
public static final String BT_ROLE_NAME = "BT_ROLE_NAME"; |
||||
public static final String PURPOSE = "PURPOSE"; |
||||
public static final String YT_ROLE_NAME = "YT_ROLE_NAME"; |
||||
public static final String TC_ROLE_NAME = "TC_ROLE_NAME"; |
||||
public static final String PROC_INST_ID = "PROCINSTID"; |
||||
public static final String SEQUENCE_NO = "SEQUENCE_NO"; |
||||
public static final String LOAD_TIME = "LOAD_TIME"; |
||||
public static final String OP_FLAG = "OP_FLAG"; |
||||
public static final String PROC_END_FLAG = "PROC_END_FLAG"; |
||||
public static final String PROC_DELETE_FLAG = "PROC_DELETE_FLAG"; |
||||
public static final String YT_OP = "YT_OP"; |
||||
public static final String TC_OP = "TC_OP"; |
||||
public static final String OP_INDEX_URL = "OP_INDEX_URL"; |
||||
private static final long serialVersionUID = -3562843353984449028L; |
||||
|
||||
// 拟稿人用户ID
|
||||
@Column(name = "DRAF_ID") |
||||
private String drafId = StringUtils.EMPTY; |
||||
// 拟稿人姓名
|
||||
@Column(name = "DRAF_NAME") |
||||
private String drafName = StringUtils.EMPTY; |
||||
// 拟稿人部门ID
|
||||
@Column(name = "DRAF_DEPT_ID") |
||||
private String drafDeptId = StringUtils.EMPTY; |
||||
// 拟稿人部门名称
|
||||
@Column(name = "DRAF_DEPT_NAME") |
||||
private String drafDeptName = StringUtils.EMPTY; |
||||
// 拟稿日期
|
||||
@Column(name = "DRAF_DATE") |
||||
private String drafDate = StringUtils.EMPTY; |
||||
// 拟稿人电话
|
||||
@Column(name = "DRAF_TEL") |
||||
private String drafTel = StringUtils.EMPTY; |
||||
// 表单标题
|
||||
@Column(name = "DOC_TITLE") |
||||
private String docTitle = StringUtils.EMPTY; |
||||
// 申请人用户ID
|
||||
@Column(name = "APP_ID") |
||||
private String appId = StringUtils.EMPTY; |
||||
// 申请人员工号
|
||||
@Column(name = "APP_NUMBER") |
||||
private String appNumber = StringUtils.EMPTY; |
||||
// 申请人姓名
|
||||
@Column(name = "APP_NAME") |
||||
private String appName = StringUtils.EMPTY; |
||||
// 申请人所在机构
|
||||
@Column(name = "APP_OPER_NAME") |
||||
private String appOperName = StringUtils.EMPTY; |
||||
// 申请人所在机构ID
|
||||
@Column(name = "APP_OPER_ID") |
||||
private String appOperId = StringUtils.EMPTY; |
||||
// 申请人部门名称
|
||||
@Column(name = "APP_DEPT_NAME") |
||||
private String appDeptName = StringUtils.EMPTY; |
||||
// 申请人电话
|
||||
@Column(name = "APP_TEL") |
||||
private String appTel = StringUtils.EMPTY; |
||||
// 申请人邮箱
|
||||
@Column(name = "APP_MAIL") |
||||
private String appMail = StringUtils.EMPTY; |
||||
// 申请类型
|
||||
@Column(name = "APP_TYPE") |
||||
private String appType = StringUtils.EMPTY; |
||||
// 部门类别(价值云图数据权限(角色名称))
|
||||
@Column(name = "BT_ROLE_NAME") |
||||
private String btRoleName = StringUtils.EMPTY; |
||||
// 用途
|
||||
@Column(name = "PURPOSE") |
||||
private String purpose = StringUtils.EMPTY; |
||||
// 价值云图数据权限(角色名称)
|
||||
@Column(name = "YT_ROLE_NAME") |
||||
private String ytRoleName = StringUtils.EMPTY; |
||||
// 头寸权限(角色名称)
|
||||
@Column(name = "TC_ROLE_NAME") |
||||
private String tcRoleName = StringUtils.EMPTY; |
||||
// OA流程编号
|
||||
@Column(name = "PROCINSTID") |
||||
private String procInstId = StringUtils.EMPTY; |
||||
// 流水号
|
||||
@Column(name = "SEQUENCE_NO") |
||||
private String sequenceNo = StringUtils.EMPTY; |
||||
// timestamp
|
||||
@Column(name = "LOAD_TIME") |
||||
private String loadTime = StringUtils.EMPTY; |
||||
// 管理员处理标识
|
||||
@Column(name = "OP_FLAG") |
||||
private int opFlag; |
||||
// OA流程结果标志
|
||||
@Column(name = "PROC_END_FLAG") |
||||
private int procEndFlag; |
||||
// OA流程删除标志
|
||||
@Column(name = "PROC_DELETE_FLAG") |
||||
private int procDeleteFlag; |
||||
// 价值云图审批意见
|
||||
@Column(name = "YT_OP") |
||||
private String ytOp = StringUtils.EMPTY; |
||||
// 头寸审批意见
|
||||
@Column(name = "TC_OP") |
||||
private String tcOp = StringUtils.EMPTY; |
||||
// 流程url
|
||||
@Column(name = OP_INDEX_URL) |
||||
private String opIndexUrl = StringUtils.EMPTY; |
||||
|
||||
public ProcessAssignEntity() { |
||||
} |
||||
|
||||
public void setEntity(String key, String value) { |
||||
if (ComparatorUtils.equals(key, DRAF_ID)) { |
||||
this.setDrafId(value); |
||||
} else if (ComparatorUtils.equals(key, DRAF_NAME)) { |
||||
this.setDrafName(value); |
||||
} else if (ComparatorUtils.equals(key, DRAF_DEPT_ID)) { |
||||
this.setDrafDeptId(value); |
||||
} else if (ComparatorUtils.equals(key, DRAF_DEPT_NAME)) { |
||||
this.setDrafDeptName(value); |
||||
} else if (ComparatorUtils.equals(key, DRAF_DATE)) { |
||||
this.setDrafDate(value); |
||||
} else if (ComparatorUtils.equals(key, DRAF_TEL)) { |
||||
this.setDrafTel(value); |
||||
} else if (ComparatorUtils.equals(key, DOC_TITLE)) { |
||||
this.setDocTitle(value); |
||||
} else if (ComparatorUtils.equals(key, APP_ID)) { |
||||
this.setAppId(value); |
||||
} else if (ComparatorUtils.equals(key, APP_NUMBER)) { |
||||
this.setAppNumber(value); |
||||
} else if (ComparatorUtils.equals(key, APP_NAME)) { |
||||
this.setAppName(value); |
||||
} else if (ComparatorUtils.equals(key, APP_OPER_NAME)) { |
||||
this.setAppOperName(value); |
||||
} else if (ComparatorUtils.equals(key, APP_OPER_ID)) { |
||||
this.setAppOperId(value); |
||||
} else if (ComparatorUtils.equals(key, APP_DEPT_NAME)) { |
||||
this.setAppDeptName(value); |
||||
} else if (ComparatorUtils.equals(key, APP_TEL)) { |
||||
this.setAppTel(value); |
||||
} else if (ComparatorUtils.equals(key, APP_MAIL)) { |
||||
this.setAppMail(value); |
||||
} else if (ComparatorUtils.equals(key, APP_TYPE)) { |
||||
this.setAppType(value); |
||||
} else if (ComparatorUtils.equals(key, BT_ROLE_NAME)) { |
||||
this.setBtRoleName(value); |
||||
} else if (ComparatorUtils.equals(key, PURPOSE)) { |
||||
this.setPurpose(value); |
||||
} else if (ComparatorUtils.equals(key, YT_ROLE_NAME)) { |
||||
this.setYtRoleName(value); |
||||
} else if (ComparatorUtils.equals(key, TC_ROLE_NAME)) { |
||||
this.setTcRoleName(value); |
||||
} else if (ComparatorUtils.equals(key, PROC_INST_ID)) { |
||||
this.setId(value); |
||||
this.setProcInstId(value); |
||||
} else if (ComparatorUtils.equals(key, SEQUENCE_NO)) { |
||||
this.setSequenceNo(value); |
||||
} |
||||
} |
||||
|
||||
public JSONObject toJSON() { |
||||
JSONObject json = JSONObject.create(); |
||||
json.put(DRAF_ID, this.getDrafId()); |
||||
json.put(DRAF_NAME, this.getDrafName()); |
||||
json.put(DRAF_DEPT_ID, this.getDrafDeptId()); |
||||
json.put(DRAF_DEPT_NAME, this.getDrafDeptName()); |
||||
json.put(DRAF_DATE, this.getDrafDate()); |
||||
json.put(DRAF_TEL, this.getDrafTel()); |
||||
json.put(DOC_TITLE, this.getDocTitle()); |
||||
json.put(PROC_INST_ID, this.getProcInstId()); |
||||
json.put(SEQUENCE_NO, this.getSequenceNo()); |
||||
return json; |
||||
} |
||||
|
||||
public JSONObject detail2JSON() { |
||||
JSONObject json = JSONObject.create(); |
||||
json.put(APP_ID, this.getAppId()); |
||||
json.put(APP_NUMBER, this.getAppNumber()); |
||||
json.put(APP_NAME, this.getAppName()); |
||||
json.put(APP_OPER_NAME, this.getAppOperName()); |
||||
json.put(APP_OPER_ID, this.getAppOperId()); |
||||
json.put(APP_DEPT_NAME, this.getAppDeptName()); |
||||
json.put(APP_TEL, this.getAppTel()); |
||||
json.put(APP_MAIL, this.getAppMail()); |
||||
json.put(APP_TYPE, this.getAppType()); |
||||
json.put(BT_ROLE_NAME, this.getBtRoleName()); |
||||
json.put(PURPOSE, this.getPurpose()); |
||||
json.put(YT_ROLE_NAME, this.getYtRoleName()); |
||||
json.put(TC_ROLE_NAME, this.getTcRoleName()); |
||||
return json; |
||||
} |
||||
|
||||
public ProcessAssignEntity id(String id) { |
||||
this.setId(id); |
||||
return this; |
||||
} |
||||
|
||||
public String getDrafId() { |
||||
return drafId; |
||||
} |
||||
|
||||
public void setDrafId(String drafId) { |
||||
this.drafId = drafId; |
||||
} |
||||
|
||||
public ProcessAssignEntity drafId(String drafId) { |
||||
this.setDrafId(drafId); |
||||
return this; |
||||
} |
||||
|
||||
public String getDrafName() { |
||||
return drafName; |
||||
} |
||||
|
||||
public void setDrafName(String drafName) { |
||||
this.drafName = drafName; |
||||
} |
||||
|
||||
public ProcessAssignEntity drafName(String drafName) { |
||||
this.setDrafName(drafName); |
||||
return this; |
||||
} |
||||
|
||||
public String getDrafDeptId() { |
||||
return drafDeptId; |
||||
} |
||||
|
||||
public void setDrafDeptId(String drafDeptId) { |
||||
this.drafDeptId = drafDeptId; |
||||
} |
||||
|
||||
public ProcessAssignEntity drafDeptId(String drafDeptId) { |
||||
this.setDrafDeptId(drafDeptId); |
||||
return this; |
||||
} |
||||
|
||||
public String getDrafDeptName() { |
||||
return drafDeptName; |
||||
} |
||||
|
||||
public void setDrafDeptName(String drafDeptName) { |
||||
this.drafDeptName = drafDeptName; |
||||
} |
||||
|
||||
public ProcessAssignEntity drafDeptName(String drafDeptName) { |
||||
this.setDrafDeptName(drafDeptName); |
||||
return this; |
||||
} |
||||
|
||||
public String getDrafDate() { |
||||
return drafDate; |
||||
} |
||||
|
||||
public void setDrafDate(String drafDate) { |
||||
this.drafDate = drafDate; |
||||
} |
||||
|
||||
public ProcessAssignEntity drafDate(String drafDate) { |
||||
this.setDrafDate(drafDate); |
||||
return this; |
||||
} |
||||
|
||||
public String getDrafTel() { |
||||
return drafTel; |
||||
} |
||||
|
||||
public void setDrafTel(String drafTel) { |
||||
this.drafTel = drafTel; |
||||
} |
||||
|
||||
public ProcessAssignEntity drafTel(String drafTel) { |
||||
this.setDrafTel(drafTel); |
||||
return this; |
||||
} |
||||
|
||||
public String getDocTitle() { |
||||
return docTitle; |
||||
} |
||||
|
||||
public void setDocTitle(String docTitle) { |
||||
this.docTitle = docTitle; |
||||
} |
||||
|
||||
public ProcessAssignEntity docTitle(String docTitle) { |
||||
this.setDocTitle(docTitle); |
||||
return this; |
||||
} |
||||
|
||||
public String getAppId() { |
||||
return appId; |
||||
} |
||||
|
||||
public void setAppId(String appId) { |
||||
this.appId = appId; |
||||
} |
||||
|
||||
public ProcessAssignEntity appId(String appId) { |
||||
this.setAppId(appId); |
||||
return this; |
||||
} |
||||
|
||||
public String getAppNumber() { |
||||
return appNumber; |
||||
} |
||||
|
||||
public void setAppNumber(String appNumber) { |
||||
this.appNumber = appNumber; |
||||
} |
||||
|
||||
public ProcessAssignEntity appNumber(String appNumber) { |
||||
this.setAppNumber(appNumber); |
||||
return this; |
||||
} |
||||
|
||||
public String getAppName() { |
||||
return appName; |
||||
} |
||||
|
||||
public void setAppName(String appName) { |
||||
this.appName = appName; |
||||
} |
||||
|
||||
public ProcessAssignEntity appName(String appName) { |
||||
this.setAppName(appName); |
||||
return this; |
||||
} |
||||
|
||||
public String getAppOperName() { |
||||
return appOperName; |
||||
} |
||||
|
||||
public void setAppOperName(String appOperName) { |
||||
this.appOperName = appOperName; |
||||
} |
||||
|
||||
public ProcessAssignEntity appOperName(String appOperName) { |
||||
this.setAppOperName(appOperName); |
||||
return this; |
||||
} |
||||
|
||||
public String getAppOperId() { |
||||
return appOperId; |
||||
} |
||||
|
||||
public void setAppOperId(String appOperId) { |
||||
this.appOperId = appOperId; |
||||
} |
||||
|
||||
public ProcessAssignEntity appOperId(String appOperId) { |
||||
this.setAppOperId(appOperId); |
||||
return this; |
||||
} |
||||
|
||||
public String getAppDeptName() { |
||||
return appDeptName; |
||||
} |
||||
|
||||
public void setAppDeptName(String appDeptName) { |
||||
this.appDeptName = appDeptName; |
||||
} |
||||
|
||||
public ProcessAssignEntity appDeptName(String appDeptName) { |
||||
this.setAppDeptName(appDeptName); |
||||
return this; |
||||
} |
||||
|
||||
public String getAppTel() { |
||||
return appTel; |
||||
} |
||||
|
||||
public void setAppTel(String appTel) { |
||||
this.appTel = appTel; |
||||
} |
||||
|
||||
public ProcessAssignEntity appTel(String appTel) { |
||||
this.setAppTel(appTel); |
||||
return this; |
||||
} |
||||
|
||||
public String getAppMail() { |
||||
return appMail; |
||||
} |
||||
|
||||
public void setAppMail(String appMail) { |
||||
this.appMail = appMail; |
||||
} |
||||
|
||||
public ProcessAssignEntity appMail(String appMail) { |
||||
this.setAppMail(appMail); |
||||
return this; |
||||
} |
||||
|
||||
public String getAppType() { |
||||
return appType; |
||||
} |
||||
|
||||
public void setAppType(String appType) { |
||||
this.appType = appType; |
||||
} |
||||
|
||||
public ProcessAssignEntity appType(String appType) { |
||||
this.setAppType(appType); |
||||
return this; |
||||
} |
||||
|
||||
public String getBtRoleName() { |
||||
return btRoleName; |
||||
} |
||||
|
||||
public void setBtRoleName(String btRoleName) { |
||||
this.btRoleName = btRoleName; |
||||
} |
||||
|
||||
public ProcessAssignEntity btRoleName(String btRoleName) { |
||||
this.setBtRoleName(btRoleName); |
||||
return this; |
||||
} |
||||
|
||||
public String getPurpose() { |
||||
return purpose; |
||||
} |
||||
|
||||
public void setPurpose(String purpose) { |
||||
this.purpose = purpose; |
||||
} |
||||
|
||||
public ProcessAssignEntity purpose(String purpose) { |
||||
this.setPurpose(purpose); |
||||
return this; |
||||
} |
||||
|
||||
public String getYtRoleName() { |
||||
return ytRoleName; |
||||
} |
||||
|
||||
public void setYtRoleName(String ytRoleName) { |
||||
this.ytRoleName = ytRoleName; |
||||
} |
||||
|
||||
public ProcessAssignEntity ytRoleName(String ytRoleName) { |
||||
this.setYtRoleName(ytRoleName); |
||||
return this; |
||||
} |
||||
|
||||
public String getTcRoleName() { |
||||
return tcRoleName; |
||||
} |
||||
|
||||
public void setTcRoleName(String tcRoleName) { |
||||
this.tcRoleName = tcRoleName; |
||||
} |
||||
|
||||
public ProcessAssignEntity tcRoleName(String tcRoleName) { |
||||
this.setTcRoleName(tcRoleName); |
||||
return this; |
||||
} |
||||
|
||||
public String getProcInstId() { |
||||
return procInstId; |
||||
} |
||||
|
||||
public void setProcInstId(String procInstId) { |
||||
this.procInstId = procInstId; |
||||
} |
||||
|
||||
public ProcessAssignEntity procInstId(String procInstId) { |
||||
this.setProcInstId(procInstId); |
||||
return this; |
||||
} |
||||
|
||||
public String getSequenceNo() { |
||||
return sequenceNo; |
||||
} |
||||
|
||||
public void setSequenceNo(String sequenceNo) { |
||||
this.sequenceNo = sequenceNo; |
||||
} |
||||
|
||||
public ProcessAssignEntity sequenceNo(String sequenceNo) { |
||||
this.setSequenceNo(sequenceNo); |
||||
return this; |
||||
} |
||||
|
||||
public String getLoadTime() { |
||||
return loadTime; |
||||
} |
||||
|
||||
public void setLoadTime(String loadTime) { |
||||
this.loadTime = loadTime; |
||||
} |
||||
|
||||
public ProcessAssignEntity loadTime(String loadTime) { |
||||
this.setLoadTime(loadTime); |
||||
return this; |
||||
} |
||||
|
||||
public int getOpFlag() { |
||||
return opFlag; |
||||
} |
||||
|
||||
public void setOpFlag(int opFlag) { |
||||
this.opFlag = opFlag; |
||||
} |
||||
|
||||
public ProcessAssignEntity opFlag(int opFlag) { |
||||
this.setOpFlag(opFlag); |
||||
return this; |
||||
} |
||||
|
||||
public int getProcEndFlag() { |
||||
return procEndFlag; |
||||
} |
||||
|
||||
public void setProcEndFlag(int procEndFlag) { |
||||
this.procEndFlag = procEndFlag; |
||||
} |
||||
|
||||
public ProcessAssignEntity procEndFlag(int procEndFlag) { |
||||
this.setProcEndFlag(procEndFlag); |
||||
return this; |
||||
} |
||||
|
||||
public int getProcDeleteFlag() { |
||||
return procDeleteFlag; |
||||
} |
||||
|
||||
public void setProcDeleteFlag(int procDeleteFlag) { |
||||
this.procDeleteFlag = procDeleteFlag; |
||||
} |
||||
|
||||
public ProcessAssignEntity procDeleteFlag(int procDeleteFlag) { |
||||
this.setProcDeleteFlag(procDeleteFlag); |
||||
return this; |
||||
} |
||||
|
||||
public String getYtOp() { |
||||
return ytOp; |
||||
} |
||||
|
||||
public void setYtOp(String ytOp) { |
||||
this.ytOp = ytOp; |
||||
} |
||||
|
||||
public ProcessAssignEntity ytOp(String ytOp) { |
||||
this.setYtOp(ytOp); |
||||
return this; |
||||
} |
||||
|
||||
public String getTcOp() { |
||||
return tcOp; |
||||
} |
||||
|
||||
public void setTcOp(String tcOp) { |
||||
this.tcOp = tcOp; |
||||
} |
||||
|
||||
public ProcessAssignEntity tcOp(String tcOp) { |
||||
this.setTcOp(tcOp); |
||||
return this; |
||||
} |
||||
|
||||
public String getOpIndexUrl() { |
||||
return opIndexUrl; |
||||
} |
||||
|
||||
public void setOpIndexUrl(String opIndexUrl) { |
||||
this.opIndexUrl = opIndexUrl; |
||||
} |
||||
|
||||
public ProcessAssignEntity opIndexUrl(String opIndexUrl) { |
||||
this.setOpIndexUrl(opIndexUrl); |
||||
return this; |
||||
} |
||||
} |
@ -0,0 +1,310 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: AssignServiceHandler |
||||
* Author: |
||||
* Date: 2020/9/11 8:43 |
||||
*/ |
||||
package com.fr.plugin.cdia.service; |
||||
|
||||
import com.fanruan.api.decision.user.UserKit; |
||||
import com.fanruan.api.i18n.I18nKit; |
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fanruan.api.net.http.HttpKit; |
||||
import com.fanruan.api.util.StringKit; |
||||
import com.fr.decision.authority.AuthorityContext; |
||||
import com.fr.decision.authority.data.CustomRole; |
||||
import com.fr.decision.fun.impl.BaseHttpHandler; |
||||
import com.fr.decision.webservice.bean.user.UserBean; |
||||
import com.fr.decision.webservice.v10.user.UserService; |
||||
import com.fr.general.ComparatorUtils; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.json.JSONException; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.cdia.ProcessDBAccess; |
||||
import com.fr.plugin.cdia.config.CdiaConfig; |
||||
import com.fr.plugin.cdia.dao.ProcessAssignDao; |
||||
import com.fr.plugin.cdia.entity.ProcessAssignEntity; |
||||
import com.fr.plugin.cdia.submit.job.AddUserSubmitJob; |
||||
import com.fr.plugin.cdia.submit.job.CustomSubmitJob; |
||||
import com.fr.plugin.context.PluginContexts; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.db.action.DBAction; |
||||
import com.fr.stable.db.dao.DAOContext; |
||||
import com.fr.stable.query.QueryFactory; |
||||
import com.fr.stable.query.condition.QueryCondition; |
||||
import com.fr.stable.query.restriction.RestrictionFactory; |
||||
import com.fr.third.org.apache.http.entity.StringEntity; |
||||
import com.fr.third.springframework.web.bind.annotation.RequestMethod; |
||||
import com.fr.web.utils.WebUtils; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.io.BufferedReader; |
||||
import java.io.IOException; |
||||
import java.io.InputStreamReader; |
||||
import java.util.HashMap; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <AssignServiceHandler> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class AssignServiceHandler extends BaseHttpHandler { |
||||
|
||||
public static final String API_ASSIGN_PROCESS = "/cdia/assignProcess"; |
||||
public static final String TC_OP_YES = "同意"; |
||||
public static final String AUTH_GROUP = "performer"; |
||||
public static final String USER_WAIT_TO_ASSIGN_NMA_AUTH_LST_HEADER = "<userWaitToAssignNmaAuthLst><userWaitToAssignNmaAuthMap>"; |
||||
public static final String USER_WAIT_TO_ASSIGN_NMA_AUTH_LST_FOOTER = "</userWaitToAssignNmaAuthMap></userWaitToAssignNmaAuthLst>"; |
||||
public static final String SOAP_REQUEST_HEADER = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:aut=\"http://services.tesla.com/autoAssignRoleAndDataAuthAndMdReportAuthService\"><soapenv:Header/><soapenv:Body><aut:autoAssignRoleAndDataAuthAndMdReportAuthServiceRequest>"; |
||||
public static final String SOAP_SERVICE_FOOTER = "</aut:autoAssignRoleAndDataAuthAndMdReportAuthServiceRequest></soapenv:Body></soapenv:Envelope>"; |
||||
public static final String YT_OP_YES = "[同意]"; |
||||
|
||||
public AssignServiceHandler() { |
||||
} |
||||
|
||||
@Override |
||||
public RequestMethod getMethod() { |
||||
return RequestMethod.POST; |
||||
} |
||||
|
||||
@Override |
||||
public String getPath() { |
||||
return API_ASSIGN_PROCESS; |
||||
} |
||||
|
||||
@Override |
||||
public boolean isPublic() { |
||||
return true; |
||||
} |
||||
|
||||
@Override |
||||
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception { |
||||
if (PluginContexts.currentContext() == null || !PluginContexts.currentContext().isAvailable()) { |
||||
LogKit.error(I18nKit.getLocText("Plugin-cdia_Licence_Expired")); |
||||
WebUtils.flushSuccessMessageAutoClose(request, response, createFailResponseJSONObject()); |
||||
return; |
||||
} |
||||
try { |
||||
JSONObject paramsJSON = getPostParams(request); |
||||
String procInstId = paramsJSON.getString("procInstId", StringUtils.EMPTY); |
||||
String msgType = paramsJSON.getString("msgType", StringUtils.EMPTY); |
||||
String procEndFlag = "0"; |
||||
String procDeleteFlag = "0"; |
||||
if (ComparatorUtils.equals(msgType, "delete") || ComparatorUtils.equals(msgType, "break")) { |
||||
procDeleteFlag = "1"; |
||||
} else if (ComparatorUtils.equals(msgType, "commit")) { |
||||
procEndFlag = "1"; |
||||
} |
||||
List<ProcessAssignEntity> processAssignEntityList = ProcessAssignDao.findEntityByProc(procInstId); |
||||
StringBuilder userWaitToAssignNmaAuthLst = new StringBuilder(); |
||||
for (ProcessAssignEntity processAssignEntity : processAssignEntityList) { |
||||
processAssignEntity.setProcEndFlag(Integer.parseInt(procEndFlag)); |
||||
processAssignEntity.setProcDeleteFlag(Integer.parseInt(procDeleteFlag)); |
||||
|
||||
setProcNodeOpinion(processAssignEntity); |
||||
updateEntity(processAssignEntity); |
||||
|
||||
LogKit.info("cdia-AssignServiceHandler-handle-头寸审批意见:{}", processAssignEntity.getTcOp()); |
||||
if (ComparatorUtils.equals(processAssignEntity.getTcOp(), TC_OP_YES)) { |
||||
LogKit.info("cdia-AssignServiceHandler-handle-申请人用户ID:{}", processAssignEntity.getAppId()); |
||||
LogKit.info("cdia-AssignServiceHandler-handle-头寸权限:{}", processAssignEntity.getTcRoleName()); |
||||
if (!setUserRole(processAssignEntity.getAppId(), processAssignEntity.getTcRoleName())) { |
||||
LogKit.info("cdia-AssignServiceHandler-handle-更新头寸权限失败!"); |
||||
} |
||||
} |
||||
LogKit.info("cdia-AssignServiceHandler-handle-YT_OP审批意见:{}", processAssignEntity.getYtOp()); |
||||
if (processAssignEntity.getYtOp().startsWith(YT_OP_YES)) { |
||||
// 产生管会接口数据
|
||||
assignNmaAuthLst(userWaitToAssignNmaAuthLst, processAssignEntity); |
||||
} |
||||
} |
||||
if (StringKit.isNotBlank(userWaitToAssignNmaAuthLst.toString())) { |
||||
sendAssignNmaAuthLst(userWaitToAssignNmaAuthLst); |
||||
} |
||||
WebUtils.flushSuccessMessageAutoClose(request, response, createSuccessResponseJSONObject()); |
||||
} catch (Exception e) { |
||||
WebUtils.flushSuccessMessageAutoClose(request, response, createFailResponseJSONObject()); |
||||
LogKit.error(e.getMessage(), e); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 发送管会接口 |
||||
* |
||||
* @param userWaitToAssignNmaAuthLst |
||||
* @throws IOException |
||||
*/ |
||||
private void sendAssignNmaAuthLst(StringBuilder userWaitToAssignNmaAuthLst) throws IOException { |
||||
Map<String, String> headers = new HashMap<>(); |
||||
headers.put("Content-Type", "text/xml;charset=UTF-8"); |
||||
headers.put("SOAPAction", "autoAssignRoleAndDataAuthAndMdReportAuthService"); |
||||
String soapXml = SOAP_REQUEST_HEADER + |
||||
userWaitToAssignNmaAuthLst.toString() + |
||||
SOAP_SERVICE_FOOTER; |
||||
LogKit.info("cdia-AssignServiceHandler-sendAssignNmaAuthLst-soapXml:{}, headers:{}", soapXml, headers); |
||||
StringEntity stringEntity = new StringEntity(soapXml, "UTF-8"); |
||||
String response = HttpKit.executeAndParse(com.fanruan.api.net.http.rs.HttpRequest.custom().url(CdiaConfig.getInstance().getAssignNmaAuthUrl()).post(stringEntity).headers(headers).build()); |
||||
LogKit.info("cdia-AssignServiceHandler-sendAssignNmaAuthLst-response:{}", response); |
||||
} |
||||
|
||||
/** |
||||
* 产生管会接口数据 |
||||
* |
||||
* @param userWaitToAssignNmaAuthLst |
||||
* @param processAssignEntity |
||||
*/ |
||||
private void assignNmaAuthLst(StringBuilder userWaitToAssignNmaAuthLst, ProcessAssignEntity processAssignEntity) { |
||||
userWaitToAssignNmaAuthLst.append(USER_WAIT_TO_ASSIGN_NMA_AUTH_LST_HEADER); |
||||
userWaitToAssignNmaAuthLst.append("<empNo>").append(processAssignEntity.getAppNumber()).append("</empNo>"); |
||||
userWaitToAssignNmaAuthLst.append("<userNm>").append(processAssignEntity.getAppName()).append("</userNm>"); |
||||
userWaitToAssignNmaAuthLst.append("<oaUserNm>").append(processAssignEntity.getAppId()).append("</oaUserNm>"); |
||||
userWaitToAssignNmaAuthLst.append("<instNm>").append(processAssignEntity.getAppOperName()).append("</instNm>"); |
||||
userWaitToAssignNmaAuthLst.append("<deptNm>").append(processAssignEntity.getAppDeptName()).append("</deptNm>"); |
||||
userWaitToAssignNmaAuthLst.append("<mobile>").append(processAssignEntity.getAppTel()).append("</mobile>"); |
||||
userWaitToAssignNmaAuthLst.append("<email>").append(processAssignEntity.getAppMail()).append("</email>"); |
||||
userWaitToAssignNmaAuthLst.append("<userType>").append(processAssignEntity.getAppType()).append("</userType>"); |
||||
userWaitToAssignNmaAuthLst.append("<purpose>").append(processAssignEntity.getPurpose()).append("</purpose>"); |
||||
userWaitToAssignNmaAuthLst.append("<authType>").append(processAssignEntity.getBtRoleName()).append("</authType>"); |
||||
userWaitToAssignNmaAuthLst.append(USER_WAIT_TO_ASSIGN_NMA_AUTH_LST_FOOTER); |
||||
} |
||||
|
||||
/** |
||||
* 获得提交接口的JSON参数 |
||||
* |
||||
* @param request |
||||
* @return |
||||
*/ |
||||
private JSONObject getPostParams(HttpServletRequest request) { |
||||
BufferedReader reader = null; |
||||
StringBuilder sb = new StringBuilder(); |
||||
try { |
||||
reader = new BufferedReader(new InputStreamReader(request.getInputStream(), "utf-8")); |
||||
String line = null; |
||||
while ((line = reader.readLine()) != null) { |
||||
sb.append(line); |
||||
} |
||||
} catch (IOException e) { |
||||
LogKit.error(e.getMessage(), e); |
||||
} finally { |
||||
try { |
||||
if (null != reader) { |
||||
reader.close(); |
||||
} |
||||
} catch (IOException e) { |
||||
LogKit.error(e.getMessage(), e); |
||||
} |
||||
} |
||||
if (StringUtils.isEmpty(sb.toString())) { |
||||
return JSONObject.EMPTY; |
||||
} |
||||
LogKit.info("cdia-AssignServiceHandler-getPostParams:{}", sb.toString()); |
||||
return new JSONObject(sb.toString()); |
||||
} |
||||
|
||||
/** |
||||
* 审批意见查询接口,返回审核意见 |
||||
* |
||||
* @param processAssignEntity |
||||
*/ |
||||
private void setProcNodeOpinion(ProcessAssignEntity processAssignEntity) throws Exception { |
||||
JSONObject bodyJSON = JSONObject.create(); |
||||
JSONObject paramObject = JSONObject.create(); |
||||
paramObject.put("procInstId", processAssignEntity.getProcInstId()); |
||||
paramObject.put("authGroup", AUTH_GROUP); |
||||
paramObject.put("nodeInstId", StringUtils.EMPTY); |
||||
bodyJSON.put("paramObject", paramObject); |
||||
bodyJSON.put("sysId", CustomSubmitJob.SYS_ID); |
||||
bodyJSON.put("userId", processAssignEntity.getDrafId()); |
||||
LogKit.info("cdia-AssignServiceHandler-setProcNodeOpinion-审批意见查询接口参数:{}", bodyJSON.encode()); |
||||
String res = CustomSubmitJob.postJSON(CdiaConfig.getInstance().getProcNodeUrl(), bodyJSON); |
||||
LogKit.info("cdia-AssignServiceHandler-审批意见查询接口响应:{}", res); |
||||
JSONArray opinionMap = (new JSONObject(res)).getJSONObject("resultData").getJSONArray("opinionMap"); |
||||
String ytOp = StringUtils.EMPTY; |
||||
String tcOp = StringUtils.EMPTY; |
||||
for (int i = 0; i < opinionMap.size(); i++) { |
||||
String fieldCode = opinionMap.getJSONObject(i).getString("fieldCode"); |
||||
String opinionType = opinionMap.getJSONObject(i).getString("opinionText"); |
||||
if (ComparatorUtils.equals(fieldCode, "cloudAtlasOption")) { |
||||
// 价值云图权限审批意见
|
||||
ytOp = opinionType; |
||||
} |
||||
if (ComparatorUtils.equals(fieldCode, "positionOption")) { |
||||
// 头寸权限审批意见
|
||||
tcOp = opinionType; |
||||
} |
||||
} |
||||
processAssignEntity.setYtOp(ytOp); |
||||
processAssignEntity.setTcOp(tcOp); |
||||
} |
||||
|
||||
/** |
||||
* 保存 |
||||
* |
||||
* @param processAssignEntity |
||||
* @throws Exception |
||||
*/ |
||||
private void updateEntity(final ProcessAssignEntity processAssignEntity) throws Exception { |
||||
ProcessDBAccess.getAccessor().runDMLAction(new DBAction<ProcessAssignEntity>() { |
||||
@Override |
||||
public ProcessAssignEntity run(DAOContext daoContext) throws Exception { |
||||
(daoContext.getDAO(ProcessAssignDao.class)).update(processAssignEntity); |
||||
return null; |
||||
} |
||||
}); |
||||
} |
||||
|
||||
/** |
||||
* @param userName |
||||
* @param tcRoleName |
||||
* @return |
||||
* @throws Exception |
||||
*/ |
||||
private Boolean setUserRole(String userName, final String tcRoleName) throws Exception { |
||||
if (StringUtils.isEmpty(tcRoleName) || StringUtils.isEmpty(userName)) { |
||||
return false; |
||||
} |
||||
if (UserKit.existUsername(userName)) { |
||||
try { |
||||
String roleId = getRoleIDByName(tcRoleName); |
||||
String userId = UserService.getInstance().getCurrentUserId(userName); |
||||
UserBean userBean = new UserBean(); |
||||
userBean.setId(userId); |
||||
userBean.setRoleIds(new String[]{roleId}); |
||||
UserService.getInstance().updateUserRoles(AddUserSubmitJob.getAdminUserId(), userBean); |
||||
return true; |
||||
} catch (Exception e) { |
||||
LogKit.error(e.getMessage(), e); |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
private String getRoleIDByName(String role) throws Exception { |
||||
QueryCondition condition = QueryFactory.create().addRestriction(RestrictionFactory.eq("name", role)); |
||||
CustomRole customRole = AuthorityContext.getInstance().getCustomRoleController().findOne(condition); |
||||
if (customRole != null) { |
||||
return customRole.getId(); |
||||
} |
||||
return StringKit.EMPTY; |
||||
} |
||||
|
||||
private JSONObject createSuccessResponseJSONObject() throws JSONException { |
||||
JSONObject result = JSONObject.create(); |
||||
result.put("errorCode", 0); |
||||
result.put("status", "success"); |
||||
return result; |
||||
} |
||||
|
||||
private JSONObject createFailResponseJSONObject() throws JSONException { |
||||
JSONObject result = JSONObject.create(); |
||||
result.put("errorCode", 1); |
||||
result.put("status", "fail"); |
||||
return result; |
||||
} |
||||
} |
@ -0,0 +1,105 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: QueryServiceHandler |
||||
* Author: |
||||
* Date: 2020/9/11 8:51 |
||||
*/ |
||||
package com.fr.plugin.cdia.service; |
||||
|
||||
import com.fanruan.api.i18n.I18nKit; |
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fanruan.api.net.NetworkKit; |
||||
import com.fr.decision.fun.impl.BaseHttpHandler; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.json.JSONException; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.cdia.dao.ProcessAssignDao; |
||||
import com.fr.plugin.cdia.entity.ProcessAssignEntity; |
||||
import com.fr.plugin.context.PluginContexts; |
||||
import com.fr.third.springframework.web.bind.annotation.RequestMethod; |
||||
import com.fr.web.utils.WebUtils; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <QueryServiceHandler> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class QueryServiceHandler extends BaseHttpHandler { |
||||
|
||||
public static final String API_QUERY_PROCESS = "/cdia/queryProcess"; |
||||
|
||||
public QueryServiceHandler() { |
||||
} |
||||
|
||||
@Override |
||||
public RequestMethod getMethod() { |
||||
return RequestMethod.GET; |
||||
} |
||||
|
||||
@Override |
||||
public String getPath() { |
||||
return API_QUERY_PROCESS; |
||||
} |
||||
|
||||
@Override |
||||
public boolean isPublic() { |
||||
return true; |
||||
} |
||||
|
||||
@Override |
||||
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception { |
||||
if (PluginContexts.currentContext() == null || !PluginContexts.currentContext().isAvailable()) { |
||||
LogKit.error(I18nKit.getLocText("Plugin-cdia_Licence_Expired")); |
||||
WebUtils.flushSuccessMessageAutoClose(request, response, createFailResponseJSONObject()); |
||||
return; |
||||
} |
||||
final String procInstId = NetworkKit.getHTTPRequestParameter(request, "procInstId"); |
||||
JSONObject data = null; |
||||
try { |
||||
data = getProcessData(procInstId); |
||||
} catch (Exception e) { |
||||
LogKit.error(e.getMessage(), e); |
||||
} |
||||
JSONObject result = createFailResponseJSONObject(); |
||||
if (data != null && data.size() > 0) { |
||||
result = createSuccessResponseJSONObject(); |
||||
result.put("data", data); |
||||
} |
||||
WebUtils.flushSuccessMessageAutoClose(request, response, result); |
||||
} |
||||
|
||||
private JSONObject getProcessData(String procInstId) throws Exception { |
||||
List<ProcessAssignEntity> processAssignEntityList = ProcessAssignDao.findEntityByProc(procInstId); |
||||
JSONObject processData = JSONObject.create(); |
||||
JSONArray detail = JSONArray.create(); |
||||
for (ProcessAssignEntity processAssignEntity : processAssignEntityList) { |
||||
if (!processData.has("header")) { |
||||
processData.put("header", processAssignEntity.toJSON()); |
||||
} |
||||
detail.add(processAssignEntity.detail2JSON()); |
||||
} |
||||
processData.put("body", detail); |
||||
return processData; |
||||
} |
||||
|
||||
private JSONObject createSuccessResponseJSONObject() throws JSONException { |
||||
JSONObject result = JSONObject.create(); |
||||
result.put("errorCode", 0); |
||||
result.put("status", "success"); |
||||
return result; |
||||
} |
||||
|
||||
private JSONObject createFailResponseJSONObject() throws JSONException { |
||||
JSONObject result = JSONObject.create(); |
||||
result.put("errorCode", 1); |
||||
result.put("status", "fail"); |
||||
return result; |
||||
} |
||||
} |
@ -0,0 +1,39 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: SubmitUIBridge |
||||
* Author: |
||||
* Date: 2020/8/31 21:50 |
||||
*/ |
||||
package com.fr.plugin.cdia.submit; |
||||
|
||||
import com.fr.design.beans.BasicBeanPane; |
||||
import com.fr.design.fun.impl.AbstractSubmitProvider; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.plugin.cdia.submit.ui.DataSubmitConfigPane; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <SubmitUIBridge> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class SubmitUIBridge extends AbstractSubmitProvider { |
||||
public static final String KEY = "DataSubmit"; |
||||
|
||||
@Override |
||||
public BasicBeanPane appearanceForSubmit() { |
||||
return new DataSubmitConfigPane(); |
||||
} |
||||
|
||||
@Override |
||||
public String dataForSubmit() { |
||||
return Toolkit.i18nText("Plugin-cdia_Submit_Data"); |
||||
} |
||||
|
||||
@Override |
||||
public String keyForSubmit() { |
||||
return SubmitUIBridge.KEY; |
||||
} |
||||
} |
@ -0,0 +1,264 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: AddUserSubmitJob |
||||
* Author: |
||||
* Date: 2020/8/30 15:49 |
||||
*/ |
||||
package com.fr.plugin.cdia.submit.job; |
||||
|
||||
import com.fanruan.api.decision.user.UserKit; |
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fanruan.api.util.StringKit; |
||||
import com.fr.data.DefinedSubmitJob; |
||||
import com.fr.data.JobValue; |
||||
import com.fr.decision.authority.AuthorityContext; |
||||
import com.fr.decision.authority.base.constant.type.operation.ManualOperationType; |
||||
import com.fr.decision.authority.data.CustomRole; |
||||
import com.fr.decision.authority.data.Department; |
||||
import com.fr.decision.authority.data.Post; |
||||
import com.fr.decision.privilege.TransmissionTool; |
||||
import com.fr.decision.webservice.bean.user.DepartmentPostBean; |
||||
import com.fr.decision.webservice.bean.user.RoleBean; |
||||
import com.fr.decision.webservice.bean.user.UserBean; |
||||
import com.fr.decision.webservice.v10.user.CustomRoleService; |
||||
import com.fr.decision.webservice.v10.user.PositionService; |
||||
import com.fr.decision.webservice.v10.user.UserService; |
||||
import com.fr.script.Calculator; |
||||
import com.fr.stable.Primitive; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.core.UUID; |
||||
import com.fr.stable.query.QueryFactory; |
||||
import com.fr.stable.query.condition.QueryCondition; |
||||
import com.fr.stable.query.restriction.RestrictionFactory; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <自定义提交添加用户AddUserSubmitJob> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class AddUserSubmitJob extends DefinedSubmitJob { |
||||
|
||||
public static final String SEPARATOR = ","; |
||||
|
||||
/** |
||||
* 获取管理员id |
||||
* |
||||
* @return |
||||
* @throws Exception |
||||
*/ |
||||
public static String getAdminUserId() throws Exception { |
||||
List<String> adminUserIdList = UserService.getInstance().getAdminUserIdList(); |
||||
if (adminUserIdList.isEmpty()) { |
||||
return "admin"; |
||||
} |
||||
return StringKit.isNotBlank(adminUserIdList.get(0)) ? adminUserIdList.get(0) : "admin"; |
||||
} |
||||
|
||||
private String roleOperation(String role) throws Exception { |
||||
String customRoleId = getCustomRoleIdByName(role); |
||||
if (StringKit.isNotBlank(customRoleId)) { |
||||
return customRoleId; |
||||
} |
||||
RoleBean roleBean = new RoleBean(role, "", role, ManualOperationType.KEY.toInteger()); |
||||
CustomRoleService.getInstance().addCustomRole(getAdminUserId(), roleBean); |
||||
return getCustomRoleIdByName(role); |
||||
} |
||||
|
||||
private String getCustomRoleIdByName(String roleName) throws Exception { |
||||
QueryCondition condition = QueryFactory.create().addRestriction(RestrictionFactory.eq("name", roleName)); |
||||
CustomRole customRole = AuthorityContext.getInstance().getCustomRoleController().findOne(condition); |
||||
if (customRole != null) { |
||||
return customRole.getId(); |
||||
} |
||||
return StringKit.EMPTY; |
||||
} |
||||
|
||||
@Override |
||||
public String getJobType() { |
||||
return "AddUserSubmitJob"; |
||||
} |
||||
|
||||
@Override |
||||
public void doJob(Calculator calculator) throws Exception { |
||||
Map<String, Object> propertyMap = calculator.getAttribute(PROPERTY_VALUE); |
||||
if (propertyMap == null) { |
||||
return; |
||||
} |
||||
if (isOperationState(propertyMap)) { |
||||
String departmentName = getAttributeByKey(propertyMap, "department"); |
||||
String roles = getAttributeByKey(propertyMap, "role"); |
||||
String deptType = getAttributeByKey(propertyMap, "deptType"); |
||||
String rolesStr = StringKit.EMPTY; |
||||
if (StringKit.isNotEmpty(roles)) { |
||||
rolesStr = roles; |
||||
} |
||||
if (StringKit.isNotEmpty(deptType)) { |
||||
if (StringKit.isNotEmpty(rolesStr)) { |
||||
rolesStr = rolesStr + "," + deptType; |
||||
} else { |
||||
rolesStr = deptType; |
||||
} |
||||
} |
||||
LogKit.info("cdia-AddUserSubmitJob-doJob-rolesStr", rolesStr); |
||||
UserBean userBean = getUserBean(propertyMap); |
||||
String departmentPostId = getDepartmentPostId(departmentName); |
||||
operation(userBean, rolesStr, departmentPostId); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 判断是否提交填报操作 |
||||
* |
||||
* @param propertyMap |
||||
* @return |
||||
*/ |
||||
private Boolean isOperationState(Map<String, Object> propertyMap) { |
||||
JobValue ce = (JobValue) propertyMap.get("username"); |
||||
if (ce.getState() == JobValue.State.MODIFIED) { |
||||
// 此单元格的值在报表初始化后被修改过
|
||||
LogKit.info("cdia-AddUserSubmitJob-doJob-State-MODIFIED"); |
||||
return true; |
||||
} else if (ce.getState() == JobValue.State.INSERT) { |
||||
// 此单元格是在报表初始化后新增的(例如执行了插入行操作)
|
||||
LogKit.info("cdia-AddUserSubmitJob-doJob-State-INSERT"); |
||||
return true; |
||||
} else if (ce.getState() == JobValue.State.DELETED) { |
||||
// 此单元格所在的记录被执行了删除操作
|
||||
} else if (ce.getState() == JobValue.State.DEFAULT) { |
||||
// 此单元格在报表初始化后没有变化
|
||||
LogKit.info("cdia-AddUserSubmitJob-doJob-State-DEFAULT"); |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 填报属性提取用户信息 |
||||
* |
||||
* @param propertyMap |
||||
* @return |
||||
*/ |
||||
private UserBean getUserBean(Map<String, Object> propertyMap) { |
||||
String username = getAttributeByKey(propertyMap, "username"); |
||||
String name = getAttributeByKey(propertyMap, "name"); |
||||
String mobile = getAttributeByKey(propertyMap, "mobile"); |
||||
String email = getAttributeByKey(propertyMap, "email"); |
||||
UserBean userBean = new UserBean(); |
||||
userBean.setUsername(username); |
||||
userBean.setPassword(TransmissionTool.defaultEncrypt(UUID.randomUUID().toString())); |
||||
userBean.setRealName(name); |
||||
userBean.setMobile(mobile); |
||||
userBean.setEmail(email); |
||||
return userBean; |
||||
} |
||||
|
||||
/** |
||||
* 通过属性名获得填报属性值 |
||||
* |
||||
* @param propertyMap |
||||
* @param key |
||||
* @return |
||||
*/ |
||||
private String getAttributeByKey(Map<String, Object> propertyMap, String key) { |
||||
if (!propertyMap.containsKey(key)) { |
||||
return StringUtils.EMPTY; |
||||
} |
||||
Object value = ((JobValue) propertyMap.get(key)).getValue(); |
||||
if (value instanceof Primitive) { |
||||
return StringUtils.EMPTY; |
||||
} |
||||
return String.valueOf(((JobValue) propertyMap.get(key)).getValue()); |
||||
} |
||||
|
||||
/** |
||||
* 更新用户信息和角色 |
||||
* |
||||
* @param userBean |
||||
* @param roles |
||||
* @throws Exception |
||||
*/ |
||||
private void operation(UserBean userBean, final String roles, String departmentPostId) throws Exception { |
||||
if (UserKit.existUsername(userBean.getUsername())) { |
||||
return; |
||||
} |
||||
if (StringKit.isNotBlank(roles)) { |
||||
List<String> roleIds = new ArrayList<>(); |
||||
String roleId; |
||||
for (String role : roles.split(SEPARATOR)) { |
||||
if (StringKit.isEmpty(role)) { |
||||
continue; |
||||
} |
||||
roleId = roleOperation(role); |
||||
roleIds.add(roleId); |
||||
} |
||||
userBean.setRoleIds(roleIds.toArray(new String[0])); |
||||
} |
||||
if (StringKit.isNotBlank(departmentPostId)) { |
||||
userBean.setDepartmentPostId(departmentPostId); |
||||
} |
||||
UserService.getInstance().addUser(userBean); |
||||
} |
||||
|
||||
private String getDepartmentPostId(String departmentAndPostName) throws Exception { |
||||
String departmentName; |
||||
String positionName; |
||||
if (departmentAndPostName.contains("-")) { |
||||
String[] departmentAndPostArray = departmentAndPostName.split("-"); |
||||
departmentName = departmentAndPostArray[0]; |
||||
positionName = departmentAndPostArray[1]; |
||||
} else { |
||||
departmentName = departmentAndPostName; |
||||
positionName = StringKit.EMPTY; |
||||
} |
||||
AuthorityContext authorityContext = AuthorityContext.getInstance(); |
||||
QueryCondition queryDepartment = QueryFactory.create().addRestriction(RestrictionFactory.eq(Department.COLUMN_NAME, departmentName)); |
||||
Department department = authorityContext.getDepartmentController().findOne(queryDepartment); |
||||
if (department == null) { |
||||
return StringKit.EMPTY; |
||||
} |
||||
String departmentPostId = department.getId(); |
||||
String positionId = positionSynOperation(positionName, departmentPostId); |
||||
if (StringKit.isNotBlank(positionId)) { |
||||
departmentPostId = departmentPostId + "@@@" + positionId; |
||||
} |
||||
return departmentPostId; |
||||
} |
||||
|
||||
/** |
||||
* 职务同步操作 |
||||
* |
||||
* @param positionName |
||||
* @return |
||||
* @throws Exception |
||||
*/ |
||||
private String positionSynOperation(String positionName, String departmentId) throws Exception { |
||||
if (StringKit.isBlank(positionName)) { |
||||
return StringKit.EMPTY; |
||||
} |
||||
String position = StringKit.isNotBlank(positionName) ? positionName : "职员"; |
||||
Post post = AuthorityContext.getInstance().getPostController().findOne(QueryFactory.create().addRestriction(RestrictionFactory.eq("name", position))); |
||||
String positionId; |
||||
if (post == null) { |
||||
positionId = PositionService.getInstance().addPosition(position, position); |
||||
} else { |
||||
positionId = post.getId(); |
||||
} |
||||
List<DepartmentPostBean> departmentPostBeanList = PositionService.getInstance().getPositionsUnderParentDepartment(getAdminUserId(), departmentId, position); |
||||
if (departmentPostBeanList == null || departmentPostBeanList.isEmpty()) { |
||||
try { |
||||
AuthorityContext.getInstance().getPostController().addPostToDepartment(positionId, departmentId); |
||||
} catch (Exception e) { |
||||
LogKit.info("cdia-AddUserSubmitJob-positionSynOperation-addPostToDepartmentFailed-position:{}, departmentId:{}", positionId + position, departmentId); |
||||
LogKit.error(e.getMessage(), e); |
||||
} |
||||
} |
||||
return positionId; |
||||
} |
||||
} |
@ -0,0 +1,235 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: CustomSubmitJob |
||||
* Author: |
||||
* Date: 2020/8/28 17:01 |
||||
*/ |
||||
package com.fr.plugin.cdia.submit.job; |
||||
|
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fanruan.api.net.http.HttpKit; |
||||
import com.fr.data.DefinedSubmitJob; |
||||
import com.fr.data.JobValue; |
||||
import com.fr.general.ComparatorUtils; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.cdia.ProcessDBAccess; |
||||
import com.fr.plugin.cdia.config.CdiaConfig; |
||||
import com.fr.plugin.cdia.dao.ProcessAssignDao; |
||||
import com.fr.plugin.cdia.entity.ProcessAssignEntity; |
||||
import com.fr.script.Calculator; |
||||
import com.fr.stable.Primitive; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.db.action.DBAction; |
||||
import com.fr.stable.db.dao.DAOContext; |
||||
import com.fr.third.org.apache.http.entity.StringEntity; |
||||
|
||||
import java.util.HashMap; |
||||
import java.util.HashSet; |
||||
import java.util.Map; |
||||
import java.util.Map.Entry; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <CustomSubmitJob> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class CustomSubmitJob extends DefinedSubmitJob { |
||||
|
||||
public static final String SYS_ID = "OA"; |
||||
private static final HashSet<String> paramsSet = new HashSet<String>() {{ |
||||
add("procDefId"); |
||||
add("docTitle"); |
||||
add("userId"); |
||||
add("deptId"); |
||||
add("systemCode"); |
||||
add("equipmentType"); |
||||
}}; |
||||
|
||||
/** |
||||
* POST提交JSON |
||||
* |
||||
* @param url |
||||
* @param params |
||||
* @return |
||||
* @throws Exception |
||||
*/ |
||||
public static String postJSON(String url, JSONObject params) throws Exception { |
||||
Map<String, String> headers = new HashMap<>(); |
||||
headers.put("Content-Type", "application/json"); |
||||
StringEntity stringEntity = new StringEntity(params.encode(), "UTF-8"); |
||||
return HttpKit.executeAndParse(com.fanruan.api.net.http.rs.HttpRequest.custom() |
||||
.url(url).post(stringEntity).headers(headers).build()); |
||||
} |
||||
|
||||
@Override |
||||
public String getJobType() { |
||||
return "CustomJob"; |
||||
} |
||||
|
||||
@Override |
||||
public void doJob(Calculator calculator) throws Exception { |
||||
Map<String, Object> propertyMap = calculator.getAttribute(PROPERTY_VALUE); |
||||
if (propertyMap == null) { |
||||
return; |
||||
} |
||||
if (!isOperationState(propertyMap)) { |
||||
return; |
||||
} |
||||
ProcessAssignEntity processAssignEntity = new ProcessAssignEntity(); |
||||
JSONObject paramsJSON = JSONObject.create(); |
||||
getSubmitAttribute(propertyMap, processAssignEntity, paramsJSON); |
||||
if (paramsJSON.isEmpty()) { |
||||
return; |
||||
} |
||||
operation(paramsJSON, processAssignEntity); |
||||
} |
||||
|
||||
/** |
||||
* 提取填报属性值 |
||||
* |
||||
* @param propertyMap 属性值Map |
||||
* @param processAssignEntity 流程实体 |
||||
* @param paramsJSON http接口参数 |
||||
*/ |
||||
private void getSubmitAttribute(Map<String, Object> propertyMap, ProcessAssignEntity processAssignEntity, JSONObject paramsJSON) { |
||||
for (Entry<String, Object> entry : propertyMap.entrySet()) { |
||||
if (entry.getValue() instanceof JobValue) { |
||||
JobValue ce = (JobValue) entry.getValue(); |
||||
if (ce.getValue() instanceof Primitive) { |
||||
continue; |
||||
} |
||||
if (paramsSet.contains(entry.getKey())) { |
||||
paramsJSON.put(entry.getKey(), String.valueOf(ce.getValue())); |
||||
} |
||||
processAssignEntity.setEntity(entry.getKey(), String.valueOf(ce.getValue())); |
||||
} |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 填报属性状态判断 |
||||
* |
||||
* @param propertyMap |
||||
* @return |
||||
*/ |
||||
private Boolean isOperationState(Map<String, Object> propertyMap) { |
||||
for (Entry<String, Object> entry : propertyMap.entrySet()) { |
||||
if (entry.getValue() instanceof JobValue) { |
||||
JobValue ce = (JobValue) entry.getValue(); |
||||
if (ce.getState() == JobValue.State.MODIFIED) { |
||||
// 此单元格的值在报表初始化后被修改过
|
||||
LogKit.info("cdia-CustomSubmitJob-doJob-State-MODIFIED"); |
||||
return true; |
||||
} else if (ce.getState() == JobValue.State.INSERT) { |
||||
// 此单元格是在报表初始化后新增的(例如执行了插入行操作)
|
||||
LogKit.info("cdia-CustomSubmitJob-doJob-State-INSERT"); |
||||
return true; |
||||
} else if (ce.getState() == JobValue.State.DEFAULT) { |
||||
// 此单元格在报表初始化后没有变化
|
||||
LogKit.info("cdia-CustomSubmitJob-doJob-State-DEFAULT"); |
||||
return true; |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 保存 |
||||
* |
||||
* @param processAssignEntity |
||||
* @throws Exception |
||||
*/ |
||||
private void save(final ProcessAssignEntity processAssignEntity) throws Exception { |
||||
ProcessDBAccess.getAccessor().runDMLAction(new DBAction<ProcessAssignEntity>() { |
||||
@Override |
||||
public ProcessAssignEntity run(DAOContext daoContext) throws Exception { |
||||
(daoContext.getDAO(ProcessAssignDao.class)).addOrUpdate(processAssignEntity); |
||||
return null; |
||||
} |
||||
}); |
||||
} |
||||
|
||||
/** |
||||
* 提交属性处理操作 |
||||
* 1.访问创建流程接口,获得流程ID及其他信息 |
||||
* 2.流程表单保存 |
||||
* 3.打开浏览器窗口 |
||||
* |
||||
* @param paramsJSON |
||||
* @param processAssignEntity |
||||
* @throws Exception |
||||
*/ |
||||
private void operation(JSONObject paramsJSON, ProcessAssignEntity processAssignEntity) throws Exception { |
||||
JSONObject createProcessBody = saveProcessBody(paramsJSON); |
||||
LogKit.info("cdia-CustomSubmitJob-operation-createProcessBody:{}", createProcessBody.encode()); |
||||
String res = postJSON(CdiaConfig.getInstance().getCreateProcessUrl(), createProcessBody); |
||||
LogKit.info("cdia-CustomSubmitJob-operation-response:{}", res); |
||||
JSONObject procInstanceJo = new JSONObject(res).getJSONObject("resultData").getJSONObject("procInstance"); |
||||
String procInstId = procInstanceJo.getString("procInstId"); |
||||
String sequenceNo = procInstanceJo.getString("sequenceNo"); |
||||
if (StringUtils.isEmpty(procInstId) || ComparatorUtils.equals(procInstId, "{}") |
||||
|| StringUtils.isEmpty(sequenceNo) || ComparatorUtils.equals(sequenceNo, "{}") |
||||
) { |
||||
return; |
||||
} |
||||
// 保存数据库
|
||||
processAssignEntity.setId(procInstId); |
||||
processAssignEntity.setProcInstId(procInstId); |
||||
processAssignEntity.setSequenceNo(sequenceNo); |
||||
processAssignEntity.setLoadTime(String.valueOf(System.currentTimeMillis())); |
||||
setOpIndexUrl(processAssignEntity); |
||||
save(processAssignEntity); |
||||
} |
||||
|
||||
/** |
||||
* findProcFormOpIndexUrl接口,返回url |
||||
* |
||||
* @param processAssignEntity |
||||
*/ |
||||
private void setOpIndexUrl(ProcessAssignEntity processAssignEntity) throws Exception { |
||||
if (StringUtils.isBlank(processAssignEntity.getSequenceNo())) { |
||||
return; |
||||
} |
||||
Map<String, Object> params = new HashMap<String, Object>(); |
||||
JSONObject bodyJSON = JSONObject.create(); |
||||
JSONObject paramObject = JSONObject.create(); |
||||
paramObject.put("sequenceNo", processAssignEntity.getSequenceNo()); |
||||
paramObject.put("authFlag", "0"); |
||||
bodyJSON.put("paramObject", paramObject); |
||||
bodyJSON.put("formSysId", StringUtils.EMPTY); |
||||
bodyJSON.put("sysId", SYS_ID); |
||||
bodyJSON.put("userId", processAssignEntity.getDrafId()); |
||||
LogKit.info("cdia-CustomSubmitJob-setOpIndexUrl-params:{}", params); |
||||
String res = postJSON(CdiaConfig.getInstance().getProcFormOpIndexUrl(), bodyJSON); |
||||
LogKit.info("cdia-CustomSubmitJob-setOpIndexUrl-res:{}", res); |
||||
String resultData = (new JSONObject(res)).getString("resultData"); |
||||
if (StringUtils.isNotBlank(resultData)) { |
||||
processAssignEntity.setOpIndexUrl(resultData); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* OA创建流程接口-国产化 |
||||
* |
||||
* @param paramsJSON |
||||
* @return |
||||
*/ |
||||
private JSONObject saveProcessBody(JSONObject paramsJSON) { |
||||
JSONObject requestBody = JSONObject.create(); |
||||
JSONObject paramObject = new JSONObject().put("deptId", paramsJSON.getString("deptId")) |
||||
.put("docTitle", paramsJSON.getString("docTitle")) |
||||
.put("formValue", JSONObject.EMPTY) |
||||
.put("procDefId", paramsJSON.getString("procDefId")) |
||||
.put("isWait", "0"); |
||||
requestBody.put("paramObject", paramObject) |
||||
.put("sysId", paramsJSON.getString("systemCode")) |
||||
.put("formSysId", paramsJSON.getString("equipmentType")) |
||||
.put("userId", paramsJSON.getString("userId")); |
||||
return requestBody; |
||||
} |
||||
} |
@ -0,0 +1,260 @@
|
||||
/* |
||||
* Copyright (C), 2018-2022 |
||||
* Project: starter |
||||
* FileName: CustomTotalSubmitJob |
||||
* Author: |
||||
* Date: 2022/4/7 23:39 |
||||
*/ |
||||
package com.fr.plugin.cdia.submit.job; |
||||
|
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fanruan.api.net.http.HttpKit; |
||||
import com.fr.base.Parameter; |
||||
import com.fr.data.JobValue; |
||||
import com.fr.data.TotalSubmitJob; |
||||
import com.fr.general.ComparatorUtils; |
||||
import com.fr.general.DefaultValues; |
||||
import com.fr.general.GeneralContext; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.cdia.ProcessDBAccess; |
||||
import com.fr.plugin.cdia.bean.ProcessAssignBean; |
||||
import com.fr.plugin.cdia.config.CdiaConfig; |
||||
import com.fr.plugin.cdia.dao.ProcessAssignDao; |
||||
import com.fr.plugin.cdia.entity.ProcessAssignEntity; |
||||
import com.fr.script.Calculator; |
||||
import com.fr.stable.StableUtils; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.db.action.DBAction; |
||||
import com.fr.stable.db.dao.DAOContext; |
||||
import com.fr.third.org.apache.http.entity.StringEntity; |
||||
|
||||
import java.util.*; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <CustomTotalSubmitJob> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class CustomTotalSubmitJob extends TotalSubmitJob { |
||||
public static final String SYS_ID = "OA"; |
||||
private static final long serialVersionUID = 8626781409712334459L; |
||||
private static final HashSet<String> paramsSet = new HashSet<String>() {{ |
||||
add("procDefId"); |
||||
add("docTitle"); |
||||
add("userId"); |
||||
add("deptId"); |
||||
add("systemCode"); |
||||
add("equipmentType"); |
||||
}}; |
||||
|
||||
/** |
||||
* POST提交JSON |
||||
* |
||||
* @param url |
||||
* @param params |
||||
* @return |
||||
* @throws Exception |
||||
*/ |
||||
public static String postJSON(String url, JSONObject params) throws Exception { |
||||
Map<String, String> headers = new HashMap<>(); |
||||
headers.put("Content-Type", "application/json"); |
||||
StringEntity stringEntity = new StringEntity(params.encode(), "UTF-8"); |
||||
return HttpKit.executeAndParse(com.fanruan.api.net.http.rs.HttpRequest.custom() |
||||
.url(url).post(stringEntity).headers(headers).build()); |
||||
} |
||||
|
||||
@Override |
||||
public void doJob(Calculator calculator) throws Exception { |
||||
super.doJob(calculator); |
||||
} |
||||
|
||||
@Override |
||||
public String getJobType() { |
||||
return "CustomTotalJob"; |
||||
} |
||||
|
||||
@Override |
||||
protected void doTotalJob(Data data, Calculator calculator) throws Exception { |
||||
List<ProcessAssignBean> processAssignBeans = new ArrayList<>(); |
||||
ProcessAssignBean processAssignBean; |
||||
ProcessAssignEntity processAssignEntity; |
||||
JSONObject paramsJSON; |
||||
boolean isRecordModify; |
||||
for (int row = 0; row < data.getRowCount(); row++) { |
||||
processAssignBean = new ProcessAssignBean(); |
||||
processAssignEntity = new ProcessAssignEntity(); |
||||
paramsJSON = JSONObject.create(); |
||||
isRecordModify = false; |
||||
for (int col = 0; col < data.getColumnCount(); col++) { |
||||
Object cellValue = data.getValueAt(row, col); |
||||
if (!(cellValue instanceof JobValue)) { |
||||
continue; |
||||
} |
||||
JobValue ce = (JobValue) cellValue; |
||||
if (!isRecordModify && isStateStrict(ce)) { |
||||
isRecordModify = true; |
||||
} |
||||
if (paramsSet.contains(data.getColumnName(col))) { |
||||
paramsJSON.put(data.getColumnName(col), valueToString(ce.getValue())); |
||||
} |
||||
processAssignEntity.setEntity(data.getColumnName(col), valueToString(ce.getValue())); |
||||
} |
||||
if (isRecordModify) { |
||||
processAssignBean.setParamsJSON(paramsJSON); |
||||
processAssignBean.setProcessAssignEntity(processAssignEntity); |
||||
processAssignBeans.add(processAssignBean); |
||||
} |
||||
} |
||||
if (processAssignBeans.isEmpty()) { |
||||
return; |
||||
} |
||||
JSONObject procInstanceJo = JSONObject.EMPTY; |
||||
for (ProcessAssignBean processAssign : processAssignBeans) { |
||||
if (processAssign.getParamsJSON().isEmpty()) { |
||||
continue; |
||||
} |
||||
if (ComparatorUtils.equals(procInstanceJo, JSONObject.EMPTY)) { |
||||
procInstanceJo = getProcInstance(processAssign.getParamsJSON()); |
||||
} |
||||
operation(procInstanceJo, processAssign.getProcessAssignEntity()); |
||||
} |
||||
} |
||||
|
||||
private JSONObject getProcInstance(JSONObject paramsJSON) throws Exception { |
||||
JSONObject createProcessBody = saveProcessBody(paramsJSON); |
||||
LogKit.info("cdia-CustomTotalSubmitJob-getProcInstance-createProcessBody:{}", createProcessBody.encode()); |
||||
String res = postJSON(CdiaConfig.getInstance().getCreateProcessUrl(), createProcessBody); |
||||
LogKit.info("cdia-CustomTotalSubmitJob-getProcInstance-response:{}", res); |
||||
return new JSONObject(res).getJSONObject("resultData").getJSONObject("procInstance"); |
||||
} |
||||
|
||||
/** |
||||
* jobValue to String |
||||
* |
||||
* @return |
||||
*/ |
||||
private String valueToString(Object value) { |
||||
String result; |
||||
if (value instanceof Date) { |
||||
DefaultValues defaultValues = GeneralContext.getDefaultValues(); |
||||
result = defaultValues.getDateTimeFormat().format(value); |
||||
} else if (value instanceof Parameter) { |
||||
result = ((Parameter) value).valueToString(); |
||||
} else if (value instanceof Double) { |
||||
result = StableUtils.doubleToString((Double) value); |
||||
} else { |
||||
result = String.valueOf(value); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
/** |
||||
* 填报属性状态判断 |
||||
* |
||||
* @param jobValue |
||||
* @return |
||||
*/ |
||||
private Boolean isStateStrict(JobValue jobValue) { |
||||
if ((jobValue.getState().checkChanged() && !jobValue.getState().checkDeleted())) { |
||||
return true; |
||||
} else if (jobValue.getState().checkInsert()) { |
||||
return true; |
||||
} else if (jobValue.getState().checkDeleted()) { |
||||
return true; |
||||
} else if (jobValue.getState().checkDefault()) { |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 提交属性处理操作 |
||||
* 1.访问创建流程接口,获得流程ID及其他信息 |
||||
* 2.流程表单保存 |
||||
* 3.打开浏览器窗口 |
||||
* |
||||
* @param procInstanceJo |
||||
* @param processAssignEntity |
||||
* @throws Exception |
||||
*/ |
||||
private void operation(JSONObject procInstanceJo, ProcessAssignEntity processAssignEntity) throws Exception { |
||||
String procInstId = procInstanceJo.getString("procInstId"); |
||||
String sequenceNo = procInstanceJo.getString("sequenceNo"); |
||||
if (StringUtils.isEmpty(procInstId) || ComparatorUtils.equals(procInstId, "{}") |
||||
|| StringUtils.isEmpty(sequenceNo) || ComparatorUtils.equals(sequenceNo, "{}") |
||||
) { |
||||
return; |
||||
} |
||||
// 保存数据库
|
||||
processAssignEntity.setId(UUID.randomUUID().toString()); |
||||
processAssignEntity.setProcInstId(procInstId); |
||||
processAssignEntity.setSequenceNo(sequenceNo); |
||||
processAssignEntity.setLoadTime(String.valueOf(System.currentTimeMillis())); |
||||
setOpIndexUrl(processAssignEntity); |
||||
save(processAssignEntity); |
||||
} |
||||
|
||||
/** |
||||
* findProcFormOpIndexUrl接口,返回url |
||||
* |
||||
* @param processAssignEntity |
||||
*/ |
||||
private void setOpIndexUrl(ProcessAssignEntity processAssignEntity) throws Exception { |
||||
if (StringUtils.isBlank(processAssignEntity.getSequenceNo())) { |
||||
return; |
||||
} |
||||
JSONObject bodyJSON = JSONObject.create(); |
||||
JSONObject paramObject = JSONObject.create(); |
||||
paramObject.put("sequenceNo", processAssignEntity.getSequenceNo()); |
||||
paramObject.put("authFlag", "0"); |
||||
bodyJSON.put("paramObject", paramObject); |
||||
bodyJSON.put("formSysId", StringUtils.EMPTY); |
||||
bodyJSON.put("sysId", SYS_ID); |
||||
bodyJSON.put("userId", processAssignEntity.getDrafId()); |
||||
LogKit.info("cdia-CustomTotalSubmitJob-setOpIndexUrl-bodyJSON:{}", bodyJSON.encode()); |
||||
String res = postJSON(CdiaConfig.getInstance().getProcFormOpIndexUrl(), bodyJSON); |
||||
LogKit.info("cdia-CustomTotalSubmitJob-setOpIndexUrl-res:{}", res); |
||||
String resultData = (new JSONObject(res)).getString("resultData"); |
||||
if (StringUtils.isNotBlank(resultData)) { |
||||
processAssignEntity.setOpIndexUrl(resultData); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* OA创建流程接口-国产化 |
||||
* |
||||
* @param paramsJSON |
||||
* @return |
||||
*/ |
||||
private JSONObject saveProcessBody(JSONObject paramsJSON) { |
||||
JSONObject requestBody = JSONObject.create(); |
||||
JSONObject paramObject = new JSONObject().put("deptId", paramsJSON.getString("deptId")) |
||||
.put("docTitle", paramsJSON.getString("docTitle")) |
||||
.put("formValue", JSONObject.EMPTY) |
||||
.put("procDefId", paramsJSON.getString("procDefId")) |
||||
.put("isWait", "0"); |
||||
requestBody.put("paramObject", paramObject) |
||||
.put("sysId", paramsJSON.getString("systemCode")) |
||||
.put("formSysId", paramsJSON.getString("equipmentType")) |
||||
.put("userId", paramsJSON.getString("userId")); |
||||
return requestBody; |
||||
} |
||||
|
||||
/** |
||||
* 保存 |
||||
* |
||||
* @param processAssignEntity |
||||
* @throws Exception |
||||
*/ |
||||
private void save(final ProcessAssignEntity processAssignEntity) throws Exception { |
||||
ProcessDBAccess.getAccessor().runDMLAction(new DBAction<ProcessAssignEntity>() { |
||||
@Override |
||||
public ProcessAssignEntity run(DAOContext daoContext) throws Exception { |
||||
(daoContext.getDAO(ProcessAssignDao.class)).addOrUpdate(processAssignEntity); |
||||
return null; |
||||
} |
||||
}); |
||||
} |
||||
} |
@ -0,0 +1,106 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: DataSubmitConfigPane |
||||
* Author: |
||||
* Date: 2020/8/31 21:59 |
||||
*/ |
||||
package com.fr.plugin.cdia.submit.ui; |
||||
|
||||
import com.fr.data.AbstractClassJob; |
||||
import com.fr.data.ClassSubmitJob; |
||||
import com.fr.data.SubmitJob; |
||||
import com.fr.design.beans.BasicBeanPane; |
||||
import com.fr.design.designer.properties.items.Item; |
||||
import com.fr.design.gui.frpane.ObjectProperiesPane; |
||||
import com.fr.design.gui.icombobox.UIComboBox; |
||||
import com.fr.design.gui.itextarea.UITextArea; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.utils.gui.GUICoreUtils; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <数据提交配置DataSubmitConfigPane> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class DataSubmitConfigPane extends BasicBeanPane { |
||||
protected UIComboBox classNameComboBox; |
||||
protected ObjectProperiesPane objectProperiesPane; |
||||
|
||||
public DataSubmitConfigPane() { |
||||
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
JPanel classPathPane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(); |
||||
this.classNameComboBox = initUIComboBox(DataSubmitItems.LIST_ITEMS); |
||||
classPathPane.add(this.classNameComboBox); |
||||
classPathPane.setBorder(GUICoreUtils.createTitledBorder(Toolkit.i18nText("Fine-Design_Basic_Class_Name"), null)); |
||||
this.add(classPathPane, "North"); |
||||
this.objectProperiesPane = new ObjectProperiesPane(); |
||||
this.objectProperiesPane.setBorder(GUICoreUtils.createTitledBorder(Toolkit.i18nText("Fine-Design_Basic_Property"), null)); |
||||
this.add(this.objectProperiesPane, "Center"); |
||||
UITextArea description = new UITextArea(2, 1); |
||||
description.setText(Toolkit.i18nText("Fine-Design_Basic_Extend_Class", new Object[]{"com.fr.data.AbstractSubmitTask"})); |
||||
JPanel descriptionPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); |
||||
descriptionPane.add(description); |
||||
descriptionPane.setBorder(GUICoreUtils.createTitledBorder(Toolkit.i18nText("Fine-Design_Basic_Custom_Job_Description"), null)); |
||||
this.add(descriptionPane, "South"); |
||||
this.checkAddButtonEnable(); |
||||
} |
||||
|
||||
public int getLengthOfTextField() { |
||||
return 25; |
||||
} |
||||
|
||||
protected String title4PopupWindow() { |
||||
return "DataSubmitJob"; |
||||
} |
||||
|
||||
protected Component getWindowAncestor() { |
||||
return this; |
||||
} |
||||
|
||||
public void populateBean(Object obj) { |
||||
if (obj instanceof AbstractClassJob) { |
||||
AbstractClassJob job = (AbstractClassJob) obj; |
||||
this.classNameComboBox.setSelectedIndex(DataSubmitItems.classNameList.indexOf(job.getClassName())); |
||||
this.objectProperiesPane.populateBean(job.getPropertyMap()); |
||||
this.checkAddButtonEnable(); |
||||
} |
||||
} |
||||
|
||||
public SubmitJob updateBean() { |
||||
ClassSubmitJob submitJob = new ClassSubmitJob(DataSubmitItems.classNameList.get(this.classNameComboBox.getSelectedIndex())); |
||||
submitJob.setPropertyMap(this.objectProperiesPane.updateBean()); |
||||
this.checkAddButtonEnable(); |
||||
return submitJob; |
||||
} |
||||
|
||||
public void checkAddButtonEnable() { |
||||
this.objectProperiesPane.enableAddButton(true); |
||||
} |
||||
|
||||
public void reset() { |
||||
this.classNameComboBox.setSelectedIndex(0); |
||||
this.checkAddButtonEnable(); |
||||
} |
||||
|
||||
/** |
||||
* 初始化类名下拉框 |
||||
* |
||||
* @param items |
||||
* @return |
||||
*/ |
||||
private UIComboBox initUIComboBox(List<Item> items) { |
||||
DefaultComboBoxModel model = new DefaultComboBoxModel(); |
||||
for (Item item : items) { |
||||
model.addElement(item); |
||||
} |
||||
return new UIComboBox(model); |
||||
} |
||||
} |
@ -0,0 +1,45 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: DataSubmitItems |
||||
* Author: |
||||
* Date: 2020/9/1 8:47 |
||||
*/ |
||||
package com.fr.plugin.cdia.submit.ui; |
||||
|
||||
import com.fr.design.designer.properties.items.Item; |
||||
import com.fr.design.designer.properties.items.ItemProvider; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.plugin.cdia.submit.job.AddUserSubmitJob; |
||||
import com.fr.plugin.cdia.submit.job.CustomSubmitJob; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <DataSubmitItems> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
public class DataSubmitItems implements ItemProvider { |
||||
|
||||
public static List<Item> LIST_ITEMS = new ArrayList<Item>() {{ |
||||
add(new Item(Toolkit.i18nText("Plugin-cdia_ClassName_Apply_Submit"), CustomSubmitJob.class.getName())); |
||||
add(new Item(Toolkit.i18nText("Plugin-cdia_ClassName_Add_User_Submit"), AddUserSubmitJob.class.getName())); |
||||
}}; |
||||
|
||||
public static List<String> classNameList = new ArrayList<String>() {{ |
||||
add(CustomSubmitJob.class.getName()); |
||||
add(AddUserSubmitJob.class.getName()); |
||||
}}; |
||||
|
||||
public DataSubmitItems() { |
||||
} |
||||
|
||||
@Override |
||||
public Item[] getItems() { |
||||
return LIST_ITEMS.toArray(new Item[0]); |
||||
} |
||||
} |
@ -0,0 +1,35 @@
|
||||
/* |
||||
* Copyright (C), 2018-2020 |
||||
* Project: starter |
||||
* FileName: WebResourceComponent |
||||
* Author: |
||||
* Date: 2020/8/31 16:39 |
||||
*/ |
||||
package com.fr.plugin.cdia.web; |
||||
|
||||
import com.fr.intelli.record.Focus; |
||||
import com.fr.intelli.record.Original; |
||||
import com.fr.record.analyzer.EnableMetrics; |
||||
import com.fr.web.struct.Component; |
||||
import com.fr.web.struct.browser.RequestClient; |
||||
import com.fr.web.struct.category.ScriptPath; |
||||
|
||||
/** |
||||
* <Function Description><br> |
||||
* <WebResourceComponent> |
||||
* |
||||
* @author |
||||
* @since 1.0.0 |
||||
*/ |
||||
@EnableMetrics |
||||
public class WebResourceComponent extends Component { |
||||
public static final String PLUGIN_ID = "com.fr.plugin.cdia.v10"; |
||||
|
||||
public static final WebResourceComponent KEY = new WebResourceComponent(); |
||||
|
||||
@Override |
||||
@Focus(id = PLUGIN_ID, text = "Plugin-cdia", source = Original.PLUGIN) |
||||
public ScriptPath script(RequestClient requestClient) { |
||||
return ScriptPath.build("/com/fr/plugin/cdia/web/cdia.js"); |
||||
} |
||||
} |
@ -0,0 +1,13 @@
|
||||
Plugin-cdia_Submit_Data=API Data Submit |
||||
Plugin-cdia_ClassName_Apply_Submit=Apply Submit |
||||
Plugin-cdia_ClassName_Add_User_Submit=Add User Submit |
||||
Plugin-cdia_Group=API Data Submit |
||||
Plugin-cdia_Config_CreateProcessUrl=Create Process Url |
||||
Plugin-cdia_Config_CreateProcessUrl_Description=Create Process Url |
||||
Plugin-cdia_Config_ProcFormOpIndexUrl=ProcFormOpIndexUrl |
||||
Plugin-cdia_Config_ProcFormOpIndexUrl_Description=ProcFormOpIndexUrl |
||||
Plugin-cdia_Config_ProcNodeUrl=ProcNodeUrl |
||||
Plugin-cdia_Config_ProcNodeUrl_Description=ProcNodeUrl |
||||
Plugin-cdia_Config_AssignNmaAuthUrl=AssignNmaAuthUrl |
||||
Plugin-cdia_Config_AssignNmaAuthUrl_Description=AssignNmaAuthUrl |
||||
Plugin-cdia_Licence_Expired=API Data Submit Plugin Licence Expired |
@ -0,0 +1,13 @@
|
||||
Plugin-cdia_Submit_Data=\u63A5\u53E3\u6570\u636E\u63D0\u4EA4 |
||||
Plugin-cdia_ClassName_Apply_Submit=\u5EFA\u7ACB\u5BA1\u6838\u63D0\u4EA4 |
||||
Plugin-cdia_ClassName_Add_User_Submit=\u67E5\u8BE2\u5BA1\u6838\u63D0\u4EA4 |
||||
Plugin-cdia_Group=\u63A5\u53E3\u6570\u636E\u63D0\u4EA4 |
||||
Plugin-cdia_Config_CreateProcessUrl=\u521B\u5EFA\u6D41\u7A0BUrl |
||||
Plugin-cdia_Config_CreateProcessUrl_Description=\u521B\u5EFA\u6D41\u7A0BUrl |
||||
Plugin-cdia_Config_ProcFormOpIndexUrl=\u6D41\u7A0B\u7D22\u5F15url\u67E5\u8BE2\u63A5\u53E3 |
||||
Plugin-cdia_Config_ProcFormOpIndexUrl_Description=\u6D41\u7A0B\u7D22\u5F15url\u67E5\u8BE2\u63A5\u53E3 |
||||
Plugin-cdia_Config_ProcNodeUrl=\u5BA1\u6279\u610F\u89C1\u67E5\u8BE2\u63A5\u53E3 |
||||
Plugin-cdia_Config_ProcNodeUrl_Description=\u5BA1\u6279\u610F\u89C1\u67E5\u8BE2\u63A5\u53E3 |
||||
Plugin-cdia_Config_AssignNmaAuthUrl=\u7BA1\u4F1A\u63A5\u53E3 |
||||
Plugin-cdia_Config_AssignNmaAuthUrl_Description=\u7BA1\u4F1A\u63A5\u53E3 |
||||
Plugin-cdia_Licence_Expired=\u63A5\u53E3\u6570\u636E\u63D0\u4EA4\u63D2\u4EF6\u8BB8\u53EF\u8FC7\u671F |
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue