提交管理看板伊利集成代码

This commit is contained in:
lihongyu 2022-12-29 10:12:08 +08:00
parent e947053131
commit c59d79830c
19 changed files with 5728 additions and 1236 deletions

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/aws"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/doc"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/event"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/ftp"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/http"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/oauthjar"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/pal"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/sso"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/xcweb"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.awspaas.user.apps.yili.integration</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -1398,9 +1398,7 @@ public class GetmeritsController {
deoa= "'"+ds[0]+"'";
}
deoa ="'"+ StringUtils.join(ds, "','")+"'";
System.out.println(
"deoa》》》》》》》》》》"+deoa
);
//System.out.println("deoa》》》》》》》》》》"+deoa);
}else {
deoa = "'" +synchronous_home+"'";
}
@ -1425,10 +1423,7 @@ public class GetmeritsController {
dleass = "'"+deptSplit[0]+"'";
}
dleass ="'"+ StringUtils.join(deptSplit, "','")+"'";
System.out.println(
"dleass》》》》》》》》》》"+dleass
);
//System.out.println("dleass》》》》》》》》》》"+dleass);
String[] plid = dleass.split(",");
int y=0;
@ -1452,9 +1447,7 @@ public class GetmeritsController {
deoa = "'" + ds[0] + "'";
}
deoa = "'" + StringUtils.join(ds, "','") + "'";
System.out.println(
"deoa》》》》》》》》》》" + deoa
);
//System.out.println("deoa》》》》》》》》》》" + deoa);
} else {
deoa = "'" + data + "'";
}
@ -1472,7 +1465,7 @@ public class GetmeritsController {
}
}
System.out.println("mmap>>>>>>>>>>>>>>>>>>>"+map_name);
//System.out.println("mmap>>>>>>>>>>>>>>>>>>>"+map_name);
list_pq_2.add(y, map_name);
y++;
}
@ -1482,7 +1475,7 @@ public class GetmeritsController {
jsonObject_child_2_father.put("child",jsonArray_child_2);
// jsonObject_child_2_1_father.put("child",jsonArray_child_2_1);
jsonArray_levels_2.add(jsonObject_child_2_father);
System.out.println("maxs.>>>>>>>>>>>+"+maxs);
//System.out.println("maxs.>>>>>>>>>>>+"+maxs);
for (int i=0;i<maxs;i++){
JSONObject jsonObject_child_3_last = new JSONObject(new LinkedHashMap<>());
@ -1500,7 +1493,7 @@ public class GetmeritsController {
* 这是L3流程绩效名称中的流程架构
*/
JSONObject jsonObject_child_content_3_name_last = new JSONObject(new LinkedHashMap<>());
System.out.println("h>>>>>>>>>>>>>>>" + h);
//System.out.println("h>>>>>>>>>>>>>>>" + h);
jsonObject_child_content_3_name_last.put("name", list_pq_2.get(h).get(i));
if(StringUtils.isNotEmpty(list_pq_2.get(h).get(i))){
@ -1676,17 +1669,8 @@ public class GetmeritsController {
dpliea = "'"+deptSplits[0]+"'";
}
dpliea ="'"+ StringUtils.join(deptSplits, "','")+"'";
System.out.println(
"dpliea》》》》》》》》》》"+dpliea
);
//System.out.println("dpliea》》》》》》》》》》"+dpliea);
String[] plids = dpliea.split(",");
for (int i=0;i<max;i++){
JSONObject jsonObject_child_3_last = new JSONObject(new LinkedHashMap<>());
@ -1704,7 +1688,7 @@ public class GetmeritsController {
* 这是L3流程绩效名称中的流程架构
*/
JSONObject jsonObject_child_content_3_name_last = new JSONObject(new LinkedHashMap<>());
System.out.println("h>>>>>>>>>>>>>>>"+h);
//System.out.println("h>>>>>>>>>>>>>>>"+h);
jsonObject_child_content_3_name_last.put("name",list_pq.get(h).get(i));
if (StringUtils.isNotEmpty(list_pq.get(h).get(i))){
@ -1719,7 +1703,7 @@ public class GetmeritsController {
if(mapss.size()==0){
JSONObject jsonObject_child_content_3_name_last = new JSONObject(new LinkedHashMap<>());
jsonObject_child_content_3_name_last.put("name",list_pq.get(h).get(i));
System.out.println("h>>>>>>>>>>>>>>>"+h);
//System.out.println("h>>>>>>>>>>>>>>>"+h);
if (StringUtils.isNotEmpty(list_pq.get(h).get(i))){
jsonObject_child_content_3_name_last.put("num","1");
@ -1847,9 +1831,7 @@ public class GetmeritsController {
dleass = "'"+deptSplit[0]+"'";
}
dleass ="'"+ StringUtils.join(deptSplit, "','")+"'";
System.out.println(
"dleass》》》》》》》》》》"+dleass
);
//System.out.println("dleass》》》》》》》》》》"+dleass);
String[] plid = dleass.split(",");
@ -1873,9 +1855,7 @@ public class GetmeritsController {
deoa= "'"+ds[0]+"'";
}
deoa ="'"+ StringUtils.join(ds, "','")+"'";
System.out.println(
"deoa》》》》》》》》》》"+deoa
);
//System.out.println("deoa》》》》》》》》》》"+deoa);
}else {
deoa = "'"+data+"'";
}
@ -1902,7 +1882,7 @@ public class GetmeritsController {
jsonObject_child_2_father.put("child",jsonArray_child_2);
// jsonObject_child_2_1_father.put("child",jsonArray_child_2_1);
jsonArray_levels_2.add(jsonObject_child_2_father);
System.out.println("maxs.>>>>>>>>>>>+"+maxs);
//System.out.println("maxs.>>>>>>>>>>>+"+maxs);
for (int i=0;i<maxs;i++){
JSONObject jsonObject_child_3_last = new JSONObject(new LinkedHashMap<>());
@ -1920,7 +1900,7 @@ public class GetmeritsController {
* 这是L3流程绩效名称中的流程架构
*/
JSONObject jsonObject_child_content_3_name_last = new JSONObject(new LinkedHashMap<>());
System.out.println("h>>>>>>>>>>>>>>>" + h);
//System.out.println("h>>>>>>>>>>>>>>>" + h);
jsonObject_child_content_3_name_last.put("name", list_pq_2.get(h).get(i));
if (StringUtils.isNotEmpty(list_pq_2.get(h).get(i))){
jsonObject_child_content_3_name_last.put("num", "1");
@ -2086,17 +2066,8 @@ public class GetmeritsController {
dpliea = "'"+deptSplits[0]+"'";
}
dpliea ="'"+ StringUtils.join(deptSplits, "','")+"'";
System.out.println(
"dpliea》》》》》》》》》》"+dpliea
);
//System.out.println("dpliea》》》》》》》》》》"+dpliea);
String[] plids = dpliea.split(",");
for (int i=0;i<max;i++){
JSONObject jsonObject_child_3_last = new JSONObject(new LinkedHashMap<>());
@ -2114,7 +2085,7 @@ public class GetmeritsController {
* 这是L3流程绩效名称中的流程架构
*/
JSONObject jsonObject_child_content_3_name_last = new JSONObject(new LinkedHashMap<>());
System.out.println("h>>>>>>>>>>>>>>>"+h);
//System.out.println("h>>>>>>>>>>>>>>>"+h);
jsonObject_child_content_3_name_last.put("name",list_pq.get(h).get(i));
if (StringUtils.isNotEmpty(list_pq.get(h).get(i))) {
jsonObject_child_content_3_name_last.put("num","1");
@ -2126,7 +2097,7 @@ public class GetmeritsController {
}
if (mapss.size()==0){
JSONObject jsonObject_child_content_3_name_last = new JSONObject(new LinkedHashMap<>());
System.out.println("h>>>>>>>>>>>>>>>"+h);
//System.out.println("h>>>>>>>>>>>>>>>"+h);
jsonObject_child_content_3_name_last.put("name",list_pq.get(h).get(i));
if (StringUtils.isNotEmpty(list_pq.get(h).get(i))) {
jsonObject_child_content_3_name_last.put("num","1");
@ -2139,14 +2110,14 @@ public class GetmeritsController {
jsonObject_child_content_3_last.put("content",jsonArray_child_content_3_last);
System.out.println("jsonObject_child_content_3_last>>>>>>>>>>>>>>"+jsonObject_child_content_3_last);
//System.out.println("jsonObject_child_content_3_last>>>>>>>>>>>>>>"+jsonObject_child_content_3_last);
jsonArray_child_3_last.add(jsonObject_child_content_3_last);
}
jsonObject_child_3_last.put("child",jsonArray_child_3_last);
jsonArray_levels_3.add(jsonObject_child_3_last);
}
jsonObject_L3.put("levels_3",jsonArray_levels_3);
System.out.println("jsonArray>>>>>>>>>>"+jsonArray_levels_3);
//System.out.println("jsonArray>>>>>>>>>>"+jsonArray_levels_3);
JSONObject jsonObject_4 = new JSONObject(new LinkedHashMap<>());
jsonObject_4.put("levels_name","关键流程清单");
jsonObject_4.put("levels_4",new JSONArray(new LinkedList<>()));

View File

@ -12,6 +12,7 @@ import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.ProcessAPIManager;
import com.actionsoft.bpms.bpmn.engine.core.context.TaskBehaviorContextImpl;
import com.actionsoft.bpms.bpmn.engine.model.run.TaskCommentModel;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.HistoryTaskInstance;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance;
import com.actionsoft.bpms.commons.login.constant.LoginConst;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
@ -419,13 +420,29 @@ public class OaPendComponent {
}else {
der= df.format(taskInstance.getReadTime());
}
xmlDatasUtil.setReceivedate(der.substring(0, der.indexOf(" ")));
xmlDatasUtil.setReceivetime(der.substring(der.indexOf(" "),der.length()));
if (taskInstance!=null){
String actionName = getActionName(taskInstance);
if (actionName.equals("确认发布")||equalsAction(GO_BACK, actionName)){
xmlDatasUtil.setCurrentnodetype("1");
//流程结束时归档所有任务
try {
String processInstId = pec.getProcessInstance().getId();
List<HistoryTaskInstance> list = SDK.getHistoryTaskQueryAPI().processInstId(processInstId).list();
System.err.println(pec.getProcessInstance().getTitle()+"_当前流程的历史任务========>"+list);
for (HistoryTaskInstance historyTaskInstance : list) {
try {
//updatePending2(historyTaskInstance, pec);
} catch (Exception e) {
// TODO: handle exception
}
}
} catch (Exception e) {
// TODO: handle exception
}
}else{
xmlDatasUtil.setCurrentnodetype("0");
}
@ -553,6 +570,216 @@ public class OaPendComponent {
}
}
public void updatePending2(TaskInstance taskInstance, ProcessExecutionContext pec) throws IOException, SOAPException, DocumentException {
if("admin".equals(taskInstance.getTarget())) {
return;
}
XmlDatasUtil xmlDatasUtil = new XmlDatasUtil();
xmlDatasUtil.setExternal_system_ID("LCZD");
xmlDatasUtil.setOther_system_to_do_ID(taskInstance.getId());
//System.out.println("pec.getProcessInstance()>>>>>>>>"+pec.getProcessInstance());
if(pec.getProcessInstance()!=null){
String actionName = getActionName(taskInstance);
if (actionName.equals("传阅")){
BO bo_act_coe_publish = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", pec.getProcessInstance().getId()).detail();
if (bo_act_coe_publish!=null){
xmlDatasUtil.setProcess_title(" 您有一条传阅流程【"+bo_act_coe_publish.getString("PROCESS_TITLE")+"】,点击进行处理");
}else {
xmlDatasUtil.setProcess_title(" 您有一条传阅流程【"+pec.getProcessInstance().getTitle()+"】,点击进行处理");
}
}else {
BO bo_act_coe_publish = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", pec.getProcessInstance().getId()).detail();
if (bo_act_coe_publish!=null){
xmlDatasUtil.setProcess_title(" 您有一条待办流程【"+bo_act_coe_publish.getString("PROCESS_TITLE")+"】,点击进行处理");
}else {
xmlDatasUtil.setProcess_title(" 您有一条待办流程【"+pec.getProcessInstance().getTitle()+"】,点击进行处理");
}
}
}else {
xmlDatasUtil.setProcess_title(" 您有一条发布流程被作废,点击进行处理");
}
//http://localhost:8089/portal/r/or?cmd=com.yili_form_page_open&amp;processInstId=3505e654-9217-41cd-a31d-4971846b3219&amp;taskInstId=8a71d75e-3ee0-43a2-a226-ecb01419319c&amp;oauthName=oauthLogin&amp;token=admin
String portalUrl = SDK.getPortalAPI().getPortalUrl();
if (portalUrl.equals("http://10.114.11.135:8088/portal")){
portalUrl = "https://bpm.yili.com:8088/portal/";
}
if (pec.getProcessInstance()!=null){
xmlDatasUtil.setPcurl("https://bpm.yili.com:8088/portal"+"/r/or?cmd=com.yili_form_page_open&amp;oauthName=oauthLogin&amp;processInstId="+pec.getProcessInstance().getId()+"&amp;taskInstId="+taskInstance.getId()+"&amp;openState="+taskInstance.getState());
xmlDatasUtil.setMobileurl("https://bpm.yili.com:8088/portal"+"/r/or?cmd=com.yili_form_page_open&amp;corpid=wwb0ae23173b140618&amp;appAgentId=1000014&amp;oauthName=wechat&amp;processInstId="+pec.getProcessInstance().getId()+"&amp;taskInstId="+taskInstance.getId()+"&amp;openState="+taskInstance.getState());
}else {
xmlDatasUtil.setPcurl("https://bpm.yili.com:8088/portal"+"/r/or?cmd=CLIENT_BPM_FORM_TRACK_OPEN&amp;oauthName=oauthLogin&amp;processInstId="+taskInstance.getProcessInstId()+"&amp;sourceApp=prm");
xmlDatasUtil.setMobileurl("https://bpm.yili.com:8088/portal"+"/r/or?cmd=CLIENT_BPM_FORM_TRACK_OPEN&amp;corpid=wwb0ae23173b140618&amp;appAgentId=1000014&amp;oauthName=wechat&amp;processInstId="+taskInstance.getProcessInstId()+"&amp;sourceApp=prm");
}
String target = taskInstance.getTarget();
//System.out.println("当前账户======》》》》"+target);
BO bo_eu_oa_reson = SDK.getBOAPI().query("BO_EU_OA_RESON", true).addQuery("WORKCODE=" , target).detail();
//System.out.println("bo>>>>>>>>>>>>>>"+bo_eu_oa_reson);
if (bo_eu_oa_reson!=null){
xmlDatasUtil.setTo_do_login_account(bo_eu_oa_reson.getString("LOGINID"));
}
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式不显示毫秒
if (taskInstance.getBeginTime()!=null){
String str = df.format(taskInstance.getBeginTime());
String substring = str.substring(str.indexOf(" "), str.length());
xmlDatasUtil.setTo_do_creation_time(substring);
xmlDatasUtil.setTo_do_completion_time(df.format(taskInstance.getBeginTime()).substring(df.format(taskInstance.getBeginTime()).indexOf(" "), df.format(taskInstance.getBeginTime()).length()));
xmlDatasUtil.setCreatedate(str.substring(0, str.indexOf(" ")));
xmlDatasUtil.setDonedate(df.format(taskInstance.getBeginTime()).substring(0, df.format(taskInstance.getBeginTime()).indexOf(" ")));
}else {
String str = df.format(new Date());
String substring = str.substring(str.indexOf(" "), str.length());
xmlDatasUtil.setTo_do_creation_time(substring);
xmlDatasUtil.setTo_do_completion_time(df.format(new Date()).substring(df.format(new Date()).indexOf(" "), df.format(new Date()).length()));
xmlDatasUtil.setCreatedate(str.substring(0, str.indexOf(" ")));
xmlDatasUtil.setDonedate(df.format(new Date()).substring(0, df.format(new Date()).indexOf(" ")));
}
//0待办1已办
xmlDatasUtil.setTo_do_status("1");
//0未读 -2已读
xmlDatasUtil.setViewtype("-2");
//0:未归档 1已归档
xmlDatasUtil.setCurrentnodetype("1");
xmlDatasUtil.setTo_do_official_type("0");
String der = "";
if (taskInstance.getReadTime()==null){
der= df.format(new Date());
}else {
der= df.format(taskInstance.getReadTime());
}
xmlDatasUtil.setReceivedate(der.substring(0, der.indexOf(" ")));
xmlDatasUtil.setReceivetime(der.substring(der.indexOf(" "),der.length()));
xmlDatasUtil.setCurrentnodetype("1");
if (pec.getProcessInstance()!=null) {
xmlDatasUtil.setRequestcode(pec.getProcessInstance().getId());
xmlDatasUtil.setCurrentnodename(SDK.getRepositoryAPI().getProcessNode(pec.getProcessInstance().getProcessDefId(),taskInstance.getActivityDefId()).getName());
// 调用App
String sourceAppId = pec.getProcessInstance().getAppId();
// aslp服务地址
String aslp = "aslp://com.actionsoft.apps.processtrends/processNodeInfoASLP";
// 参数定义列表
Map params = new HashMap<String, Object>();
//流程实例id,必填
params.put("processInstId", pec.getProcessInstance().getId());
//,必填
if (pec.getUserContext()!=null){
params.put("sid", pec.getUserContext().getSessionId());
}else {
String sessionId = new SSOUtil().registerClientSessionNoPassword(pec.getTaskInstance().getTarget(), LoginConst.DEFAULT_LANG, "127.0.0.1", LoginConst.DEVICE_PC);
params.put("sid", sessionId);
}
AppAPI appAPI = SDK.getAppAPI();
//流程节点数据
ResponseObject ro = appAPI.callASLP(appAPI.getAppContext(sourceAppId), aslp, params);
String username = "";
String userid = "";
if (ro.isOk()){
String data = ro.getData().toString();
JSONObject jsonObject = JSONObject.parseObject(data);
JSONArray jsonArray = JSONArray.parseArray(jsonObject.getString("processBudgetModelList"));
if (!jsonArray.isEmpty()){
for(int i=0;i<jsonArray.size();i++){
String filename = jsonArray.getJSONObject(i).getString("executor");
String userid2 = jsonArray.getJSONObject(i).getString("userid2");
username+=filename+" ";
userid+=userid2+" ";
}
}
}
xmlDatasUtil.setNooperator(username);
}else {
xmlDatasUtil.setRequestcode("");
}
xmlDatasUtil.setWorkcode("");
if (pec.getProcessDef()!=null){
xmlDatasUtil.setWorkflowname(pec.getProcessDef().getName());
}else {
xmlDatasUtil.setWorkflowname("流程发布");
}
if (bo_eu_oa_reson!=null){
xmlDatasUtil.setCreaterhrcode(bo_eu_oa_reson.getString("LOGINID"));
}
xmlDatasUtil.setCreaterworkcode("");
HttpClientUtils httpClientUtil = new HttpClientUtils();
String taskurl= SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "taskurl");
String s = httpClientUtil.SendPend(taskurl, xmlDatasUtil);
//System.out.println("已办查看是否修改");
BO bo = new BO();
bo.set("OUTSYSID",xmlDatasUtil.getExternal_system_ID());
bo.set("TODOID",xmlDatasUtil.getOther_system_to_do_ID());
bo.set("CONTENT",xmlDatasUtil.getProcess_title());
bo.set("PCURL",xmlDatasUtil.getPcurl());
bo.set("MOBILEURL",xmlDatasUtil.getMobileurl());
bo.set("HRCODE",xmlDatasUtil.getTo_do_login_account());
bo.set("STATUS",xmlDatasUtil.getTo_do_status());
bo.set("WFTYPE",xmlDatasUtil.getTo_do_official_type());
bo.set("VIEWTYPE",xmlDatasUtil.getViewtype());
bo.set("CREATEDATES",xmlDatasUtil.getCreatedate());
bo.set("NEWCREATETIME",xmlDatasUtil.getTo_do_creation_time());
bo.set("DONEDATE",xmlDatasUtil.getDonedate());
bo.set("NEWDONETIME",xmlDatasUtil.getTo_do_status());
bo.set("RECEIVEDATE",xmlDatasUtil.getReceivedate());
bo.set("RECEIVETIME",xmlDatasUtil.getReceivetime());
bo.set("CURRENTNODETYPE",xmlDatasUtil.getCurrentnodetype());
bo.set("REQUESTCODE",xmlDatasUtil.getRequestcode());
bo.set("CURRENTNODENAME",xmlDatasUtil.getCurrentnodename());
bo.set("NOOPERATOR",xmlDatasUtil.getNooperator());
bo.set("CREATERHRCODE",xmlDatasUtil.getCreaterhrcode());
bo.set("WORKFLOWNAME",xmlDatasUtil.getWorkflowname());
bo.set("OA_RESULT",s);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
bo.set("OA_DATE",sdf.format(new Date()));
if (taskInstance!=null&&StringUtils.isNotEmpty(taskInstance.getTarget())){
SDK.getBOAPI().createDataBO("BO_EU_OA_MOBILEURL",bo,UserContext.fromUID(taskInstance.getTarget()));
}else {
SDK.getBOAPI().createDataBO("BO_EU_OA_MOBILEURL",bo,UserContext.fromUID("admin"));
}
if (s.contains("success")){
//System.out.println("发送待办任务完成请去OA系统上查看是否传输完成");
}else {
//System.out.println("发送待办任务失败,请联系管理员查看是否出现错误");
//System.out.println("错误提示>>>>>>>>>>>>"+s);
BO bo_eu_faid_data = SDK.getBOAPI().query("BO_EU_FAID_DATA").addQuery("TASK_ID=", taskInstance.getId()).detail();
if (bo_eu_faid_data==null){
ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance("obj_ef1918ca1f9c46948f56bd5f77f4e646", "admin", "admin" + "失败更新待办");
BO bo_faid = new BO();
bo_faid.set("CHANGED","2");
bo_faid.set("TASK_ID",taskInstance.getId());
if (pec.getProcessInstance()!=null){
bo_faid.set("PROCESS_ID",pec.getProcessInstance().getId());
}
UserContext userContext = UserContext.fromUID("admin");
SDK.getBOAPI().create("BO_EU_FAID_DATA",bo_faid,processInstance,userContext);
SDK.getProcessAPI().start(processInstance);
}
}
}
public void readOa(String taskId) throws Exception {
HttpClientUtils httpClientUtil = new HttpClientUtils();

View File

@ -0,0 +1,52 @@
package com.awspaas.user.apps.integration.util;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import java.nio.charset.Charset;
/**
* @PackageName: com.awspaas.user.apps.yili.integration.util
* @ClassName: UtilUrl
* @author: yujh
* @date: 2022/5/18 21:41
*/
public class UtilUrls {
//使用SOAP1.1发送消息
public static String doPostSoap(String postUrl, String soapXml, String soapAction) {
String retStr = "";
// 创建HttpClientBuilder
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
// HttpClient
CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
HttpPost httpPost = new HttpPost(postUrl);
// 设置请求和传输超时时间
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(999999999)
.setConnectTimeout(999999999).build();
httpPost.setConfig(requestConfig);
try {
httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8");
httpPost.setHeader("SOAPAction", soapAction);
StringEntity data = new StringEntity(soapXml, Charset.forName("UTF-8"));
httpPost.setEntity(data);
CloseableHttpResponse response = closeableHttpClient.execute(httpPost);
HttpEntity httpEntity = response.getEntity();
if (httpEntity != null) {
// 打印响应内容
retStr = EntityUtils.toString(httpEntity, "UTF-8");
}
// 释放资源
closeableHttpClient.close();
} catch (Exception e) {
e.printStackTrace();
}
return retStr;
}
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/aws"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/pal"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.awspaas.user.apps.yili.reportform</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -48,7 +48,7 @@ public class AttrSynController {
System.err.println("=====fromSessionId======="+fromSessionId);
JSONObject result = new JSONObject();
Map<String,Object> claims = new HashMap<> ();
claims.put("userName","10036614");
claims.put("userName",fromSessionId.getUID());
//生成token
String jwt_token = JwtUtils.getAccessToken ("userId",claims);
System.out.println ("jwt_token="+jwt_token);

View File

@ -4,13 +4,8 @@ import com.actionsoft.bpms.server.RequestParams;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.bind.annotation.Controller;
import com.actionsoft.bpms.server.bind.annotation.Mapping;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.awspaas.user.apps.yili.reportform.service.DataViewService;
import com.awspaas.user.apps.yili.reportform.service.DataViewService2;
import com.awspaas.user.apps.yili.reportform.service.ToPageService;
import java.sql.Connection;
/**
* @author:Lizj
@ -45,14 +40,11 @@ public class DataViewController {
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.DataViewService_personalView",
desc = "个人视图")
public String personalView(UserContext uc, RequestParams params) {
String personalViewVal = null;
try {
personalViewVal = new DataViewService(uc).personalView(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("personalView异常");
}
return personalViewVal;
return new DataViewService(uc).personalView(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.DataViewService_queryTermsDept",
desc = "筛选条件:当前用户部门、部门")
public String queryTermsDept(UserContext uc, RequestParams params) {

View File

@ -436,6 +436,7 @@ public class SyncData implements IJob {
SDK.getLogAPI().consoleInfo("获取节点属性过程中,"+"文件ID"+FILEID+"获取节点形状属性异常");
}
}
//同步角色岗位
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));

View File

@ -0,0 +1,676 @@
package com.awspaas.user.apps.yili.reportform.job;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.designer.util.CoeDesignerUtil;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.bpms.api.Utils;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.schedule.IJob;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.awspaas.user.apps.yili.reportform.util.CheckUtil;
import com.awspaas.user.apps.yili.reportform.util.GetNodesUtil;
import com.awspaas.user.apps.yili.reportform.util.RepositoryAttribute;
/**
* @author:Lizj
* @create: 2022-07-05 15:58
* @Description: 定时同步数据
*/
@DisallowConcurrentExecution
public class SyncData2 implements IJob {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
SDK.getLogAPI().consoleInfo("全量定时同步文件信息开始执行");
long startTime = System.currentTimeMillis();
Date nowDateJ = new Date(System.currentTimeMillis());
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf2.format(nowDateJ);
SDK.getLogAPI().consoleInfo("开始时间" + format);
String wsId = SDK.getJobAPI().getJobParameter(jobExecutionContext);
//总文件集合
String process = "process";
String org = "org";
String data = "data";
String itsystem = "itsystem";
String control = "control";
List<PALRepositoryModel> palProcessList = new ArrayList<>();
Set<String> palProcessIds = new HashSet<>();
List<PALRepositoryModel> palOrgList = new ArrayList<>();
Set<String> palOrgIds = new HashSet<>();
List<PALRepositoryModel> palDataList = new ArrayList<>();
Set<String> palDataIds = new HashSet<>();
List<PALRepositoryModel> palItsystemList = new ArrayList<>();
Set<String> palItsystemIds = new HashSet<>();
List<PALRepositoryModel> palControlList = new ArrayList<>();
Set<String> palControlIds = new HashSet<>();
PALRepositoryCache.getAllChildrenModelsByPid(wsId, process, palProcessList, palProcessIds);
PALRepositoryCache.getAllChildrenModelsByPid(wsId, org, palOrgList, palOrgIds);
PALRepositoryCache.getAllChildrenModelsByPid(wsId, data, palDataList, palDataIds);
PALRepositoryCache.getAllChildrenModelsByPid(wsId, itsystem, palItsystemList, palItsystemIds);
PALRepositoryCache.getAllChildrenModelsByPid(wsId, control, palControlList, palControlIds);
//合并为文件总量list
List<PALRepositoryModel> palTotalList = new ArrayList<>();
palTotalList.addAll(palProcessList);
palTotalList.addAll(palOrgList);
palTotalList.addAll(palDataList);
palTotalList.addAll(palItsystemList);
palTotalList.addAll(palControlList);
SDK.getLogAPI().consoleInfo("process下文件数量" + palProcessList.size());
SDK.getLogAPI().consoleInfo("org下文件数量" + palOrgList.size());
SDK.getLogAPI().consoleInfo("data下文件数量" + palDataList.size());
SDK.getLogAPI().consoleInfo("itsystem下文件数量" + palItsystemList.size());
SDK.getLogAPI().consoleInfo("control下文件数量" + palControlList.size());
SDK.getLogAPI().consoleInfo("文件总数量:" + palTotalList.size());
//过滤出角色文件
/* List<PALRepositoryModel> palRoleFileList = palOrgList.stream().filter(x -> x.getMethodId().equals("org.role")).collect(Collectors.toList());
SDK.getLogAPI().consoleInfo("角色文件数量:" + palRoleFileList.size());*/
//初始化架构文件节点 old/new/del/fromDataID/dis list
ArrayList<Map<String, ?>> oldFrameDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newFrameDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> delFrameDataMaps = new ArrayList<>();
ArrayList<String> fromFrameDataIDMaps = new ArrayList<>();
ArrayList<Map<String, ?>> oldFileDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newFileDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> delFileDataMaps = new ArrayList<>();
ArrayList<String> fromFileDataIDMaps = new ArrayList<>();
ArrayList<Map<String, ?>> oldNodeDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newNodeDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> delNodeDataMaps = new ArrayList<>();
ArrayList<String> fromNodeDataIDMaps = new ArrayList<>();
HashMap<String, Object> dataMap = new HashMap<>();
Object[] sqlParams = new Object[]{};
//获取底表数据
List<String> frameIdList = DBSql.getList("SELECT FRAMEID FROM BO_EU_PAL_FRAME", String.class);
SDK.getLogAPI().consoleInfo("架构底表长度:" + frameIdList.size());
List<String> fileIdList = DBSql.getList("SELECT FILEID FROM BO_EU_PAL_FILE1", String.class);
SDK.getLogAPI().consoleInfo("文件底表长度:" + fileIdList.size());
List<String> nodeIdList = DBSql.getList("SELECT NODEID FROM BO_EU_PAL_FILENODE5", String.class);
SDK.getLogAPI().consoleInfo("节点底表长度:" + nodeIdList.size());
//系统字段
String uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
//遍历总文件集合
for (PALRepositoryModel fileModel : palTotalList) {
List<Map<String, Object>> nodeElements = new ArrayList<>();
String PLMETHODID = fileModel.getMethodId();
String FILEID = fileModel.getId();
String PLNAME = fileModel.getName();
String plRid = fileModel.getPlRid();
String sql = "SELECT ID FROM (SELECT * FROM APP_ACT_COE_PAL_REPOSITORY WHERE PLRID = '"+plRid+"' AND ISPUBLISH ='1' ORDER BY PLVER DESC ) WHERE ROWNUM<2";
String palId = DBSql.getString(sql);
if(UtilString.isNotEmpty(palId)) {
if(!FILEID.equals(palId)) {
SDK.getLogAPI().consoleInfo("同步数据发现旧版本文件名称:"+PLNAME+"——文件id"+FILEID);
String dsql = "DELETE FROM BO_EU_PAL_FILE1 WHERE FILEID = '"+FILEID+"'";
DBSql.update(dsql);
continue;
}
}
Timestamp MODIFYDATETIME = fileModel.getModifyDate();
if (PLMETHODID.equals("process.framework")) {
//更新/新增架构
Integer FRAMELEVEL = fileModel.getLevel();
String FRAMETYPE = null;
String FRAMEPARENTID = fileModel.getParentId();
Integer FRAMEORDERINDEX = fileModel.getOrderIndex();
Map<String, JSONObject> frameAttrs = new HashMap<>();
try {
frameAttrs = new RepositoryAttribute().queryRepositoryAttributeById(FILEID);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("更新架构时文件ID" + FILEID + "数据异常");
}
if (null != frameAttrs && !frameAttrs.isEmpty()) {
JSONObject Frame_type = frameAttrs.get("Frame_type");
FRAMETYPE = Frame_type.getString("text");
}
fromFrameDataIDMaps.add(FILEID);
if (frameIdList.contains(FILEID)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("FRAMEID", FILEID);
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("FRAMENAME", PLNAME);
dataMap.put("FRAMELEVEL", FRAMELEVEL);
dataMap.put("FRAMETYPE", FRAMETYPE);
dataMap.put("FRAMEPARENTID", FRAMEPARENTID);
dataMap.put("FRAMEORDERINDEX", FRAMEORDERINDEX);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
oldFrameDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("FRAMEID", FILEID);
dataMap.put("FRAMENAME", PLNAME);
dataMap.put("FRAMELEVEL", FRAMELEVEL);
dataMap.put("FRAMETYPE", FRAMETYPE);
dataMap.put("FRAMEPARENTID", FRAMEPARENTID);
dataMap.put("FRAMEORDERINDEX", FRAMEORDERINDEX);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
newFrameDataMaps.add(dataMap);
}
} else {
//更新/新增文件
Integer PLLEVEL = fileModel.getLevel();
String PLPARENTID = fileModel.getParentId();
Integer PLORDERINDEX = fileModel.getOrderIndex();
String PLCATEGORY = fileModel.getMethodCategory();
String CREATEPER = fileModel.getCreateUser();
String MODIFYPER = fileModel.getModifyUser();
Timestamp CREATEDATETIME = fileModel.getCreateDate();
double FILEVERSION = fileModel.getVersion();
String PUBDEPT = "";
String PUBDATETIME = "";
String FILESTATE = "";
String FILEUSESTATE = "";
Long VIEWCOUNT = fileModel.getViewCount();
String L1ID = "";
String L2ID = "";
String L3ID = "";
String LEADPROCESS = "";
String REARPROCESS = "";
String PROCESSKPI = "";
String RELEVANTFILE = "";
String SUPPORTFILE = "";
String POLICYTYPE = "";
List<RowMap> parentMaps = new ArrayList<>();
if (null != PLPARENTID && !PLPARENTID.equals("")) {
parentMaps = GetNodesUtil.getParentFrame(PLPARENTID, parentMaps);
}
if (null != parentMaps && !parentMaps.isEmpty()) {
for (RowMap parentMap : parentMaps) {
Integer parentLevel = parentMap.getInt("FRAMELEVEL");
String parentID = parentMap.getString("FRAMEID");
if (parentLevel.equals(3)) {
L3ID = parentID;
}
if (parentLevel.equals(2)) {
L2ID = parentID;
}
if (parentLevel.equals(1)) {
L1ID = parentID;
}
}
}
//文件状态
FILESTATE = "0";
if (fileModel.isPublish() == true) {
FILESTATE = "1";
}
if (fileModel.isApproval() == true) {
FILESTATE = "2";
}
if (fileModel.isStop() == true) {
FILESTATE = "3";
}
//文件生效状态
if (fileModel.isUse() == true) {
FILEUSESTATE = "1";
} else {
FILEUSESTATE = "0";
}
Map<String, JSONObject> fileAttrJsonMap = new HashMap<>();
try {
fileAttrJsonMap = new RepositoryAttribute().queryRepositoryAttributeById(FILEID);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("更新文件时文件ID" + FILEID + "数据异常");
}
if (null != fileAttrJsonMap && !fileAttrJsonMap.isEmpty()) {
//发布部门
JSONObject Issuing_department = fileAttrJsonMap.get("Issuing_department");
if (null != Issuing_department && !Issuing_department.equals("")) {
JSONArray PUBDEPTJA = Issuing_department.getJSONArray("value");
if (null != PUBDEPTJA && !PUBDEPTJA.isEmpty()) {
for (Object PUBDEPTO : PUBDEPTJA) {
JSONObject PUBDEPTJO = JSONObject.parseObject(String.valueOf(PUBDEPTO));
PUBDEPT = PUBDEPT + " " + PUBDEPTJO.getString("id");
}
PUBDEPT = PUBDEPT.substring(1);
}
}
//发布时间
PUBDATETIME = "";
JSONObject effective_date = fileAttrJsonMap.get("Drafted_and_revised_date");
if (null != effective_date && !effective_date.equals("")) {
String pubDateString = effective_date.getString("text");
if (null != pubDateString && !pubDateString.equals("")) {
if (CheckUtil.isDate(pubDateString)) {
Date parse = null;
try {
parse = sdf1.parse(pubDateString);
} catch (ParseException e) {
e.printStackTrace();
}
PUBDATETIME = sdf1.format(parse);
}
}
}
//前置流程
if (PLMETHODID.equals("process.epc")) {
JSONObject lead_process = fileAttrJsonMap.get("lead_process");
if (null != lead_process && !lead_process.equals("")) {
JSONArray lpValue = lead_process.getJSONArray("value");
if (null != lpValue && !lpValue.isEmpty()) {
LEADPROCESS = "1";
} else {
LEADPROCESS = "0";
}
} else {
LEADPROCESS = "0";
}
//后置流程
JSONObject rear_process = fileAttrJsonMap.get("rear_process");
if (null != rear_process && !rear_process.equals("")) {
JSONArray rpValue = rear_process.getJSONArray("value");
if (null != rpValue && !rpValue.isEmpty()) {
REARPROCESS = "1";
} else {
REARPROCESS = "0";
}
} else {
REARPROCESS = "0";
}
}
//流程绩效
JSONObject performance = fileAttrJsonMap.get("Process_performance_metrics");
if (null != performance && !performance.equals("")) {
JSONArray performanceJA = performance.getJSONArray("value");
if (null != performanceJA && !performanceJA.isEmpty()) {
for (Object performanceO : performanceJA) {
JSONObject performanceJO = JSONObject.parseObject(String.valueOf(performanceO));
PROCESSKPI = PROCESSKPI + " " + performanceJO.getString("fileId");
}
PROCESSKPI = PROCESSKPI.substring(1);
}
}
//相关文件
JSONObject R_relevant_flies = fileAttrJsonMap.get("R_relevant_flies");
if (null != R_relevant_flies && !R_relevant_flies.equals("")) {
JSONArray RELEVANTFILEJA = R_relevant_flies.getJSONArray("value");
if (null != RELEVANTFILEJA && !RELEVANTFILEJA.isEmpty()) {
for (Object RELEVANTFILEO : RELEVANTFILEJA) {
JSONObject RELEVANTFILEJO = JSONObject.parseObject(String.valueOf(RELEVANTFILEO));
RELEVANTFILE = RELEVANTFILE + " " + RELEVANTFILEJO.getString("fileId");
}
RELEVANTFILE = RELEVANTFILE.substring(1);
}
}
//支持文件
JSONObject support_files = fileAttrJsonMap.get("support_files");
if (null != support_files && !support_files.equals("")) {
JSONArray SUPPORTFILEJA = support_files.getJSONArray("value");
if (null != SUPPORTFILEJA && !SUPPORTFILEJA.isEmpty()) {
for (Object SUPPORTFILEO : SUPPORTFILEJA) {
JSONObject SUPPORTFILEJO = JSONObject.parseObject(String.valueOf(SUPPORTFILEO));
SUPPORTFILE = SUPPORTFILE + " " + SUPPORTFILEJO.getString("fileId");
}
SUPPORTFILE = SUPPORTFILE.substring(1);
}
}
}
//制度类型
nodeElements = new ArrayList<>();
if (PLMETHODID.equals("control.policy")) {
try {
nodeElements = CoeDesignerUtil.getShapeMessageJson4(FILEID);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取制度类型过程中," + "文件ID" + FILEID + "获取节点形状属性异常");
}
}
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));
if (NODETYPE.equals("regulation")) {
POLICYTYPE = "regulation";
} else if (NODETYPE.equals("I/O_L4")) {
POLICYTYPE = "I/O_L4";
}
}
}
fromFileDataIDMaps.add(FILEID);
if (fileIdList.contains(FILEID)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("FILEID", FILEID);
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("PLNAME", PLNAME);
dataMap.put("PLLEVEL", PLLEVEL);
dataMap.put("PLPARENTID", PLPARENTID);
dataMap.put("PLORDERINDEX", PLORDERINDEX);
dataMap.put("PLCATEGORY", PLCATEGORY);
dataMap.put("PLMETHODID", PLMETHODID);
dataMap.put("FILEVERSION", FILEVERSION);
dataMap.put("CREATEPER", CREATEPER);
dataMap.put("MODIFYPER", MODIFYPER);
dataMap.put("CREATEDATETIME", CREATEDATETIME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
dataMap.put("PUBDEPT", PUBDEPT);
dataMap.put("PUBDATETIME", PUBDATETIME);
dataMap.put("FILESTATE", FILESTATE);
dataMap.put("FILEUSESTATE", FILEUSESTATE);
dataMap.put("VIEWCOUNT", VIEWCOUNT);
dataMap.put("L1ID", L1ID);
dataMap.put("L2ID", L2ID);
dataMap.put("L3ID", L3ID);
dataMap.put("LEADPROCESS", LEADPROCESS);
dataMap.put("REARPROCESS", REARPROCESS);
dataMap.put("PROCESSKPI", PROCESSKPI);
dataMap.put("RELEVANTFILE", RELEVANTFILE);
dataMap.put("SUPPORTFILE", SUPPORTFILE);
dataMap.put("POLICYTYPE", POLICYTYPE);
oldFileDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("FILEID", FILEID);
dataMap.put("PLNAME", PLNAME);
dataMap.put("PLLEVEL", PLLEVEL);
dataMap.put("PLPARENTID", PLPARENTID);
dataMap.put("PLORDERINDEX", PLORDERINDEX);
dataMap.put("PLCATEGORY", PLCATEGORY);
dataMap.put("PLMETHODID", PLMETHODID);
dataMap.put("FILEVERSION", FILEVERSION);
dataMap.put("CREATEPER", CREATEPER);
dataMap.put("MODIFYPER", MODIFYPER);
dataMap.put("CREATEDATETIME", CREATEDATETIME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
dataMap.put("PUBDEPT", PUBDEPT);
dataMap.put("PUBDATETIME", PUBDATETIME);
dataMap.put("FILESTATE", FILESTATE);
dataMap.put("FILEUSESTATE", FILEUSESTATE);
dataMap.put("VIEWCOUNT", VIEWCOUNT);
dataMap.put("L1ID", L1ID);
dataMap.put("L2ID", L2ID);
dataMap.put("L3ID", L3ID);
dataMap.put("LEADPROCESS", LEADPROCESS);
dataMap.put("REARPROCESS", REARPROCESS);
dataMap.put("PROCESSKPI", PROCESSKPI);
dataMap.put("RELEVANTFILE", RELEVANTFILE);
dataMap.put("SUPPORTFILE", SUPPORTFILE);
dataMap.put("POLICYTYPE", POLICYTYPE);
newFileDataMaps.add(dataMap);
}
//更新/新增节点
nodeElements = new ArrayList<>();
if(PLMETHODID.equals("process.epc")) {
try {
nodeElements = CoeDesignerUtil.getShapeMessageJson4(FILEID);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取节点属性过程中,"+"文件ID"+FILEID+"获取节点形状属性异常");
}
}
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));
if (NODETYPE.equals("method_approval_node") || NODETYPE.equals("method_service_node") || NODETYPE.equals("method_approval_node3") || NODETYPE.equals("method_service_node4")) {
//节点信息
String NODEID = String.valueOf(nodeElement.get("id"));
String NODENAME = String.valueOf(nodeElement.get("name"));
//形状属性数组
JSONArray attributesArray = JSON.parseArray(String.valueOf(nodeElement.get("attributes")));
//形状属性信息系统活动序号活动描述角色岗位
String ITSYSVAL = "";
String ACTIVITYNUMBER = "";
String ACTIVITYDESC = "";
String ROLE = "";
String ROLENAME = "";
String POST = "";
String POSTNAME = "";
if (null != attributesArray && !attributesArray.isEmpty()) {
for (Object attribute : attributesArray) {
JSONObject attributeJO = JSON.parseObject(String.valueOf(attribute));
String SHAPEATTRKEY = attributeJO.getString("key");
if (SHAPEATTRKEY.equals("information_systems")) {
ITSYSVAL = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_number")) {
ACTIVITYNUMBER = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_description")) {
ACTIVITYDESC = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("role")) {
String nodeRoleText = attributeJO.getString("value");
ROLE = nodeRoleText;
if (null!=ROLE && !ROLE.equals("")) {
sqlParams = new Object[]{FILEID};
List<RowMap> roleFileRowMaps = new ArrayList<>();
try {
roleFileRowMaps = DBSql.getMaps("SELECT RELATIONFILEID FROM APP_ACT_COE_PAL_SHAPE_RLAT WHERE FILEID=? AND ATTRID='role'", sqlParams);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取流程节点角色属性关联文件时"+"文件ID"+FILEID+"节点ID"+NODEID+"异常");
}
if (null!=roleFileRowMaps && !roleFileRowMaps.isEmpty()) {
for (RowMap roleFileRowMap : roleFileRowMaps) {
String RELATIONFILEID = roleFileRowMap.getString("RELATIONFILEID");
//角色文件属性
List<Map<String, Object>> roleShapes = new ArrayList<>();
try {
roleShapes = CoeDesignerUtil.getShapeMessageJson4(RELATIONFILEID);
} catch (Exception e) {
//SDK.getLogAPI().consoleInfo("获取关联角色文件属性"+"文件ID"+RELATIONFILEID+"异常");
}
if (null != roleShapes && !roleShapes.isEmpty()) {
for (Map<String, Object> roleShape : roleShapes) {
String roleFileNodeName = String.valueOf(roleShape.get("name"));
if (nodeRoleText.contains(roleFileNodeName)) {
//角色节点形状属性
JSONArray roleShapeJA = null;
try {
roleShapeJA = JSONArray.parseArray(String.valueOf(roleShape.get("attributes")));
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取角色节点形状属性jsonArray"+"文件ID"+RELATIONFILEID+"异常");
}
if (null != roleShapeJA && !roleShapeJA.isEmpty()) {
for (Object roleShapeO : roleShapeJA) {
JSONObject roleShapeJO = JSON.parseObject(String.valueOf(roleShapeO));
String roleShapeKey = roleShapeJO.getString("key");
if (roleShapeKey.equals("post")) {
//SDK.getLogAPI().consoleInfo("角色岗位"+roleShapeJO.getString("value"));
POST = roleShapeJO.getString("value");
}
if (roleShapeKey.equals("post_text")) {
//SDK.getLogAPI().consoleInfo("角色岗位文本"+roleShapeJO);
ROLENAME = roleShapeJO.getString("value");
POSTNAME = roleShapeJO.getString("value");
}
}
}
}
}
}
}
}
} else {
for (Object attribute1 : attributesArray) {
JSONObject attributeJO1 = JSON.parseObject(String.valueOf(attribute1));
String SHAPEATTRKEY1 = attributeJO1.getString("key");
if (SHAPEATTRKEY1.equals("post")) {
POST = attributeJO1.getString("value");
}
if (SHAPEATTRKEY1.equals("post_text")) {
POSTNAME = attributeJO1.getString("value");
}
}
}
}
}
}
fromNodeDataIDMaps.add(NODEID);
if (nodeIdList.contains(NODEID)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POST", POST);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("PLID", FILEID);
dataMap.put("NODEID", NODEID);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
oldNodeDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("NODEID", NODEID);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLID", FILEID);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("POST", POST);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
newNodeDataMaps.add(dataMap);
}
}
}
}
}
}
//执行批量新增修改删除
if (null != frameIdList && !frameIdList.isEmpty()) {
for (String frameIdOfList : frameIdList) {
if (!fromFrameDataIDMaps.contains(frameIdOfList)) {
dataMap = new HashMap<>();
dataMap.put("FRAMEID", frameIdOfList);
delFrameDataMaps.add(dataMap);
}
}
}
if (null != oldFrameDataMaps && !oldFrameDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FRAME SET"
+ " FRAMENAME=:FRAMENAME, FRAMELEVEL=:FRAMELEVEL, FRAMETYPE=:FRAMETYPE, FRAMEPARENTID=:FRAMEPARENTID, FRAMEORDERINDEX=:FRAMEORDERINDEX, MODIFYDATETIME=:MODIFYDATETIME, UPDATEDATE=:UPDATEDATE WHERE FRAMEID=:FRAMEID", oldFrameDataMaps);
}
if (null != newFrameDataMaps && !newFrameDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FRAME(ID,FRAMEID,FRAMENAME,FRAMELEVEL,FRAMETYPE,FRAMEPARENTID,FRAMEORDERINDEX,MODIFYDATETIME) "
+ " VALUES(:uuId, :FRAMEID, :FRAMENAME, :FRAMELEVEL, :FRAMETYPE, :FRAMEPARENTID, :FRAMEORDERINDEX, :MODIFYDATETIME)", newFrameDataMaps);
}
if (null != delFrameDataMaps && !delFrameDataMaps.isEmpty()) {
DBSql.batchUpdate("DELETE FROM BO_EU_PAL_FRAME WHERE FRAMEID=:FRAMEID", delFrameDataMaps);
}
SDK.getLogAPI().consoleInfo("新增架构" + newFrameDataMaps.size());
SDK.getLogAPI().consoleInfo("修改架构" + oldFrameDataMaps.size());
SDK.getLogAPI().consoleInfo("删除架构" + delFrameDataMaps.size());
if (null != fileIdList && !fileIdList.isEmpty()) {
for (String fileIdOfList : fileIdList) {
if (!fromFileDataIDMaps.contains(fileIdOfList)) {
dataMap = new HashMap<>();
dataMap.put("FILEID", fileIdOfList);
delFileDataMaps.add(dataMap);
}
}
}
if (null != oldFileDataMaps && !oldFileDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILE1 SET"
+ " PLNAME=:PLNAME, PLLEVEL=:PLLEVEL, PLPARENTID=:PLPARENTID, PLORDERINDEX=:PLORDERINDEX, PLCATEGORY=:PLCATEGORY, "
+ " PLMETHODID=:PLMETHODID, FILEVERSION=:FILEVERSION, CREATEPER=:CREATEPER, MODIFYPER=:MODIFYPER, "
+ " PUBDEPT=:PUBDEPT, PUBDATETIME=:PUBDATETIME, FILESTATE=:FILESTATE, VIEWCOUNT=:VIEWCOUNT, L1ID=:L1ID, "
+ " L2ID=:L2ID, L3ID=:L3ID, LEADPROCESS=:LEADPROCESS, REARPROCESS=:REARPROCESS, PROCESSKPI=:PROCESSKPI, "
+ " RELEVANTFILE=:RELEVANTFILE, SUPPORTFILE=:SUPPORTFILE, POLICYTYPE=:POLICYTYPE, "
+ " CREATEDATETIME=:CREATEDATETIME, MODIFYDATETIME=:MODIFYDATETIME, FILEUSESTATE=:FILEUSESTATE, UPDATEDATE=:UPDATEDATE "
+ " WHERE FILEID=:FILEID", oldFileDataMaps);
}
if (null != newFileDataMaps && !newFileDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILE1"
+ " (ID, FILEID, PLNAME, PLLEVEL, PLPARENTID, PLORDERINDEX, PLCATEGORY, PLMETHODID, FILEVERSION, CREATEPER, MODIFYPER, PUBDEPT, PUBDATETIME, "
+ " FILESTATE, VIEWCOUNT, L1ID, L2ID, L3ID, LEADPROCESS, REARPROCESS, PROCESSKPI, RELEVANTFILE, SUPPORTFILE, POLICYTYPE, FILEUSESTATE, CREATEDATETIME, MODIFYDATETIME ) "
+ " VALUES(:uuId, :FILEID, :PLNAME, :PLLEVEL, :PLPARENTID, :PLORDERINDEX, :PLCATEGORY, :PLMETHODID, "
+ " :FILEVERSION, :CREATEPER, :MODIFYPER, :PUBDEPT, :PUBDATETIME, :FILESTATE, :VIEWCOUNT, :L1ID, :L2ID, "
+ " :L3ID, :LEADPROCESS, :REARPROCESS, :PROCESSKPI, :RELEVANTFILE, :SUPPORTFILE, :POLICYTYPE, :FILEUSESTATE, :CREATEDATETIME, :MODIFYDATETIME)", newFileDataMaps);
}
if (null != delFileDataMaps && !delFileDataMaps.isEmpty()) {
DBSql.batchUpdate("DELETE FROM BO_EU_PAL_FILE1 WHERE FILEID=:FILEID", delFileDataMaps);
}
SDK.getLogAPI().consoleInfo("新增文件" + newFileDataMaps.size());
SDK.getLogAPI().consoleInfo("修改文件" + oldFileDataMaps.size());
SDK.getLogAPI().consoleInfo("删除文件" + delFileDataMaps.size());
if (null != nodeIdList && !nodeIdList.isEmpty()) {
for (String nodeIdOfList : nodeIdList) {
if (!fromNodeDataIDMaps.contains(nodeIdOfList)) {
dataMap = new HashMap<>();
dataMap.put("NODEID", nodeIdOfList);
delNodeDataMaps.add(dataMap);
}
}
}
if (null != oldNodeDataMaps && !oldNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILENODE5 SET"
+ " NODENAME=:NODENAME, NODETYPE=:NODETYPE, PLNAME=:PLNAME, NODECATEGORY=:NODECATEGORY, ITSYSVAL=:ITSYSVAL, "
+ " ACTIVITYNUMBER=:ACTIVITYNUMBER, ACTIVITYDESC=:ACTIVITYDESC, ROLE=:ROLE, POST=:POST, ROLENAME=:ROLENAME, POSTNAME=:POSTNAME, MODIFYDATETIME=:MODIFYDATETIME, UPDATEDATE=:UPDATEDATE "
+ " WHERE PLID=:PLID AND NODEID=:NODEID", oldNodeDataMaps);
}
if (null != newNodeDataMaps && !newNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILENODE5"
+ " (ID, NODEID, NODENAME, NODETYPE, PLID, PLNAME, NODECATEGORY, ITSYSVAL, ACTIVITYNUMBER, ACTIVITYDESC, ROLE, POST, ROLENAME, POSTNAME, MODIFYDATETIME) "
+ " VALUES(:uuId, :NODEID, :NODENAME, :NODETYPE, :PLID, :PLNAME, :NODECATEGORY, :ITSYSVAL, :ACTIVITYNUMBER, :ACTIVITYDESC, :ROLE, :POST, :ROLENAME, :POSTNAME, :MODIFYDATETIME)", newNodeDataMaps);
}
if (null != delNodeDataMaps && !delNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("DELETE FROM BO_EU_PAL_FILENODE5 WHERE NODEID=:NODEID", delNodeDataMaps);
}
SDK.getLogAPI().consoleInfo("新增节点" + newNodeDataMaps.size());
SDK.getLogAPI().consoleInfo("修改节点" + oldNodeDataMaps.size());
SDK.getLogAPI().consoleInfo("删除节点" + delNodeDataMaps.size());
long endTime = System.currentTimeMillis();
SDK.getLogAPI().consoleInfo("结束时间" + endTime);
SDK.getLogAPI().consoleInfo("运行时间" + (endTime - startTime));
}
}

View File

@ -0,0 +1,246 @@
package com.awspaas.user.apps.yili.reportform.job;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.actionsoft.apps.coe.pal.pal.repository.designer.util.CoeDesignerUtil;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.schedule.IJob;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* @author:lihongyu
* @create: 2022-11-03 11:32
* @Description: 全量同步文件
*/
@DisallowConcurrentExecution
public class SyncData_job implements IJob {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
syncNodeData();
}
//同步节点数据到 BO_EU_PAL_FILENODE6
public void syncNodeData() {
HashMap<String, Object> dataMap = new HashMap<>();
ArrayList<String> fromNodeDataIDMaps = new ArrayList<>();
List<PALRepositoryModel> palTotalList = new ArrayList<>();
ArrayList<Map<String, ?>> oldNodeDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newNodeDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> delNodeDataMaps = new ArrayList<>();
long startTime = System.currentTimeMillis();
List<String> nodeIdList = DBSql.getList("SELECT NODEID FROM BO_EU_PAL_FILENODE6", String.class);
for (PALRepositoryModel fileModel : palTotalList) {
List<Map<String, Object>> nodeElements = new ArrayList<>();
String PLMETHODID = fileModel.getMethodId();
String FILEID = fileModel.getId();
String PLNAME = fileModel.getName();
String plRid = fileModel.getPlRid();
/*
* String sql =
* "SELECT ID FROM (SELECT * FROM APP_ACT_COE_PAL_REPOSITORY WHERE PLRID = '"
* +plRid+"' AND ISPUBLISH ='1' ORDER BY PLVER DESC ) WHERE ROWNUM<2"; String
* palId = DBSql.getString(sql); if(UtilString.isNotEmpty(palId)) {
* if(!FILEID.equals(palId)) {
* SDK.getLogAPI().consoleInfo("同步数据发现旧版本文件名称:"+PLNAME+"——文件id"+FILEID); String
* dsql = "DELETE FROM BO_EU_PAL_FILE1 WHERE FILEID = '"+FILEID+"'";
* DBSql.update(dsql); continue; } }
*/
Timestamp MODIFYDATETIME = fileModel.getModifyDate();
//同步角色岗位
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));
if (NODETYPE.equals("method_approval_node") || NODETYPE.equals("method_service_node") || NODETYPE.equals("method_approval_node3") || NODETYPE.equals("method_service_node4")) {
//节点信息
String NODEID = String.valueOf(nodeElement.get("id"));
String NODENAME = String.valueOf(nodeElement.get("name"));
//形状属性数组
JSONArray attributesArray = JSON.parseArray(String.valueOf(nodeElement.get("attributes")));
//形状属性信息系统活动序号活动描述角色岗位
String ITSYSVAL = "";
String ACTIVITYNUMBER = "";
String ACTIVITYDESC = "";
String ROLE = "";
String ROLENAME = "";
String POST = "";
String POSTNAME = "";
if (null != attributesArray && !attributesArray.isEmpty()) {
for (Object attribute : attributesArray) {
JSONObject attributeJO = JSON.parseObject(String.valueOf(attribute));
String SHAPEATTRKEY = attributeJO.getString("key");
if (SHAPEATTRKEY.equals("information_systems")) {
ITSYSVAL = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_number")) {
ACTIVITYNUMBER = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_description")) {
ACTIVITYDESC = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("role")) {
String nodeRoleText = attributeJO.getString("value");
ROLE = nodeRoleText;
if (null!=ROLE && !ROLE.equals("")) {
Object sqlParams = new Object[]{FILEID};
List<RowMap> roleFileRowMaps = new ArrayList<>();
try {
roleFileRowMaps = DBSql.getMaps("SELECT RELATIONFILEID FROM APP_ACT_COE_PAL_SHAPE_RLAT WHERE FILEID=? AND ATTRID='role'", sqlParams);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取流程节点角色属性关联文件时"+"文件ID"+FILEID+"节点ID"+NODEID+"异常");
}
if (null!=roleFileRowMaps && !roleFileRowMaps.isEmpty()) {
for (RowMap roleFileRowMap : roleFileRowMaps) {
String RELATIONFILEID = roleFileRowMap.getString("RELATIONFILEID");
//角色文件属性
List<Map<String, Object>> roleShapes = new ArrayList<>();
try {
roleShapes = CoeDesignerUtil.getShapeMessageJson4(RELATIONFILEID);
} catch (Exception e) {
//SDK.getLogAPI().consoleInfo("获取关联角色文件属性"+"文件ID"+RELATIONFILEID+"异常");
}
if (null != roleShapes && !roleShapes.isEmpty()) {
for (Map<String, Object> roleShape : roleShapes) {
String roleFileNodeName = String.valueOf(roleShape.get("name"));
if (nodeRoleText.contains(roleFileNodeName)) {
//角色节点形状属性
JSONArray roleShapeJA = null;
try {
roleShapeJA = JSONArray.parseArray(String.valueOf(roleShape.get("attributes")));
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取角色节点形状属性jsonArray"+"文件ID"+RELATIONFILEID+"异常");
}
if (null != roleShapeJA && !roleShapeJA.isEmpty()) {
for (Object roleShapeO : roleShapeJA) {
JSONObject roleShapeJO = JSON.parseObject(String.valueOf(roleShapeO));
String roleShapeKey = roleShapeJO.getString("key");
if (roleShapeKey.equals("post")) {
//SDK.getLogAPI().consoleInfo("角色岗位"+roleShapeJO.getString("value"));
POST = roleShapeJO.getString("value");
}
if (roleShapeKey.equals("post_text")) {
//SDK.getLogAPI().consoleInfo("角色岗位文本"+roleShapeJO);
ROLENAME = roleShapeJO.getString("value");
POSTNAME = roleShapeJO.getString("value");
}
}
}
}
}
}
}
}
} else {
for (Object attribute1 : attributesArray) {
JSONObject attributeJO1 = JSON.parseObject(String.valueOf(attribute1));
String SHAPEATTRKEY1 = attributeJO1.getString("key");
if (SHAPEATTRKEY1.equals("post")) {
POST = attributeJO1.getString("value");
}
if (SHAPEATTRKEY1.equals("post_text")) {
POSTNAME = attributeJO1.getString("value");
}
}
}
}
}
}
fromNodeDataIDMaps.add(NODEID);
if (nodeIdList.contains(NODEID)) {
dataMap = new HashMap<>();
Date nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POST", POST);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("PLID", FILEID);
dataMap.put("NODEID", NODEID);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
System.err.println("更新节点信息===========>"+dataMap);
oldNodeDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
String uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("NODEID", NODEID);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLID", FILEID);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("POST", POST);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
System.err.println("同步节点信息===========>"+dataMap);
newNodeDataMaps.add(dataMap);
}
}
}
}
}
if (null != nodeIdList && !nodeIdList.isEmpty()) {
for (String nodeIdOfList : nodeIdList) {
if (!fromNodeDataIDMaps.contains(nodeIdOfList)) {
dataMap = new HashMap<>();
dataMap.put("NODEID", nodeIdOfList);
delNodeDataMaps.add(dataMap);
}
}
}
if (null != oldNodeDataMaps && !oldNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILENODE6 SET"
+ " NODENAME=:NODENAME, NODETYPE=:NODETYPE, PLNAME=:PLNAME, NODECATEGORY=:NODECATEGORY, ITSYSVAL=:ITSYSVAL, "
+ " ACTIVITYNUMBER=:ACTIVITYNUMBER, ACTIVITYDESC=:ACTIVITYDESC, ROLE=:ROLE, POST=:POST, ROLENAME=:ROLENAME, POSTNAME=:POSTNAME, MODIFYDATETIME=:MODIFYDATETIME, UPDATEDATE=:UPDATEDATE "
+ " WHERE PLID=:PLID AND NODEID=:NODEID", oldNodeDataMaps);
}
if (null != newNodeDataMaps && !newNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILENODE6"
+ " (ID, NODEID, NODENAME, NODETYPE, PLID, PLNAME, NODECATEGORY, ITSYSVAL, ACTIVITYNUMBER, ACTIVITYDESC, ROLE, POST, ROLENAME, POSTNAME, MODIFYDATETIME) "
+ " VALUES(:uuId, :NODEID, :NODENAME, :NODETYPE, :PLID, :PLNAME, :NODECATEGORY, :ITSYSVAL, :ACTIVITYNUMBER, :ACTIVITYDESC, :ROLE, :POST, :ROLENAME, :POSTNAME, :MODIFYDATETIME)", newNodeDataMaps);
}
if (null != delNodeDataMaps && !delNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("DELETE FROM BO_EU_PAL_FILENODE6 WHERE NODEID=:NODEID", delNodeDataMaps);
}
SDK.getLogAPI().consoleInfo("新增节点" + newNodeDataMaps.size());
SDK.getLogAPI().consoleInfo("修改节点" + oldNodeDataMaps.size());
SDK.getLogAPI().consoleInfo("删除节点" + delNodeDataMaps.size());
long endTime = System.currentTimeMillis();
SDK.getLogAPI().consoleInfo("结束时间" + endTime);
SDK.getLogAPI().consoleInfo("运行时间" + (endTime - startTime));
}
}

View File

@ -0,0 +1,312 @@
package com.awspaas.user.apps.yili.reportform.job;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.actionsoft.apps.coe.pal.pal.repository.designer.util.CoeDesignerUtil;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.schedule.IJob;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* @author:lihongyu
* @create: 2022-11-03 11:32
* @Description: 全量同步文件
*/
@DisallowConcurrentExecution
public class SyncData_job2 implements IJob {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
}
//同步节点数据到 BO_EU_PAL_FILENODE6
public void syncNodeData() {
HashMap<String, Object> dataMap = new HashMap<>();
ArrayList<String> fromNodeDataIDMaps = new ArrayList<>();
List<PALRepositoryModel> palTotalList = new ArrayList<>();
ArrayList<Map<String, ?>> oldNodeDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newNodeDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> delNodeDataMaps = new ArrayList<>();
long startTime = System.currentTimeMillis();
List<String> nodeIdList = DBSql.getList("SELECT NODEID FROM BO_EU_PAL_FILENODE6", String.class);
for (PALRepositoryModel fileModel : palTotalList) {
List<Map<String, Object>> nodeElements = new ArrayList<>();
String PLMETHODID = fileModel.getMethodId();
String FILEID = fileModel.getId();
String PLNAME = fileModel.getName();
String plRid = fileModel.getPlRid();
String sql = "SELECT ID FROM (SELECT * FROM APP_ACT_COE_PAL_REPOSITORY WHERE PLRID = '"+plRid+"' AND ISPUBLISH ='1' ORDER BY PLVER DESC ) WHERE ROWNUM<2";
String palId = DBSql.getString(sql);
if(UtilString.isNotEmpty(palId)) {
if(!FILEID.equals(palId)) {
SDK.getLogAPI().consoleInfo("同步数据发现旧版本文件名称:"+PLNAME+"——文件id"+FILEID);
String dsql = "DELETE FROM BO_EU_PAL_FILE1 WHERE FILEID = '"+FILEID+"'";
DBSql.update(dsql);
continue;
}
}
Timestamp MODIFYDATETIME = fileModel.getModifyDate();
//同步角色岗位
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));
if (NODETYPE.equals("method_approval_node") || NODETYPE.equals("method_service_node") || NODETYPE.equals("method_approval_node3") || NODETYPE.equals("method_service_node4")) {
//节点信息
String NODEID = String.valueOf(nodeElement.get("id"));
String NODENAME = String.valueOf(nodeElement.get("name"));
//形状属性数组
JSONArray attributesArray = JSON.parseArray(String.valueOf(nodeElement.get("attributes")));
//形状属性信息系统活动序号活动描述角色岗位
String ITSYSVAL = "";
String ACTIVITYNUMBER = "";
String ACTIVITYDESC = "";
String ROLE = "";
String ROLENAME = "";
String POST = "";
String POSTNAME = "";
if (null != attributesArray && !attributesArray.isEmpty()) {
for (Object attribute : attributesArray) {
JSONObject attributeJO = JSON.parseObject(String.valueOf(attribute));
String SHAPEATTRKEY = attributeJO.getString("key");
if (SHAPEATTRKEY.equals("information_systems")) {
ITSYSVAL = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_number")) {
ACTIVITYNUMBER = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_description")) {
ACTIVITYDESC = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("role")) {
String nodeRoleText = attributeJO.getString("value");
ROLE = nodeRoleText;
if (null!=ROLE && !ROLE.equals("")) {
Object sqlParams = new Object[]{FILEID};
List<RowMap> roleFileRowMaps = new ArrayList<>();
try {
roleFileRowMaps = DBSql.getMaps("SELECT RELATIONFILEID FROM APP_ACT_COE_PAL_SHAPE_RLAT WHERE FILEID=? AND ATTRID='role'", sqlParams);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取流程节点角色属性关联文件时"+"文件ID"+FILEID+"节点ID"+NODEID+"异常");
}
if (null!=roleFileRowMaps && !roleFileRowMaps.isEmpty()) {
for (RowMap roleFileRowMap : roleFileRowMaps) {
String RELATIONFILEID = roleFileRowMap.getString("RELATIONFILEID");
//角色文件属性
List<Map<String, Object>> roleShapes = new ArrayList<>();
try {
roleShapes = CoeDesignerUtil.getShapeMessageJson4(RELATIONFILEID);
} catch (Exception e) {
//SDK.getLogAPI().consoleInfo("获取关联角色文件属性"+"文件ID"+RELATIONFILEID+"异常");
}
if (null != roleShapes && !roleShapes.isEmpty()) {
for (Map<String, Object> roleShape : roleShapes) {
String roleFileNodeName = String.valueOf(roleShape.get("name"));
if (nodeRoleText.contains(roleFileNodeName)) {
//角色节点形状属性
JSONArray roleShapeJA = null;
try {
roleShapeJA = JSONArray.parseArray(String.valueOf(roleShape.get("attributes")));
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取角色节点形状属性jsonArray"+"文件ID"+RELATIONFILEID+"异常");
}
if (null != roleShapeJA && !roleShapeJA.isEmpty()) {
for (Object roleShapeO : roleShapeJA) {
JSONObject roleShapeJO = JSON.parseObject(String.valueOf(roleShapeO));
String roleShapeKey = roleShapeJO.getString("key");
if (roleShapeKey.equals("post")) {
//SDK.getLogAPI().consoleInfo("角色岗位"+roleShapeJO.getString("value"));
POST = roleShapeJO.getString("value");
}
if (roleShapeKey.equals("post_text")) {
//SDK.getLogAPI().consoleInfo("角色岗位文本"+roleShapeJO);
ROLENAME = roleShapeJO.getString("value");
POSTNAME = roleShapeJO.getString("value");
}
}
}
}
}
}
}
}
} else {
for (Object attribute1 : attributesArray) {
JSONObject attributeJO1 = JSON.parseObject(String.valueOf(attribute1));
String SHAPEATTRKEY1 = attributeJO1.getString("key");
if (SHAPEATTRKEY1.equals("post")) {
POST = attributeJO1.getString("value");
}
if (SHAPEATTRKEY1.equals("post_text")) {
POSTNAME = attributeJO1.getString("value");
}
}
}
}
}
}
fromNodeDataIDMaps.add(NODEID);
if (nodeIdList.contains(NODEID)) {
dataMap = new HashMap<>();
Date nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POST", POST);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("PLID", FILEID);
dataMap.put("NODEID", NODEID);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
oldNodeDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
String uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("NODEID", NODEID);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLID", FILEID);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("POST", POST);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
newNodeDataMaps.add(dataMap);
}
}
}
}
}
if (null != nodeIdList && !nodeIdList.isEmpty()) {
for (String nodeIdOfList : nodeIdList) {
if (!fromNodeDataIDMaps.contains(nodeIdOfList)) {
dataMap = new HashMap<>();
dataMap.put("NODEID", nodeIdOfList);
delNodeDataMaps.add(dataMap);
}
}
}
if (null != oldNodeDataMaps && !oldNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILENODE6 SET"
+ " NODENAME=:NODENAME, NODETYPE=:NODETYPE, PLNAME=:PLNAME, NODECATEGORY=:NODECATEGORY, ITSYSVAL=:ITSYSVAL, "
+ " ACTIVITYNUMBER=:ACTIVITYNUMBER, ACTIVITYDESC=:ACTIVITYDESC, ROLE=:ROLE, POST=:POST, ROLENAME=:ROLENAME, POSTNAME=:POSTNAME, MODIFYDATETIME=:MODIFYDATETIME, UPDATEDATE=:UPDATEDATE "
+ " WHERE PLID=:PLID AND NODEID=:NODEID", oldNodeDataMaps);
}
if (null != newNodeDataMaps && !newNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILENODE6"
+ " (ID, NODEID, NODENAME, NODETYPE, PLID, PLNAME, NODECATEGORY, ITSYSVAL, ACTIVITYNUMBER, ACTIVITYDESC, ROLE, POST, ROLENAME, POSTNAME, MODIFYDATETIME) "
+ " VALUES(:uuId, :NODEID, :NODENAME, :NODETYPE, :PLID, :PLNAME, :NODECATEGORY, :ITSYSVAL, :ACTIVITYNUMBER, :ACTIVITYDESC, :ROLE, :POST, :ROLENAME, :POSTNAME, :MODIFYDATETIME)", newNodeDataMaps);
}
if (null != delNodeDataMaps && !delNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("DELETE FROM BO_EU_PAL_FILENODE6 WHERE NODEID=:NODEID", delNodeDataMaps);
}
SDK.getLogAPI().consoleInfo("新增节点" + newNodeDataMaps.size());
SDK.getLogAPI().consoleInfo("修改节点" + oldNodeDataMaps.size());
SDK.getLogAPI().consoleInfo("删除节点" + delNodeDataMaps.size());
long endTime = System.currentTimeMillis();
SDK.getLogAPI().consoleInfo("结束时间" + endTime);
SDK.getLogAPI().consoleInfo("运行时间" + (endTime - startTime));
}
//同步文件数据到 BO_EU_PAL_FILE1
public void syncFileData() {
String sql = "SELECT * FROM APP_ACT_COE_PAL_REPOSITORY WHERE ISPUBLISH = 1 AND ISUSE =1 AND ISSTOP =0 AND (PLMETHODID='process.epc' OR PLMETHODID='control.policy' OR PLMETHODID='process.flowchart')";
ArrayList<RowMap> fileHandleRowMaps = new ArrayList<>();
for (RowMap rowMap : fileHandleRowMaps) {
String plId = rowMap.getString("ID");
String plname = rowMap.getString("PLNAME");
String plLevel = rowMap.getString("PLLEVEL");
String plParentId = rowMap.getString("PLPARENTID");
String plOrderIndex = rowMap.getString("PLORDERINDEX");
//文件类型建模方法
String plCategory = rowMap.getString("PLCATEGORY");
//制度文件类型
String policytype = rowMap.getString("EXT3");
//文件版本
String string = rowMap.getString("PLVER");
//创建人
String CREATEUSER = rowMap.getString("CREATEUSER");
//最后修改人
String MODIFYUSER = rowMap.getString("MODIFYUSER");
//创建时间
String CREATEDATE = rowMap.getString("CREATEDATE");
//最后修改时间
String MODIFYDATE = rowMap.getString("MODIFYDATE");
//发布单位
String PUBDEPT = getArrtValue(plId, "Issuing_department","json");
//发布时间
String PUBDATETIME = getArrtValue(plId, "effective_date","json");
//文件状态
String FILESTATE = rowMap.getString("ISPUBLISH");
//文件生效状态
String FILEUSESTATE = rowMap.getString("ISPUBLISH");
//查阅次数
String VIEWCOUNT = rowMap.getString("VIEWCOUNT");
}
}
//获取属性
public String getArrtValue(String plId,String ArrtKey,String type) {
String arrtValue = "";
try {
String sql = "select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '"+plId+"' and PROPERTYID = '"+ArrtKey+"'";
String relatFileJson = DBSql.getString(sql);
if(UtilString.isNotEmpty(relatFileJson)) {
JSONObject parseObject = JSONObject.parseObject(relatFileJson);
String fileNames = parseObject.getString("relationShapeText");
if(UtilString.isNotEmpty(fileNames)) {
arrtValue = fileNames;
}
}
} catch (Exception e) {
// TODO: handle exception
}
return arrtValue;
}
//同步架构数据到 BO_EU_PAL_FRAME
public void syncFrameworkData() {
}
}

View File

@ -530,141 +530,152 @@ public class FileManagementService extends ActionWeb {
return ro.toString();
}
/**
* @methodName:
* @param:
* @return:
* @description:部门文件年度更新情况
* @auther: Lizj
* @date: 2022/6/28 22:53
*/
public String deptFileYearRenewSituation(UserContext uc, RequestParams params) {
/* 1)新增数=某单位年度新增文件
2)修订数=某单位年度修订文件
3)废止数=某单位年度废止文件 */
ResponseObject ro = ResponseObject.newOkResponse();
HashMap<String, Object> renewCountMap = new HashMap<>();
ArrayList<Map> BDRenewCountMaps = new ArrayList<>();
ArrayList<Map> FDRenewCountMaps = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Integer createCount = 0;
Integer updateCount = 0;
Integer abolishCount = 0;
ArrayList<String> deptIDList = new ArrayList<>();
//获取当前年
LocalDateTime nowDate = LocalDateTime.now();
int nowYear = nowDate.getYear();
//事业部和职能部门ID名称 list
List<RowMap> fileRowMaps = DBSql.getMaps("SELECT FILEID,FILEVERSION,PUBDEPT,PUBDATETIME,FILESTATE FROM BO_EU_PAL_FILE1");
List<RowMap> BDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='BD'");
List<RowMap> FDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='FD'");
if (null!=BDInfoMaps && !BDInfoMaps.isEmpty()) {
for (RowMap bdInfoMap : BDInfoMaps) {
renewCountMap = new HashMap<String, Object>();
createCount = 0;
updateCount = 0;
abolishCount = 0;
String bdDeptID = bdInfoMap.getString("DEPTID");
deptIDList = new ArrayList<String>();
try {
deptIDList = GetNodesUtil.getChildDept(bdDeptID, deptIDList);
if (null!=deptIDList && !deptIDList.isEmpty()) {
for (String deptID : deptIDList) {
for (RowMap fileRowMap : fileRowMaps) {
if (fileRowMap.getString("PUBDEPT").contains(deptID)) {
String FILESTATE = fileRowMap.getString("FILESTATE");
String FILEVERSION = fileRowMap.getString("FILEVERSION");
String publishDate = fileRowMap.getString("PUBDATETIME");
if (UtilString.isNotEmpty(publishDate)) {
if (publishDate.contains("2022")) {
/**
* @methodName:
* @param:
* @return:
* @description:部门文件年度更新情况
* @auther: Lizj
* @date: 2022/6/28 22:53
*/
public String deptFileYearRenewSituation(UserContext uc, RequestParams params) {
/*
* 1)新增数=某单位年度新增文件 一个版本是新增
* 2)修订数=某单位年度修订文件 大于一个版本是修订
* 3)废止数=某单位年度废止文件 停用
*/
ResponseObject ro = ResponseObject.newOkResponse();
HashMap<String, Object> renewCountMap = new HashMap<>();
ArrayList<Map> BDRenewCountMaps = new ArrayList<>();
ArrayList<Map> FDRenewCountMaps = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Integer createCount = 0;
Integer updateCount = 0;
Integer abolishCount = 0;
ArrayList<String> deptIDList = new ArrayList<>();
// 获取当前年
LocalDateTime nowDate = LocalDateTime.now();
int nowYear = nowDate.getYear();
// 事业部和职能部门ID名称 list
List<RowMap> fileRowMaps = DBSql
.getMaps("SELECT FILEID,FILEVERSION,PUBDEPT,PUBDATETIME,FILESTATE FROM BO_EU_PAL_FILE1");
List<RowMap> BDInfoMaps = DBSql.getMaps(
"SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='BD'");
List<RowMap> FDInfoMaps = DBSql.getMaps(
"SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='FD'");
if (null != BDInfoMaps && !BDInfoMaps.isEmpty()) {
for (RowMap bdInfoMap : BDInfoMaps) {
renewCountMap = new HashMap<String, Object>();
createCount = 0;
updateCount = 0;
abolishCount = 0;
String bdDeptID = bdInfoMap.getString("DEPTID");
deptIDList = new ArrayList<String>();
try {
deptIDList = GetNodesUtil.getChildDept(bdDeptID, deptIDList);
if (null != deptIDList && !deptIDList.isEmpty()) {
for (String deptID : deptIDList) {
for (RowMap fileRowMap : fileRowMaps) {
if (fileRowMap.getString("PUBDEPT").contains(deptID)) {
String FILESTATE = fileRowMap.getString("FILESTATE");
String FILEVERSION = fileRowMap.getString("FILEVERSION");
String publishDate = fileRowMap.getString("PUBDATETIME");
if (UtilString.isNotEmpty(publishDate)) {
if (publishDate.contains("2022")) {
if (FILESTATE.equals("1") && FILEVERSION.equals("1.0")) {
createCount += 1;
}
if (FILESTATE.equals("1") && !FILEVERSION.equals("1.0")) {
updateCount += 1;
}
if (FILESTATE.equals("3")) {
abolishCount += 1;
}
}
}
Timestamp PUBDATETIME = fileRowMap.getTimestamp("PUBDATETIME");
String pubdatetimeString = sdf.format(PUBDATETIME);
LocalDate pubDate = LocalDate.parse(pubdatetimeString,
DateTimeFormatter.ofPattern("yyyy-MM-dd"));
if (pubDate.getYear() == nowYear) {
if (FILESTATE.equals("1") && FILEVERSION.equals("1.0")) {
createCount += 1;
}
if (FILESTATE.equals("1") && !FILEVERSION.equals("1.0")) {
updateCount += 1;
}
if (FILESTATE.equals("3")) {
abolishCount += 1;
}
createCount += 1;
}
if (FILESTATE.equals("1") && !FILEVERSION.equals("1.0")) {
updateCount += 1;
}
if (FILESTATE.equals("3")) {
abolishCount += 1;
}
}
}
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
renewCountMap.put("deptID", bdDeptID);
renewCountMap.put("deptName", bdInfoMap.getString("ABBREVIATION"));
renewCountMap.put("createCount", createCount);
renewCountMap.put("updateCount", updateCount);
renewCountMap.put("abolishCount", abolishCount);
BDRenewCountMaps.add(renewCountMap);
}
}
if (null != FDInfoMaps && !FDInfoMaps.isEmpty()) {
for (RowMap fdInfoMap : FDInfoMaps) {
renewCountMap = new HashMap<String, Object>();
createCount = 0;
updateCount = 0;
abolishCount = 0;
String fdDeptID = fdInfoMap.getString("DEPTID");
deptIDList = new ArrayList<String>();
try {
deptIDList = GetNodesUtil.getChildDept(fdDeptID, deptIDList);
if (null != deptIDList && !deptIDList.isEmpty()) {
for (String deptID : deptIDList) {
for (RowMap fileRowMap : fileRowMaps) {
if (fileRowMap.getString("PUBDEPT").contains(deptID)) {
String FILESTATE = fileRowMap.getString("FILESTATE");
String FILEVERSION = fileRowMap.getString("FILEVERSION");
String publishDate = fileRowMap.getString("PUBDATETIME");
if (UtilString.isNotEmpty(publishDate)) {
if (publishDate.contains("2022")) {
if (FILESTATE.equals("1") && FILEVERSION.equals("1.0")) {
createCount += 1;
}
if (FILESTATE.equals("1") && !FILEVERSION.equals("1.0")) {
updateCount += 1;
}
if (FILESTATE.equals("3")) {
abolishCount += 1;
}
}
}
}
/*
* Timestamp PUBDATETIME = fileRowMap.getTimestamp("PUBDATETIME"); String
* pubdatetimeString= sdf.format(PUBDATETIME); LocalDate pubDate =
* LocalDate.parse(pubdatetimeString,
* DateTimeFormatter.ofPattern("yyyy-MM-dd"));
*
* if (pubDate.getYear()==nowYear) { if (FILESTATE.equals("1") &&
* FILEVERSION.equals("1.0")) { createCount += 1; } if (FILESTATE.equals("1") &&
* !FILEVERSION.equals("1.0")) { updateCount += 1; } if (FILESTATE.equals("3"))
* { abolishCount += 1; } }
*/
}
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
renewCountMap.put("deptID", fdDeptID);
renewCountMap.put("deptName", fdInfoMap.getString("ABBREVIATION"));
renewCountMap.put("createCount", createCount);
renewCountMap.put("updateCount", updateCount);
renewCountMap.put("abolishCount", abolishCount);
FDRenewCountMaps.add(renewCountMap);
}
renewCountMap.put("deptID",bdDeptID);
renewCountMap.put("deptName",bdInfoMap.getString("ABBREVIATION"));
renewCountMap.put("createCount",createCount);
renewCountMap.put("updateCount",updateCount);
renewCountMap.put("abolishCount",abolishCount);
BDRenewCountMaps.add(renewCountMap);
}
}
if (null!=FDInfoMaps && !FDInfoMaps.isEmpty()) {
for (RowMap fdInfoMap : FDInfoMaps) {
renewCountMap = new HashMap<String, Object>();
createCount = 0;
updateCount = 0;
abolishCount = 0;
String fdDeptID = fdInfoMap.getString("DEPTID");
deptIDList = new ArrayList<String>();
try {
deptIDList = GetNodesUtil.getChildDept(fdDeptID, deptIDList);
if (null!=deptIDList && !deptIDList.isEmpty()) {
for (String deptID : deptIDList) {
for (RowMap fileRowMap : fileRowMaps) {
if (fileRowMap.getString("PUBDEPT").contains(deptID)) {
String FILESTATE = fileRowMap.getString("FILESTATE");
String FILEVERSION = fileRowMap.getString("FILEVERSION");
String publishDate = fileRowMap.getString("PUBDATETIME");
if (UtilString.isNotEmpty(publishDate)) {
if (publishDate.contains("2022")) {
if (FILESTATE.equals("1") && FILEVERSION.equals("1.0")) {
createCount += 1;
}
if (FILESTATE.equals("1") && !FILEVERSION.equals("1.0")) {
updateCount += 1;
}
if (FILESTATE.equals("3")) {
abolishCount += 1;
}
}
}
}
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
renewCountMap.put("deptID",fdDeptID);
renewCountMap.put("deptName",fdInfoMap.getString("ABBREVIATION"));
renewCountMap.put("createCount",createCount);
renewCountMap.put("updateCount",updateCount);
renewCountMap.put("abolishCount",abolishCount);
FDRenewCountMaps.add(renewCountMap);
}
}
ro.put("BDRenewCount",BDRenewCountMaps);
ro.put("FDRenewCount",FDRenewCountMaps);
return ro.toString();
}
}
ro.put("BDRenewCount", BDRenewCountMaps);
ro.put("FDRenewCount", FDRenewCountMaps);
return ro.toString();
}
/**
* @methodName:

View File

@ -0,0 +1,213 @@
package com.awspaas.user.apps.yili.reportform.util;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.xml.bind.DatatypeConverter;
import cn.jpush.api.utils.StringUtils;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
/**
* @author neil
* @date 2022/10/08
*/
public class JwtUtils {
// JWT 密钥
private static String secretKey="8944878877848fg)";
//刷新token的过期时间
private static Duration accessTokenExpireTime=Duration.parse("PT24H");
//private static Duration accessTokenExpireTime=Duration.parse("PT60S");
//刷新tokenPC端是8小时
private static Duration refreshTokenExpireTime=Duration.parse("PT8H") ;
//刷新tokenAPP端是一个月
private static Duration refreshTokenExpireAppTime=Duration.parse("P30D") ;
//签发人
private static String issuer="ws";
/**
* 生成 access_token
*/
public static String getAccessToken(String subject, Map<String,Object> claims){
return generateToken(issuer,subject,claims,accessTokenExpireTime.toMillis(),secretKey);
}
/**
* 签发token
*/
public static String generateToken(String issuer, String subject, Map<String, Object> claims, long ttlMillis, String secret) {
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
byte[] signingKey = DatatypeConverter.parseBase64Binary(secret);
JwtBuilder builder = Jwts.builder();
if(null!=claims){
builder.setClaims(claims);
}
if (!StringUtils.isEmpty(subject)) {
builder.setSubject(subject);
}
if (!StringUtils.isEmpty(issuer)) {
builder.setIssuer(issuer);
}
builder.setIssuedAt(now);
if (ttlMillis >= 0) {
long expMillis = nowMillis + ttlMillis;
Date exp = new Date(expMillis);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(exp);
System.out.println(format);
builder.setExpiration(exp);
}
builder.signWith(signatureAlgorithm, signingKey);
return builder.compact();
}
/**
* TODO 上面我们已经有生成 access_token 的方法下面加入生成 refresh_token 的方法(PC 端过期时间短一些)
*/
/**
* 生成 PC 刷新token
*/
public static String getRefreshToken(String subject,Map<String,Object> claims){
return generateToken(issuer,subject,claims,refreshTokenExpireTime.toMillis(),secretKey);
}
/**
* 生成 App端 刷新token
*/
public static String getRefreshAppToken(String subject,Map<String,Object> claims){
return generateToken(issuer,subject,claims,refreshTokenExpireAppTime.toMillis(),secretKey);
}
/**
* 从令牌中获取数据声明
*/
public static Claims getClaimsFromToken(String token) {
Claims claims;
try {
claims = Jwts.parser().setSigningKey(DatatypeConverter.parseBase64Binary(secretKey)).parseClaimsJws(token).getBody();
} catch (Exception e) {
claims = null;
//FineLoggerFactory.getLogger().error ("jwt从令牌中获取数据声明={}",e);
}
return claims;
}
/**
* 获取用户id
*/
public static String getUserId(String token){
String userId=null;
try {
Claims claims = getClaimsFromToken(token);
userId = claims.getSubject();
} catch (Exception e) {
//FineLoggerFactory.getLogger().error ("jwt获取用户id抛出的异常={}",e);
}
return userId;
}
/**
* 获取用户名
*/
public static String getUserName(String token){
String username = null;
try {
Claims claims = getClaimsFromToken(token);
username = (String) claims .get("userName");
} catch (Exception e) {
//FineLoggerFactory.getLogger().error ("jwt获取获取用户名抛出的异常={}",e);
}
return username;
}
/**
* 验证token 是否过期
*/
public static Boolean isTokenExpired(String token) {
try {
//使用密钥解析
Claims claims = getClaimsFromToken(token);
//拿到过期时间
Date expiration = claims.getExpiration();
//与当前时间进行比较
return expiration.before(new Date());
} catch (Exception e) {
System.out.println("验证token是否过期时候抛出的异常"+e);
return true;
}
}
/**
* 校验令牌
*/
public static Boolean validateToken(String token) {
//通过getClaimsFromToken解析传入的token
Claims claimsFromToken = getClaimsFromToken(token);
//校验是否为空判断是否过期
return (claimsFromToken!=null && !isTokenExpired(token));
}
/**
* 刷新token
*/
public static String refreshToken(String refreshToken,Map<String, Object> claims) {
String refreshedToken;
try {
//通过getClaimsFromToken解析传入的token
Claims parserclaims = getClaimsFromToken(refreshToken);
/**
* 刷新token的时候如果为空说明原先的 用户信息不变 所以就引用上个token里的内容
*/
if(null==claims){
claims=parserclaims;
}
refreshedToken = generateToken(parserclaims.getIssuer(),parserclaims.getSubject(),claims,accessTokenExpireTime.toMillis(),secretKey);
} catch (Exception e) {
refreshedToken = null;
System.out.println("刷新token时候抛出异常="+e);
}
return refreshedToken;
}
/**
* 获取token的剩余过期时间
*/
public static long getRemainingTime(String token){
long result=0;
try {
long nowMillis = System.currentTimeMillis();
result= getClaimsFromToken(token).getExpiration().getTime()-nowMillis;
} catch (Exception e) {
System.out.println("获取token的剩余过期时间时候抛出异常="+e);
}
return result;
}
/**
* 模拟生产jwt_token
* @param args
*/
public static void main(String[] args) {
Map<String,Object> claims = new HashMap<> ();
claims.put("userName","10036614");
//生成token
String jwt_token = JwtUtils.getAccessToken ("userId",claims);
System.out.println ("jwt_token="+jwt_token);
String username = JwtUtils.getUserName (jwt_token);
System.out.println ("userName="+username);
}
}