You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

653 lines
33 KiB
Java

1 year ago
package weaver.meeting.video.consumer;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.api.meeting.cusvideo.util.YealinkVideoUtil;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import weaver.Constants;
import weaver.WorkPlan.WorkPlanHandler;
import weaver.WorkPlan.WorkPlanService;
import weaver.WorkPlan.WorkPlanShare;
import weaver.conn.RecordSet;
import weaver.domain.workplan.WorkPlan;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.resource.ResourceComInfo;
import weaver.meeting.video.util.VideoMeetingUtil;
import weaver.systeminfo.SystemEnv;
import java.net.URLEncoder;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description:
* @Author: lj
* @CreateTime: 2023-06-05 15:41
* @Version: 1.0
*/
public class YealinkVideoClient extends VideoMeetingClient {
private static BaseBean logger = new BaseBean();
@Override
public Map<String, Object> addMeeting(Map<String, Object> otherParam) {
Map<String, Object> apiData = new HashMap<>();
try {
if ("".equals(Util.null2String(getDomainName_url()))) {
throw new RuntimeException("获取亿联会议地址URl未配置请检查视频会议是否配置正常");
}
//获取参数
logger.writeLog("^^^ YealinkVideoClient.addMeeting : otherParam = " + otherParam);
String userid = Util.null2String(otherParam.get("userid"));//创建人ID
String topic = Util.null2String(otherParam.get("topic"));//会议标题
String start_time = Util.null2String(otherParam.get("starttime")) + ":00";//会议开始时间
String end_time = Util.null2String(otherParam.get("end_time")) + ":00";//会议结束时间
String hrmids = Util.null2String(otherParam.get("hrmids"));//会议参与人
String password = Util.null2String(otherParam.get("password"));//会议密码
String apiKey = Util.null2String(otherParam.get("api_key"));//对应亿联的client id
String apiSecret = Util.null2String(otherParam.get("api_secret"));//对应亿联的client secret
//这里需要替换创建人的ID
String host = StringUtils.removeEnd(getDomainName_url(), "/");
//获取token
String token = YealinkVideoUtil.getToken(host, apiKey, apiSecret);
//开始执行请求
String createUserId = YealinkVideoUtil.getYeaLinkUserId(host, token, userid);
String url = host + "/users/" + createUserId + "/meetings";
//构建请求体
JSONObject body = new JSONObject();
//会议主题长度小于128
if (topic.length() > 128) {
topic = StringUtils.substring(topic, 0, 128);
}
body.put("subject", topic);
//会议开始日期格式为yyyy-MM-dd
Date start = DateUtils.parseDate(start_time, "yyyy-MM-dd HH:mm:ss");
if (start.compareTo(new Date()) < 0) {
start = new Date();
}
String startDate = DateFormatUtils.format(start, "yyyy-MM-dd");
body.put("startDate", startDate);
//会议开始时间格式为HH:mm小时部分使用24小时计算分钟部分为5的倍数。会议开始时间必须大于当前时间。
int minute = DateUtil.minute(start);
start = DateUtils.addMinutes(DateUtils.addMinutes(start, -minute % 5), 5);
String startTime = DateFormatUtils.format(start, "HH:mm");
body.put("startTime", startTime);
//会议持续时间小时部分,取值范围为[0, 48)。
int[] dateHoursAndMinute = getDateHoursAndMinute(start, DateUtils.parseDate(end_time, "yyyy-MM-dd HH:mm:ss"));
int durationHour = dateHoursAndMinute[0];
body.put("durationHour", durationHour);
//会议持续时间分钟部分当durationHour为0时可选值为30、45其他情况下可选值为0、15、30、45。
int durationMinute = dateHoursAndMinute[1];
body.put("durationMinute", durationMinute);
//参会成员列表。参会成员数量默认支持100个如需调整请联系亿联会议默认创建者为组织者
JSONArray participants = new JSONArray();
//首先添加组织者
JSONObject createUser = new JSONObject();
createUser.put("id", createUserId);
createUser.put("role", 0);
participants.add(createUser);
for (String hrmid : StringUtils.split(hrmids, ",")) {
JSONObject participant = new JSONObject();
participant.put("id", YealinkVideoUtil.getYeaLinkUserId(host, token, hrmid));
participant.put("role", 2);
participants.add(participant);
}
body.put("participants", participants);
//是否使用随机会议号true使用随机会议号false使用会议室会议号
body.put("enableRandomMeetingNumber", true);
//会议密码格式为6位数字
body.put("meetingPassword", password);
body.put("enableWatermark", true);
body.put("watermarkTransparency", 2);
body.put("watermarkFontSize", 1);
//执行接口
JSONObject resultJson = YealinkVideoUtil.doPost(url, token, null, body);
//返回结果
apiData.put("maxid", videoData2OA(host, token, createUserId, resultJson, otherParam));
apiData.put("api_status", true);
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoClient.addMeeting : error !!!", e);
apiData.put("api_status", false);
apiData.put("msg", "新增亿联会议失败:" + e.getMessage());
}
return apiData;
}
@Override
public Map<String, Object> editMeeting(Map<String, Object> otherParam) {
Map<String, Object> apiData = new HashMap<>();
try {
if ("".equals(Util.null2String(getDomainName_url()))) {
throw new RuntimeException("获取亿联会议地址URl未配置请检查视频会议是否配置正常");
}
//获取参数
logger.writeLog("^^^ YealinkVideoClient.editMeeting : otherParam = " + otherParam);
String userid = Util.null2String(otherParam.get("userid"));//创建人ID
String topic = Util.null2String(otherParam.get("topic"));//会议标题
String start_time = Util.null2String(otherParam.get("starttime")) + ":00";//会议开始时间
String end_time = Util.null2String(otherParam.get("end_time")) + ":00";//会议结束时间
String hrmids = Util.null2String(otherParam.get("hrmids"));//会议参与人
String password = Util.null2String(otherParam.get("password"));//会议密码
String apiKey = Util.null2String(otherParam.get("api_key"));//对应亿联的client id
String apiSecret = Util.null2String(otherParam.get("api_secret"));//对应亿联的client secret
//这里需要替换创建人的ID
String host = StringUtils.removeEnd(getDomainName_url(), "/");
//获取token
String token = YealinkVideoUtil.getToken(host, apiKey, apiSecret);
//开始执行请求
String createUserId = YealinkVideoUtil.getYeaLinkUserId(host, token, userid);
//会议ID
String meetingId = Util.null2String(otherParam.get("id"));
String url = host + "/users/" + createUserId + "/meetings/" + meetingId;
//先获取原始会议信息
JSONObject meetingInfo = getMeetingInfoById(host, token, createUserId, meetingId);
//构建请求体
JSONObject body = new JSONObject();
//更新类型可选值0更新单个会议1更新会议序列
body.put("updateType", 0);
//会议顺序号,取值范围为[1, 100],更新单个会议时必输
body.put("sequence", 1);
//时区ID。具体时区列表信息详见基础信息-查询时区列表接口
body.put("zoneId", meetingInfo.getString("zoneId"));
//会议主题长度小于128
if (topic.length() > 128) {
topic = StringUtils.substring(topic, 0, 128);
}
body.put("subject", topic);
//会议开始日期格式为yyyy-MM-dd
Date start = DateUtils.parseDate(start_time, "yyyy-MM-dd HH:mm:ss");
if (start.compareTo(new Date()) < 0) {
start = new Date();
}
String startDate = DateFormatUtils.format(start, "yyyy-MM-dd");
body.put("startDate", startDate);
//会议开始时间格式为HH:mm小时部分使用24小时计算分钟部分为5的倍数。会议开始时间必须大于当前时间。
int minute = DateUtil.minute(start);
start = DateUtils.addMinutes(DateUtils.addMinutes(start, -minute % 5), 5);
String startTime = DateFormatUtils.format(start, "HH:mm");
body.put("startTime", startTime);
//会议持续时间小时部分,取值范围为[0, 48)。
int[] dateHoursAndMinute = getDateHoursAndMinute(start, DateUtils.parseDate(end_time, "yyyy-MM-dd HH:mm:ss"));
int durationHour = dateHoursAndMinute[0];
body.put("durationHour", durationHour);
//会议持续时间分钟部分当durationHour为0时可选值为30、45其他情况下可选值为0、15、30、45。
int durationMinute = dateHoursAndMinute[1];
body.put("durationMinute", durationMinute);
//参会成员列表。参会成员数量默认支持100个如需调整请联系亿联会议默认创建者为组织者
JSONArray participants = new JSONArray();
//首先添加组织者
JSONObject createUser = new JSONObject();
createUser.put("id", createUserId);
createUser.put("role", 0);
participants.add(createUser);
for (String hrmid : StringUtils.split(hrmids, ",")) {
JSONObject participant = new JSONObject();
participant.put("id", YealinkVideoUtil.getYeaLinkUserId(host, token, hrmid));
participant.put("role", 2);
participants.add(participant);
}
body.put("participants", participants);
//是否使用随机会议号true使用随机会议号false使用会议室会议号
body.put("enableRandomMeetingNumber", true);
//会议密码格式为6位数字
body.put("meetingPassword", meetingInfo.getString("meetingPassword"));
//执行接口
JSONObject resultJson = YealinkVideoUtil.doPut(url, token, null, body);
if (resultJson == null) {
resultJson = new JSONObject();
resultJson.put("id", meetingId);
}
//返回结果
apiData.put("maxid", videoData2OA(host, token, createUserId, resultJson, otherParam));
apiData.put("api_status", true);
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoClient.editMeeting : error !!!", e);
apiData.put("api_status", false);
apiData.put("msg", "编辑亿联会议失败:" + e.getMessage());
}
return apiData;
}
@Override
public Map<String, Object> overMeeting(Map<String, Object> otherParam) {
otherParam.put("completed", true);
RecordSet rs = new RecordSet();
String id = MapUtils.getString(otherParam, "id", "");
String manufacturers = MapUtils.getString(otherParam, "manufacturers", "");
rs.executeQuery("select id from meeting_videolist where videomtid=? and manufacturers=?", id, manufacturers);
if (rs.next()) {
String videoid = rs.getString(1);
otherParam.put("videoid", videoid);
}
return cancelMeeting(otherParam);
}
@Override
public Map<String, Object> cancelMeeting(Map<String, Object> otherParam) {
Map<String, Object> apiData = new HashMap<>();
try {
if ("".equals(Util.null2String(getDomainName_url()))) {
throw new RuntimeException("获取亿联会议地址URl未配置请检查视频会议是否配置正常");
}
//获取参数
logger.writeLog("^^^ YealinkVideoClient.cancelMeeting : otherParam = " + otherParam);
String userid = Util.null2String(otherParam.get("userid"));//创建人ID
//这两个需要重新获取
otherParam = VideoMeetingUtil.dealParams(otherParam);
String apiKey = Util.null2String(otherParam.get("api_key"));//对应亿联的client id
String apiSecret = Util.null2String(otherParam.get("api_secret"));//对应亿联的client secret
//这里需要替换创建人的ID
String host = StringUtils.removeEnd(getDomainName_url(), "/");
//获取token
String token = YealinkVideoUtil.getToken(host, apiKey, apiSecret);
//开始执行请求
String createUserId = YealinkVideoUtil.getYeaLinkUserId(host, token, userid);
//会议ID
String meetingId = Util.null2String(otherParam.get("id"));
String url = host + "/users/" + createUserId + "/meetings/" + meetingId;
//构建请求体
JSONObject body = new JSONObject();
//删除类型可选值0删除单个会议1删除会议序列
body.put("deleteType", 0);
//会议顺序号,取值范围为[1, 100],删除单个会议时必输
body.put("sequence", 1);
//执行接口
JSONObject resultJson = YealinkVideoUtil.doDelete(url, token, null, body);
//处理对应的日程
String videoid = MapUtils.getString(otherParam, "videoid", "-1");
if (otherParam.containsKey("completed")) {
finishWorkPlan(videoid);
} else {
deleteWorkPlan(videoid);
}
//返回结果
apiData.put("result", true);
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoClient.editMeeting : error !!!", e);
apiData.put("result", false);
apiData.put("msg", "删除亿联会议失败:" + e.getMessage());
}
return apiData;
}
@Override
public Map<String, Object> getUserInfo(Map<String, Object> otherParam) {
return null;
}
/**
*
*
* @param start
* @param end
* @return
*/
private int[] getDateHoursAndMinute(Date start, Date end) {
int[] arr = new int[2];
long milliseconds = end.getTime() - start.getTime();
long seconds = milliseconds / 1000;
int hours = Math.round(seconds / 3600);
int minutes = Math.round((seconds % 3600) / 60);
if (minutes > 45) {
hours += 1;
minutes = 0;
} else if (minutes > 30) {
minutes = 45;
} else {
if (hours > 0) {
if (minutes > 15) {
minutes = 30;
} else if (minutes > 0) {
minutes = 15;
}
} else {
minutes = 30;
}
}
if (hours >= 48) {
hours = 47;
}
arr[0] = hours;
arr[1] = minutes;
return arr;
}
/**
* OA
*
* @param resultJson
* @param map
* @return
*/
private String videoData2OA(String host, String token, String creater, JSONObject resultJson, Map<String, Object> map) {
12 months ago
logger.writeLog("videoData2OA.param");
logger.writeLog("videoData2OA.param.host"+host);
logger.writeLog("videoData2OA.param.token"+token);
logger.writeLog("videoData2OA.param.creater"+creater);
logger.writeLog("videoData2OA.param.resultJson"+resultJson);
logger.writeLog("videoData2OA.param.map"+map);
1 year ago
String maxId = "";
String videomthostid = Util.null2String(map.get("host_id"));
String videomtname = Util.null2String(map.get("topic"));
// String videomtbegindate = Util.null2String(map.get("start_time"));
String starttime = Util.null2String(map.get("starttime"));
String videomtenddate = Util.null2String(map.get("end_time"));
String videomtcreater = Util.null2String(map.get("userid"));
// String mtpassword = Util.null2String(map.get("password"));
// String mtcontrolpassword = Util.null2String(map.get("controlpassword"));
// String userid = Util.null2String(map.get("userid"));
String manufacturers = Util.null2String(map.get("manufacturers"));
String mouldkey = Util.null2String(map.get("mouldkey"));//模块主键
String frommould = Util.null2String(map.get("frommould"));//所属模块
String videoid = Util.null2String(map.get("videoid"));
String hrmids = Util.null2String(map.get("hrmids"));
12 months ago
int isOtherShare = Util.getIntValue(Util.null2String(map.get("isOtherShare")),1);
1 year ago
RecordSet recordSet = new RecordSet();
recordSet.executeQuery("SELECT * FROM meeting_videomould WHERE mouldvalue = ? or mouldname = ?", frommould, frommould);
if (recordSet.next()) {
//这里强制约定。这里传的标识,必须和表里保持一致,否则,作为垃圾数据处理。
frommould = Util.null2String(recordSet.getString("mouldvalue"));
} else {
frommould = "";
mouldkey = "";
}
//获取接口返回的会议ID
String videomtstatus = "1";//0未开始1进行中2结束3取消根据时间来判断
String videomtid = Util.null2String(resultJson.getString("id"));//虚拟会议id
//这里需要根据会议ID再次查询会议详细信息
JSONObject json = getMeetingInfoById(host, token, creater, videomtid);
String mtpwd = Util.null2String(json.getString("meetingPassword"));
String mtnum = Util.null2String(json.getString("meetingNumber"));
String url2 = getYealinkUrl(host, token, mtnum, videomtcreater, mtpwd);
String url1 = url2;
try {
ResourceComInfo resourceComInfo = new ResourceComInfo();
url1 = StringUtils.replace(url1, "&name=", "&name=" + URLEncoder.encode(resourceComInfo.getLastname(videomtcreater), "utf-8"));
if (url1.contains("&autojoin=false")) {
url1 = StringUtils.replace(url1, "&autojoin=false", "&autojoin=true");
}
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoClient.videoData2OA : encode error !!!", e);
}
//更新到视频会议表
RecordSet rs = new RecordSet();
String oaMtid = mtnum;
VideoMeetingUtil videoMeetingUtil = new VideoMeetingUtil();
if (StringUtils.isBlank(videoid)) {
if (rs.getDBType().equalsIgnoreCase("oracle") && Util.null2String(rs.getOrgindbtype()).equals("oracle")) {
rs.executeUpdate("INSERT INTO meeting_videolist (videomtid ,videomthostid , videomtname ,videomtbegindate ," +
"videomtenddate ,videomtcreater ,videomtstatus ,manufacturers ,frommould ,mouldkey,mtpassword," +
12 months ago
"oaMtid,videomtstarturl,videomtjoinurl,isOtherShare) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
1 year ago
videomtid, videomthostid, videomtname, starttime, videomtenddate, videomtcreater, videomtstatus,
12 months ago
manufacturers, frommould, mouldkey, mtpwd, oaMtid, url1, url2,isOtherShare);
1 year ago
} else {
rs.executeUpdate("INSERT INTO meeting_videolist (videomtid ,videomthostid , videomtname ,videomtbegindate ," +
"videomtenddate ,videomtcreater ,videomtstatus ,manufacturers ,frommould ,mouldkey,mtpassword," +
12 months ago
"oaMtid,hrmids,videomtstarturl,videomtjoinurl,isOtherShare) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
1 year ago
videomtid, videomthostid, videomtname, starttime, videomtenddate, videomtcreater, videomtstatus,
12 months ago
manufacturers, frommould, mouldkey, mtpwd, oaMtid, hrmids, url1, url2,isOtherShare);
1 year ago
}
rs.executeQuery("SELECT max(id) FROM meeting_videolist where videomtcreater = ?", videomtcreater);
rs.next();
String MaxID = rs.getString(1);
if (rs.getDBType().equalsIgnoreCase("oracle") && Util.null2String(rs.getOrgindbtype()).equals("oracle")) {
rs.executeUpdate("update meeting_videolist set hrmids = empty_clob() where id = ?", MaxID);
videoMeetingUtil.updateHrmmembers(MaxID, hrmids);
}
maxId = MaxID;
} else {
if (rs.getDBType().equalsIgnoreCase("oracle") && Util.null2String(rs.getOrgindbtype()).equals("oracle")) {
rs.executeUpdate("update meeting_videolist set videomtid = ?, videomtname = ?,videomtbegindate = ?," +
12 months ago
"videomtenddate = ?,mtpassword = ?,videomtstarturl = ?,videomtjoinurl = ?,hrmids = empty_clob(),isOtherShare = ? " +
"where id =?", videomtid, videomtname, starttime, videomtenddate, mtpwd, url1, url2,isOtherShare, videoid);
1 year ago
videoMeetingUtil.updateHrmmembers(videoid, hrmids);
} else {
rs.executeUpdate("update meeting_videolist set videomtid = ?, videomtname = ?,videomtbegindate = ?," +
12 months ago
"videomtenddate = ?,mtpassword = ?,videomtstarturl = ?,videomtjoinurl = ?,hrmids=? ,isOtherShare = ? " +
"where id =?", videomtid, videomtname, starttime, videomtenddate, mtpwd, url1, url2, hrmids, isOtherShare, videoid);
1 year ago
}
maxId = videoid;
}
//同步日程
handleWorkPlan(maxId, Util.getIntValue(videomtcreater), videomtname, hrmids, starttime, videomtenddate, oaMtid);
return maxId;
}
/**
*
*
* @param videoMtId
* @param createrId
* @param title
* @param hrmids
* @param start
* @param end
* @param mtNum
*/
private void handleWorkPlan(String videoMtId, int createrId, String title,
String hrmids, String start, String end,
String mtNum) {
try {
WorkPlan workPlan = new WorkPlan();
RecordSet rs = new RecordSet();
//查询是否存在此日程
rs.executeQuery("select id from workplan where videomtid=?", videoMtId);
int workPlanId = -1;
if (rs.next()) {
workPlanId = Util.getIntValue(rs.getString(1));
}
if (workPlanId > 0) {//修改
workPlan.setWorkPlanID(workPlanId);
//获取原日程信息
getWorkPlanById(rs, workPlan);
} else {//新增
workPlan.setCreateType(1);
//紧急程度
workPlan.setUrgentLevel("1");
//日程提醒方式
workPlan.setRemindType(com.engine.workplan.util.WorkPlanUtil.getWorkPlanDefaultRemindTypeIds());
//日程类型
workPlan.setWorkPlanType(1);
//是否开始前提醒
workPlan.setRemindBeforeStart("1");
//是否结束前提醒
workPlan.setRemindBeforeEnd("0");
//
workPlan.setRemindTimesBeforeStart(10);
workPlan.setRemindTimesBeforeEnd(10);
//
workPlan.setStatus(Constants.WorkPlan_Status_Unfinished);
}
//创建人
workPlan.setCreaterId(createrId);
//标题
workPlan.setWorkPlanName(title);
//接收人
workPlan.setResourceId(hrmids); //系统参与人
if (StringUtils.isBlank(workPlan.getResourceId()) && createrId > 0) {//接收人为空,默认直接
workPlan.setResourceId(createrId + "");
}
//开始时间
String beginDate = "", beginTime = "";
if (StringUtils.isNotBlank(start)) {
String[] s = StringUtils.split(start, " ");
beginDate = s[0];
if (s.length > 1) {
beginTime = s[1];
if (beginTime.length() == 8) {
beginTime = StringUtils.substringBeforeLast(beginTime, ":");
}
}
}
workPlan.setBeginDate(beginDate); //开始日期
workPlan.setBeginTime(beginTime); //开始时间
//结束时间
String endDate = "", endTime = "";
if (StringUtils.isNotBlank(end)) {
String[] s = StringUtils.split(end, " ");
endDate = s[0];
if (s.length > 1) {
endTime = s[1];
if (endTime.length() == 8) {
endTime = StringUtils.substringBeforeLast(endTime, ":");
}
}
}
workPlan.setEndDate(endDate); //结束日期
workPlan.setEndTime(endTime); //结束时间
//内容
User user = User.getUser(createrId, 0);
String description = SystemEnv.getHtmlLabelName(10000849, Util.getIntValue(user.getLanguage())) + "" + workPlan.getWorkPlanName()
+ " " + SystemEnv.getHtmlLabelName(81901, user.getLanguage()) + "" + workPlan.getBeginDate() + " " + workPlan.getBeginTime()
+ " " + SystemEnv.getHtmlLabelName(525536, user.getLanguage()) + "[亿联] " + mtNum;
workPlan.setDescription(description);
//是否来自外部系统
workPlan.setIsFromOthSystem(false);
if (!"".equals(workPlan.getBeginDate()) && null != workPlan.getBeginDate()) {
List beginDateTimeRemindList = Util.processTimeBySecond(workPlan.getBeginDate(), workPlan.getBeginTime(), workPlan.getRemindTimesBeforeStart() * -1 * 60);
workPlan.setRemindDateBeforeStart((String) beginDateTimeRemindList.get(0)); //开始前提醒日期
workPlan.setRemindTimeBeforeStart((String) beginDateTimeRemindList.get(1)); //开始前提醒时间
}
if (!"".equals(workPlan.getEndDate()) && null != workPlan.getEndDate()) {
List endDateTimeRemindList = Util.processTimeBySecond(workPlan.getEndDate(), workPlan.getEndTime(), workPlan.getRemindTimesBeforeEnd() * -1 * 60);
workPlan.setRemindDateBeforeEnd((String) endDateTimeRemindList.get(0)); //结束前提醒日期
workPlan.setRemindTimeBeforeEnd((String) endDateTimeRemindList.get(1)); //结束前提醒时间
}
//附件
String workPlanType = workPlan.getWorkPlanType() + "";
WorkPlanService workPlanService = new WorkPlanService();
WorkPlanShare workPlanShare = new WorkPlanShare();
if (workPlan.getWorkPlanID() > 0) {
//修改
WorkPlan oldWorkPlan = new WorkPlan();
oldWorkPlan.setWorkPlanID(workPlan.getWorkPlanID());
workPlanService.updateWorkPlan(oldWorkPlan, workPlan);
try {
workPlanShare.setShareDetail(workPlan.getWorkPlanID() + "");
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoClient.handleWorkPlan : setShareDetail error !!!", e);
}
} else {
//新增
workPlanService.insertWorkPlan(workPlan); //插入日程
try {
workPlanShare.setDefaultShareDetail(user, String.valueOf(workPlan.getWorkPlanID()), workPlanType);//只在新增的时候设置默认共享
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoClient.handleWorkPlan : setDefaultShareDetail error !!!", e);
}
rs.executeUpdate("update workplan set videomtid=? where id=?", videoMtId, workPlan.getWorkPlanID());
}
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoClient.handleWorkPlan : 用户[" + createrId + "]日程处理处理失败!", e);
}
}
/**
*
*
* @param videoMtId
*/
private void deleteWorkPlan(String videoMtId) {
RecordSet rs = new RecordSet();
rs.executeQuery("select id from workplan where videomtid=?", videoMtId);
int workPlanId = -1;
if (rs.next()) {
workPlanId = Util.getIntValue(rs.getString(1));
}
if (workPlanId > 0) {
new WorkPlanHandler().delete(workPlanId + "");
}
}
/**
*
*
* @param videoMtId
*/
private void finishWorkPlan(String videoMtId) {
RecordSet rs = new RecordSet();
rs.executeQuery("select id from workplan where videomtid=?", videoMtId);
int workPlanId = -1;
if (rs.next()) {
workPlanId = Util.getIntValue(rs.getString(1));
}
if (workPlanId > 0) {
new WorkPlanHandler().finishWorkPlan(workPlanId + "");
}
}
/**
*
*
* @param rs
* @param workPlan
*/
private void getWorkPlanById(RecordSet rs, WorkPlan workPlan) {
rs.executeQuery("select * from workplan where id=?", workPlan.getWorkPlanID());
rs.next();
workPlan.setWorkPlanType(Util.getIntValue(rs.getString("type_n")));
workPlan.setBeginDate(Util.null2String(rs.getString("begindate")));
workPlan.setBeginTime(Util.null2String(rs.getString("begintime")));
workPlan.setEndDate(Util.null2String(rs.getString("enddate")));
workPlan.setEndTime(Util.null2String(rs.getString("endtime")));
workPlan.setStatus(Util.null2String(rs.getString("status")));
workPlan.setCreaterId(Util.getIntValue(rs.getString("createrid")));
workPlan.setWorkPlanName(Util.null2String(rs.getString("name")));
workPlan.setCreateType(Util.getIntValue(rs.getString("creatertype")));
workPlan.setUrgentLevel(Util.null2String(rs.getString("urgentlevel")));
workPlan.setRemindType(Util.null2String(rs.getString("remindtype")));
workPlan.setRemindTimesBeforeStart(Util.getIntValue(rs.getString("remindtimesbeforestart")));
workPlan.setRemindTimesBeforeEnd(Util.getIntValue(rs.getString("remindtimesbeforeend")));
workPlan.setRemindBeforeStart(Util.null2String(rs.getString("remindbeforestart")));
workPlan.setRemindBeforeEnd(Util.null2String(rs.getString("remindbeforeend")));
workPlan.setRemindDateBeforeStart(Util.null2String(rs.getString("reminddatebeforestart")));
workPlan.setRemindTimeBeforeStart(Util.null2String(rs.getString("remindtimebeforestart")));
workPlan.setRemindDateBeforeEnd(Util.null2String(rs.getString("reminddatebeforeend")));
workPlan.setRemindTimeBeforeEnd(Util.null2String(rs.getString("remindtimebeforeend")));
workPlan.setResourceId(Util.null2String(rs.getString("resourceid")));
workPlan.setUuid(Util.null2String(rs.getString("uuid")));
}
/**
*
*
* @param host
* @param token
* @param mtnum
* @param userId
* @param meetingPassword
* @return
*/
private String getYealinkUrl(String host, String token, String mtnum, String userId, String meetingPassword) {
String url = host + "/meeting-join-links/" + mtnum;
JSONObject body = new JSONObject();
body.put("language", "zh");
body.put("password", meetingPassword);
JSONObject resultJson = YealinkVideoUtil.doGet(url, token, null, body);
return resultJson.getString("joinLink");
}
/**
*
*
* @param host
* @param token
* @param userId
* @param mtId
* @return
*/
private JSONObject getMeetingInfoById(String host, String token, String userId, String mtId) {
String url = host + "/users/" + userId + "/meetings/" + mtId;
JSONObject body = new JSONObject();
body.put("sequence", 1);
return YealinkVideoUtil.doGet(url, token, null, body);
}
}