no message

master
rengp 2 years ago
parent f61836144b
commit 988222e450

@ -0,0 +1,12 @@
package com.api.tjbk;
import com.engine.web.meeting.NewMeet;
import javax.ws.rs.Path;
@Path("/oameeting")
public class TJBKMeetWeb extends NewMeet
{
}

@ -1,20 +1,64 @@
package com.engine.custom.corn;
import com.cloudstore.dev.api.bean.MessageBean;
import com.cloudstore.dev.api.bean.MessageType;
import com.cloudstore.dev.api.util.Util_Message;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.interfaces.schedule.BaseCronJob;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
public class WeekReportCorn extends BaseCronJob {
private String userid = "";
BaseBean baseBean = new BaseBean();
@Override
public void execute() {
RecordSet recordSet = new RecordSet();
int startNum = 0;
int endNum = 0;
recordSet.executeQuery("select count(1) cnt from xlbb_grzbzz_xda");
recordSet.next();
startNum = recordSet.getInt("cnt");
recordSet.executeUpdate("insert into xlbb_grzbzz_xda(userid,depid,lczs,ybsl, pjhs, zdhs, zxhs, dbcount, dbzchs , pm,insertdate)select userid,depid,lczs,ybsl,round(pjhs,4) as pjhs,zdhs,zxhs,dbcount,dbzchs ,pm ,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as insertdate from xlbb_grzbzz_xda_view");
writeLog("执行sql=====>insert into xlbb_grzbzz_xda(userid,depid,lczs,ybsl, pjhs, zdhs, zxhs, dbcount, dbzchs , pm,insertdate)select userid,depid,lczs,ybsl,round(pjhs,4) as pjhs,zdhs,zxhs,dbcount,dbzchs ,pm ,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as insertdate from xlbb_grzbzz_xda_view");
recordSet.executeQuery("select count(1) cnt from xlbb_grzbzz_xda");
recordSet.next();
endNum = recordSet.getInt("cnt");
writeLog("执行sql数量=====>"+recordSet.getCounts());
sendMsg(startNum,endNum);
}
private void writeLog(String log){
baseBean.writeLog(log);
}
private void sendMsg(int startNum ,int endNum){
MessageType messageType = MessageType.newInstance(1157); // 消息来源(见文档第四点补充 必填)
Set<String> userIdList = new HashSet<>(); // 接收人id 必填
String[] useridArr = userid.split(",");
for (String s : useridArr) {
userIdList.add(s);
}
String title = "个人周报更新提醒"; // 标题
String context = "本次周报新增"+(endNum-startNum)+";" +
"更新前总数"+startNum+";" +
"更新后总数"+endNum+";"; // 内容
String linkUrl = ""; // PC端链接
String linkMobileUrl = ""; // 移动端链接
try {
MessageBean messageBean = Util_Message.createMessage(messageType, userIdList, title, context, linkUrl, linkMobileUrl);
messageBean.setCreater(1);// 创建人id
//message.setBizState("0");// 需要修改消息为已处理等状态时传入,表示消息最初状态为待处理
//messageBean.setTargetId("121|22"); //消息来源code +“|”+业务id需要修改消息为已处理等状态时传入
Util_Message.store(messageBean);
} catch (IOException e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,263 @@
package com.engine.custom.yunxuetang;
import com.alibaba.fastjson.JSONObject;
import com.engine.custom.yunxuetang.bean.DeptRequestBody;
import com.engine.custom.yunxuetang.bean.JobRequestBody;
import com.engine.custom.yunxuetang.bean.JobTypeRequestBody;
import com.engine.custom.yunxuetang.bean.ResponseData;
import com.engine.custom.yunxuetang.util.HttpClientUtil;
import com.engine.custom.yunxuetang.util.SyncUtil;
import com.weaver.general.Util;
import okhttp3.*;
import weaver.conn.BatchRecordSet;
import weaver.conn.RecordSet;
import weaver.general.GCONST;
import weaver.general.StringUtil;
import weaver.hrm.job.JobActivitiesComInfo;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
//查询未封存的分部 数量不大暂不分页
public static final String querySubsql = "select ID,SUBCOMPANYNAME,SHOWORDER,SUBCOMPANYCODE from hrmsubcompany where CANCELED is null or CANCELED != 1";
//更新分部云学堂id
public static final String updateSubyxtid = "update hrmsubcompanydefined set yxtid = ? where subcomid = ?";
//查询部门等级sql
public static final String queryDeptLevelsql = "select TLEVEL level from HRMDEPARTMENT group by TLEVEL";
//根据层级获取对应层级的总数
public static final String queryDeptLevelCountsql = "select count(*) cnt from HRMDEPARTMENT where TLEVEL = ?";
//查询某级部门
public static final String queryDeptsql = "select dept.* from (" +
" select id , DEPARTMENTNAME ,DEPARTMENTCODE ,SUBCOMPANYID1 , SUPDEPID,SHOWORDER, " +
" ROW_NUMBER() OVER (ORDER BY SHOWORDER) AS rn from HRMDEPARTMENT where TLEVEL = ? " +
" ) dept WHERE dept.rn BETWEEN ? AND ? ";
//查询删除的部门
public static final String queryDelDeptsql = "select id from HRMDEPARTMENT where CANCELED = 1 order by TLEVEL desc";
// public static final String queryDelDeptsql = "select id from HRMDEPARTMENT order by TLEVEL desc";
//查询删除的分部
public static final String queryDelSubsql = "select id from HRMSUBCOMPANY where CANCELED = 1 order by TLEVEL desc";
// public static final String queryDelSubsql = "select id from HRMSUBCOMPANY order by TLEVEL desc";
//查询岗位分类
public static final String queryJobTypesql = "select * from hrmjobactivities";
//查询岗位
public static final String queryJobsql = "select * from hrmjobtitles";
public static final char Separator = Util.getSeparator();
public static void main(String[] args) {
String rootPath = "D:\\WEAVER2\\ecology\\";
GCONST.setRootPath(rootPath);
GCONST.setServerName("ecology");
// Test test = new Test();
//同步部门成功,开始调用删除部门接口同步封存部门
// test.syncDeptList();
//先删除部门再删除分部
// test.deldept();
//同步岗位类型 防止有同名岗位
// test.syncJobTypeList();
//同步岗位
// test.syncJobList();
JobActivitiesComInfo jobActivitiesComInfo = new JobActivitiesComInfo();
jobActivitiesComInfo.getJobActivitiesname();
// boolean next = jobActivitiesComInfo.next();
}
private void syncDeptList() {
//同步分部作为一级部门
//获取分部beanList
SyncUtil syncUtil = new SyncUtil();
RecordSet recordSet = new RecordSet();
BatchRecordSet batchRecordSet = new BatchRecordSet();
List<DeptRequestBody> subcompanyList = getSubcompanyList(recordSet);
List<String> updatesubcompanyList = new ArrayList<>();
//推送数据云学堂
for (DeptRequestBody deptRequestBody : subcompanyList) {
ResponseData responseData = syncUtil.syncDept(deptRequestBody);
System.out.println("responseData"+responseData);
String yxtid = responseData.getData().getString("id");
updatesubcompanyList.add(yxtid+Separator+deptRequestBody.getThirdId());
System.out.println("sql==="+yxtid+Separator+deptRequestBody.getThirdId());
}
batchRecordSet.executeSqlBatchNew(updateSubyxtid,updatesubcompanyList);
//同步部门(从一级开始同步,查询一共几级部门,按顺序推送)
ArrayList<Integer> levelList = new ArrayList<>();
recordSet.executeQuery(queryDeptLevelsql);
while (recordSet.next()){
int level = Util.getIntValue(recordSet.getString("level"),2);
levelList.add(level);
}
Collections.sort(levelList);
//去重,一般不会有这个问题
List<Integer> listWithoutDuplicates = new ArrayList<>(new LinkedHashSet<>(levelList));
//禁止在循环中创建recordSet对象,防止连接溢出
for (int i = 0; i < listWithoutDuplicates.size(); i++) {
int total = getTotalRecords(recordSet, listWithoutDuplicates.get(i));
int pageSize = 200;
int totalPages = (int) Math.ceil((double) total / pageSize);
if (i == 0) {
//level为2的作为2级部门,上级部门字段为分部
for (int pageIndex = 0; pageIndex < totalPages; pageIndex++) {
List<DeptRequestBody> pageData = getDeptList(listWithoutDuplicates.get(i),recordSet,pageIndex, pageSize);
for (DeptRequestBody deptRequestBody : pageData) {
ResponseData responseData = syncUtil.syncDept(deptRequestBody);
System.out.println("deptRequestBody===>"+deptRequestBody);
System.out.println("responseData===>"+responseData);
responseData.getData().getString("id");
}
}
} else {
//level大于2的上级部门为oa原上级部门
for (int pageIndex = 0; pageIndex < totalPages; pageIndex++) {
List<DeptRequestBody> pageData = getDeptList(listWithoutDuplicates.get(i),recordSet,pageIndex, pageSize);
for (DeptRequestBody deptRequestBody : pageData) {
ResponseData responseData = syncUtil.syncDept(deptRequestBody);
System.out.println("deptRequestBody===>"+deptRequestBody);
System.out.println("responseData===>"+responseData);
responseData.getData().getString("id");
}
}
}
}
}
private List<DeptRequestBody> getSubcompanyList(RecordSet recordSet){
recordSet.executeQuery(querySubsql);
ArrayList<DeptRequestBody> subcompanyList = new ArrayList<>();
while (recordSet.next()){
DeptRequestBody deptRequestBody = new DeptRequestBody();
//三方id
deptRequestBody.setThirdId(Util.null2String("sub_"+recordSet.getString("ID")));
//分部名称
deptRequestBody.setName(Util.null2String(recordSet.getString("SUBCOMPANYNAME")));
//排序
deptRequestBody.setOrderIndex(Util.getIntValue(recordSet.getString("SHOWORDER")));
//编码
deptRequestBody.setCode(Util.null2String(recordSet.getString("SUBCOMPANYCODE")));
subcompanyList.add(deptRequestBody);
}
return subcompanyList;
};
private List<DeptRequestBody> getDeptList(Integer level, RecordSet recordSet ,int pageIndex, int pageSize) {
ArrayList<DeptRequestBody> deptRequestBodyList = new ArrayList<>();
int start = pageIndex * pageSize + 1;
int end = start + pageSize - 1;
recordSet.executeQuery(queryDeptsql,level,start,end);
while (recordSet.next()){
DeptRequestBody deptRequestBody = new DeptRequestBody();
//三方id
deptRequestBody.setThirdId("dept_"+Util.null2String(recordSet.getString("ID")));
//分部名称
deptRequestBody.setName(Util.null2String(recordSet.getString("DEPARTMENTNAME")));
//排序
deptRequestBody.setOrderIndex(Util.getIntValue(recordSet.getString("SHOWORDER")));
//编码
deptRequestBody.setCode(Util.null2String(recordSet.getString("DEPARTMENTCODE")));
String supdepid = Util.null2String(recordSet.getString("SUPDEPID"));
if ("0".equals(supdepid)|| StringUtil.isEmpty(supdepid)){
deptRequestBody.setParentThirdId("sub_"+Util.null2String(recordSet.getString("SUBCOMPANYID1")));
}else {
deptRequestBody.setParentThirdId("dept_"+supdepid);
}
deptRequestBodyList.add(deptRequestBody);
}
return deptRequestBodyList;
}
//获取对应层级总数
public static int getTotalRecords(RecordSet recordSet , int level) {
recordSet.executeQuery(queryDeptLevelCountsql,level);
recordSet.next();
return recordSet.getInt("cnt");
}
//删除部门
public void deldept() {
SyncUtil syncUtil = new SyncUtil();
RecordSet recordSet = new RecordSet();
recordSet.executeQuery(queryDelDeptsql);
while (recordSet.next()){
syncUtil.syncDelDept("dept_"+recordSet.getString("id"));
}
recordSet.executeQuery(queryDelSubsql);
while (recordSet.next()){
syncUtil.syncDelDept("sub_"+recordSet.getString("id"));
}
}
private void syncJobList() {
SyncUtil syncUtil = new SyncUtil();
ArrayList<JobRequestBody> jobRequestBodyList = getJobRequestBodyList();
for (JobRequestBody jobRequestBody : jobRequestBodyList) {
syncUtil.syncJobs(jobRequestBody);
}
}
private void syncJobTypeList() {
SyncUtil syncUtil = new SyncUtil();
ArrayList<JobTypeRequestBody> jobTypeRequestBodyList = getJobTypeRequestBodyList();
for (JobTypeRequestBody jobTypeRequestBody : jobTypeRequestBodyList) {
syncUtil.syncJobType(jobTypeRequestBody);
}
}
// 获取岗位
private ArrayList<JobRequestBody> getJobRequestBodyList() {
RecordSet recordSet = new RecordSet();
ArrayList<JobRequestBody> jobList = new ArrayList<>();
recordSet.executeQuery(queryJobsql);
while (recordSet.next()){
String id = recordSet.getString("id");
String jobtitlename = recordSet.getString("JOBTITLENAME");
JobRequestBody jobRequestBody = new JobRequestBody();
jobRequestBody.setThirdId(id);
jobRequestBody.setName(jobtitlename);
jobList.add(jobRequestBody);
}
return jobList;
}
// 获取岗位分类
private ArrayList<JobTypeRequestBody> getJobTypeRequestBodyList() {
RecordSet recordSet = new RecordSet();
ArrayList<JobTypeRequestBody> jobTypeList = new ArrayList<>();
recordSet.executeQuery(queryJobTypesql);
while (recordSet.next()){
String id = recordSet.getString("id");
String jobtitlename = recordSet.getString("JOBACTIVITYNAME");
JobTypeRequestBody jobTypeRequestBody = new JobTypeRequestBody();
jobTypeRequestBody.setThirdId(id);
jobTypeRequestBody.setName(jobtitlename);
jobTypeList.add(jobTypeRequestBody);
}
return jobTypeList;
}
public static String extractChinesePart(String input) {
// 正则表达式匹配 ~`~`数字 中文内容`~`数字 的模式
Pattern pattern = Pattern.compile("~`~`\\d+ ([\u4e00-\u9fa5]+)`~`");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
return matcher.group(1); // 返回匹配的第一个分组,即中文内容
}
return input;
}
}

@ -0,0 +1,101 @@
package com.engine.custom.yunxuetang.bean;
public class DeptRequestBody {
private String code;
private String deptManagerThirdId;
private String description;
private int maxUserCount;
private String name;
private int orderIndex;
private String parentThirdId;
private boolean recoveryDeleted;
private String thirdId;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDeptManagerThirdId() {
return deptManagerThirdId;
}
public void setDeptManagerThirdId(String deptManagerThirdId) {
this.deptManagerThirdId = deptManagerThirdId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getMaxUserCount() {
return maxUserCount;
}
public void setMaxUserCount(int maxUserCount) {
this.maxUserCount = maxUserCount;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getOrderIndex() {
return orderIndex;
}
public void setOrderIndex(int orderIndex) {
this.orderIndex = orderIndex;
}
public String getParentThirdId() {
return parentThirdId;
}
public void setParentThirdId(String parentThirdId) {
this.parentThirdId = parentThirdId;
}
public boolean isRecoveryDeleted() {
return recoveryDeleted;
}
public void setRecoveryDeleted(boolean recoveryDeleted) {
this.recoveryDeleted = recoveryDeleted;
}
public String getThirdId() {
return thirdId;
}
public void setThirdId(String thirdId) {
this.thirdId = thirdId;
}
@Override
public String toString() {
return "DeptRequestBody{" +
"code='" + code + '\'' +
", deptManagerThirdId='" + deptManagerThirdId + '\'' +
", description='" + description + '\'' +
", maxUserCount=" + maxUserCount +
", name='" + name + '\'' +
", orderIndex=" + orderIndex +
", parentThirdId='" + parentThirdId + '\'' +
", recoveryDeleted=" + recoveryDeleted +
", thirdId='" + thirdId + '\'' +
'}';
}
}

@ -0,0 +1,123 @@
package com.engine.custom.yunxuetang.bean;
import java.util.List;
public class JobRequestBody {
private String catalogThirdId;
private String code;
private String description;
private String gradeThirdId;
private List<String> gradeThirdIds;
private int keyPosition;
private String name;
private int orderIndex;
private String requirement;
private String responsibility;
private String thirdId;
public String getCatalogThirdId() {
return catalogThirdId;
}
public void setCatalogThirdId(String catalogThirdId) {
this.catalogThirdId = catalogThirdId;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getGradeThirdId() {
return gradeThirdId;
}
public void setGradeThirdId(String gradeThirdId) {
this.gradeThirdId = gradeThirdId;
}
public List<String> getGradeThirdIds() {
return gradeThirdIds;
}
public void setGradeThirdIds(List<String> gradeThirdIds) {
this.gradeThirdIds = gradeThirdIds;
}
public int getKeyPosition() {
return keyPosition;
}
public void setKeyPosition(int keyPosition) {
this.keyPosition = keyPosition;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getOrderIndex() {
return orderIndex;
}
public void setOrderIndex(int orderIndex) {
this.orderIndex = orderIndex;
}
public String getRequirement() {
return requirement;
}
public void setRequirement(String requirement) {
this.requirement = requirement;
}
public String getResponsibility() {
return responsibility;
}
public void setResponsibility(String responsibility) {
this.responsibility = responsibility;
}
public String getThirdId() {
return thirdId;
}
public void setThirdId(String thirdId) {
this.thirdId = thirdId;
}
@Override
public String toString() {
return "JobRequestBody{" +
"catalogThirdId='" + catalogThirdId + '\'' +
", code='" + code + '\'' +
", description='" + description + '\'' +
", gradeThirdId='" + gradeThirdId + '\'' +
", gradeThirdIds=" + gradeThirdIds +
", keyPosition=" + keyPosition +
", name='" + name + '\'' +
", orderIndex=" + orderIndex +
", requirement='" + requirement + '\'' +
", responsibility='" + responsibility + '\'' +
", thirdId='" + thirdId + '\'' +
'}';
}
}

@ -0,0 +1,40 @@
package com.engine.custom.yunxuetang.bean;
public class JobTypeRequestBody {
private String name;
private int orderIndex;
private String parentThirdId;
private String thirdId;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getOrderIndex() {
return orderIndex;
}
public void setOrderIndex(int orderIndex) {
this.orderIndex = orderIndex;
}
public String getParentThirdId() {
return parentThirdId;
}
public void setParentThirdId(String parentThirdId) {
this.parentThirdId = parentThirdId;
}
public String getThirdId() {
return thirdId;
}
public void setThirdId(String thirdId) {
this.thirdId = thirdId;
}
}

@ -0,0 +1,63 @@
package com.engine.custom.yunxuetang.bean;
import com.alibaba.fastjson.JSONObject;
public class ResponseData {
private String code;
private String msg;
private String subCode;
private String subMsg;
private JSONObject data;
@Override
public String toString() {
return "ErrorResponse{" +
"code='" + code + '\'' +
", msg='" + msg + '\'' +
", subCode='" + subCode + '\'' +
", subMsg='" + subMsg + '\'' +
", data=" + data +
'}';
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getSubCode() {
return subCode;
}
public void setSubCode(String subCode) {
this.subCode = subCode;
}
public String getSubMsg() {
return subMsg;
}
public void setSubMsg(String subMsg) {
this.subMsg = subMsg;
}
public JSONObject getData() {
return data;
}
public void setData(JSONObject data) {
this.data = data;
}
}

@ -0,0 +1,100 @@
package com.engine.custom.yunxuetang.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import okhttp3.Headers;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
public class HttpClientUtil {
/**
* post.
*
* @param pathUrl .
* @param dataStr .
* @param accessToken accessToken.
* @return str.
*/
public static String doPost(String pathUrl, String dataStr, String accessToken) {
// 请求参数转换为json字符串
// String dataStr = JSON.toJSONString(dataMap);
String result = null;
try {
// 组装请求头信息
Map<String, String> header = new HashMap<>(2);
header.put("Content-Type", "application/json;charset=utf-8");
if (accessToken != null && accessToken.length() > 0) {
header.put("Authorization", accessToken);
}
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json;charset=utf-8");
RequestBody body = RequestBody.create(mediaType, dataStr);
Request request = new Request.Builder()
.url(pathUrl) // 请求接口地址
.method("POST", body) // 设定请求的方法为"POST"
.headers(Headers.of(header)) // 请求头信息
.build();
Response response = client.newBuilder().readTimeout(300000L, TimeUnit.MILLISECONDS).build().newCall(request).execute();
result = response.body().string();
} catch (Exception e) {
System.out.println("执行包含头部的post请求,url:" + pathUrl + ",请求数据:" + dataStr + ",执行错误信息:" + e);
}
return result;
}
/**
* get.
*
* @param pathUrl .
* @param accessToken accessToken.
* @return str.
*/
public static String doGet(String pathUrl, String accessToken) {
String result = null;
try {
// 组装请求头信息
Map<String, String> header = new HashMap<>(2);
header.put("Content-Type", "application/json;charset=utf-8");
if (accessToken != null && accessToken.length() > 0) {
header.put("Authorization", accessToken);
}
OkHttpClient client = new OkHttpClient().newBuilder().build();
// http创建的request对象默认是get请求
Request request = new Request.Builder()
.url(pathUrl) // 请求接口地址
.headers(Headers.of(header)) // 请求头信息
.build();
Response response = client.newBuilder().readTimeout(300000L, TimeUnit.MILLISECONDS).build().newCall(request).execute();
result = response.body().string();
} catch (Exception e) {
System.out.println("执行包含头部的get请求,url:" + pathUrl + ",执行错误信息:" + e);
}
return result;
}
// 获取accessToken
public static String getAccessToken(String url,String appId,String appSecret) {
Map<String, Object> body = new HashMap<>();
String dataStr = JSON.toJSONString(body);
// url拼接所需参数
String pathUrl = url + "?" + "appId=" + appId + "&appSecret=" + appSecret;
// 以post方式调用第三方接口,获取响应结果
String result = HttpClientUtil.doPost(pathUrl, dataStr, null);
// 返回accessToken
JSONObject jsonObject = JSON.parseObject(result, JSONObject.class);
return jsonObject.getString("accessToken");
}
}

@ -0,0 +1,81 @@
package com.engine.custom.yunxuetang.util;
import com.alibaba.fastjson.JSONObject;
import com.engine.custom.yunxuetang.bean.DeptRequestBody;
import com.engine.custom.yunxuetang.bean.JobRequestBody;
import com.engine.custom.yunxuetang.bean.JobTypeRequestBody;
import com.engine.custom.yunxuetang.bean.ResponseData;
import okhttp3.OkHttpClient;
public class SyncUtil {
private static OkHttpClient client =new OkHttpClient();
public static final String tokenUrl = "https://openapi-adel.yunxuetang.cn/token";
public static final String appId = "9eqdtfi6t2f";
public static final String appSecret = "OWZhZWM0MGVjZWFj";
public static final String syncDeptsUrl = "https://openapi-adel.yunxuetang.cn/v1/udp/public/depts/sync";
public static final String syncDelDeptsUrl = "https://openapi-adel.yunxuetang.cn/v1/udp/public/depts/${thirdId}/del";
public static final String syncJobUrl = "https://openapi-adel.yunxuetang.cn/v1/udp/public/positions/sync";
public static final String syncJobTypeUrl = "https://openapi-adel.yunxuetang.cn/v1/udp/public/positioncatalogs/sync";
private String cachedToken;
private long tokenExpiryTime;
public ResponseData syncDept(DeptRequestBody deptRequestBody) {
// String accessToken = HttpClientUtil.getAccessToken(tokenUrl, appId, appSecret);
// System.out.println(accessToken);
//同步部门
// DeptRequestBody deptRequestBody = new DeptRequestBody();
// deptRequestBody.setName("研发一部子部门1");
// deptRequestBody.setThirdId("2");
// deptRequestBody.setCode("");
// deptRequestBody.setParentThirdId("1");
String bodyStr = JSONObject.toJSONString(deptRequestBody);
fetchToken();
String responseData = HttpClientUtil.doPost(syncDeptsUrl, bodyStr, cachedToken);
ResponseData jsonObject = JSONObject.parseObject(responseData,ResponseData.class);
System.out.println(jsonObject);
return jsonObject;
}
public ResponseData syncDelDept( String id) {
fetchToken();
String responseData = HttpClientUtil.doPost(syncDelDeptsUrl.replace("${thirdId}",id), "", cachedToken);
ResponseData jsonObject = JSONObject.parseObject(responseData,ResponseData.class);
System.out.println(jsonObject);
return jsonObject;
}
public void fetchToken() {
// 如果缓存中的令牌为空或即将过期,重新获取
if (cachedToken == null || System.currentTimeMillis() > tokenExpiryTime - (5 * 60 * 1000)) {
cachedToken = HttpClientUtil.getAccessToken(tokenUrl, appId, appSecret);
// 设置令牌的过期时间这里是30分钟后
tokenExpiryTime = System.currentTimeMillis() + (30 * 60 * 1000);
}
}
public ResponseData syncJobType(JobTypeRequestBody job) {
fetchToken();
String bodyStr = JSONObject.toJSONString(job);
fetchToken();
System.out.println(bodyStr);
String responseData = HttpClientUtil.doPost(syncJobTypeUrl, bodyStr, cachedToken);
ResponseData jsonObject = JSONObject.parseObject(responseData,ResponseData.class);
System.out.println(jsonObject);
return jsonObject;
}
public ResponseData syncJobs(JobRequestBody job) {
fetchToken();
String bodyStr = JSONObject.toJSONString(job);
fetchToken();
System.out.println(bodyStr);
String responseData = HttpClientUtil.doPost(syncJobUrl, bodyStr, cachedToken);
ResponseData jsonObject = JSONObject.parseObject(responseData,ResponseData.class);
System.out.println(jsonObject);
return jsonObject;
}
}

@ -112,11 +112,8 @@ public class CWGLSocketExecute extends BaseBean implements SocketExecute {
}
public static void main(String[] args) {
String rootPath = "D:\\WEAVER2\\ecology\\";
GCONST.setRootPath(rootPath);
GCONST.setServerName("ecology");
}
}

@ -0,0 +1,48 @@
package com.engine.web.meeting;
import com.alibaba.fastjson.JSONObject;
import com.engine.common.util.ParamUtil;
import weaver.general.BaseBean;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import java.util.Map;
public class NewMeet {
@Path("/newMeet")
@POST
public String newMeet(@Context HttpServletRequest request, @Context HttpServletResponse response) {
// try {
Map<String, Object> map = ParamUtil.request2Map(request);
new BaseBean().writeLog("oameeting/newMeet--->" + map);
new BaseBean().writeLog("oameeting/newMeet--->" + JSONObject.toJSONString(map));
// String dataTable = (String) map.get("dataTable");
// RecordSet recordSet = new RecordSet();
// recordSet.executeQuery("select * from uf_View_resume_perm where sfqy = 0");
// StringBuilder s = new StringBuilder();
// while (recordSet.next()){
// String xld = Utils.null2String(recordSet.getString("xld"));
// s.append(xld).append(",");
// }
// HashMap<String, String> result = new HashMap<>();
// if (s.length()>0){
// result.put("data",s.toString().substring(0, s.length()-1));
// }else {
// result.put("data","");
// }
// result.put("code","200");
// return JSONObject.toJSONString(result);
// }catch (Exception e){
// e.printStackTrace();
// HashMap<String, String> result = new HashMap<>();
// result.put("data",e.getMessage());
// result.put("code","500");
return JSONObject.toJSONString(null);
}
}

@ -18,7 +18,7 @@ import java.nio.charset.StandardCharsets;
import java.util.Map;
public class TjbkServerSocket implements ServletContextListener {
private SocketThread socketThread;
private SocketThread_sl socketThread;
@Override
public void contextDestroyed(ServletContextEvent arg0) {
@ -35,7 +35,7 @@ public class TjbkServerSocket implements ServletContextListener {
new BaseBean().writeLog("contextInitialized启动");
ServletContext servletContext = arg0.getServletContext();
if (socketThread == null) {
socketThread = new SocketThread(null, servletContext);
socketThread = new SocketThread_sl(null, servletContext);
socketThread.start(); // servlet上下文初始化时启动socket服务端线程
}
}

@ -0,0 +1,166 @@
package com.engine.web.tjbk;
import com.engine.tjbankSocket.SocketExecute;
import com.engine.tjbankSocket.impl.CWGLSocketExecute;
import com.engine.tjbankSocket.impl.GetToCountSocketExecute;
import com.engine.util.XMLUtils;
import org.apache.commons.lang.StringEscapeUtils;
import weaver.general.BaseBean;
import weaver.general.StringUtil;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Map;
public class Tjbk_SL_ServerSocket implements ServletContextListener {
private SocketThread_sl socketThread;
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
if (socketThread != null && socketThread.isInterrupted()) {
socketThread.closeServerSocket();
socketThread.interrupt();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
new BaseBean().writeLog("contextInitialized启动");
ServletContext servletContext = arg0.getServletContext();
if (socketThread == null) {
socketThread = new SocketThread_sl(null, servletContext);
socketThread.start(); // servlet上下文初始化时启动socket服务端线程
}
}
}
class SocketThread_sl extends Thread {
private ServletContext servletContext;
private ServerSocket serverSocket;
public SocketThread_sl(ServerSocket serverSocket, ServletContext servletContext) {
this.servletContext = servletContext;
// 从web.xml中context-param节点获取socket端口
String port = this.servletContext.getInitParameter("socketPortSL");
if (serverSocket == null) {
try {
this.serverSocket = new ServerSocket(Integer.parseInt(port));
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void run() {
while (!this.isInterrupted()) { // 线程未中断执行循环
try {
new BaseBean().writeLog("SocketThread线程启动");
Socket socket = serverSocket.accept();
if (socket != null) {
new ProcessSocketData_sl(socket, this.servletContext).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void closeServerSocket() {
try {
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ProcessSocketData_sl extends Thread {
private Socket socket;
private ServletContext servletContext;
public ProcessSocketData_sl() {
super();
}
public ProcessSocketData_sl(Socket socket, ServletContext servletContext) {
this.socket = socket;
this.servletContext = servletContext;
}
@Override
public void run() {
try {
// BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new BaseBean().writeLog("ServerSocket线程启动");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8);
PrintWriter pw = new PrintWriter(outputStreamWriter);
InputStream inputStream = socket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
char[] datalen=new char[8];//报文前八位为报文体总长度
in.read(datalen,0,8);
String lendata=new String (datalen);
int length=Integer.parseInt(lendata);
new BaseBean().writeLog("报文长度"+length);
// byte[] data=new byte[length];
char[] data=new char[length];
int datalength = in.read(data,0,length);
String requestData = new String(data);
new BaseBean().writeLog("requestData",requestData);
String s = "";
if (!StringUtil.isEmpty(requestData.toString())) {
new BaseBean().writeLog("requestData",requestData);
s = execute(requestData.toString());
}
// 执行自定义的请求解析方法生成响应response
pw.println(s);
pw.flush(); // 刷新缓冲区
pw.close();
socket.close();
// System.out.println(sb);
} catch (IOException e) {
e.printStackTrace();
System.out.println(e);
}
}
private String execute(String XMLparam){
new BaseBean().writeLog(this.getClass().getName()+":XMLparam=="+XMLparam);
Map<String, String> paramMap = XMLUtils.parseXMLToMap(XMLparam);
new BaseBean().writeLog(this.getClass().getName()+":paramMap=="+paramMap);
StringEscapeUtils.unescapeXml(XMLparam);
//目标系统代码
String system_id = paramMap.get("system_id");
// 请求方系统代码
String requester_id = paramMap.get("requester_id");
// 请求方机构代号
String branch_id = paramMap.get("branch_id");
new BaseBean().writeLog(this.getClass().getName()+":requester_id=="+requester_id);
SocketExecute socketExecute = null;
if ("0157".equals(requester_id)){
socketExecute = new GetToCountSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":GetToCountSocketExecute");
}else if("0170".equals(requester_id)){
socketExecute = new CWGLSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":CWGLSocketExecute");
}
String execute = socketExecute.execute(XMLparam);
return execute;
}
}

@ -0,0 +1,167 @@
package com.engine.web.zhsl;
import com.engine.tjbankSocket.SocketExecute;
import com.engine.tjbankSocket.impl.CWGLSocketExecute;
import com.engine.tjbankSocket.impl.GetToCountSocketExecute;
import com.engine.util.XMLUtils;
import org.apache.commons.lang.StringEscapeUtils;
import weaver.general.BaseBean;
import weaver.general.StringUtil;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Map;
public class Tjbk_SL_ServerSocket implements ServletContextListener {
private SocketThread_sl socketThread;
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
if (socketThread != null && socketThread.isInterrupted()) {
socketThread.closeServerSocket();
socketThread.interrupt();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
new BaseBean().writeLog("Tjbk_SL_ServerSocket——contextInitialized启动");
ServletContext servletContext = arg0.getServletContext();
if (socketThread == null) {
socketThread = new SocketThread_sl(null, servletContext);
socketThread.start(); // servlet上下文初始化时启动socket服务端线程
}
}
}
class SocketThread_sl extends Thread {
private ServletContext servletContext;
private ServerSocket serverSocket;
public SocketThread_sl(ServerSocket serverSocket, ServletContext servletContext) {
this.servletContext = servletContext;
// 从web.xml中context-param节点获取socket端口
String port = this.servletContext.getInitParameter("socketPortSL");
new BaseBean().writeLog("socketPortSL端口"+port);
if (serverSocket == null) {
try {
this.serverSocket = new ServerSocket(Integer.parseInt(port));
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void run() {
while (!this.isInterrupted()) { // 线程未中断执行循环
try {
new BaseBean().writeLog("SocketThread线程启动");
Socket socket = serverSocket.accept();
if (socket != null) {
new ProcessSocketData_sl(socket, this.servletContext).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void closeServerSocket() {
try {
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ProcessSocketData_sl extends Thread {
private Socket socket;
private ServletContext servletContext;
public ProcessSocketData_sl() {
super();
}
public ProcessSocketData_sl(Socket socket, ServletContext servletContext) {
this.socket = socket;
this.servletContext = servletContext;
}
@Override
public void run() {
try {
// BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new BaseBean().writeLog("ServerSocket线程启动");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8);
PrintWriter pw = new PrintWriter(outputStreamWriter);
InputStream inputStream = socket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
char[] datalen=new char[8];//报文前八位为报文体总长度
in.read(datalen,0,8);
String lendata=new String (datalen);
int length=Integer.parseInt(lendata);
new BaseBean().writeLog("报文长度"+length);
// byte[] data=new byte[length];
char[] data=new char[length];
int datalength = in.read(data,0,length);
String requestData = new String(data);
new BaseBean().writeLog("requestData",requestData);
String s = "";
if (!StringUtil.isEmpty(requestData.toString())) {
new BaseBean().writeLog("requestData",requestData);
s = execute(requestData.toString());
}
// 执行自定义的请求解析方法生成响应response
pw.println(s);
pw.flush(); // 刷新缓冲区
pw.close();
socket.close();
// System.out.println(sb);
} catch (IOException e) {
e.printStackTrace();
System.out.println(e);
}
}
private String execute(String XMLparam){
new BaseBean().writeLog(this.getClass().getName()+":XMLparam=="+XMLparam);
Map<String, String> paramMap = XMLUtils.parseXMLToMap(XMLparam);
new BaseBean().writeLog(this.getClass().getName()+":paramMap=="+paramMap);
StringEscapeUtils.unescapeXml(XMLparam);
//目标系统代码
String system_id = paramMap.get("system_id");
// 请求方系统代码
String requester_id = paramMap.get("requester_id");
// 请求方机构代号
String branch_id = paramMap.get("branch_id");
new BaseBean().writeLog(this.getClass().getName()+":requester_id=="+requester_id);
SocketExecute socketExecute = null;
if ("0157".equals(requester_id)){
socketExecute = new GetToCountSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":GetToCountSocketExecute");
}else if("0170".equals(requester_id)){
socketExecute = new CWGLSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":CWGLSocketExecute");
}
String execute = socketExecute.execute(XMLparam);
return execute;
}
}

@ -0,0 +1,600 @@
package com.engine.workflow.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.api.workflow.service.ScriptManagerService;
import com.cloudstore.dev.api.util.Util_TableMap;
import com.engine.common.biz.EncryptConfigBiz;
import com.engine.common.util.ParamUtil;
import com.engine.core.impl.Service;
import com.engine.msgcenter.util.ValveConfigManager;
import com.engine.encrypt.biz.WfEncryptBiz;
import com.engine.workflow.biz.excelDesign.DoSaveFreeExcelDesignBiz;
import com.engine.workflow.biz.excelDesign.ExcelSecurityBiz;
import com.engine.workflow.biz.freeNode.FreeNodeBiz;
import com.engine.workflow.biz.requestForm.LayoutInfoBiz;
import com.engine.workflow.cmd.requestForm.RequestDelVerifyCmd;
import com.engine.workflow.biz.requestForm.RequestFormBiz;
import com.engine.workflow.cmd.requestForm.*;
import com.engine.workflow.cmd.requestForm.freeNodeCustomForm.GetFreeNodeBrowserItemCmd;
import com.engine.workflow.cmd.requestForm.freeNodeCustomForm.SaveFreeNodeFormConfigCmd;
import com.engine.workflow.cmd.requestForm.remind.GetRemindDataCmd;
import com.engine.workflow.cmd.workflowSetting.GetDetailExpSetCmd;
import com.engine.workflow.cmd.workflowSetting.SaveDetailExpSetCmd;
import com.engine.workflow.cmd.workflowTemplate.GetThMouldListCmd;
import com.engine.workflow.cmd.workflowTemplate.GetThPreviewUrlCmd;
import com.engine.workflow.entity.requestForm.AutoApproveEntity;
import com.engine.workflow.entity.requestForm.TableInfo;
import com.engine.workflow.service.RequestFormService;
import weaver.conn.RecordSet;
import weaver.general.GCONST;
import weaver.general.Util;
import weaver.workflow.request.RequestManager;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
/**
* Created by jhy on 2018/2/23.
*/
public class RequestFormServiceImpl extends Service implements RequestFormService {
//流程测试选择人员后判断用户是否有创建权限
public Map<String,Object> judgeCreateRight(HttpServletRequest request){
return commandExecutor.execute(new LoadParamCmd(request, user));
}
//加载表单基础信息,权限参数及表单信息
public String loadForm(HttpServletRequest request) {
Map<String, Object> apidatas = new HashMap<String, Object>();
long start = System.currentTimeMillis();
int userid = user.getUID();
String requestid = Util.null2String(request.getParameter("requestid"));
try {
//点击列表预加载,当表单请求到时直接返回
boolean ispreload = Util.getIntValue(request.getParameter("ispreload")) == 1;
boolean isEm = Util.null2String(request.getHeader("user-agent")).indexOf("E-Mobile") > -1;
String preloadkey = isEm ? "" : Util.null2String(request.getParameter("preloadkey"));
//获取预加载的内容的token
String preloadValKey = preloadkey;
if (!"".equals(preloadkey)) {
preloadkey = userid + "_" + preloadkey;
preloadValKey = preloadkey + "_val";
if (ispreload) {
Util_TableMap.setVal(preloadkey, "loading");
} else {
//-----------------------------------------------------------------------------
// 如果有预加载活动。
// 注:预加载的内容只能使用一次,当前线程获取预加载的内容后,其他线程需要按照正常逻辑加载。
//-----------------------------------------------------------------------------
if (Util_TableMap.containsKey(preloadkey)) {
//清除预加载标志
Util_TableMap.clearVal(preloadkey);
int i = 0;
//预加载的内容,如果还没有加载好, 线程等待5s5s后还未加载完成 则按照正常逻辑加载。
String cacheVal = null;
while (i < 100) {
cacheVal = Util_TableMap.getVal(preloadValKey);
if (cacheVal != null) {
Util_TableMap.clearVal(preloadValKey);
return cacheVal;
}
i++;
Thread.sleep(50);
}
}
}
}
//第一步:权限加载判断、获取基础信息参数
Map<String, Object> competenceInfo = commandExecutor.execute(new LoadParamCmd(request, user));
apidatas.putAll(competenceInfo);
Map<String, Object> params = (Map<String, Object>) competenceInfo.get("params");
boolean iscreate = "1".equals(params.get("iscreate"));
if(!iscreate){
int creater = Util.getIntValue(Util.null2String(params.get("creater")));
int currentnodetype = Util.getIntValue(Util.null2String(params.get("currentnodetype")));
if(creater == user.getUID() && currentnodetype == 0 && this.isOnlyCreate(requestid)){
//创建人-创建节点不校验
}else{
//校验节点打开表单是否需要二次身份认证
boolean needSecondAuth = new WfEncryptBiz().judgeNeedSecondAuth(params);
boolean hasVerifyAuth = "1".equals(request.getParameter("hasVerifyAuth"));
if(needSecondAuth && !hasVerifyAuth){
apidatas.put("needSecondAuth", true);
return JSON.toJSONString(apidatas);
}
boolean verifySecondAuthToken = false;
try{
//可能会异常,影响表单加载,做容错处理
verifySecondAuthToken = new EncryptConfigBiz().checkSecondAuthToken("WORKFLOW", "NODE", params, request);
} catch(Exception e) {
e.printStackTrace();
}
if(!verifySecondAuthToken){
apidatas.put("verifySecondAuthToken", false);
return JSON.toJSONString(apidatas);
}
}
}
String retstr = "";
if (!(Boolean) params.get("verifyRight") && userid != 1) { //无权限直接返回
retstr = JSON.toJSONString(apidatas);
} else {
int ismode = Util.getIntValue(Util.null2String(params.get("ismode")), 0);
int layoutversion = Util.getIntValue(Util.null2String(params.get("layoutversion")), 0);
//生成普通模式模板布局信息
Map<String, Object> commonLayout = new HashMap<String, Object>();
if (ismode == 0) {
commonLayout = commandExecutor.execute(new GenerateCommonLayoutCmd(params, user));
}
Map<String, Object> requestMap = ParamUtil.request2Map(request);
//第二步:加载表单信息,包括字段信息、明细信息等
Map<String, Object> forminfo = commandExecutor.execute(new FormInfoCmd(requestMap, user, params, commonLayout));
apidatas.putAll(forminfo);
//第三步:加载联动配置信息
apidatas.put("linkageCfg", commandExecutor.execute(new LinkageCfgCmd(params, user)));
apidatas.put("propFileCfg", this.getFormPropFileCfg());
//第四步:加载主表数据
Map<String, Object> maindata = commandExecutor.execute(new FormDataCmd(requestMap, user, params, (Map<String,TableInfo>)forminfo.get("tableInfo")));
apidatas.put("maindata", maindata.get("datas"));
//第五步模板布局datajson单独以字符串方式拼串优化性能
String apidatastr = JSON.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
if (ismode == 0 || (ismode == 2 && layoutversion == 2)) {
String layoutStr = "";
if (ismode == 0) { //普通模式
layoutStr = Util.null2String(commonLayout.get("layoutStr"));
} else if (ismode == 2) { //html模式
int layoutid = Util.getIntValue(Util.null2String(params.get("modeid")), 0);
int nodeid = Util.getIntValue(Util.null2String(params.get("nodeid")), 0);
int workflowid = Util.getIntValue(Util.null2String(params.get("workflowid")), 0);
String configid = Util.null2String(params.get("layoutconfigid"));
boolean isnewFreelayout = DoSaveFreeExcelDesignBiz.isNewFreeLayout(configid);
boolean isSimpleFreeFlow = FreeNodeBiz.judgeNodeSimpleFreeFlow(workflowid, nodeid);
if (isnewFreelayout) {
DoSaveFreeExcelDesignBiz doSaveFreeExcelDesignBiz = new DoSaveFreeExcelDesignBiz(user);
if(isSimpleFreeFlow){
nodeid = FreeNodeBiz.getExtendNodeId(nodeid);
layoutStr = doSaveFreeExcelDesignBiz.getLayoutStr(layoutid, nodeid);
}else {
layoutStr = doSaveFreeExcelDesignBiz.getLayoutStr(layoutid, nodeid);
}
} else {
layoutStr = new LayoutInfoBiz().getLayoutStr(layoutid);
}
}
apidatastr = apidatastr.substring(0, apidatastr.lastIndexOf("}"));
retstr = apidatastr + ",\"datajson\":" + layoutStr + "}";
} else {
retstr = apidatastr;
}
}
//预加载结果放入容器
if (ispreload && !"".equals(preloadkey)) {
Util_TableMap.setVal(preloadValKey, retstr);
}
return retstr;
} catch (Exception e) {
new weaver.general.BaseBean().writeLog("requestid" + requestid + "---errorMsg----" + e.toString());
e.printStackTrace();
apidatas.put("api_status", false);
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
}
return JSON.toJSONString(apidatas);
}
//加载预览模板所需信息
public String loadPreView(Map<String,Object> params) {
int nodeid = Util.getIntValue(params.get("nodeid")+"");
Map<String, Object> apidatas = new HashMap<>();
//第一步模拟拼接生成commonParam参数
Map<String,Object> reqParams = new HashMap<>();
reqParams.put("isPreView", 1);
Map<String,Object> commonParam = new HashMap<>();
commonParam.put("workflowid", Util.getIntValue(params.get("wfid")+""));
commonParam.put("nodeid", nodeid);
commonParam.put("formid", Util.getIntValue(params.get("formid")+""));
commonParam.put("isbill", Util.getIntValue(params.get("isbill")+""));
commonParam.put("ismode", 2);
commonParam.put("modeid", Util.getIntValue(params.get("layoutid")+""));
commonParam.put("layoutversion", 2);
commonParam.put("layouttype", Util.getIntValue(params.get("layouttype")+""));
commonParam.put("margin", RequestFormBiz.generateLayoutMargin(nodeid));
Map<String,Object> layoutInfo = new HashMap<>();
String layoutStr = Util.null2String(params.get("datajson"));
layoutInfo.put("layoutStr", layoutStr);
//取代码块中的样式部分
String scripts = Util.null2String(params.get("scripts"));
String initscripts = Util.null2String(params.get("initscripts"));
ExcelSecurityBiz excelSecurityBiz = new ExcelSecurityBiz();
Map<String,String> splitResult = new ScriptManagerService().splitScript(excelSecurityBiz.decode(scripts));
String styleStr = Util.null2String(splitResult.get("stylestr"));
if(!"".equals(initscripts)){
initscripts = excelSecurityBiz.decode(initscripts);
String contextPath = Util.null2String(GCONST.getContextPath());
if(!"".equals(contextPath)) //系统样式追加全路径
initscripts = initscripts.replaceAll("(?<!"+contextPath+")/workflow/exceldesign/", contextPath+"/workflow/exceldesign/");
styleStr += initscripts;
}
layoutInfo.put("styleStr", styleStr);
apidatas.put("params", commonParam);
//第二步:加载表单信息,包括字段信息、明细信息等
Map<String, Object> forminfo = commandExecutor.execute(new FormInfoCmd(reqParams, user, commonParam, layoutInfo));
apidatas.putAll(forminfo);
//第三步:加载联动配置信息
apidatas.put("linkageCfg", commandExecutor.execute(new LinkageCfgCmd(params, user)));
apidatas.put("propFileCfg", this.getFormPropFileCfg());
//返回string格式
String apidatastr = JSON.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
String result = apidatastr.substring(0, apidatastr.lastIndexOf("}")) + ",\"datajson\":" + layoutStr + "}";
return result;
}
//获取相关配置文件配置项
private Map<String, Object> getFormPropFileCfg() {
RecordSet rs = new RecordSet();
Map<String,Object> props = new HashMap<String,Object>();
rs.executeQuery("select name,value from workflow_config where type='form'");
while(rs.next()){
props.put(rs.getString("name"), rs.getString("value"));
}
String prohibitDownload = ValveConfigManager.getTypeValve("prohibitDownload", "prohibitDownloadSwatch", "0");
props.put("prohibitDownload", prohibitDownload);
return props;
}
private boolean isOnlyCreate(String requestid){
RecordSet rs = new RecordSet();
rs.executeQuery("select count(*) as count from workflow_currentoperator where requestid=?", requestid);
return rs.next() && Util.getIntValue(rs.getString("count")) <= 1;
}
public Map<String, Object> loadDetailData(Map<String,Object> params) {
return commandExecutor.execute(new FormDataCmd(params, user));
}
public Map<String, Object> saveDetailPaging(Map<String,Object> params) {
return commandExecutor.execute(new SaveDetailPagingCmd(params, user));
}
public Map<String, Object> copyCustomPageFile(String custompage) {
return commandExecutor.execute(new CopyCustomPageCmd(custompage));
}
public Map<String, Object> updateReqInfo(HttpServletRequest request) {
return commandExecutor.execute(new UpdateReqInfoCmd(request, user));
}
public Map<String, Object> getLinkageResult(HttpServletRequest request, String type) {
if ("dataInput".equals(type))
return commandExecutor.execute(new LinkageDataInputCmd(request, user));
else if ("fieldSql".equals(type))
return commandExecutor.execute(new LinkageFieldSqlCmd(request, user));
else if ("dateTime".equals(type))
return commandExecutor.execute(new LinkageDateTimeCmd(request, user));
else
return null;
}
@Override
public Map<String, Object> getRightMenu(HttpServletRequest request,Map<String, Object> params) {
return commandExecutor.execute(new GetRightMenuCmd(request,params, user));
}
public Map<String, Object> getStatusData(Map<String, Object> params) {
return commandExecutor.execute(new StatusDataCmd(params, user));
}
public Map<String, Object> getStatusCount(Map<String, Object> params) {
return commandExecutor.execute(new StatusCountCmd(params, user));
}
public Map<String, Object> getResourcesKey(Map<String, Object> params) {
return commandExecutor.execute(new ResourcesKeyCmd(params, user));
}
public Map<String, Object> getModifyLog(HttpServletRequest request) {
return commandExecutor.execute(new ModifyLogCmd(request, user));
}
@Override
public Map<String, Object> requestBatchSubmit(HttpServletRequest request) {
return commandExecutor.execute(new BatchSubmitCmd(request, user));
}
public Map<String, Object> judgeRejectWay(HttpServletRequest request) {
return commandExecutor.execute(new JudgeRejectWayCmd(request, user));
}
public Map<String, Object> getRejectOption(Map<String, Object> params) {
return commandExecutor.execute(new GetRejectOptionCmd(params, user));
}
public Map<String, Object> requestSubmit(HttpServletRequest request) {
return commandExecutor.execute(new RequestSubmitCmd(request, user));
}
public Map<String, Object> forwardSubmit(HttpServletRequest request) {
return commandExecutor.execute(new ForwardSubmitCmd(request, user));
}
public Map<String, Object> requestWithdraw(HttpServletRequest request) {
return commandExecutor.execute(new RequestWithdrawCmd(request, user));
}
public Map<String, Object> remarkSubmit(HttpServletRequest request) {
return commandExecutor.execute(new RemarkSubmitCmd(request, user));
}
public Map<String, Object> functionManage(HttpServletRequest request, HttpServletResponse response) {
return commandExecutor.execute(new FunctionManageCmd(request, response, user));
}
public Map<String, Object> triggerSubWf(HttpServletRequest request) {
return commandExecutor.execute(new TriggerSubWfCmd(request, user));
}
public Map<String, Object> uploadFile(HttpServletRequest request, HttpServletResponse response) {
return commandExecutor.execute(new FileUploadCmd(request, response, user));
}
public Map<String, Object> getFileFieldObj(Map<String, Object> params) {
return commandExecutor.execute(new FileFieldObjCmd(params));
}
@Override
public Map<String, Object> createWfCode(Map<String, Object> params) {
return commandExecutor.execute(new CreateWfCodeCmd(params, user));
}
@Override
public Map<String, Object> getWfCodeFieldValue(Map<String, Object> params) {
return commandExecutor.execute(new GetWfCodeFieldValueCmd(params, user));
}
@Override
public Map<String, Object> requestImport(Map<String, Object> params) {
return commandExecutor.execute(new RequestImportCmd(params, user));
}
@Override
public Map<String, Object> requestDetailImport(HttpServletRequest request) {
return commandExecutor.execute(new RequestDetailImportCmd(request, user));
}
@Override
public Map<String, Object> chooseExceptionOperator(Map<String, Object> params) {
return commandExecutor.execute(new ChooseExceptionOperatorCmd(params, user));
}
@Override
public Map<String, Object> overTimeSetting(HttpServletRequest request) {
return commandExecutor.execute(new OverTimeSettingCmd(request, user));
}
@Override
public Map<String,Object> getPrintLogBase(Map<String,Object> params){
return commandExecutor.execute(new GetPrintLogBaseCmd(params,user));
}
@Override
public Map<String,Object> getPrintLogData(Map<String,Object> params){
return commandExecutor.execute(new GetPrintLogDataCmd(params,user));
}
@Override
public Map<String,Object> freeFlowRead(Map<String,Object> params){
return commandExecutor.execute(new FreeFlowReadCmd(params,user));
}
@Override
public Map<String,Object> freeFlowSave(Map<String,Object> params){
return commandExecutor.execute(new FreeFlowSaveCmd(params,user));
}
@Override
public Map<String,Object> editLockOper(Map<String,Object> params){
return commandExecutor.execute(new EditLockOperCmd(params,user));
}
@Override
public Map<String,Object> loadPrintTemplates(Map<String,Object> params){
return commandExecutor.execute(new LoadPrintTemplatesCmd(params,user));
}
@Override
public Map<String,Object> doEvalExpression(Map<String,Object> params){
return commandExecutor.execute(new DoEvalExpressionCmd(params,user));
}
@Override
public Map<String,Object> generatePrintLog(HttpServletRequest request){
return commandExecutor.execute(new GeneratePrintLogCmd(request,user));
}
@Override
public Map<String,Object> getForwardDatas(Map<String,Object> params){
return commandExecutor.execute(new GetForwardDatasCmd(params,user));
}
@Override
public Map<String,Object> doBack(Map<String,Object> params){
return commandExecutor.execute(new DoForwardBackCmd(params,user));
}
@Override
public Map<String,Object> getFormTab(Map<String,Object> params){
return commandExecutor.execute(new GetFormTabCmd(params,user));
}
/**
* condition
*
* @param params
* @return
*/
@Override
public Map<String, Object> getSelectNextFlowCondition(Map<String, Object> params) {
return commandExecutor.execute(new GetSelectNextFlowConditionCmd(params,user));
}
/**
*
*
* @param params
* @return
*/
@Override
public Map<String, Object> getSelectNextFlowNodes(Map<String, Object> params) {
return commandExecutor.execute(new GetSelectFlowNodesCmd(params,user));
}
@Override
public Map<String,Object> getRemindData(Map<String,Object> params){
return commandExecutor.execute(new GetRemindDataCmd(user,params));
}
@Override
public Map<String,Object> judgeRequestIsValid(Map<String,Object> params){
return commandExecutor.execute(new JudgeRequestIsValidCmd(params, user));
}
@Override
public Map<String,Object> takeBack(Map<String,Object> params){
return commandExecutor.execute(new DoTakeBackCmd(params, user));
}
@Override
public Map<String, Object> getCustomOperation(Map<String,Object> params) {
return commandExecutor.execute(new GetCustomOperationCmd(params, user));
}
@Override
public Map<String, Object> runCustomOperationAction(Map<String,Object> params) {
return commandExecutor.execute(new GetCustomOperationActionCmd(params, user));
}
@Override
public Map <String, Object> JudgeAutoApprove(AutoApproveEntity autoApproveEntity) {
return commandExecutor.execute(new JudgeAutoApproveCmd(autoApproveEntity,user));
}
@Override
public Map <String, Object> delApproveLog(AutoApproveEntity autoApproveEntity) {
return commandExecutor.execute(new DelApproveLogCmd(autoApproveEntity,user));
}
@Override
public Map <String, Object> verifyRequestForView(Map <String, Object> params) {
return commandExecutor.execute(new VerifyRequestForViewCmd(params,user));
}
/**
*
*
* @param params
* @return
*/
@Override
public Map<String, Object> doTakEnd(HttpServletRequest request, Map<String, Object> params) {
return commandExecutor.execute(new DoTakEndCmd(params,user));
}
@Override
public Map<String, Object> importFieldLinkageCfg(Map<String, Object> params) {
return commandExecutor.execute(new RequestDetailImportFieldLinkageCmd(params,user));
}
@Override
public Map<String, Object> exportFieldSet(Map<String, Object> params) {
return commandExecutor.execute(new RequestDetailExportFieldTypeCmd(params,user));
}
/**
*
*
* @param params
* @return
*/
@Override
public Map<String, Object> conformCheck(Map<String, Object> params) {
return commandExecutor.execute(new ConformCheckCmd(params,user));
}
@Override
public Map<String, Object> getDetailByRequestId(Map<String, Object> params) {
return commandExecutor.execute(new GetSubReuqestDetailCmd(params,user));
}
@Override
public Map<String, Object> getFreeNodeBrowserItem(Map<String, Object> params) {
return commandExecutor.execute(new GetFreeNodeBrowserItemCmd(params,user));
}
@Override
public Map<String, Object> saveFreeNodeFormConfig(Map<String, Object> params) {
return commandExecutor.execute(new SaveFreeNodeFormConfigCmd(params,user));
}
@Override
public Map<String, Object> getNextNodeContent(Map<String, Object> params) {
return commandExecutor.execute(new GetNextNodeContentCmd(params,user));
}
@Override
public Map<String, Object> delRequestVerify(Map<String,Object> params) {
return commandExecutor.execute(new RequestDelVerifyCmd(params,user));
}
@Override
public Map<String, Object> importFormulaCfg(Map<String, Object> params) {
return commandExecutor.execute(new RequestDetailImportFormulaCmd(params,user));
}
/**
* keyid
*
* @param params
* @return
*/
@Override
public Map<String, Object> getDetailDataKeyId(Map<String, Object> params) {
return commandExecutor.execute(new GetDetailKeyIdCmd(params,user));
}
@Override
public Map <String, Object> judgeWorkflowPenetrate(AutoApproveEntity autoApproveEntity, RequestManager requestManager) {
return commandExecutor.execute(new JudgeWorkflowPenetrateCmd(autoApproveEntity,user, requestManager));
}
@Override
public Map <String, Object> getThPreviewUrl(Map <String, Object> params) {
return commandExecutor.execute(new GetThPreviewUrlCmd(params,user));
}
@Override
public Map <String, Object> getThMouldList(Map <String, Object> params) {
return commandExecutor.execute(new GetThMouldListCmd(params,user));
}
@Override
public Map<String, Object> getDetailExpSet(Map<String, Object> params) {
return commandExecutor.execute(new GetDetailExpSetCmd(params,user));
}
@Override
public Map<String, Object> saveDetailExpSet(Map<String, Object> params) {
return commandExecutor.execute(new SaveDetailExpSetCmd(params,user));
}
}

@ -0,0 +1,32 @@
<%@ page import="java.util.*" %>
<%@ page import="com.cloudstore.dev.api.bean.MessageType" %>
<%@ page import="com.cloudstore.dev.api.bean.MessageBean" %>
<%@ page import="com.cloudstore.dev.api.util.Util_Message" %>
<%@ page import="java.io.IOException" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%
MessageType messageType = MessageType.newInstance(1154); // 消息来源(见文档第四点补充 必填)
Set<String> userIdList = new HashSet<>(); // 接收人id 必填
userIdList.add("640");
String title = "标题1154"; // 标题
String context = "内容1154"; // 内容
String linkUrl = "/123"; // PC端链接
String linkMobileUrl = "/123"; // 移动端链接
try {
MessageBean messageBean = Util_Message.createMessage(messageType, userIdList, title, context, linkUrl, linkMobileUrl);
messageBean.setCreater(1);// 创建人id
//message.setBizState("0");// 需要修改消息为已处理等状态时传入,表示消息最初状态为待处理
//messageBean.setTargetId("121|22"); //消息来源code +“|”+业务id需要修改消息为已处理等状态时传入
Util_Message.store(messageBean);
out.print(1122);
} catch (IOException e) {
out.print(e.getMessage());
e.printStackTrace();
}
%>
<%!
%>

@ -5,6 +5,7 @@ import com.engine.custom.hg.util.HgUtils;
import com.engine.custom.sl.entity.*;
// import com.engine.util.SocketClientUtil;
import com.engine.util.SocketClientUtil;
import com.engine.util.XMLUtils;
import com.icbc.api.internal.apache.http.impl.cookie.S;
import com.weaver.general.Util;
import org.jsoup.Jsoup;
@ -47,9 +48,9 @@ public class Action20230911062023 extends BaseBean implements Action {
try {
fileToEsb(toEsbBean,requestId);
} catch (Exception e) {
request.getRequestManager().setMessageid("10001");
request.getRequestManager().setMessagecontent(e.getMessage());
return Action.FAILURE_AND_CONTINUE;
request.getRequestManager().setMessageid("10001");
request.getRequestManager().setMessagecontent(e.getMessage());
return Action.FAILURE_AND_CONTINUE;
}
setFormDt1(mainId,tablename,rs,toEsbBean);
writeLog("toEsbBean2====>"+toEsbBean);
@ -58,26 +59,36 @@ public class Action20230911062023 extends BaseBean implements Action {
String Service_Body = "<Service_Body><request>"+ toEsbBean.toXMLString()+"</request></Service_Body>" ;
writeLog("toEsbBean4====>"+Service_Body);
try{
EsbRequestHeader esbRequestHeader = new EsbRequestHeader(Util.getIntValue(mainId));
writeLog("esbRequestHeader====>"+esbRequestHeader);
String Service_Header = TravelToEsbBean.convertObjectToXml(esbRequestHeader,"Service_Header");
writeLog("esbRequestHeaderXML====>"+Service_Header);
String serviceXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service>";
serviceXML = serviceXML + Service_Header + Service_Body;
serviceXML = serviceXML + "</Service>";
writeLog("esbRequestHeaderXML====>"+serviceXML);
int byteArray = serviceXML.getBytes("UTF-8").length;
// Calculate the length of the byte array
// int bytelength = byteArray.length;
String length = String.format("%08d", byteArray);
writeLog("XMLlength"+ length);
serviceXML = length + serviceXML;
writeLog("serviceXML==="+ serviceXML);
// serviceXML = new String(serviceXML.getBytes(StandardCharsets.UTF_8));
writeLog("UTF_8_serviceXML==="+ serviceXML);
SocketClientUtil scketClient = new SocketClientUtil("14.1.78.191",10149);
String send = scketClient.send(serviceXML);
EsbRequestHeader esbRequestHeader = new EsbRequestHeader(Util.getIntValue(mainId));
writeLog("esbRequestHeader====>"+esbRequestHeader);
String Service_Header = TravelToEsbBean.convertObjectToXml(esbRequestHeader,"Service_Header");
writeLog("esbRequestHeaderXML====>"+Service_Header);
String serviceXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service>";
serviceXML = serviceXML + Service_Header + Service_Body;
serviceXML = serviceXML + "</Service>";
writeLog("esbRequestHeaderXML====>"+serviceXML);
int byteArray = serviceXML.getBytes("UTF-8").length;
// Calculate the length of the byte array
// int bytelength = byteArray.length;
String length = String.format("%08d", byteArray);
writeLog("XMLlength"+ length);
serviceXML = length + serviceXML;
writeLog("serviceXML==="+ serviceXML);
// serviceXML = new String(serviceXML.getBytes(StandardCharsets.UTF_8));
writeLog("UTF_8_serviceXML==="+ serviceXML);
SocketClientUtil scketClient = new SocketClientUtil("14.1.78.197",10149);
String send = scketClient.send(serviceXML);
String substring = send.substring(0, 8);
String substring1 = send.substring(8);
Map<String, String> map = XMLUtils.parseXMLToMap(substring1);
String retCd = map.get("retCd");
String retCdDsc = map.get("retCdDsc");
if ("9999".equals(retCd)){
request.getRequestManager().setMessageid("9999");
request.getRequestManager().setMessagecontent(retCdDsc);
return Action.FAILURE_AND_CONTINUE;
}
}catch (Exception e){
e.printStackTrace();
writeLog("构建XML异常"+e.getMessage());
@ -127,7 +138,7 @@ public class Action20230911062023 extends BaseBean implements Action {
//推送ESB服务器
String ftpPath = "";
try {
ftpPath = HgUtils.putFile(tempFilePath, requestId + File.separator + imageFileName);
ftpPath = HgUtils.putFile(tempFilePath, requestId + File.separator + imageFileName);
} catch (FtpException e) {
e.printStackTrace();
writeLog( "传输ESBftp异常"+e.getMessage());
@ -246,7 +257,7 @@ public class Action20230911062023 extends BaseBean implements Action {
toEsbBean.setJrnyInfoArray(jrnyInfoArray);
}
//获取支出类型
//获取支出类型
private String getpartyBuildCostCode(int index){
if(index == 0){
return "FEE_BUILD";
@ -290,10 +301,13 @@ public class Action20230911062023 extends BaseBean implements Action {
public static String formatDate(String input) {
// String input = "2023-09-20 19:29";
try {
// 使用SimpleDateFormat解析输入字符串
SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date = datetimeFormat.parse(input);
// 使用SimpleDateFormat解析输入字符串
if (!input.contains(" ")){
datetimeFormat = new SimpleDateFormat("yyyy-MM-dd");
}
Date date = datetimeFormat.parse(input);
// 使用另一个SimpleDateFormat对象格式化Date为所需的输出格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String output = dateFormat.format(date);
@ -309,9 +323,12 @@ public class Action20230911062023 extends BaseBean implements Action {
public static void main(String[] args) {
String htmlContent = "" ;
String plainText = Jsoup.parse(htmlContent).text();
System.out.println(plainText); // 输出: Hello, world!
String htmlContent = "2023-10-05 07:00" ;
System.out.println(htmlContent.contains(" "));
if (htmlContent.indexOf(" ") == -1){
}
}

@ -8,7 +8,7 @@ import weaver.soa.workflow.request.RequestInfo;
public class Action20230914101926 extends BaseBean implements Action {
public static final String sql = "update workflow_requestlog set remark= ? where requestid = ? and logid = ? ";
public static final String sql = "update workflow_requestlog set remark= ? ,OPERATEDATE = ? ,OPERATETIME = ? where requestid = ? and logid = ? ";
@Override
public String execute(RequestInfo request) {
@ -29,6 +29,8 @@ public class Action20230914101926 extends BaseBean implements Action {
String logid = rs.getString("logid");
String requestid = rs.getString("request");
String remarkNew = rs.getString("remarkNew");
String newdate = rs.getString("newdate");
String newtime = rs.getString("newtime");
try {
writeLog("修改日志sql"+sql);
writeLog(logid );
@ -37,7 +39,7 @@ public class Action20230914101926 extends BaseBean implements Action {
writeLog(requestid== null);
writeLog(remarkNew);
writeLog(remarkNew== null);
rs.executeUpdate(sql,remarkNew,requestid,logid);
rs.executeUpdate(sql,remarkNew,newdate,newtime,requestid,logid);
writeLog("getCounts"+rs.getCounts());
} catch (Exception e) {
writeLog("修改异常"+e.getMessage());

@ -0,0 +1,140 @@
package weaver.interfaces.workflow.action.javacode;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.company.DepartmentComInfo;
import weaver.interfaces.workflow.action.Action;
import weaver.general.BaseBean;
import weaver.soa.workflow.request.RequestInfo;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* Online custom action interface
* ()
*/
public class Action20231008023243 extends BaseBean implements Action{
/**
* After selecting aciton after the process path node, this method will be executed after the node is submitted.
*/
@Override
public String execute(RequestInfo request) {
try {
String insertsql = "INSERT INTO uf_tohgLog(REQUEST, CONTENT, ZT, ML, DDSJ, TSSJ, FJML, ZWID, FJID) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ? )";
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
//公文标题
String requestname = request.getRequestManager().getRequestname();
String requestId = request.getRequestid();
// 4获取表单名称
String tablename = request.getRequestManager().getBillTableName();
// 5查找表单内容
RecordSet rs = new RecordSet();
rs.execute("select * from " + tablename + " where requestid = " + requestId);
rs.next();
//是否推送合规 0 - 否 1 - 是
int isTohg = Util.getIntValue(rs.getString("tohg"), 1);
if (isTohg == 0){
return Action.SUCCESS;
}
//id表单主键
String mainid = rs.getString("id");
//公文编号
String fwwh = rs.getString("bh");
//发文部门名称
String ngbm = rs.getString("ngbm");
//成文时间
String cwrq = rs.getString("cwrq");
String ngr = rs.getString("ngr");
// String zw = rs.getString("zw"); //word格式
//生成的pdf
String zw = rs.getString("dwd");
String fj = rs.getString("fj");
User user = new User(Integer.parseInt(ngr));
//拼接数据
String subcompanyid = departmentComInfo.getSubcompanyid1(ngbm);
String departmentNames = departmentComInfo.getAllParentDepartmentBlankNames(ngbm, subcompanyid, "-");
departmentNames = "天津银行股份有限公司-"+departmentNames;
String context = "";
String flag = "|";
context = requestname + flag + fwwh + flag +departmentNames + flag + cwrq +flag+ user.getLoginid()+flag+user.getLastname()+flag;
//获取文件命
Map<String, String> fjName = getIdIMIDName(fj);
Map<String, String> zwName = getIdIMIDName(zw);
String fjStr = "";
String zwStr = "";
//附件
ArrayList<String> fileNameList = new ArrayList<>();
Set<Map.Entry<String, String>> entries = fjName.entrySet();
for (Map.Entry<String, String> entry : entries) {
String filename = entry.getValue();
if (fileNameList.contains(filename)){
String tepName= filename.contains(".")? filename.substring(0, filename.indexOf(".")) : "";
if(tepName!=null&&!"".equals(tepName)){
String extNameTemp = filename.contains(".")? filename.substring(filename.lastIndexOf(".") + 1) : "";
filename = tepName + "_"+entry.getKey()+"."+extNameTemp;
}
}else {
fileNameList.add(filename);
}
fjStr = fjStr + "&&"+ filename;
}
if (fjStr.startsWith("&&")){
fjStr = fjStr.substring(2);
}
fileNameList.clear();
//正文
Set<Map.Entry<String, String>> zwEntries = zwName.entrySet();
for (Map.Entry<String, String> entry : zwEntries) {
String filename = entry.getValue();
if (fileNameList.contains(filename)){
String tepName= filename.contains(".")? filename.substring(0, filename.indexOf(".")) : "";
if(tepName!=null&&!"".equals(tepName)){
String extNameTemp = filename.contains(".")? filename.substring(filename.lastIndexOf(".") + 1) : "";
filename = tepName + "_"+entry.getKey()+"."+extNameTemp;
}
}else {
fileNameList.add(filename);
}
zwStr = zwStr + "&&" + filename;
}
if (zwStr.startsWith("&&")){
zwStr = zwStr.substring(2);
}
context = context+zwStr+flag+fjStr+flag+requestId+flag;
Date date = new Date();
String time = new SimpleDateFormat("yyyy-MM-dd hh:mm").format(date);
rs.executeUpdate(insertsql,requestId,context,0,null,time,null,null,zw,fj);
} catch (Exception e) {
writeLog(e.getMessage()+ "||||||异常流程id==="+request.getRequestid());
e.printStackTrace();
//不管是否推送成功,都返回成功,不影响流程流转
return Action.SUCCESS;
}
// boolean error = false;
// if (error) {
// request.getRequestManager().setMessageid("90001");
// request.getRequestManager().setMessagecontent("System Abnormal Termination Process Submission");
// }
return Action.SUCCESS;
}
public static Map<String,String> getIdIMIDName(String ids ){
Map<String,String> idimageIDMap = new HashMap<>();
String sql = "select docid,df.imagefilename filename from docimagefile df left join imagefile imf on df.imagefileid = imf.imagefileid where DOCID in ("+ids+")";
RecordSet recordSet = new RecordSet();
recordSet.execute(sql);
while (recordSet.next()){
String docid = Util.null2String(recordSet.getString("docid"));
String filename = Util.null2String(recordSet.getString("filename"));
idimageIDMap.put(docid,filename);
}
return idimageIDMap;
};
}

@ -0,0 +1,140 @@
package weaver.interfaces.workflow.action.javacode;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.company.DepartmentComInfo;
import weaver.interfaces.workflow.action.Action;
import weaver.general.BaseBean;
import weaver.soa.workflow.request.RequestInfo;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* Online custom action interface
* ()
*/
public class Action20231008042513 extends BaseBean implements Action{
/**
* After selecting aciton after the process path node, this method will be executed after the node is submitted.
*/
@Override
public String execute(RequestInfo request) {
try {
String insertsql = "INSERT INTO uf_tohgLog(REQUEST, CONTENT, ZT, ML, DDSJ, TSSJ, FJML, ZWID, FJID) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ? )";
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
//公文标题
String requestname = request.getRequestManager().getRequestname();
String requestId = request.getRequestid();
// 4获取表单名称
String tablename = request.getRequestManager().getBillTableName();
// 5查找表单内容
RecordSet rs = new RecordSet();
rs.execute("select * from " + tablename + " where requestid = " + requestId);
rs.next();
//是否推送合规 0 - 否 1 - 是
int isTohg = Util.getIntValue(rs.getString("tohg"), 1);
if (isTohg == 0){
return Action.SUCCESS;
}
//id表单主键
String mainid = rs.getString("id");
//公文编号
String fwwh = rs.getString("bh");
//发文部门名称
String ngbm = rs.getString("ngbm");
//成文时间
String cwrq = rs.getString("cwrq");
String ngr = rs.getString("ngr");
// String zw = rs.getString("zw"); //word格式
//生成的pdf
String zw = rs.getString("dwd");
String fj = rs.getString("fj");
User user = new User(Integer.parseInt(ngr));
//拼接数据
String subcompanyid = departmentComInfo.getSubcompanyid1(ngbm);
String departmentNames = departmentComInfo.getAllParentDepartmentBlankNames(ngbm, subcompanyid, "-");
departmentNames = "天津银行股份有限公司-"+departmentNames;
String context = "";
String flag = "|";
context = requestname + flag + fwwh + flag +departmentNames + flag + cwrq +flag+ user.getLoginid()+flag+user.getLastname()+flag;
//获取文件命
Map<String, String> fjName = getIdIMIDName(fj);
Map<String, String> zwName = getIdIMIDName(zw);
String fjStr = "";
String zwStr = "";
//附件
ArrayList<String> fileNameList = new ArrayList<>();
Set<Map.Entry<String, String>> entries = fjName.entrySet();
for (Map.Entry<String, String> entry : entries) {
String filename = entry.getValue();
if (fileNameList.contains(filename)){
String tepName= filename.contains(".")? filename.substring(0, filename.indexOf(".")) : "";
if(tepName!=null&&!"".equals(tepName)){
String extNameTemp = filename.contains(".")? filename.substring(filename.lastIndexOf(".") + 1) : "";
filename = tepName + "_"+entry.getKey()+"."+extNameTemp;
}
}else {
fileNameList.add(filename);
}
fjStr = fjStr + "&&"+ filename;
}
if (fjStr.startsWith("&&")){
fjStr = fjStr.substring(2);
}
fileNameList.clear();
//正文
Set<Map.Entry<String, String>> zwEntries = zwName.entrySet();
for (Map.Entry<String, String> entry : zwEntries) {
String filename = entry.getValue();
if (fileNameList.contains(filename)){
String tepName= filename.contains(".")? filename.substring(0, filename.indexOf(".")) : "";
if(tepName!=null&&!"".equals(tepName)){
String extNameTemp = filename.contains(".")? filename.substring(filename.lastIndexOf(".") + 1) : "";
filename = tepName + "_"+entry.getKey()+"."+extNameTemp;
}
}else {
fileNameList.add(filename);
}
zwStr = zwStr + "&&" + filename;
}
if (zwStr.startsWith("&&")){
zwStr = zwStr.substring(2);
}
context = context+zwStr+flag+fjStr+flag+requestId+flag;
Date date = new Date();
String time = new SimpleDateFormat("yyyy-MM-dd hh:mm").format(date);
rs.executeUpdate(insertsql,requestId,context,0,null,time,null,null,zw,fj);
} catch (Exception e) {
writeLog(e.getMessage()+ "||||||异常流程id==="+request.getRequestid());
e.printStackTrace();
//不管是否推送成功,都返回成功,不影响流程流转
return Action.SUCCESS;
}
// boolean error = false;
// if (error) {
// request.getRequestManager().setMessageid("90001");
// request.getRequestManager().setMessagecontent("System Abnormal Termination Process Submission");
// }
return Action.SUCCESS;
}
public static Map<String,String> getIdIMIDName(String ids ){
Map<String,String> idimageIDMap = new HashMap<>();
String sql = "select docid,df.imagefilename filename from docimagefile df left join imagefile imf on df.imagefileid = imf.imagefileid where DOCID in ("+ids+")";
RecordSet recordSet = new RecordSet();
recordSet.execute(sql);
while (recordSet.next()){
String docid = Util.null2String(recordSet.getString("docid"));
String filename = Util.null2String(recordSet.getString("filename"));
idimageIDMap.put(docid,filename);
}
return idimageIDMap;
};
}
Loading…
Cancel
Save