From 4a3066f09ac03f48e09a6e6db1f60c23ff8a8483 Mon Sep 17 00:00:00 2001 From: zhal <15900249928@163.com> Date: Mon, 31 Jul 2023 21:30:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=B7=B2=E9=98=85=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...com.awspaas.user.apps.yili.integration.jar | Bin 296022 -> 296705 bytes .../integration/oauth/TaskController.java | 2352 +++++++++-------- 2 files changed, 1205 insertions(+), 1147 deletions(-) diff --git a/com.awspaas.user.apps.yili.integration/lib/com.awspaas.user.apps.yili.integration.jar b/com.awspaas.user.apps.yili.integration/lib/com.awspaas.user.apps.yili.integration.jar index fc510c5a80f65053bafe9b9b35aac03d47fa1aaa..1bff8a98028cf8706c81e34a9a3e1931d45d66dc 100644 GIT binary patch delta 36933 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 delta 36230 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"+json); - if (StringUtils.isNotEmpty(json.getString("employeenumber"))){ - //System.out.println("userid》》》》》》》》》》"+json.getString("employeenumber")); + if (StringUtils.isNotEmpty(json.getString("employeenumber"))) { + //System.out.println("userid》》》》》》》》》》"+json.getString("employeenumber")); userid = json.getString("employeenumber"); try { - setUserLog("",userid,"1"); + setUserLog("", userid, "1"); } catch (Exception e) { } } @@ -105,10 +91,10 @@ public class TaskController { String sessionId = UserContext.fromUID(userid).getSessionId(); String portalUrl = SDK.getPortalAPI().getPortalUrl(); - String url = portalUrl +"/r/w?sid="+sessionId+"&cmd=com.actionsoft.apps.skins.mportal3_home_page&id=5af46cd5-a1bc-4125-a144-86d1a199eec1"; + String url = portalUrl + "/r/w?sid=" + sessionId + "&cmd=com.actionsoft.apps.skins.mportal3_home_page&id=5af46cd5-a1bc-4125-a144-86d1a199eec1"; // String palPortalUrl= portalUrl + "/r/w?sid="+sessionId+"&cmd=com.actionsoft.apps.skins.mportal3_home_page&id=5af46cd5-a1bc-4125-a144-86d1a199eec1"; - String portal_url = "https://bpm.yili.com:8088"+"/portal/r/or?cmd=com.actionsoft.apps.skins.mportal3_home_page&id=5af46cd5-a1bc-4125-a144-86d1a199eec1&sid="+sessionId+"&oauthName=oauthLogin&code="+code; + String portal_url = "https://bpm.yili.com:8088" + "/portal/r/or?cmd=com.actionsoft.apps.skins.mportal3_home_page&id=5af46cd5-a1bc-4125-a144-86d1a199eec1&sid=" + sessionId + "&oauthName=oauthLogin&code=" + code; //ro.put("new_url",url); @@ -117,63 +103,73 @@ public class TaskController { } - /** * 用户登录日志 + * * @param userid * @param logType */ - public void setUserLog(String processInstId,String userid,String logType) { - System.err.println("用户登录记录存入日志========>"+userid+"_类型:"+logType); + public void setUserLog(String processInstId, String userid, String logType) { + System.err.println("用户登录记录存入日志========>" + userid + "_类型:" + logType); if (UtilString.isNotEmpty(userid)) { - //待阅更新已读记录 - if("3".equals(logType)) { - String dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - /* - * RowMap map = DBSql.getMap("SELECT * FROM BO_ACT_DATAID WHERE PROCESSID = '" - * +processInstId+"' AND USER_ID = '"+userid+"' AND READSTATE = '已读'"); - * if(null!=map) { int readCount = map.getInt("READCOUNT")+1; - * DBSql.update("UPDATE BO_ACT_DATAID SET READSTATE = '已读',READTIMES = '" - * +dateTime+"',READCOUNT = "+readCount+" WHERE PROCESSID = '" - * +processInstId+"' AND USER_ID = '"+userid+"'"); }else { } - */ - DBSql.update("UPDATE BO_ACT_DATAID SET READSTATE = '已读',READTIMES = '"+dateTime+"',READCOUNT = 1 WHERE PROCESSID = '"+processInstId+"' AND USER_ID = '"+userid+"'"); + //待阅更新已读记录 + if ("3".equals(logType)) { + String dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + /* + * RowMap map = DBSql.getMap("SELECT * FROM BO_ACT_DATAID WHERE PROCESSID = '" + * +processInstId+"' AND USER_ID = '"+userid+"' AND READSTATE = '已读'"); + * if(null!=map) { int readCount = map.getInt("READCOUNT")+1; + * DBSql.update("UPDATE BO_ACT_DATAID SET READSTATE = '已读',READTIMES = '" + * +dateTime+"',READCOUNT = "+readCount+" WHERE PROCESSID = '" + * +processInstId+"' AND USER_ID = '"+userid+"'"); }else { } + */ + DBSql.update("UPDATE BO_ACT_DATAID SET READSTATE = '已读',READTIMES = '" + dateTime + "',READCOUNT = 1 WHERE PROCESSID = '" + processInstId + "' AND USER_ID = '" + userid + "'"); - //将已读数据插入至BO_ACT_ALREADY_DATAID ,并把BO_ACT_DATAID中此条已读数据删除 - - String sql = "INSERT INTO BO_ACT_ALREADY_DATAID (\"ID\",ORGID,BINDID,CREATEDATE,CREATEUSER,UPDATEDATE,UPDATEUSER,PROCESSDEFID,ISEND,PROCESSID,USER_ID,USERDEP,READTIMES,DATAID,\"RESULT\",TITLE,SENDTYPE,READSTATE,READCOUNT,\"TYPE\")\n" + - "\t\t\t\tSELECT \"ID\",ORGID,BINDID,CREATEDATE,CREATEUSER,UPDATEDATE,UPDATEUSER,PROCESSDEFID,ISEND,PROCESSID,USER_ID,USERDEP,READTIMES,DATAID,\"RESULT\",TITLE,SENDTYPE,READSTATE,READCOUNT,\"TYPE\"\n" + - "\t\t\t\tFROM BO_ACT_DATAID WHERE READSTATE='已读' AND PROCESSID = '"+processInstId+"' AND USER_ID = '"+userid+"'"; - DBSql.update(sql); - - String sql1 = "DELETE FROM BO_ACT_DATAID WHERE READSTATE='已读' AND PROCESSID = '"+processInstId+"' AND USER_ID = '"+userid+"'"; - DBSql.update(sql1); + //将已读数据插入至BO_ACT_ALREADY_DATAID ,并把BO_ACT_DATAID中此条已读数据删除 + /*String sql = "INSERT INTO BO_ACT_ALREADY_DATAID (\"ID\",ORGID,BINDID,CREATEDATE,CREATEUSER,UPDATEDATE,UPDATEUSER,PROCESSDEFID,ISEND,PROCESSID,USER_ID,USERDEP,READTIMES,DATAID,\"RESULT\",TITLE,SENDTYPE,READSTATE,READCOUNT,\"TYPE\")\n" + + "\t\t\t\tSELECT \"ID\",ORGID,BINDID,CREATEDATE,CREATEUSER,UPDATEDATE,UPDATEUSER,PROCESSDEFID,ISEND,PROCESSID,USER_ID,USERDEP,READTIMES,DATAID,\"RESULT\",TITLE,SENDTYPE,READSTATE,READCOUNT,\"TYPE\"\n" + + "\t\t\t\tFROM BO_ACT_DATAID WHERE READSTATE='已读' AND PROCESSID = '" + processInstId + "' AND USER_ID = '" + userid + "'"; + DBSql.update(sql);*/ + // 示例代码 + BOQueryAPI query = SDK.getBOAPI().query("BO_ACT_DATAID").addQuery("PROCESSID=", processInstId).addQuery("USER_ID=",userid); + // 指定将要复制到新的bo表以及流程实例ID + BOCopyAPI copyAPI = query.copyTo("BO_ACT_ALREADY_DATAID", processInstId); + // 如果新表需要新的值,请添加新数据 + copyAPI.addNewData("USER", ""); + // 执行复制操作 + copyAPI.exec(); - } + + String sql1 = "DELETE FROM BO_ACT_DATAID WHERE READSTATE='已读' AND PROCESSID = '" + processInstId + "' AND USER_ID = '" + userid + "'"; + DBSql.update(sql1); + + + } String logTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); BO bo = new BO(); - ORGAPI orgapi = SDK.getORGAPI(); - UserModel user = orgapi.getUser(userid); - DepartmentModel departmentByUser = orgapi.getDepartmentByUser(userid); - bo.set("LOGINUSERNAME", userid); - bo.set("USERBUNAME",user.getExt4()); - bo.set("USERPOST",user.getPositionName()); - bo.set("USERDEPTNAME", departmentByUser.getPathNameOfCache()); - bo.set("LOGINTIME", logTime); - bo.set("LOGINCOUNTS", 1); - bo.set("LOGTYPE", Integer.valueOf(logType)); - SDK.getBOAPI().createDataBO("BO_EU_USER_LOGIN_LOG", bo, UserContext.fromUID("admin")); - + ORGAPI orgapi = SDK.getORGAPI(); + UserModel user = orgapi.getUser(userid); + DepartmentModel departmentByUser = orgapi.getDepartmentByUser(userid); + bo.set("LOGINUSERNAME", userid); + bo.set("USERBUNAME", user.getExt4()); + bo.set("USERPOST", user.getPositionName()); + bo.set("USERDEPTNAME", departmentByUser.getPathNameOfCache()); + bo.set("LOGINTIME", logTime); + bo.set("LOGINCOUNTS", 1); + bo.set("LOGTYPE", Integer.valueOf(logType)); + SDK.getBOAPI().createDataBO("BO_EU_USER_LOGIN_LOG", bo, UserContext.fromUID("admin")); + } } /** * OA系统单点访问表单数据 + * * @param me * @param params * @return @@ -183,36 +179,36 @@ public class TaskController { //System.out.println("进入表单了==========="); //System.out.println("参数输出==========="+params.asMap()); //打开待办时记录日志 - try { - setUserLog("",me.getUID(),"2"); + try { + setUserLog("", me.getUID(), "2"); } catch (Exception e) { } String sessionId = me.getSessionId(); String portalUrl = SDK.getPortalAPI().getPortalUrl(); - if(!SDK.getPortalAPI().checkSession(sessionId)) { + if (!SDK.getPortalAPI().checkSession(sessionId)) { SSOUtil ssoUtil = new SSOUtil(); - sessionId = ssoUtil.registerClientSessionNoPassword(me.getUID(), "cn",portalUrl, me.getDeviceType()); + sessionId = ssoUtil.registerClientSessionNoPassword(me.getUID(), "cn", portalUrl, me.getDeviceType()); } UserContext uc = UserContext.fromSessionId(sessionId); UserTaskFormsWeb web = new UserTaskFormsWeb(uc); String processInstId = params.get("processInstId"); String taskInstId = params.get("taskInstId"); - - + + if (!UtilString.isEmpty(taskInstId) && taskInstId.equals("null")) { taskInstId = ""; } int openState = 0; //根据流程实例去获取表单的 状态 - if (!taskInstId.equals("")){ + if (!taskInstId.equals("")) { TaskAPI taskAPI = SDK.getTaskAPI(); final TaskInstance taskInstance = taskAPI.getTaskInstance(taskInstId); - if (null == taskInstance){ - taskInstId=""; - }else{ - if ("delete".equals(taskInstance.getControlState())){ - taskInstId=""; - }else{ + if (null == taskInstance) { + taskInstId = ""; + } else { + if ("delete".equals(taskInstance.getControlState())) { + taskInstId = ""; + } else { openState = taskInstance.getState(); } } @@ -241,1185 +237,1248 @@ public class TaskController { ////System.out.println("输出表单==========="+formPage); return formPage; } - + //pc端待阅 - @Mapping("com.yili_process_page") - public String processTest(UserContext me, RequestParams params) throws IOException, SQLException { - // System.out.println("params>>>>>>>>>>>>"+params.toString()); - // System.out.println("UserContext>>>>>>>>>>>>"+me.getUID()); - String userMobile = me.getDeviceType(); - String html = "index_web.html"; - Connection conn = DBSql.open(); - ArrayList isNumberAscArray = new ArrayList(); - Map map = new LinkedHashMap(); - try { - JSONArray jsonArray = new JSONArray(); - String sid = me.getSessionId(); - String processInstId = params.get("processInstId"); - String taskInstId = params.get("taskInstId"); - ProcessInstance instanceById = SDK.getProcessAPI().getInstanceById(processInstId); - try { - // 记录门户待阅 - setRecord(me.getUID(), processInstId, instanceById.getTitle()); - // 用户打开阅览界面日志 - setUserLog(processInstId, me.getUID(), "3"); + @Mapping("com.yili_process_page") + public String processTest(UserContext me, RequestParams params) throws IOException, SQLException { + // System.out.println("params>>>>>>>>>>>>"+params.toString()); + // System.out.println("UserContext>>>>>>>>>>>>"+me.getUID()); + String userMobile = me.getDeviceType(); + String html = "index_web.html"; + Connection conn = DBSql.open(); + ArrayList isNumberAscArray = new ArrayList(); + Map map = new LinkedHashMap(); + try { + JSONArray jsonArray = new JSONArray(); + String sid = me.getSessionId(); + String processInstId = params.get("processInstId"); + String taskInstId = params.get("taskInstId"); + ProcessInstance instanceById = SDK.getProcessAPI().getInstanceById(processInstId); + try { + // 记录门户待阅 + setRecord(me.getUID(), processInstId, instanceById.getTitle()); - } catch (Exception e) { - } - String usercode = "admin"; - if (UtilString.isNotEmpty(params.get("usercode"))) { - usercode = params.get("usercode"); - } - map.put("sid", sid); - List list = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_N", true).addQuery("BINDID=", processInstId) - .orderByCreated().asc().list(); - List lists = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_C", true).addQuery("BINDID=", processInstId) - .orderByCreated().asc().list(); - List list_stop = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_S", true).addQuery("BINDID=", processInstId) - .orderByCreated().asc().list(); - int num = 1; - // 发布 - if (list.size() > 0) { - // System.out.println("这个是更新的架构数据"); - for (BO bo : list) { - // System.out.println("开始时间》》》》》》》" + System.currentTimeMillis()); - JSONObject jsonObject = new JSONObject(); - String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID ='" - + bo.get("PUBLISHFILEID") + "'"; - RowMap Row_maps_is_not_publish = DBSql.getMap(conn, is_not_publish_sql); - String id = bo.getString("TASKID"); - jsonObject.put("title", bo.get("PUBLISHFILENAME")); - jsonObject.put("file_number",0); - jsonObject.put("link", - SDK.getPortalAPI().getPortalUrl() - + "/r/w?cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open&uuid=" - + Row_maps_is_not_publish.getString("id") + "&sid=" + sid); - jsonObject.put("size", ""); - // jsonObject.put("id", num); - jsonObject.put("taskId", id); - jsonObject.put("id", bo.getString("PUBLISHFILEID")); - jsonArray.add(jsonObject); + } catch (Exception e) { + } + String usercode = "admin"; + if (UtilString.isNotEmpty(params.get("usercode"))) { + usercode = params.get("usercode"); + } + map.put("sid", sid); - String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("PUBLISHFILEID") + "'" + ") ORDER BY FILENAME ASC"; - String methodId = DBSql.getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("PUBLISHFILEID") + "'"); - if (UtilString.isNotEmpty(methodId)) { - if (methodId.equals("control.policy")) { - sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("PUBLISHFILEID") + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; - } - } - // String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where - // palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= - // '"+bo.getString("PUBLISHFILEID")+"') AND FILETYPE = 'f'"; - List maps = DBSql.getMaps(conn, sql_upfile); - UserContext userContext = UserContext.fromSessionId(sid); - UpfileWeb upfileWeb = new UpfileWeb(userContext); + List list = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_N", true).addQuery("BINDID=", processInstId) + .orderByCreated().asc().list(); + List lists = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_C", true).addQuery("BINDID=", processInstId) + .orderByCreated().asc().list(); + List list_stop = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_S", true).addQuery("BINDID=", processInstId) + .orderByCreated().asc().list(); + int num = 1; + // 发布 + if (list.size() > 0) { + // System.out.println("这个是更新的架构数据"); + for (BO bo : list) { + // System.out.println("开始时间》》》》》》》" + System.currentTimeMillis()); + JSONObject jsonObject = new JSONObject(); + String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID ='" + + bo.get("PUBLISHFILEID") + "'"; + RowMap Row_maps_is_not_publish = DBSql.getMap(conn, is_not_publish_sql); + String id = bo.getString("TASKID"); + jsonObject.put("title", bo.get("PUBLISHFILENAME")); + jsonObject.put("file_number", 0); + jsonObject.put("link", + SDK.getPortalAPI().getPortalUrl() + + "/r/w?cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open&uuid=" + + Row_maps_is_not_publish.getString("id") + "&sid=" + sid); + jsonObject.put("size", ""); + // jsonObject.put("id", num); + jsonObject.put("taskId", id); + jsonObject.put("id", bo.getString("PUBLISHFILEID")); + jsonArray.add(jsonObject); - for (RowMap row : maps) { - UpfileModel upfileModel = new UpfileModel(); - upfileModel.setType(row.getString("FILETYPE")); - upfileModel.setFileName(row.getString("FILENAME")); - upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); - upfileModel.setShape_uuid(row.getString("SHAPEID")); - DCContext dcContexts = upfileWeb.getDCContext(upfileModel); - Map params_previews = new HashMap(); - // 文档是否允许下载,必填 - params_previews.put("isDownload", true); - // 显示文件名,必填 - params_previews.put("fileNameOriginal", row.getString("FILENAME")); - // PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 - params_previews.put("isPDFCovertPNG", 0); - // groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 - params_previews.put("extParams", ""); - // 文档是否允许打印,必填 - params_previews.put("isPrint", true); - // 是否显示顶部工具栏的返回按钮,默认显示,非必填 - params_previews.put("isShowBackbtn", ""); - // 原文件DC,必填 - params_previews.put("sourceDc", dcContexts); - // 是否显示默认预览工具栏,必填 - params_previews.put("isShowDefaultToolbar", true); - // 文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 - params_previews.put("isCopy", true); - // sessionid,必填 - params_previews.put("sid", sid); - // 文档是否加密,必填 - params_previews.put("isEncrypt", false); - AppAPI appAPIs = SDK.getAppAPI(); - // 文档预览 - String sourceAppId = instanceById.getAppId(); - String aslp = "aslp://com.actionsoft.apps.addons.onlinedoc/filePreview"; - ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, - params_previews); - JSONObject jsonObject1 = new JSONObject(); - //按照附件编号排序 - String fileNamel= row.getString("FILENAME"); - if(UtilString.isNotEmpty(fileNamel)&&fileNamel.contains("附件")&&fileNamel.length()>2&&(fileNamel.contains(":")||fileNamel.contains(":"))) { - if(fileNamel.indexOf("附件")==0) { - int indexOf2 = 3; - if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - }else if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - } - String numberStr = fileNamel.substring(2,indexOf2); - if(isNumeric(numberStr)&&!"".equals(numberStr)) { - isNumberAscArray.add("true"); - int fileNumber = Integer.parseInt(numberStr); - jsonObject1.put("file_number", fileNumber); - }else { - isNumberAscArray.add("false"); - } - }else { - isNumberAscArray.add("false"); - } - - }else { - isNumberAscArray.add("false"); - } - jsonObject1.put("title", row.getString("FILENAME")); - String base_url = "https://bpm.yili.com:8088/portal/r"; - if (row.getString("FILENAME").toString().contains(".xls") - || row.getString("FILENAME").toString().contains(".xlsx")) { - jsonObject1.put("link", ros.get("url").toString().substring(0)); - } else { - jsonObject1.put("link", base_url + ros.get("url").toString().substring(1)); - } - // jsonObject1.put("size","12k"); - jsonArray.add(jsonObject1); - } - num++; + String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("PUBLISHFILEID") + "'" + ") ORDER BY FILENAME ASC"; + String methodId = DBSql.getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("PUBLISHFILEID") + "'"); + if (UtilString.isNotEmpty(methodId)) { + if (methodId.equals("control.policy")) { + sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("PUBLISHFILEID") + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; + } + } + // String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where + // palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= + // '"+bo.getString("PUBLISHFILEID")+"') AND FILETYPE = 'f'"; + List maps = DBSql.getMaps(conn, sql_upfile); + UserContext userContext = UserContext.fromSessionId(sid); + UpfileWeb upfileWeb = new UpfileWeb(userContext); - } - } + for (RowMap row : maps) { + UpfileModel upfileModel = new UpfileModel(); + upfileModel.setType(row.getString("FILETYPE")); + upfileModel.setFileName(row.getString("FILENAME")); + upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); + upfileModel.setShape_uuid(row.getString("SHAPEID")); + DCContext dcContexts = upfileWeb.getDCContext(upfileModel); + Map params_previews = new HashMap(); + // 文档是否允许下载,必填 + params_previews.put("isDownload", true); + // 显示文件名,必填 + params_previews.put("fileNameOriginal", row.getString("FILENAME")); + // PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 + params_previews.put("isPDFCovertPNG", 0); + // groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 + params_previews.put("extParams", ""); + // 文档是否允许打印,必填 + params_previews.put("isPrint", true); + // 是否显示顶部工具栏的返回按钮,默认显示,非必填 + params_previews.put("isShowBackbtn", ""); + // 原文件DC,必填 + params_previews.put("sourceDc", dcContexts); + // 是否显示默认预览工具栏,必填 + params_previews.put("isShowDefaultToolbar", true); + // 文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 + params_previews.put("isCopy", true); + // sessionid,必填 + params_previews.put("sid", sid); + // 文档是否加密,必填 + params_previews.put("isEncrypt", false); + AppAPI appAPIs = SDK.getAppAPI(); + // 文档预览 + String sourceAppId = instanceById.getAppId(); + String aslp = "aslp://com.actionsoft.apps.addons.onlinedoc/filePreview"; + ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, + params_previews); + JSONObject jsonObject1 = new JSONObject(); + //按照附件编号排序 + String fileNamel = row.getString("FILENAME"); + if (UtilString.isNotEmpty(fileNamel) && fileNamel.contains("附件") && fileNamel.length() > 2 && (fileNamel.contains(":") || fileNamel.contains(":"))) { + if (fileNamel.indexOf("附件") == 0) { + int indexOf2 = 3; + if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } else if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } + String numberStr = fileNamel.substring(2, indexOf2); + if (isNumeric(numberStr) && !"".equals(numberStr)) { + isNumberAscArray.add("true"); + int fileNumber = Integer.parseInt(numberStr); + jsonObject1.put("file_number", fileNumber); + } else { + isNumberAscArray.add("false"); + } + } else { + isNumberAscArray.add("false"); + } - /** - * 当发布和变更为空时,显示作废的文件 - */ - if (list.size() == 0 && lists.size() == 0) { - if (list_stop.size() > 0) { - // System.out.println("这个是作废的架构数据"); - for (BO bo : list_stop) { - // System.out.println("开始时间》》》》》》》" + System.currentTimeMillis()); - JSONObject jsonObject = new JSONObject(); - String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID ='" - + bo.get("STOPFILEID") + "'"; - RowMap Row_maps_is_not_publish = DBSql.getMap(conn, is_not_publish_sql); - String id = bo.getString("TASKID"); - jsonObject.put("title", bo.get("STOPFILENAME")); - jsonObject.put("file_number",0); - jsonObject.put("link", - SDK.getPortalAPI().getPortalUrl() - + "/r/w?cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open&uuid=" - + Row_maps_is_not_publish.getString("id") + "&sid=" + sid); - jsonObject.put("size", ""); - jsonObject.put("id", bo.getString("STOPFILEID")); - jsonObject.put("taskId", id); - jsonArray.add(jsonObject); + } else { + isNumberAscArray.add("false"); + } + jsonObject1.put("title", row.getString("FILENAME")); + String base_url = "https://bpm.yili.com:8088/portal/r"; + if (row.getString("FILENAME").toString().contains(".xls") + || row.getString("FILENAME").toString().contains(".xlsx")) { + jsonObject1.put("link", ros.get("url").toString().substring(0)); + } else { + jsonObject1.put("link", base_url + ros.get("url").toString().substring(1)); + } + // jsonObject1.put("size","12k"); + jsonArray.add(jsonObject1); + } + num++; - String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("STOPFILEID") + "'" + ") ORDER BY FILENAME ASC"; - String methodId = DBSql - .getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("STOPFILEID") + "'"); - if (UtilString.isNotEmpty(methodId)) { - if (methodId.equals("control.policy")) { - sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("STOPFILEID") + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; - } - } - // String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where - // palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= - // '"+bo.getString("PUBLISHFILEID")+"') AND FILETYPE = 'f'"; - List maps = DBSql.getMaps(conn, sql_upfile); - UserContext userContext = UserContext.fromSessionId(sid); - UpfileWeb upfileWeb = new UpfileWeb(userContext); + } + } - for (RowMap row : maps) { - UpfileModel upfileModel = new UpfileModel(); - upfileModel.setType(row.getString("FILETYPE")); - upfileModel.setFileName(row.getString("FILENAME")); - upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); - upfileModel.setShape_uuid(row.getString("SHAPEID")); - DCContext dcContexts = upfileWeb.getDCContext(upfileModel); - Map params_previews = new HashMap(); - // 文档是否允许下载,必填 - params_previews.put("isDownload", true); - // 显示文件名,必填 - params_previews.put("fileNameOriginal", row.getString("FILENAME")); - // PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 - params_previews.put("isPDFCovertPNG", 0); - // groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 - params_previews.put("extParams", ""); - // 文档是否允许打印,必填 - params_previews.put("isPrint", true); - // 是否显示顶部工具栏的返回按钮,默认显示,非必填 - params_previews.put("isShowBackbtn", ""); - // 原文件DC,必填 - params_previews.put("sourceDc", dcContexts); - // 是否显示默认预览工具栏,必填 - params_previews.put("isShowDefaultToolbar", true); - // 文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 - params_previews.put("isCopy", true); - // sessionid,必填 - params_previews.put("sid", sid); - // 文档是否加密,必填 - params_previews.put("isEncrypt", false); - AppAPI appAPIs = SDK.getAppAPI(); - // 文档预览 - String sourceAppId = instanceById.getAppId(); - String aslp = "aslp://com.actionsoft.apps.addons.onlinedoc/filePreview"; - ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, - params_previews); - JSONObject jsonObject1 = new JSONObject(); - //按照附件编号排序 - String fileNamel= row.getString("FILENAME"); - if(UtilString.isNotEmpty(fileNamel)&&fileNamel.contains("附件")&&fileNamel.length()>2&&(fileNamel.contains(":")||fileNamel.contains(":"))) { - if(fileNamel.indexOf("附件")==0) { - int indexOf2 = 3; - if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - }else if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - } - String numberStr = fileNamel.substring(2,indexOf2); - if(isNumeric(numberStr)&&!"".equals(numberStr)) { - isNumberAscArray.add("true"); - int fileNumber = Integer.parseInt(numberStr); - jsonObject1.put("file_number", fileNumber); - }else { - isNumberAscArray.add("false"); - } - }else { - isNumberAscArray.add("false"); - } - - }else { - isNumberAscArray.add("false"); - } - jsonObject1.put("title", row.getString("FILENAME")); - String base_url = "https://bpm.yili.com:8088/portal/r"; - if (row.getString("FILENAME").toString().contains(".xls") - || row.getString("FILENAME").toString().contains(".xlsx")) { - jsonObject1.put("link", ros.get("url").toString().substring(0)); - } else { - jsonObject1.put("link", base_url + ros.get("url").toString().substring(1)); - } - // jsonObject1.put("size","12k"); - jsonArray.add(jsonObject1); - } - num++; + /** + * 当发布和变更为空时,显示作废的文件 + */ + if (list.size() == 0 && lists.size() == 0) { + if (list_stop.size() > 0) { + // System.out.println("这个是作废的架构数据"); + for (BO bo : list_stop) { + // System.out.println("开始时间》》》》》》》" + System.currentTimeMillis()); + JSONObject jsonObject = new JSONObject(); + String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID ='" + + bo.get("STOPFILEID") + "'"; + RowMap Row_maps_is_not_publish = DBSql.getMap(conn, is_not_publish_sql); + String id = bo.getString("TASKID"); + jsonObject.put("title", bo.get("STOPFILENAME")); + jsonObject.put("file_number", 0); + jsonObject.put("link", + SDK.getPortalAPI().getPortalUrl() + + "/r/w?cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open&uuid=" + + Row_maps_is_not_publish.getString("id") + "&sid=" + sid); + jsonObject.put("size", ""); + jsonObject.put("id", bo.getString("STOPFILEID")); + jsonObject.put("taskId", id); + jsonArray.add(jsonObject); - } - } + String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("STOPFILEID") + "'" + ") ORDER BY FILENAME ASC"; + String methodId = DBSql + .getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("STOPFILEID") + "'"); + if (UtilString.isNotEmpty(methodId)) { + if (methodId.equals("control.policy")) { + sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("STOPFILEID") + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; + } + } + // String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where + // palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= + // '"+bo.getString("PUBLISHFILEID")+"') AND FILETYPE = 'f'"; + List maps = DBSql.getMaps(conn, sql_upfile); + UserContext userContext = UserContext.fromSessionId(sid); + UpfileWeb upfileWeb = new UpfileWeb(userContext); - } - // 变更 - if (lists.size() > 0) { - for (BO bo : lists) { - // System.out.println("这个是更新文件的架构"); - // System.out.println("开始时间》》》》》》》" + System.currentTimeMillis()); - JSONObject jsonObject = new JSONObject(); - String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID ='" - + bo.get("CHANGEDFILEIDNEW") + "'"; - RowMap Row_maps_is_not_publish = DBSql.getMap(conn, is_not_publish_sql); - String id = bo.getString("TASKID"); - jsonObject.put("title", bo.get("CHANGEDFILENAMENEW")); - jsonObject.put("file_number",0); - jsonObject.put("link", - SDK.getPortalAPI().getPortalUrl() - + "/r/w?cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open&uuid=" - + Row_maps_is_not_publish.getString("id") + "&sid=" + sid); - jsonObject.put("size", ""); - jsonObject.put("id", bo.get("CHANGEDFILEIDNEW")); - jsonObject.put("taskId", id); - jsonArray.add(jsonObject); + for (RowMap row : maps) { + UpfileModel upfileModel = new UpfileModel(); + upfileModel.setType(row.getString("FILETYPE")); + upfileModel.setFileName(row.getString("FILENAME")); + upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); + upfileModel.setShape_uuid(row.getString("SHAPEID")); + DCContext dcContexts = upfileWeb.getDCContext(upfileModel); + Map params_previews = new HashMap(); + // 文档是否允许下载,必填 + params_previews.put("isDownload", true); + // 显示文件名,必填 + params_previews.put("fileNameOriginal", row.getString("FILENAME")); + // PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 + params_previews.put("isPDFCovertPNG", 0); + // groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 + params_previews.put("extParams", ""); + // 文档是否允许打印,必填 + params_previews.put("isPrint", true); + // 是否显示顶部工具栏的返回按钮,默认显示,非必填 + params_previews.put("isShowBackbtn", ""); + // 原文件DC,必填 + params_previews.put("sourceDc", dcContexts); + // 是否显示默认预览工具栏,必填 + params_previews.put("isShowDefaultToolbar", true); + // 文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 + params_previews.put("isCopy", true); + // sessionid,必填 + params_previews.put("sid", sid); + // 文档是否加密,必填 + params_previews.put("isEncrypt", false); + AppAPI appAPIs = SDK.getAppAPI(); + // 文档预览 + String sourceAppId = instanceById.getAppId(); + String aslp = "aslp://com.actionsoft.apps.addons.onlinedoc/filePreview"; + ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, + params_previews); + JSONObject jsonObject1 = new JSONObject(); + //按照附件编号排序 + String fileNamel = row.getString("FILENAME"); + if (UtilString.isNotEmpty(fileNamel) && fileNamel.contains("附件") && fileNamel.length() > 2 && (fileNamel.contains(":") || fileNamel.contains(":"))) { + if (fileNamel.indexOf("附件") == 0) { + int indexOf2 = 3; + if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } else if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } + String numberStr = fileNamel.substring(2, indexOf2); + if (isNumeric(numberStr) && !"".equals(numberStr)) { + isNumberAscArray.add("true"); + int fileNumber = Integer.parseInt(numberStr); + jsonObject1.put("file_number", fileNumber); + } else { + isNumberAscArray.add("false"); + } + } else { + isNumberAscArray.add("false"); + } - String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.get("CHANGEDFILEIDNEW") + "'" + ") ORDER BY FILENAME ASC"; - String methodId = DBSql.getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("CHANGEDFILEIDNEW") + "'"); - if (UtilString.isNotEmpty(methodId)) { - if (methodId.equals("control.policy")) { - sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.get("CHANGEDFILEIDNEW") + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; - } - } - // String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where - // palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= - // '"+bo.getString("PUBLISHFILEID")+"') AND FILETYPE = 'f'"; - List maps = DBSql.getMaps(conn, sql_upfile); - UserContext userContext = UserContext.fromSessionId(sid); - UpfileWeb upfileWeb = new UpfileWeb(userContext); + } else { + isNumberAscArray.add("false"); + } + jsonObject1.put("title", row.getString("FILENAME")); + String base_url = "https://bpm.yili.com:8088/portal/r"; + if (row.getString("FILENAME").toString().contains(".xls") + || row.getString("FILENAME").toString().contains(".xlsx")) { + jsonObject1.put("link", ros.get("url").toString().substring(0)); + } else { + jsonObject1.put("link", base_url + ros.get("url").toString().substring(1)); + } + // jsonObject1.put("size","12k"); + jsonArray.add(jsonObject1); + } + num++; - for (RowMap row : maps) { - UpfileModel upfileModel = new UpfileModel(); - upfileModel.setType(row.getString("FILETYPE")); - upfileModel.setFileName(row.getString("FILENAME")); - upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); - upfileModel.setShape_uuid(row.getString("SHAPEID")); - DCContext dcContexts = upfileWeb.getDCContext(upfileModel); - Map params_previews = new HashMap(); - // 文档是否允许下载,必填 - params_previews.put("isDownload", true); - // 显示文件名,必填 - params_previews.put("fileNameOriginal", row.getString("FILENAME")); - // PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 - params_previews.put("isPDFCovertPNG", 0); - // groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 - params_previews.put("extParams", ""); - // 文档是否允许打印,必填 - params_previews.put("isPrint", true); - // 是否显示顶部工具栏的返回按钮,默认显示,非必填 - params_previews.put("isShowBackbtn", ""); - // 原文件DC,必填 - params_previews.put("sourceDc", dcContexts); - // 是否显示默认预览工具栏,必填 - params_previews.put("isShowDefaultToolbar", true); - // 文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 - params_previews.put("isCopy", true); - // sessionid,必填 - params_previews.put("sid", sid); - // 文档是否加密,必填 - params_previews.put("isEncrypt", false); - AppAPI appAPIs = SDK.getAppAPI(); - // 文档预览 - String sourceAppId = instanceById.getAppId(); - String aslp = "aslp://com.actionsoft.apps.addons.onlinedoc/filePreview"; - ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, - params_previews); - JSONObject jsonObject1 = new JSONObject(); - //按照附件编号排序 - String fileNamel= row.getString("FILENAME"); - if(UtilString.isNotEmpty(fileNamel)&&fileNamel.contains("附件")&&fileNamel.length()>2&&(fileNamel.contains(":")||fileNamel.contains(":"))) { - if(fileNamel.indexOf("附件")==0) { - int indexOf2 = 3; - if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - }else if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - } - String numberStr = fileNamel.substring(2,indexOf2); - if(isNumeric(numberStr)&&!"".equals(numberStr)) { - isNumberAscArray.add("true"); - int fileNumber = Integer.parseInt(numberStr); - jsonObject1.put("file_number", fileNumber); - }else { - isNumberAscArray.add("false"); - } - }else { - isNumberAscArray.add("false"); - } - - }else { - isNumberAscArray.add("false"); - } - jsonObject1.put("title", row.getString("FILENAME")); - String base_url = "https://bpm.yili.com:8088/portal/r"; - if (row.getString("FILENAME").toString().contains(".xls") - || row.getString("FILENAME").toString().contains(".xlsx")) { - jsonObject1.put("link", ros.get("url").toString().substring(0)); - } else { - jsonObject1.put("link", base_url + ros.get("url").toString().substring(1)); - } - // jsonObject1.put("size","12k"); - jsonArray.add(jsonObject1); - } + } + } - num++; + } + // 变更 + if (lists.size() > 0) { + for (BO bo : lists) { + // System.out.println("这个是更新文件的架构"); + // System.out.println("开始时间》》》》》》》" + System.currentTimeMillis()); + JSONObject jsonObject = new JSONObject(); + String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID ='" + + bo.get("CHANGEDFILEIDNEW") + "'"; + RowMap Row_maps_is_not_publish = DBSql.getMap(conn, is_not_publish_sql); + String id = bo.getString("TASKID"); + jsonObject.put("title", bo.get("CHANGEDFILENAMENEW")); + jsonObject.put("file_number", 0); + jsonObject.put("link", + SDK.getPortalAPI().getPortalUrl() + + "/r/w?cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open&uuid=" + + Row_maps_is_not_publish.getString("id") + "&sid=" + sid); + jsonObject.put("size", ""); + jsonObject.put("id", bo.get("CHANGEDFILEIDNEW")); + jsonObject.put("taskId", id); + jsonArray.add(jsonObject); - } - } + String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.get("CHANGEDFILEIDNEW") + "'" + ") ORDER BY FILENAME ASC"; + String methodId = DBSql.getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("CHANGEDFILEIDNEW") + "'"); + if (UtilString.isNotEmpty(methodId)) { + if (methodId.equals("control.policy")) { + sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.get("CHANGEDFILEIDNEW") + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; + } + } + // String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where + // palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= + // '"+bo.getString("PUBLISHFILEID")+"') AND FILETYPE = 'f'"; + List maps = DBSql.getMaps(conn, sql_upfile); + UserContext userContext = UserContext.fromSessionId(sid); + UpfileWeb upfileWeb = new UpfileWeb(userContext); - String substring = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId) - .addQuery("OPTIONTYPE IS NOT NULL", null).detail().getString("RELEASE_INSTRUCTIONS"); - BO bo_act_coe_publishs = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId) - .addQuery("OPTIONTYPE IS NOT NULL", null).detail(); + for (RowMap row : maps) { + UpfileModel upfileModel = new UpfileModel(); + upfileModel.setType(row.getString("FILETYPE")); + upfileModel.setFileName(row.getString("FILENAME")); + upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); + upfileModel.setShape_uuid(row.getString("SHAPEID")); + DCContext dcContexts = upfileWeb.getDCContext(upfileModel); + Map params_previews = new HashMap(); + // 文档是否允许下载,必填 + params_previews.put("isDownload", true); + // 显示文件名,必填 + params_previews.put("fileNameOriginal", row.getString("FILENAME")); + // PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 + params_previews.put("isPDFCovertPNG", 0); + // groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 + params_previews.put("extParams", ""); + // 文档是否允许打印,必填 + params_previews.put("isPrint", true); + // 是否显示顶部工具栏的返回按钮,默认显示,非必填 + params_previews.put("isShowBackbtn", ""); + // 原文件DC,必填 + params_previews.put("sourceDc", dcContexts); + // 是否显示默认预览工具栏,必填 + params_previews.put("isShowDefaultToolbar", true); + // 文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 + params_previews.put("isCopy", true); + // sessionid,必填 + params_previews.put("sid", sid); + // 文档是否加密,必填 + params_previews.put("isEncrypt", false); + AppAPI appAPIs = SDK.getAppAPI(); + // 文档预览 + String sourceAppId = instanceById.getAppId(); + String aslp = "aslp://com.actionsoft.apps.addons.onlinedoc/filePreview"; + ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, + params_previews); + JSONObject jsonObject1 = new JSONObject(); + //按照附件编号排序 + String fileNamel = row.getString("FILENAME"); + if (UtilString.isNotEmpty(fileNamel) && fileNamel.contains("附件") && fileNamel.length() > 2 && (fileNamel.contains(":") || fileNamel.contains(":"))) { + if (fileNamel.indexOf("附件") == 0) { + int indexOf2 = 3; + if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } else if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } + String numberStr = fileNamel.substring(2, indexOf2); + if (isNumeric(numberStr) && !"".equals(numberStr)) { + isNumberAscArray.add("true"); + int fileNumber = Integer.parseInt(numberStr); + jsonObject1.put("file_number", fileNumber); + } else { + isNumberAscArray.add("false"); + } + } else { + isNumberAscArray.add("false"); + } - // } - map.put("subString", substring); - map.put("ProcessTile", bo_act_coe_publishs.getString("PROCESS_TITLE")); - map.put("processInstId", processInstId); - map.put("sid", sid); - // System.out.println("jsonArray=====>>>>>>>>>"+jsonArray); - boolean contains = isNumberAscArray.contains("false"); - if(!contains) { - try { - jsonArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getInteger("file_number"))); - } catch (Exception e) { - throw new AWSQuotaException("附件格式请以:《附件1:XXXXXX》格式命名"); - } - } - map.put("jsonlist", jsonArray); + } else { + isNumberAscArray.add("false"); + } + jsonObject1.put("title", row.getString("FILENAME")); + String base_url = "https://bpm.yili.com:8088/portal/r"; + if (row.getString("FILENAME").toString().contains(".xls") + || row.getString("FILENAME").toString().contains(".xlsx")) { + jsonObject1.put("link", ros.get("url").toString().substring(0)); + } else { + jsonObject1.put("link", base_url + ros.get("url").toString().substring(1)); + } + // jsonObject1.put("size","12k"); + jsonArray.add(jsonObject1); + } - String portalUrl = SDK.getPortalAPI().getPortalUrl(); - String url = portalUrl + "/r/or?cmd=com.yili_process_page&processInstId=" + processInstId + "&taskInstId=" - + taskInstId; - HttpClientUtils httpClientUtil = new HttpClientUtils(); - // String s = - // httpClientUtil.SendPreview("http://10.119.22.207:80/services/service_lcglpt?wsdl", - // jsonObject); - BO bo_act_coe_publish = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId) - .addQuery("OPTIONTYPE IS NOT NULL", null).detail(); - List bo_act_dataid = SDK.getBOAPI().query("BO_ACT_DATAID").addQuery("PROCESSID=", processInstId) - .addQuery("USER_ID=", usercode).list(); - if (bo_act_dataid.size() > 0) { - for (BO bo : bo_act_dataid) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("action", "read"); - jsonObject.put("status", "1"); - jsonObject.put("dataid", bo.getString("DATAID")); - String xmlStr = "\n" - + " " + " " + " " - + " " + "" + " " - + " " + " " + ""; - HttpClient client = new HttpClient(); - int timeout = 10000; - String readurl = SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "readurl"); - String s = UtilUrl.doPostSoap(readurl, xmlStr, ""); - // System.err.println(instanceById.getTitle()+"OA待阅PC端阅读返回=======>"+s); - String nums = DBSql.getString( - "select READNUM from BO_EU_PAL_READ_LOG where PROCESSID = '" + processInstId + "'"); - if (UtilString.isNotEmpty(nums)) { - Integer read_num = Integer.valueOf(nums); - read_num += 1; - DBSql.update("update BO_EU_PAL_READ_LOG set READNUM = '" + read_num + "' where PROCESSID = '" - + processInstId + "'"); - } - } + num++; + + } + } + + String substring = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId) + .addQuery("OPTIONTYPE IS NOT NULL", null).detail().getString("RELEASE_INSTRUCTIONS"); + BO bo_act_coe_publishs = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId) + .addQuery("OPTIONTYPE IS NOT NULL", null).detail(); + + // } + map.put("subString", substring); + map.put("ProcessTile", bo_act_coe_publishs.getString("PROCESS_TITLE")); + map.put("processInstId", processInstId); + map.put("sid", sid); + // System.out.println("jsonArray=====>>>>>>>>>"+jsonArray); + boolean contains = isNumberAscArray.contains("false"); + if (!contains) { + try { + jsonArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getInteger("file_number"))); + } catch (Exception e) { + throw new AWSQuotaException("附件格式请以:《附件1:XXXXXX》格式命名"); + } + } + map.put("jsonlist", jsonArray); + + String portalUrl = SDK.getPortalAPI().getPortalUrl(); + String url = portalUrl + "/r/or?cmd=com.yili_process_page&processInstId=" + processInstId + "&taskInstId=" + + taskInstId; + HttpClientUtils httpClientUtil = new HttpClientUtils(); + // String s = + // httpClientUtil.SendPreview("http://10.119.22.207:80/services/service_lcglpt?wsdl", + // jsonObject); + BO bo_act_coe_publish = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId) + .addQuery("OPTIONTYPE IS NOT NULL", null).detail(); + List bo_act_dataid = SDK.getBOAPI().query("BO_ACT_DATAID").addQuery("PROCESSID=", processInstId) + .addQuery("USER_ID=", usercode).list(); + if (bo_act_dataid.size() > 0) { + System.out.println("查询未读数据=============" + processInstId + "USER_ID=========" + usercode); + for (BO bo : bo_act_dataid) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("action", "read"); + jsonObject.put("status", "1"); + jsonObject.put("dataid", bo.getString("DATAID")); + String xmlStr = "\n" + + " " + " " + " " + + " " + "" + " " + + " " + " " + ""; + HttpClient client = new HttpClient(); + int timeout = 10000; + String readurl = SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "readurl"); + String s = UtilUrl.doPostSoap(readurl, xmlStr, ""); + System.err.println(instanceById.getTitle() + "OA待阅PC端阅读返回=======>" + s); + String nums = DBSql.getString( + "select READNUM from BO_EU_PAL_READ_LOG where PROCESSID = '" + processInstId + "'"); + if (UtilString.isNotEmpty(nums)) { + Integer read_num = Integer.valueOf(nums); + read_num += 1; + DBSql.update("update BO_EU_PAL_READ_LOG set READNUM = '" + read_num + "' where PROCESSID = '" + + processInstId + "'"); + } + } + + } else { + List actAlreadyDataid = SDK.getBOAPI().query("BO_ACT_ALREADY_DATAID").addQuery("PROCESSID=", processInstId) + .addQuery("USER_ID=", usercode).list(); + if (actAlreadyDataid.size() > 0) { + System.out.println("查询已读数据=============" + processInstId + "USER_ID=========" + usercode); + for (BO bo : actAlreadyDataid) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("action", "read"); + jsonObject.put("status", "1"); + jsonObject.put("dataid", bo.getString("DATAID")); + String xmlStr = "\n" + + " " + " " + " " + + " " + "" + " " + + " " + " " + ""; + HttpClient client = new HttpClient(); + int timeout = 10000; + String readurl = SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "readurl"); + String s = UtilUrl.doPostSoap(readurl, xmlStr, ""); + System.err.println(instanceById.getTitle() + "OA待阅PC端阅读返回=======>" + s); + String nums = DBSql.getString( + "select READNUM from BO_EU_PAL_READ_LOG where PROCESSID = '" + processInstId + "'"); + if (UtilString.isNotEmpty(nums)) { + Integer read_num = Integer.valueOf(nums); + read_num += 1; + DBSql.update("update BO_EU_PAL_READ_LOG set READNUM = '" + read_num + "' where PROCESSID = '" + + processInstId + "'"); + } + } + + } + } + + // 用户打开阅览界面日志 + setUserLog(processInstId, me.getUID(), "3"); + + // } + } catch (Exception e) { + e.printStackTrace(); + } finally { + conn.close(); + } + return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.integration", html, map); + } - } - // } - } catch (Exception e) { - e.printStackTrace(); - } finally { - conn.close(); - } - return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.integration", html, map); - } - //门户待阅同步更新 - public String setRecord(String uid, String id,String fileName) { - String sql = "SELECT * FROM BO_EU_PAL_RECORD WHERE FILEID = ? AND READFILENAME = ?"; - RowMap map = DBSql.getMap(sql, new Object[] { id, uid }); - int num = 0; - if (null != map) { - String readCount = map.getString("READFILECOUNT"); - int count = Integer.parseInt(readCount) + 1; - String s = "UPDATE BO_EU_PAL_RECORD SET READFILECOUNT = ? WHERE FILEID = ? AND READFILENAME = ?"; - num = DBSql.update(s, new Object[] { count, id, uid }); - } else { - BO bo = new BO(); - bo.set("FILEID", id); - bo.set("FILENAME", fileName); - bo.set("READFILENAME", uid); - bo.set("READFILETIME", LocalDate.now()); - bo.set("READFILECOUNT", "1"); - num = SDK.getBOAPI().createDataBO("BO_EU_PAL_RECORD", bo, UserContext.fromUID(uid)); - } + public String setRecord(String uid, String id, String fileName) { + String sql = "SELECT * FROM BO_EU_PAL_RECORD WHERE FILEID = ? AND READFILENAME = ?"; + RowMap map = DBSql.getMap(sql, new Object[]{id, uid}); + int num = 0; + if (null != map) { + String readCount = map.getString("READFILECOUNT"); + int count = Integer.parseInt(readCount) + 1; + String s = "UPDATE BO_EU_PAL_RECORD SET READFILECOUNT = ? WHERE FILEID = ? AND READFILENAME = ?"; + num = DBSql.update(s, new Object[]{count, id, uid}); + } else { + BO bo = new BO(); + bo.set("FILEID", id); + bo.set("FILENAME", fileName); + bo.set("READFILENAME", uid); + bo.set("READFILETIME", LocalDate.now()); + bo.set("READFILECOUNT", "1"); + num = SDK.getBOAPI().createDataBO("BO_EU_PAL_RECORD", bo, UserContext.fromUID(uid)); + } - return num + ""; - } + return num + ""; + } - - @Mapping("com.yili_process_page_phone") - public String processPhone(UserContext me, RequestParams params) throws SQLException { - ArrayList isNumberAscArray = new ArrayList(); - String userMobile = me.getDeviceType(); - Connection conn = DBSql.open(); - JSONArray jsonArray = new JSONArray(); - String html = "index_phone.html"; - Map map = new LinkedHashMap(); - try { - // UserContext uc = UserContext.fromSessionId(sid); - String sid = me.getSessionId(); - String processInstId = params.get("processInstId"); - String taskInstId = params.get("taskInstId"); - ProcessInstance instanceById = SDK.getProcessAPI().getInstanceById(processInstId); - try { - //记录门户待阅 - setRecord(me.getUID(), processInstId,instanceById.getTitle()); - // 用户打开阅览界面日志 - setUserLog(processInstId, me.getUID(), "3"); + @Mapping("com.yili_process_page_phone") + public String processPhone(UserContext me, RequestParams params) throws SQLException { + ArrayList isNumberAscArray = new ArrayList(); + String userMobile = me.getDeviceType(); + Connection conn = DBSql.open(); + JSONArray jsonArray = new JSONArray(); - } catch (Exception e) { - } - String usercode = "admin"; - if (UtilString.isNotEmpty(me.getUID())) { - usercode = me.getUID(); - } - StringBuffer sb = new StringBuffer(); - - String sourceAppId = instanceById.getAppId(); + String html = "index_phone.html"; + Map map = new LinkedHashMap(); + try { + // UserContext uc = UserContext.fromSessionId(sid); + String sid = me.getSessionId(); + String processInstId = params.get("processInstId"); + String taskInstId = params.get("taskInstId"); + ProcessInstance instanceById = SDK.getProcessAPI().getInstanceById(processInstId); + try { + //记录门户待阅 + setRecord(me.getUID(), processInstId, instanceById.getTitle()); + + + } catch (Exception e) { + } + String usercode = "admin"; + if (UtilString.isNotEmpty(me.getUID())) { + usercode = me.getUID(); + } + StringBuffer sb = new StringBuffer(); + + String sourceAppId = instanceById.getAppId(); // aslp服务地址 - String aslp = "aslp://com.actionsoft.apps.addons.onlinedoc/filePreview"; - String substring = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId) - .addQuery("OPTIONTYPE IS NOT NULL", null).detail().getString("RELEASE_INSTRUCTIONS"); - BO bo_act_coe_publish = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId) - .addQuery("OPTIONTYPE IS NOT NULL", null).detail(); + String aslp = "aslp://com.actionsoft.apps.addons.onlinedoc/filePreview"; + String substring = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId) + .addQuery("OPTIONTYPE IS NOT NULL", null).detail().getString("RELEASE_INSTRUCTIONS"); + BO bo_act_coe_publish = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId) + .addQuery("OPTIONTYPE IS NOT NULL", null).detail(); - List list = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_N", true).addQuery("BINDID=", processInstId) - .orderByCreated().asc().list(); - List lists = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_C", true).addQuery("BINDID=", processInstId) - .orderByCreated().asc().list(); - List list_stop = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_S", true).addQuery("BINDID=", processInstId) - .orderByCreated().asc().list(); - int num = 1; + List list = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_N", true).addQuery("BINDID=", processInstId) + .orderByCreated().asc().list(); + List lists = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_C", true).addQuery("BINDID=", processInstId) + .orderByCreated().asc().list(); + List list_stop = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH_S", true).addQuery("BINDID=", processInstId) + .orderByCreated().asc().list(); + int num = 1; - if (list.size() > 0) { - for (BO bo : list) { + if (list.size() > 0) { + for (BO bo : list) { - if (StringUtils.isNotEmpty(bo.getString("TASKID")) - && !bo.getString("TASKID").equals("submit_create")) { - OutputTaskModel model = new OutputTask().getTaskReportById(bo.getString("TASKID")); - // System.out.println(",odel>>>>>>>>"+bo.getString("TASKID")); - OutputAppProfile appProfile = OutputAppManager.getProfile(model.getProfileId()); - if (appProfile == null) { - throw new AWSException( - "Not Find OutputAppProfile! profileId=" + "_900fde3255248317266cad1c72f157b1"); - } - DCPluginProfile dcProfile = SDK.getDCAPI().getDCProfile(appProfile.getAppContext().getId(), - OutputConst.EXT_APP_DC_OUTPUT); - if (dcProfile == null) - throw new AWSException( - "Not Find DCProfile! repositoryName=" + OutputConst.EXT_APP_DC_OUTPUT); - String sql_lever = "SELECT PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID = '" - + bo.getString("PUBLISHFILEID") + "'"; - String lever = DBSql.getString(conn, sql_lever); - // System.out.println("lever====>>>>>"+lever); - if (lever.length() != 5) { - lever = lever + ".0"; - } - String name = bo.getString("PUBLISHFILENAME").replaceAll("/", ""); - DCContext dcContext = new DCContext(me, dcProfile, appProfile.getAppContext().getId(), - model.getWsId(), bo.getString("TASKID"), name + "_" + lever + ".doc"); + if (StringUtils.isNotEmpty(bo.getString("TASKID")) + && !bo.getString("TASKID").equals("submit_create")) { + OutputTaskModel model = new OutputTask().getTaskReportById(bo.getString("TASKID")); + // System.out.println(",odel>>>>>>>>"+bo.getString("TASKID")); + OutputAppProfile appProfile = OutputAppManager.getProfile(model.getProfileId()); + if (appProfile == null) { + throw new AWSException( + "Not Find OutputAppProfile! profileId=" + "_900fde3255248317266cad1c72f157b1"); + } + DCPluginProfile dcProfile = SDK.getDCAPI().getDCProfile(appProfile.getAppContext().getId(), + OutputConst.EXT_APP_DC_OUTPUT); + if (dcProfile == null) + throw new AWSException( + "Not Find DCProfile! repositoryName=" + OutputConst.EXT_APP_DC_OUTPUT); + String sql_lever = "SELECT PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID = '" + + bo.getString("PUBLISHFILEID") + "'"; + String lever = DBSql.getString(conn, sql_lever); + // System.out.println("lever====>>>>>"+lever); + if (lever.length() != 5) { + lever = lever + ".0"; + } + String name = bo.getString("PUBLISHFILENAME").replaceAll("/", ""); + DCContext dcContext = new DCContext(me, dcProfile, appProfile.getAppContext().getId(), + model.getWsId(), bo.getString("TASKID"), name + "_" + lever + ".doc"); // 调用App // 参数定义列表 - Map params_preview = new HashMap(); + Map params_preview = new HashMap(); //文档是否允许下载,必填 - params_preview.put("isDownload", true); + params_preview.put("isDownload", true); //显示文件名,必填 - params_preview.put("fileNameOriginal", name + "_" + lever + ".doc"); + params_preview.put("fileNameOriginal", name + "_" + lever + ".doc"); //PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 - params_preview.put("isPDFCovertPNG", 0); + params_preview.put("isPDFCovertPNG", 0); //groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 - params_preview.put("extParams", ""); + params_preview.put("extParams", ""); //文档是否允许打印,必填 - params_preview.put("isPrint", true); + params_preview.put("isPrint", true); //是否显示顶部工具栏的返回按钮,默认显示,非必填 - params_preview.put("isShowBackbtn", false); + params_preview.put("isShowBackbtn", false); //原文件DC,必填 - params_preview.put("sourceDc", dcContext); + params_preview.put("sourceDc", dcContext); //是否显示默认预览工具栏,必填 - params_preview.put("isShowDefaultToolbar", true); + params_preview.put("isShowDefaultToolbar", true); //文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 - params_preview.put("isCopy", true); + params_preview.put("isCopy", true); //sessionid,必填 - params_preview.put("sid", sid); + params_preview.put("sid", sid); //文档是否加密,必填 - params_preview.put("isEncrypt", false); - AppAPI appAPI = SDK.getAppAPI(); + params_preview.put("isEncrypt", false); + AppAPI appAPI = SDK.getAppAPI(); //文档预览 - ResponseObject ro = appAPI.callASLP(appAPI.getAppContext(sourceAppId), aslp, params_preview); + ResponseObject ro = appAPI.callASLP(appAPI.getAppContext(sourceAppId), aslp, params_preview); - // System.out.println("ro>>>>>>>>>>>>>>>>"+ro); - String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE id ='" - + bo.get("PUBLISHFILEID") + "'"; - List Row_maps_is_not_publish = DBSql.getMaps(conn, is_not_publish_sql); + // System.out.println("ro>>>>>>>>>>>>>>>>"+ro); + String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE id ='" + + bo.get("PUBLISHFILEID") + "'"; + List Row_maps_is_not_publish = DBSql.getMaps(conn, is_not_publish_sql); - /* - * boolean havingStartProcessPermission - * =SDK.getPermAPI().havingStartProcessPermission(uc.getUID(), processDefId); - * if(havingStartProcessPermission) { - */ - BigDecimal big = new BigDecimal(Row_maps_is_not_publish.get(0).getString("PLVER")); + /* + * boolean havingStartProcessPermission + * =SDK.getPermAPI().havingStartProcessPermission(uc.getUID(), processDefId); + * if(havingStartProcessPermission) { + */ + BigDecimal big = new BigDecimal(Row_maps_is_not_publish.get(0).getString("PLVER")); - JSONObject jsonObjects = new JSONObject(); - jsonObjects.put("title", bo.get("PUBLISHFILENAME")); - jsonObjects.put("file_number",0); - jsonObjects.put("link", - "https://bpm.yili.com:8088/portal/r" + ro.get("url").toString().substring(1)); - // jsonObjects.put("size","12k"); - jsonArray.add(jsonObjects); - } + JSONObject jsonObjects = new JSONObject(); + jsonObjects.put("title", bo.get("PUBLISHFILENAME")); + jsonObjects.put("file_number", 0); + jsonObjects.put("link", + "https://bpm.yili.com:8088/portal/r" + ro.get("url").toString().substring(1)); + // jsonObjects.put("size","12k"); + jsonArray.add(jsonObjects); + } - String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("PUBLISHFILEID") + "'" + ") ORDER BY FILENAME ASC"; - String methodId = DBSql.getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("PUBLISHFILEID") + "'"); - if (UtilString.isNotEmpty(methodId)) { - if (methodId.equals("control.policy")) { - sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("PUBLISHFILEID") + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; - } - } - // String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where - // palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= - // '"+bo.getString("PUBLISHFILEID")+"') AND FILETYPE = 'f'"; - List maps = DBSql.getMaps(conn, sql_upfile); - UserContext userContext = UserContext.fromSessionId(sid); - UpfileWeb upfileWeb = new UpfileWeb(userContext); - - for (RowMap row : maps) { - UpfileModel upfileModel = new UpfileModel(); - upfileModel.setType(row.getString("FILETYPE")); - upfileModel.setFileName(row.getString("FILENAME")); - upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); - upfileModel.setShape_uuid(row.getString("SHAPEID")); - DCContext dcContexts = upfileWeb.getDCContext(upfileModel); - Map params_previews = new HashMap(); + String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("PUBLISHFILEID") + "'" + ") ORDER BY FILENAME ASC"; + String methodId = DBSql.getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("PUBLISHFILEID") + "'"); + if (UtilString.isNotEmpty(methodId)) { + if (methodId.equals("control.policy")) { + sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("PUBLISHFILEID") + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; + } + } + // String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where + // palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= + // '"+bo.getString("PUBLISHFILEID")+"') AND FILETYPE = 'f'"; + List maps = DBSql.getMaps(conn, sql_upfile); + UserContext userContext = UserContext.fromSessionId(sid); + UpfileWeb upfileWeb = new UpfileWeb(userContext); + + for (RowMap row : maps) { + UpfileModel upfileModel = new UpfileModel(); + upfileModel.setType(row.getString("FILETYPE")); + upfileModel.setFileName(row.getString("FILENAME")); + upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); + upfileModel.setShape_uuid(row.getString("SHAPEID")); + DCContext dcContexts = upfileWeb.getDCContext(upfileModel); + Map params_previews = new HashMap(); //文档是否允许下载,必填 - params_previews.put("isDownload", true); + params_previews.put("isDownload", true); //显示文件名,必填 - params_previews.put("fileNameOriginal", row.getString("FILENAME")); + params_previews.put("fileNameOriginal", row.getString("FILENAME")); //PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 - params_previews.put("isPDFCovertPNG", 0); + params_previews.put("isPDFCovertPNG", 0); //groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 - params_previews.put("extParams", ""); + params_previews.put("extParams", ""); //文档是否允许打印,必填 - params_previews.put("isPrint", true); + params_previews.put("isPrint", true); //是否显示顶部工具栏的返回按钮,默认显示,非必填 - params_previews.put("isShowBackbtn", ""); + params_previews.put("isShowBackbtn", ""); //原文件DC,必填 - params_previews.put("sourceDc", dcContexts); + params_previews.put("sourceDc", dcContexts); //是否显示默认预览工具栏,必填 - params_previews.put("isShowDefaultToolbar", true); + params_previews.put("isShowDefaultToolbar", true); //文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 - params_previews.put("isCopy", true); + params_previews.put("isCopy", true); //sessionid,必填 - params_previews.put("sid", sid); + params_previews.put("sid", sid); //文档是否加密,必填 - params_previews.put("isEncrypt", false); - AppAPI appAPIs = SDK.getAppAPI(); + params_previews.put("isEncrypt", false); + AppAPI appAPIs = SDK.getAppAPI(); //文档预览 - ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, - params_previews); + ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, + params_previews); - JSONObject jsonObject1 = new JSONObject(); - - //按照附件编号排序 - String fileNamel= row.getString("FILENAME"); - if(UtilString.isNotEmpty(fileNamel)&&fileNamel.contains("附件")&&fileNamel.length()>2&&(fileNamel.contains(":")||fileNamel.contains(":"))) { - if(fileNamel.indexOf("附件")==0) { - int indexOf2 = 3; - if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - }else if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - } - String numberStr = fileNamel.substring(2,indexOf2); - if(isNumeric(numberStr)&&!"".equals(numberStr)) { - isNumberAscArray.add("true"); - int fileNumber = Integer.parseInt(numberStr); - jsonObject1.put("file_number", fileNumber); - }else { - isNumberAscArray.add("false"); - } - }else { - isNumberAscArray.add("false"); - } - - }else { - isNumberAscArray.add("false"); - } - jsonObject1.put("title", row.getString("FILENAME")); - String base_url = "https://bpm.yili.com:8088/portal/r"; - if (row.getString("FILENAME").toString().contains(".xls") - || row.getString("FILENAME").toString().contains(".xlsx")) { - jsonObject1.put("link", ros.get("url").toString().substring(0)); - } else { - jsonObject1.put("link", base_url + ros.get("url").toString().substring(1)); - } - // jsonObject1.put("size","12k"); - jsonArray.add(jsonObject1); - num++; - } - num++; - } + JSONObject jsonObject1 = new JSONObject(); - } + //按照附件编号排序 + String fileNamel = row.getString("FILENAME"); + if (UtilString.isNotEmpty(fileNamel) && fileNamel.contains("附件") && fileNamel.length() > 2 && (fileNamel.contains(":") || fileNamel.contains(":"))) { + if (fileNamel.indexOf("附件") == 0) { + int indexOf2 = 3; + if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } else if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } + String numberStr = fileNamel.substring(2, indexOf2); + if (isNumeric(numberStr) && !"".equals(numberStr)) { + isNumberAscArray.add("true"); + int fileNumber = Integer.parseInt(numberStr); + jsonObject1.put("file_number", fileNumber); + } else { + isNumberAscArray.add("false"); + } + } else { + isNumberAscArray.add("false"); + } - /** - * 当发布和变更为空时,显示作废的文件 - */ - if (list.size() == 0 && lists.size() == 0) { - if (list_stop.size() > 0) { - for (BO bo : list_stop) { + } else { + isNumberAscArray.add("false"); + } + jsonObject1.put("title", row.getString("FILENAME")); + String base_url = "https://bpm.yili.com:8088/portal/r"; + if (row.getString("FILENAME").toString().contains(".xls") + || row.getString("FILENAME").toString().contains(".xlsx")) { + jsonObject1.put("link", ros.get("url").toString().substring(0)); + } else { + jsonObject1.put("link", base_url + ros.get("url").toString().substring(1)); + } + // jsonObject1.put("size","12k"); + jsonArray.add(jsonObject1); + num++; + } + num++; + } - if (StringUtils.isNotEmpty(bo.getString("TASKID")) - && !bo.getString("TASKID").equals("submit_create")) { - OutputTaskModel model = new OutputTask().getTaskReportById(bo.getString("TASKID")); - // System.out.println(",odel>>>>>>>>"+bo.getString("TASKID")); - OutputAppProfile appProfile = OutputAppManager.getProfile(model.getProfileId()); - if (appProfile == null) { - throw new AWSException( - "Not Find OutputAppProfile! profileId=" + "_900fde3255248317266cad1c72f157b1"); - } - DCPluginProfile dcProfile = SDK.getDCAPI().getDCProfile(appProfile.getAppContext().getId(), - OutputConst.EXT_APP_DC_OUTPUT); - if (dcProfile == null) - throw new AWSException( - "Not Find DCProfile! repositoryName=" + OutputConst.EXT_APP_DC_OUTPUT); - String sql_lever = "SELECT PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID = '" - + bo.getString("STOPFILEID") + "'"; - String lever = DBSql.getString(conn, sql_lever); - // System.out.println("lever====>>>>>"+lever); - if (lever.length() != 5) { - lever = lever + ".0"; - } - String name = bo.getString("STOPFILENAME").replaceAll("/", ""); - DCContext dcContext = new DCContext(me, dcProfile, appProfile.getAppContext().getId(), - model.getWsId(), bo.getString("TASKID"), name + "_" + lever + ".doc"); + } - // 调用App + /** + * 当发布和变更为空时,显示作废的文件 + */ + if (list.size() == 0 && lists.size() == 0) { + if (list_stop.size() > 0) { + for (BO bo : list_stop) { - // 参数定义列表 - Map params_preview = new HashMap(); - // 文档是否允许下载,必填 - params_preview.put("isDownload", true); - // 显示文件名,必填 - params_preview.put("fileNameOriginal", name + "_" + lever + ".doc"); - // PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 - params_preview.put("isPDFCovertPNG", 0); - // groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 - params_preview.put("extParams", ""); - // 文档是否允许打印,必填 - params_preview.put("isPrint", true); - // 是否显示顶部工具栏的返回按钮,默认显示,非必填 - params_preview.put("isShowBackbtn", false); - // 原文件DC,必填 - params_preview.put("sourceDc", dcContext); - // 是否显示默认预览工具栏,必填 - params_preview.put("isShowDefaultToolbar", true); - // 文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 - params_preview.put("isCopy", true); - // sessionid,必填 - params_preview.put("sid", sid); - // 文档是否加密,必填 - params_preview.put("isEncrypt", false); - AppAPI appAPI = SDK.getAppAPI(); - // 文档预览 - ResponseObject ro = appAPI.callASLP(appAPI.getAppContext(sourceAppId), aslp, - params_preview); + if (StringUtils.isNotEmpty(bo.getString("TASKID")) + && !bo.getString("TASKID").equals("submit_create")) { + OutputTaskModel model = new OutputTask().getTaskReportById(bo.getString("TASKID")); + // System.out.println(",odel>>>>>>>>"+bo.getString("TASKID")); + OutputAppProfile appProfile = OutputAppManager.getProfile(model.getProfileId()); + if (appProfile == null) { + throw new AWSException( + "Not Find OutputAppProfile! profileId=" + "_900fde3255248317266cad1c72f157b1"); + } + DCPluginProfile dcProfile = SDK.getDCAPI().getDCProfile(appProfile.getAppContext().getId(), + OutputConst.EXT_APP_DC_OUTPUT); + if (dcProfile == null) + throw new AWSException( + "Not Find DCProfile! repositoryName=" + OutputConst.EXT_APP_DC_OUTPUT); + String sql_lever = "SELECT PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID = '" + + bo.getString("STOPFILEID") + "'"; + String lever = DBSql.getString(conn, sql_lever); + // System.out.println("lever====>>>>>"+lever); + if (lever.length() != 5) { + lever = lever + ".0"; + } + String name = bo.getString("STOPFILENAME").replaceAll("/", ""); + DCContext dcContext = new DCContext(me, dcProfile, appProfile.getAppContext().getId(), + model.getWsId(), bo.getString("TASKID"), name + "_" + lever + ".doc"); - // System.out.println("ro>>>>>>>>>>>>>>>>"+ro); - String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE id ='" - + bo.get("STOPFILEID") + "'"; - List Row_maps_is_not_publish = DBSql.getMaps(conn, is_not_publish_sql); + // 调用App - /* - * boolean havingStartProcessPermission - * =SDK.getPermAPI().havingStartProcessPermission(uc.getUID(), processDefId); - * if(havingStartProcessPermission) { - */ - BigDecimal big = new BigDecimal(Row_maps_is_not_publish.get(0).getString("PLVER")); + // 参数定义列表 + Map params_preview = new HashMap(); + // 文档是否允许下载,必填 + params_preview.put("isDownload", true); + // 显示文件名,必填 + params_preview.put("fileNameOriginal", name + "_" + lever + ".doc"); + // PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 + params_preview.put("isPDFCovertPNG", 0); + // groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 + params_preview.put("extParams", ""); + // 文档是否允许打印,必填 + params_preview.put("isPrint", true); + // 是否显示顶部工具栏的返回按钮,默认显示,非必填 + params_preview.put("isShowBackbtn", false); + // 原文件DC,必填 + params_preview.put("sourceDc", dcContext); + // 是否显示默认预览工具栏,必填 + params_preview.put("isShowDefaultToolbar", true); + // 文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 + params_preview.put("isCopy", true); + // sessionid,必填 + params_preview.put("sid", sid); + // 文档是否加密,必填 + params_preview.put("isEncrypt", false); + AppAPI appAPI = SDK.getAppAPI(); + // 文档预览 + ResponseObject ro = appAPI.callASLP(appAPI.getAppContext(sourceAppId), aslp, + params_preview); - JSONObject jsonObjects = new JSONObject(); - jsonObjects.put("title", bo.get("STOPFILENAME")); - jsonObjects.put("file_number",0); - jsonObjects.put("link", - "https://bpm.yili.com:8088/portal/r" + ro.get("url").toString().substring(1)); - // jsonObjects.put("size","12k"); - jsonArray.add(jsonObjects); - } + // System.out.println("ro>>>>>>>>>>>>>>>>"+ro); + String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE id ='" + + bo.get("STOPFILEID") + "'"; + List Row_maps_is_not_publish = DBSql.getMaps(conn, is_not_publish_sql); - /* - * String sql_upfile = - * "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - * +bo.getString("STOPFILEID")+"'" + ")"; - */ - String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("STOPFILEID") + "'" + ") ORDER BY FILENAME ASC"; - String methodId = DBSql - .getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("STOPFILEID") + "'"); - if (UtilString.isNotEmpty(methodId)) { - if (methodId.equals("control.policy")) { - sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("STOPFILEID") + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; - } - } - // String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where - // palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= - // '"+bo.getString("STOPFILEID")+"') AND FILETYPE = 'f'"; - List maps = DBSql.getMaps(conn, sql_upfile); - UserContext userContext = UserContext.fromSessionId(sid); - UpfileWeb upfileWeb = new UpfileWeb(userContext); + /* + * boolean havingStartProcessPermission + * =SDK.getPermAPI().havingStartProcessPermission(uc.getUID(), processDefId); + * if(havingStartProcessPermission) { + */ + BigDecimal big = new BigDecimal(Row_maps_is_not_publish.get(0).getString("PLVER")); - for (RowMap row : maps) { - UpfileModel upfileModel = new UpfileModel(); - upfileModel.setType(row.getString("FILETYPE")); - upfileModel.setFileName(row.getString("FILENAME")); - upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); - upfileModel.setShape_uuid(row.getString("SHAPEID")); - DCContext dcContexts = upfileWeb.getDCContext(upfileModel); - Map params_previews = new HashMap(); - // 文档是否允许下载,必填 - params_previews.put("isDownload", true); - // 显示文件名,必填 - params_previews.put("fileNameOriginal", row.getString("FILENAME")); - // PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 - params_previews.put("isPDFCovertPNG", 0); - // groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 - params_previews.put("extParams", ""); - // 文档是否允许打印,必填 - params_previews.put("isPrint", true); - // 是否显示顶部工具栏的返回按钮,默认显示,非必填 - params_previews.put("isShowBackbtn", ""); - // 原文件DC,必填 - params_previews.put("sourceDc", dcContexts); - // 是否显示默认预览工具栏,必填 - params_previews.put("isShowDefaultToolbar", true); - // 文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 - params_previews.put("isCopy", true); - // sessionid,必填 - params_previews.put("sid", sid); - // 文档是否加密,必填 - params_previews.put("isEncrypt", false); - AppAPI appAPIs = SDK.getAppAPI(); - // 文档预览 - ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, - params_previews); + JSONObject jsonObjects = new JSONObject(); + jsonObjects.put("title", bo.get("STOPFILENAME")); + jsonObjects.put("file_number", 0); + jsonObjects.put("link", + "https://bpm.yili.com:8088/portal/r" + ro.get("url").toString().substring(1)); + // jsonObjects.put("size","12k"); + jsonArray.add(jsonObjects); + } - JSONObject jsonObject1 = new JSONObject(); - //按照附件编号排序 - String fileNamel= row.getString("FILENAME"); - if(UtilString.isNotEmpty(fileNamel)&&fileNamel.contains("附件")&&fileNamel.length()>2&&(fileNamel.contains(":")||fileNamel.contains(":"))) { - if(fileNamel.indexOf("附件")==0) { - int indexOf2 = 3; - if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - }else if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - } - String numberStr = fileNamel.substring(2,indexOf2); - if(isNumeric(numberStr)&&!"".equals(numberStr)) { - isNumberAscArray.add("true"); - int fileNumber = Integer.parseInt(numberStr); - jsonObject1.put("file_number", fileNumber); - }else { - isNumberAscArray.add("false"); - } - }else { - isNumberAscArray.add("false"); - } - - }else { - isNumberAscArray.add("false"); - } - jsonObject1.put("title", row.getString("FILENAME")); - String base_url = "https://bpm.yili.com:8088/portal/r"; - if (row.getString("FILENAME").toString().contains(".xls") - || row.getString("FILENAME").toString().contains(".xlsx")) { - jsonObject1.put("link", ros.get("url").toString().substring(0)); - } else { - jsonObject1.put("link", base_url + ros.get("url").toString().substring(1)); - } + /* + * String sql_upfile = + * "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + * +bo.getString("STOPFILEID")+"'" + ")"; + */ + String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("STOPFILEID") + "'" + ") ORDER BY FILENAME ASC"; + String methodId = DBSql + .getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("STOPFILEID") + "'"); + if (UtilString.isNotEmpty(methodId)) { + if (methodId.equals("control.policy")) { + sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("STOPFILEID") + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; + } + } + // String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where + // palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= + // '"+bo.getString("STOPFILEID")+"') AND FILETYPE = 'f'"; + List maps = DBSql.getMaps(conn, sql_upfile); + UserContext userContext = UserContext.fromSessionId(sid); + UpfileWeb upfileWeb = new UpfileWeb(userContext); - // jsonObject1.put("size","12k"); - jsonArray.add(jsonObject1); - num++; - } - num++; - } - } + for (RowMap row : maps) { + UpfileModel upfileModel = new UpfileModel(); + upfileModel.setType(row.getString("FILETYPE")); + upfileModel.setFileName(row.getString("FILENAME")); + upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); + upfileModel.setShape_uuid(row.getString("SHAPEID")); + DCContext dcContexts = upfileWeb.getDCContext(upfileModel); + Map params_previews = new HashMap(); + // 文档是否允许下载,必填 + params_previews.put("isDownload", true); + // 显示文件名,必填 + params_previews.put("fileNameOriginal", row.getString("FILENAME")); + // PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 + params_previews.put("isPDFCovertPNG", 0); + // groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 + params_previews.put("extParams", ""); + // 文档是否允许打印,必填 + params_previews.put("isPrint", true); + // 是否显示顶部工具栏的返回按钮,默认显示,非必填 + params_previews.put("isShowBackbtn", ""); + // 原文件DC,必填 + params_previews.put("sourceDc", dcContexts); + // 是否显示默认预览工具栏,必填 + params_previews.put("isShowDefaultToolbar", true); + // 文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 + params_previews.put("isCopy", true); + // sessionid,必填 + params_previews.put("sid", sid); + // 文档是否加密,必填 + params_previews.put("isEncrypt", false); + AppAPI appAPIs = SDK.getAppAPI(); + // 文档预览 + ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, + params_previews); - } + JSONObject jsonObject1 = new JSONObject(); + //按照附件编号排序 + String fileNamel = row.getString("FILENAME"); + if (UtilString.isNotEmpty(fileNamel) && fileNamel.contains("附件") && fileNamel.length() > 2 && (fileNamel.contains(":") || fileNamel.contains(":"))) { + if (fileNamel.indexOf("附件") == 0) { + int indexOf2 = 3; + if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } else if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } + String numberStr = fileNamel.substring(2, indexOf2); + if (isNumeric(numberStr) && !"".equals(numberStr)) { + isNumberAscArray.add("true"); + int fileNumber = Integer.parseInt(numberStr); + jsonObject1.put("file_number", fileNumber); + } else { + isNumberAscArray.add("false"); + } + } else { + isNumberAscArray.add("false"); + } - if (lists.size() > 0) { - for (BO bo : lists) { + } else { + isNumberAscArray.add("false"); + } + jsonObject1.put("title", row.getString("FILENAME")); + String base_url = "https://bpm.yili.com:8088/portal/r"; + if (row.getString("FILENAME").toString().contains(".xls") + || row.getString("FILENAME").toString().contains(".xlsx")) { + jsonObject1.put("link", ros.get("url").toString().substring(0)); + } else { + jsonObject1.put("link", base_url + ros.get("url").toString().substring(1)); + } - if (StringUtils.isNotEmpty(bo.getString("TASKID")) - && !bo.getString("TASKID").equals("submit_create")) { - OutputTaskModel model = new OutputTask().getTaskReportById(bo.getString("TASKID")); - // System.out.println(",odel>>>>>>>>"+bo.getString("TASKID")); - OutputAppProfile appProfile = OutputAppManager.getProfile(model.getProfileId()); - if (appProfile == null) { - throw new AWSException( - "Not Find OutputAppProfile! profileId=" + "_900fde3255248317266cad1c72f157b1"); - } - DCPluginProfile dcProfile = SDK.getDCAPI().getDCProfile(appProfile.getAppContext().getId(), - OutputConst.EXT_APP_DC_OUTPUT); - if (dcProfile == null) - throw new AWSException( - "Not Find DCProfile! repositoryName=" + OutputConst.EXT_APP_DC_OUTPUT); - String sql_lever = "SELECT PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID = '" - + bo.getString("CHANGEDFILEIDNEW") + "'"; - String lever = DBSql.getString(conn, sql_lever); - // System.out.println("lever====>>>>>"+lever); - if (lever.length() != 5) { - lever = lever + ".0"; - } - String name = bo.getString("CHANGEDFILENAMENEW").replaceAll("/", ""); - DCContext dcContext = new DCContext(me, dcProfile, appProfile.getAppContext().getId(), - model.getWsId(), bo.getString("TASKID"), name + "_" + lever + ".doc"); + // jsonObject1.put("size","12k"); + jsonArray.add(jsonObject1); + num++; + } + num++; + } + } + + } + + if (lists.size() > 0) { + for (BO bo : lists) { + + if (StringUtils.isNotEmpty(bo.getString("TASKID")) + && !bo.getString("TASKID").equals("submit_create")) { + OutputTaskModel model = new OutputTask().getTaskReportById(bo.getString("TASKID")); + // System.out.println(",odel>>>>>>>>"+bo.getString("TASKID")); + OutputAppProfile appProfile = OutputAppManager.getProfile(model.getProfileId()); + if (appProfile == null) { + throw new AWSException( + "Not Find OutputAppProfile! profileId=" + "_900fde3255248317266cad1c72f157b1"); + } + DCPluginProfile dcProfile = SDK.getDCAPI().getDCProfile(appProfile.getAppContext().getId(), + OutputConst.EXT_APP_DC_OUTPUT); + if (dcProfile == null) + throw new AWSException( + "Not Find DCProfile! repositoryName=" + OutputConst.EXT_APP_DC_OUTPUT); + String sql_lever = "SELECT PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID = '" + + bo.getString("CHANGEDFILEIDNEW") + "'"; + String lever = DBSql.getString(conn, sql_lever); + // System.out.println("lever====>>>>>"+lever); + if (lever.length() != 5) { + lever = lever + ".0"; + } + String name = bo.getString("CHANGEDFILENAMENEW").replaceAll("/", ""); + DCContext dcContext = new DCContext(me, dcProfile, appProfile.getAppContext().getId(), + model.getWsId(), bo.getString("TASKID"), name + "_" + lever + ".doc"); // 调用App // 参数定义列表 - Map params_preview = new HashMap(); + Map params_preview = new HashMap(); //文档是否允许下载,必填 - params_preview.put("isDownload", true); + params_preview.put("isDownload", true); //显示文件名,必填 - params_preview.put("fileNameOriginal", name + "_" + lever + ".doc"); + params_preview.put("fileNameOriginal", name + "_" + lever + ".doc"); //PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 - params_preview.put("isPDFCovertPNG", 0); + params_preview.put("isPDFCovertPNG", 0); //groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 - params_preview.put("extParams", ""); + params_preview.put("extParams", ""); //文档是否允许打印,必填 - params_preview.put("isPrint", true); + params_preview.put("isPrint", true); //是否显示顶部工具栏的返回按钮,默认显示,非必填 - params_preview.put("isShowBackbtn", false); + params_preview.put("isShowBackbtn", false); //原文件DC,必填 - params_preview.put("sourceDc", dcContext); + params_preview.put("sourceDc", dcContext); //是否显示默认预览工具栏,必填 - params_preview.put("isShowDefaultToolbar", true); + params_preview.put("isShowDefaultToolbar", true); //文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 - params_preview.put("isCopy", true); + params_preview.put("isCopy", true); //sessionid,必填 - params_preview.put("sid", sid); + params_preview.put("sid", sid); //文档是否加密,必填 - params_preview.put("isEncrypt", false); - AppAPI appAPI = SDK.getAppAPI(); + params_preview.put("isEncrypt", false); + AppAPI appAPI = SDK.getAppAPI(); //文档预览 - ResponseObject ro = appAPI.callASLP(appAPI.getAppContext(sourceAppId), aslp, params_preview); + ResponseObject ro = appAPI.callASLP(appAPI.getAppContext(sourceAppId), aslp, params_preview); - // System.out.println("ro>>>>>>>>>>>>>>>>"+ro); - String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE id ='" - + bo.get("CHANGEDFILEIDNEW") + "'"; - RowMap Row_maps_is_not_publish = DBSql.getMap(conn, is_not_publish_sql); + // System.out.println("ro>>>>>>>>>>>>>>>>"+ro); + String is_not_publish_sql = "SELECT id,PLVER FROM APP_ACT_COE_PAL_REPOSITORY WHERE id ='" + + bo.get("CHANGEDFILEIDNEW") + "'"; + RowMap Row_maps_is_not_publish = DBSql.getMap(conn, is_not_publish_sql); - /* - * boolean havingStartProcessPermission - * =SDK.getPermAPI().havingStartProcessPermission(uc.getUID(), processDefId); - * if(havingStartProcessPermission) { - */ - BigDecimal big = new BigDecimal(Row_maps_is_not_publish.getString("PLVER")); + /* + * boolean havingStartProcessPermission + * =SDK.getPermAPI().havingStartProcessPermission(uc.getUID(), processDefId); + * if(havingStartProcessPermission) { + */ + BigDecimal big = new BigDecimal(Row_maps_is_not_publish.getString("PLVER")); - JSONObject jsonObjects = new JSONObject(); - jsonObjects.put("title", bo.get("CHANGEDFILENAMENEW")); - jsonObjects.put("file_number",0); - jsonObjects.put("link", - "https://bpm.yili.com:8088/portal/r" + ro.get("url").toString().substring(1)); - // jsonObjects.put("size","12k"); - jsonArray.add(jsonObjects); - } + JSONObject jsonObjects = new JSONObject(); + jsonObjects.put("title", bo.get("CHANGEDFILENAMENEW")); + jsonObjects.put("file_number", 0); + jsonObjects.put("link", + "https://bpm.yili.com:8088/portal/r" + ro.get("url").toString().substring(1)); + // jsonObjects.put("size","12k"); + jsonArray.add(jsonObjects); + } - String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("CHANGEDFILEIDNEW") + "'" + ") ORDER BY FILENAME ASC"; - String methodId = DBSql.getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("CHANGEDFILEIDNEW") + "'"); - if (UtilString.isNotEmpty(methodId)) { - if (methodId.equals("control.policy")) { - sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" - + bo.getString("CHANGEDFILEIDNEW") - + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; - } - } + String sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("CHANGEDFILEIDNEW") + "'" + ") ORDER BY FILENAME ASC"; + String methodId = DBSql.getString("select PLMETHODID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("CHANGEDFILEIDNEW") + "'"); + if (UtilString.isNotEmpty(methodId)) { + if (methodId.equals("control.policy")) { + sql_upfile = "select * from APP_ACT_COE_PAL_UPFILE where palrepositoryid in (select ID from APP_ACT_COE_PAL_REPOSITORY where ID= '" + + bo.getString("CHANGEDFILEIDNEW") + + "') AND FILETYPE = 'f' ORDER BY FILENAME ASC"; + } + } - List maps = DBSql.getMaps(conn, sql_upfile); - UserContext userContext = UserContext.fromSessionId(sid); - UpfileWeb upfileWeb = new UpfileWeb(userContext); + List maps = DBSql.getMaps(conn, sql_upfile); + UserContext userContext = UserContext.fromSessionId(sid); + UpfileWeb upfileWeb = new UpfileWeb(userContext); - for (RowMap row : maps) { - UpfileModel upfileModel = new UpfileModel(); - upfileModel.setType(row.getString("FILETYPE")); - upfileModel.setFileName(row.getString("FILENAME")); - upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); - upfileModel.setShape_uuid(row.getString("SHAPEID")); - DCContext dcContexts = upfileWeb.getDCContext(upfileModel); - Map params_previews = new HashMap(); + for (RowMap row : maps) { + UpfileModel upfileModel = new UpfileModel(); + upfileModel.setType(row.getString("FILETYPE")); + upfileModel.setFileName(row.getString("FILENAME")); + upfileModel.setPl_uuid(row.getString("PALREPOSITORYID")); + upfileModel.setShape_uuid(row.getString("SHAPEID")); + DCContext dcContexts = upfileWeb.getDCContext(upfileModel); + Map params_previews = new HashMap(); //文档是否允许下载,必填 - params_previews.put("isDownload", true); + params_previews.put("isDownload", true); //显示文件名,必填 - params_previews.put("fileNameOriginal", row.getString("FILENAME")); + params_previews.put("fileNameOriginal", row.getString("FILENAME")); //PDF转图片处理选项。- 0代表只在需要时做转换;- 1代表打开即检查是否已转换成图片,如未处理,强制转换。默认0,非必填 - params_previews.put("isPDFCovertPNG", 0); + params_previews.put("isPDFCovertPNG", 0); //groupJson参数,用于表单附件OfficeOnline服务预览回传文件流,非必填 - params_previews.put("extParams", ""); + params_previews.put("extParams", ""); //文档是否允许打印,必填 - params_previews.put("isPrint", true); + params_previews.put("isPrint", true); //是否显示顶部工具栏的返回按钮,默认显示,非必填 - params_previews.put("isShowBackbtn", ""); + params_previews.put("isShowBackbtn", ""); //原文件DC,必填 - params_previews.put("sourceDc", dcContexts); + params_previews.put("sourceDc", dcContexts); //是否显示默认预览工具栏,必填 - params_previews.put("isShowDefaultToolbar", true); + params_previews.put("isShowDefaultToolbar", true); //文档是否允许复制。true为允许复制,转换结果为PDF格式文件;false为不可复制,转换结果为PNG格式文件(注意参数值为false时转换时间稍长),必填 - params_previews.put("isCopy", true); + params_previews.put("isCopy", true); //sessionid,必填 - params_previews.put("sid", sid); + params_previews.put("sid", sid); //文档是否加密,必填 - params_previews.put("isEncrypt", false); - AppAPI appAPIs = SDK.getAppAPI(); + params_previews.put("isEncrypt", false); + AppAPI appAPIs = SDK.getAppAPI(); //文档预览 - ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, - params_previews); + ResponseObject ros = appAPIs.callASLP(appAPIs.getAppContext(sourceAppId), aslp, + params_previews); - JSONObject jsonObject1 = new JSONObject(); - //按照附件编号排序 - String fileNamel= row.getString("FILENAME"); - if(UtilString.isNotEmpty(fileNamel)&&fileNamel.contains("附件")&&fileNamel.length()>2&&(fileNamel.contains(":")||fileNamel.contains(":"))) { - if(fileNamel.indexOf("附件")==0) { - int indexOf2 = 3; - if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - }else if(fileNamel.contains(":")) { - indexOf2 = fileNamel.indexOf(":"); - } - String numberStr = fileNamel.substring(2,indexOf2); - if(isNumeric(numberStr)&&!"".equals(numberStr)) { - isNumberAscArray.add("true"); - int fileNumber = Integer.parseInt(numberStr); - jsonObject1.put("file_number", fileNumber); - }else { - isNumberAscArray.add("false"); - } - }else { - isNumberAscArray.add("false"); - } - - }else { - isNumberAscArray.add("false"); - } - jsonObject1.put("title", row.getString("FILENAME")); - if (row.getString("FILENAME").contains(".xlsx") || row.getString("FILENAME").contains(".xls")) { - jsonObject1.put("link", ros.get("url").toString().substring(0)); - } else { - jsonObject1.put("link", - "https://bpm.yili.com:8088/portal/r" + ros.get("url").toString().substring(1)); - } + JSONObject jsonObject1 = new JSONObject(); + //按照附件编号排序 + String fileNamel = row.getString("FILENAME"); + if (UtilString.isNotEmpty(fileNamel) && fileNamel.contains("附件") && fileNamel.length() > 2 && (fileNamel.contains(":") || fileNamel.contains(":"))) { + if (fileNamel.indexOf("附件") == 0) { + int indexOf2 = 3; + if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } else if (fileNamel.contains(":")) { + indexOf2 = fileNamel.indexOf(":"); + } + String numberStr = fileNamel.substring(2, indexOf2); + if (isNumeric(numberStr) && !"".equals(numberStr)) { + isNumberAscArray.add("true"); + int fileNumber = Integer.parseInt(numberStr); + jsonObject1.put("file_number", fileNumber); + } else { + isNumberAscArray.add("false"); + } + } else { + isNumberAscArray.add("false"); + } - // jsonObject1.put("size","12k"); - jsonArray.add(jsonObject1); - num++; - } - num++; - } + } else { + isNumberAscArray.add("false"); + } + jsonObject1.put("title", row.getString("FILENAME")); + if (row.getString("FILENAME").contains(".xlsx") || row.getString("FILENAME").contains(".xls")) { + jsonObject1.put("link", ros.get("url").toString().substring(0)); + } else { + jsonObject1.put("link", + "https://bpm.yili.com:8088/portal/r" + ros.get("url").toString().substring(1)); + } - } + // jsonObject1.put("size","12k"); + jsonArray.add(jsonObject1); + num++; + } + num++; + } - // } - // System.out.println("substring>>>>>>>>>>"+substring); - map.put("subString", substring); - map.put("ProcessTile", bo_act_coe_publish.getString("PROCESS_TITLE")); - map.put("processInstId", processInstId); - map.put("sid", sid); - boolean contains = isNumberAscArray.contains("false"); - if(!contains) { - try { - jsonArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getInteger("file_number"))); - } catch (Exception e) { - throw new AWSQuotaException("附件格式请以:《附件1:XXXXXX》格式命名"); - } - } - /////////// - // System.out.println("jsonArray=====>>>>>>>>>"+jsonArray); - map.put("jsonlist", jsonArray); - // DBSql.close(conn); + } - String portalUrl = SDK.getPortalAPI().getPortalUrl(); - String url = portalUrl + "/r/or?cmd=com.yili_process_page&processInstId=" + processInstId + "&taskInstId=" - + taskInstId; - String mobileurl = portalUrl + "/r/or?cmd=com.yili_process_page_phone&processInstId=" + processInstId - + "&taskInstId=" + taskInstId; - HttpClientUtils httpClientUtil = new HttpClientUtils(); - List bo_act_dataid = SDK.getBOAPI().query("BO_ACT_DATAID").addQuery("PROCESSID=", processInstId) - .addQuery("USER_ID=", usercode).list(); - if (bo_act_dataid.size() > 0) { - for (BO bo : bo_act_dataid) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("status", "1"); - jsonObject.put("action", "read"); - jsonObject.put("dataid", bo.getString("DATAID")); - String xmlStr = "\n" - + " " + " " + " " - + " " + "" + " " - + " " + " " + ""; - int timeout = 10000; - String readurl = SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "readurl"); - String s = UtilUrl.doPostSoap(readurl, xmlStr, ""); - //System.err.println(instanceById.getTitle()+"_OA待阅移动端阅读返回=======>"+s); - String nums = DBSql.getString( - "select READNUM from BO_EU_PAL_READ_LOG where PROCESSID = '" + processInstId + "'"); - if (UtilString.isNotEmpty(nums)) { - Integer read_num = Integer.valueOf(nums); - read_num += 1; - DBSql.update("update BO_EU_PAL_READ_LOG set READNUM = '" + read_num + "' where PROCESSID = '" - + processInstId + "'"); - } - } + // } + // System.out.println("substring>>>>>>>>>>"+substring); + map.put("subString", substring); + map.put("ProcessTile", bo_act_coe_publish.getString("PROCESS_TITLE")); + map.put("processInstId", processInstId); + map.put("sid", sid); + boolean contains = isNumberAscArray.contains("false"); + if (!contains) { + try { + jsonArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getInteger("file_number"))); + } catch (Exception e) { + throw new AWSQuotaException("附件格式请以:《附件1:XXXXXX》格式命名"); + } + } + /////////// + // System.out.println("jsonArray=====>>>>>>>>>"+jsonArray); + map.put("jsonlist", jsonArray); + // DBSql.close(conn); - } + String portalUrl = SDK.getPortalAPI().getPortalUrl(); + String url = portalUrl + "/r/or?cmd=com.yili_process_page&processInstId=" + processInstId + "&taskInstId=" + + taskInstId; + String mobileurl = portalUrl + "/r/or?cmd=com.yili_process_page_phone&processInstId=" + processInstId + + "&taskInstId=" + taskInstId; + HttpClientUtils httpClientUtil = new HttpClientUtils(); + List bo_act_dataid = SDK.getBOAPI().query("BO_ACT_DATAID").addQuery("PROCESSID=", processInstId) + .addQuery("USER_ID=", usercode).list(); + if (bo_act_dataid.size() > 0) { + for (BO bo : bo_act_dataid) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("status", "1"); + jsonObject.put("action", "read"); + jsonObject.put("dataid", bo.getString("DATAID")); + String xmlStr = "\n" + + " " + " " + " " + + " " + "" + " " + + " " + " " + ""; + int timeout = 10000; + String readurl = SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "readurl"); + String s = UtilUrl.doPostSoap(readurl, xmlStr, ""); + //System.err.println(instanceById.getTitle()+"_OA待阅移动端阅读返回=======>"+s); + String nums = DBSql.getString( + "select READNUM from BO_EU_PAL_READ_LOG where PROCESSID = '" + processInstId + "'"); + if (UtilString.isNotEmpty(nums)) { + Integer read_num = Integer.valueOf(nums); + read_num += 1; + DBSql.update("update BO_EU_PAL_READ_LOG set READNUM = '" + read_num + "' where PROCESSID = '" + + processInstId + "'"); + } + } - /* - * JSONObject jsonObject = new JSONObject(); SimpleDateFormat sdf = new - * SimpleDateFormat("yyyy-MM-dd"); String sql = - * "SELECT * FROM WFC_PROCESS WHERE ID ='" + processInstId + "'"; List - * rowMaps = DBSql.getMaps(conn, sql); if (rowMaps.size() == 1) { - * - * jsonObject.put("action", "read"); // - * jsonObject.put("dept",me.getDepartmentModel().getNo()); // - * jsonObject.put("user",me.getUID()); // jsonObject.put("remark",""); - * jsonObject.put("status", "1"); // jsonObject.put("pcurl",url); // - * jsonObject.put("mobileurl",mobileurl); try { BO bo_act_dataid = - * SDK.getBOAPI().query("BO_ACT_DATAID", true).addQuery("PROCESSID=", - * processInstId) .addQuery("USER_ID=", usercode).detail(); if (bo_act_dataid != - * null) { jsonObject.put("dataid", bo_act_dataid.getString("DATAID")); } } - * catch (Exception e) { - * - * } - * - * // jsonObject.put("userList","00345531"); HttpClientUtils httpClientUtil = - * new HttpClientUtils(); // String s = // httpClientUtil.SendPreview( - * "http://10.119.22.207:80/services/service_lcglpt?wsdl", // jsonObject); - * - * String xmlStr = - * "\n" - * + " " + " " + " " + - * " " + "" + - * " " + " " + " " + - * ""; // HttpClientUtil httpClientUtil = new - * HttpClientUtil(); String readurl = - * SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", - * "readurl"); - * - * String s = UtilUrl.doPostSoap(readurl, xmlStr, ""); // - * System.out.println("s==============>>>>>>>>>>>"+s); - * - * } String nums = DBSql - * .getString("select READNUM from BO_EU_PAL_READ_LOG where PROCESSID = '" + - * processInstId + "'"); if (UtilString.isNotEmpty(nums)) { - * - * Integer read_num = Integer.valueOf(nums); read_num += 1; - * DBSql.update("update BO_EU_PAL_READ_LOG set READNUM = '" + read_num + - * "' where PROCESSID = '" + processInstId + "'"); } - */ - } catch (Exception e) { - e.printStackTrace(); - } finally { - conn.close(); - } - return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.integration", html, map); - } + } else { + List alreadyDataid = SDK.getBOAPI().query("BO_ACT_ALREADY_DATAID").addQuery("PROCESSID=", processInstId) + .addQuery("USER_ID=", usercode).list(); + if (alreadyDataid.size() > 0) { + for (BO bo : alreadyDataid) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("status", "1"); + jsonObject.put("action", "read"); + jsonObject.put("dataid", bo.getString("DATAID")); + String xmlStr = "\n" + + " " + " " + " " + + " " + "" + " " + + " " + " " + ""; + int timeout = 10000; + String readurl = SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "readurl"); + String s = UtilUrl.doPostSoap(readurl, xmlStr, ""); + System.err.println(instanceById.getTitle() + "_OA待阅移动端阅读返回=======>" + s); + String nums = DBSql.getString( + "select READNUM from BO_EU_PAL_READ_LOG where PROCESSID = '" + processInstId + "'"); + if (UtilString.isNotEmpty(nums)) { + Integer read_num = Integer.valueOf(nums); + read_num += 1; + DBSql.update("update BO_EU_PAL_READ_LOG set READNUM = '" + read_num + "' where PROCESSID = '" + + processInstId + "'"); + } + } + + } + } + // 用户打开阅览界面日志 + setUserLog(processInstId, me.getUID(), "3"); + /* + * JSONObject jsonObject = new JSONObject(); SimpleDateFormat sdf = new + * SimpleDateFormat("yyyy-MM-dd"); String sql = + * "SELECT * FROM WFC_PROCESS WHERE ID ='" + processInstId + "'"; List + * rowMaps = DBSql.getMaps(conn, sql); if (rowMaps.size() == 1) { + * + * jsonObject.put("action", "read"); // + * jsonObject.put("dept",me.getDepartmentModel().getNo()); // + * jsonObject.put("user",me.getUID()); // jsonObject.put("remark",""); + * jsonObject.put("status", "1"); // jsonObject.put("pcurl",url); // + * jsonObject.put("mobileurl",mobileurl); try { BO bo_act_dataid = + * SDK.getBOAPI().query("BO_ACT_DATAID", true).addQuery("PROCESSID=", + * processInstId) .addQuery("USER_ID=", usercode).detail(); if (bo_act_dataid != + * null) { jsonObject.put("dataid", bo_act_dataid.getString("DATAID")); } } + * catch (Exception e) { + * + * } + * + * // jsonObject.put("userList","00345531"); HttpClientUtils httpClientUtil = + * new HttpClientUtils(); // String s = // httpClientUtil.SendPreview( + * "http://10.119.22.207:80/services/service_lcglpt?wsdl", // jsonObject); + * + * String xmlStr = + * "\n" + * + " " + " " + " " + + * " " + "" + + * " " + " " + " " + + * ""; // HttpClientUtil httpClientUtil = new + * HttpClientUtil(); String readurl = + * SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", + * "readurl"); + * + * String s = UtilUrl.doPostSoap(readurl, xmlStr, ""); // + * System.out.println("s==============>>>>>>>>>>>"+s); + * + * } String nums = DBSql + * .getString("select READNUM from BO_EU_PAL_READ_LOG where PROCESSID = '" + + * processInstId + "'"); if (UtilString.isNotEmpty(nums)) { + * + * Integer read_num = Integer.valueOf(nums); read_num += 1; + * DBSql.update("update BO_EU_PAL_READ_LOG set READNUM = '" + read_num + + * "' where PROCESSID = '" + processInstId + "'"); } + */ + } catch (Exception e) { + e.printStackTrace(); + } finally { + conn.close(); + } + return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.integration", html, map); + } /** * 从 String 中提取数字 + * * @param string * @return */ - public static String getNumberFromString(String string){ + public static String getNumberFromString(String string) { String str = string; str = str.trim(); StringBuffer str2 = new StringBuffer(); - if(str != null && !"".equals(str)) { + if (str != null && !"".equals(str)) { for (int i = 0; i < str.length(); i++) { if (str.charAt(i) >= 48 && str.charAt(i) <= 57) { String s = String.valueOf(str.charAt(i)); @@ -1431,14 +1490,13 @@ public class TaskController { } public static boolean isNumeric(String str) { - for (int i = str.length(); --i >= 0;) { - int chr = str.charAt(i); - if (chr < 48 || chr > 57) - return false; - } - return true; - } - + for (int i = str.length(); --i >= 0; ) { + int chr = str.charAt(i); + if (chr < 48 || chr > 57) + return false; + } + return true; + } }