diff --git a/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/constant/YiliWpsConst.java b/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/constant/YiliWpsConst.java index f08dd9e3..4e4b6353 100644 --- a/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/constant/YiliWpsConst.java +++ b/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/constant/YiliWpsConst.java @@ -22,6 +22,8 @@ public class YiliWpsConst { //bo相关 public static final String BO_EU_SYSTEM_DEMO_FILE = "BO_EU_SYSTEM_DEMO_FILE"; + public static final String BO_EU_PROCESS_MR = "BO_EU_PROCESS_MR";//管理要求统计 + public static final String BO_EU_PROCESS_MR_TPL = "BO_EU_PROCESS_MR_TPL";//管理要求模版文件 public static final String APP_ACT_COE_PAL_UPFILE = "APP_ACT_COE_PAL_UPFILE"; diff --git a/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/controller/YiliWpsController.java b/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/controller/YiliWpsController.java index bdba477e..454f7248 100644 --- a/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/controller/YiliWpsController.java +++ b/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/controller/YiliWpsController.java @@ -28,6 +28,32 @@ public class YiliWpsController { return web.getWPSOnlineFilePreviewUrl(palId,fileName); } + /** + * 打开可编辑的页面(epc) + * @param me + * @param palId + * @return + * @throws Exception + */ + @Mapping("com.awspaas.user.apps.yiliwps.previewUrl_mr") + public String getWPSOnlineFilePreviewUrlMR(UserContext me,String palId) throws Exception{ + WpsWeb web =new WpsWeb(me); + return web.getWPSMROnlineFilePreviewUrl(palId); + } + + /** + * 打开只读的页面(epc) + * @param me + * @param palId + * @return + * @throws Exception + */ + @Mapping("com.awspaas.user.apps.yiliwps.previewUrl_mr_read") + public String getWPSOnlineFilePreviewUrlMRRead(UserContext me,String palId) throws Exception{ + WpsWeb web =new WpsWeb(me); + return web.getWPSMROnlineFilePreviewReadUrl(palId); + } + /** * 打开制度的页面 * @param me @@ -65,4 +91,17 @@ public class YiliWpsController { WpsWeb web =new WpsWeb(me); return web.checkFileSize(palId); } + + /** + * 更新管理办法mr状态 + * @param me + * @param palId + * @return + * @throws Exception + */ + @Mapping("com.awspaas.user.apps.yiliwps.updateMrStatus") + public String updateMrStatus(UserContext me,String palId) throws Exception{ + WpsWeb web =new WpsWeb(me); + return web.updateMrStatus(palId); + } } diff --git a/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/restful/YiliWpsApi.java b/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/restful/YiliWpsApi.java index 1da396a7..71a5838f 100644 --- a/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/restful/YiliWpsApi.java +++ b/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/restful/YiliWpsApi.java @@ -30,13 +30,15 @@ public class YiliWpsApi { @QueryParam("_w_third_repositoryName") String repositoryName, @QueryParam("_w_third_groupValue") String groupValue, @QueryParam("_w_third_fileValue") String fileValue, - @QueryParam("_w_third_filePreview") String filePreview + @QueryParam("_w_third_filePreview") String filePreview, + @QueryParam("_w_third_isEPC") String isEPC ) { JSONObject params = new JSONObject(); UserContext _uc = UserContext.fromSessionId(sid); + System.out.println("isEpc = " + isEPC); logApi.consoleInfo(">>>>>文件信息请求成功/v1/3rd/file/info"+palId+","+headFileId+queryFileId+sid+fileName+appId+repositoryName+groupValue+fileValue); WpsWeb web =new WpsWeb(_uc); - return web.getFileInfo(sid,palId,queryFileId,fileName,appId,repositoryName,groupValue,fileValue,filePreview); + return web.getFileInfo(sid,palId,queryFileId,fileName,appId,repositoryName,groupValue,fileValue,filePreview,isEPC); } @Path("/v1/3rd/user/info") @@ -74,7 +76,9 @@ public class YiliWpsApi { @QueryParam("_w_third_queryFileId") String queryFileId, @QueryParam("_w_third_palId") String palId, @QueryParam("_w_third_sid") String sid, - @QueryParam("_w_third_fname") String fileName) { + @QueryParam("_w_third_fname") String fileName, + @QueryParam("_w_third_isEPC") String isEPC + ) { JSONObject params = new JSONObject(); System.out.println("file.getName() = " + file.getName()); System.out.println("file.size() = " + file.length()); @@ -82,9 +86,10 @@ public class YiliWpsApi { System.out.println("palId = " + palId); System.out.println("sid = " + sid); System.out.println("fileName = " + fileName); + System.out.println("isEpc = " + isEPC); System.out.println(">>>>>>文件保存调用成功:"+System.currentTimeMillis()); WpsWeb web = new WpsWeb(); - String fileInfo = web.saveFileInfo(save_type,palId,queryFileId,sid,fileName,file); + String fileInfo = web.saveFileInfo(save_type,palId,queryFileId,sid,fileName,file,isEPC); return fileInfo; } diff --git a/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/web/WpsWeb.java b/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/web/WpsWeb.java index b2e4178a..2f0ecc21 100644 --- a/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/web/WpsWeb.java +++ b/com.awspaas.user.apps.yiliwps/src/com/awspaas/user/apps/yiliwps/web/WpsWeb.java @@ -10,6 +10,7 @@ import com.actionsoft.apps.coe.pal.pal.repository.designer.util.ShapeUtil; import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel; import com.actionsoft.apps.resource.plugin.profile.DCPluginProfile; import com.actionsoft.bpms.bo.engine.BO; +import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance; import com.actionsoft.bpms.commons.database.RowMap; import com.actionsoft.bpms.commons.formfile.dao.FormFileDao; import com.actionsoft.bpms.commons.formfile.model.delegate.FormFile; @@ -83,7 +84,7 @@ public class WpsWeb extends ActionWeb { return HttpPostUtil.sendGetRequest(YiliWpsConst.HOST+"/open"+url,headers); } - public String getFileInfo(String sid,String palId,String fileId,String fileName,String appId,String repositoryName,String groupValue,String fileValue,String filePreview){ + public String getFileInfo(String sid,String palId,String fileId,String fileName,String appId,String repositoryName,String groupValue,String fileValue,String filePreview,String isEPC){ String sourceFileName = null; try { sourceFileName = URLDecoder.decode(fileName,"UTF-8"); @@ -96,7 +97,10 @@ public class WpsWeb extends ActionWeb { JSONObject user = new JSONObject(); JSONObject user_acl = new JSONObject(); JSONObject watermark = new JSONObject(); - if(UtilString.isEmpty(filePreview)){ + if("1".equals(isEPC)){ + sourceDc = getFileDCContext(fileId,isEPC); + file.put("id", fileId); + }else if(UtilString.isEmpty(filePreview)){ sourceDc = getFileDCContext(fileId); file.put("id", fileId.equals("")?"1":fileId); }else{ @@ -151,7 +155,7 @@ public class WpsWeb extends ActionWeb { return jsonObject.toString(); } - public String saveFileInfo(String save_type,String palId, String fileId,String sid,String fileName, File file){ + public String saveFileInfo(String save_type,String palId, String fileId,String sid,String fileName, File file,String isEPC){ UserContext me = UserContext.fromSessionId(sid); JSONObject jsonObject = new JSONObject(); JSONObject fileJson = new JSONObject(); @@ -162,12 +166,22 @@ public class WpsWeb extends ActionWeb { //CallASLPUtil aslpUtil =new CallASLPUtil(); //aslpUtil.callTranslateDocASLP(me,palId,fileName,fileInputStream); //只写入新文件 - DCContext sourceDc = getFileDCContext(fileId); - sourceDc.setSession(me); - SDK.getDCAPI().write(fileInputStream,sourceDc); - //在重新获取下fileId - String querySql = " SELECT ID FROM " + YiliWpsConst.APP_ACT_COE_PAL_UPFILE+" WHERE PALREPOSITORYID = ? ORDER BY CREATETIME DESC"; - fileId = DBSql.getString(querySql, new Object[]{palId}); + DCContext sourceDc; + if("1".equals(isEPC)){//EPC图 + sourceDc = getFileDCContext(fileId,isEPC); + sourceDc.setSession(me); + BO mrBO = SDK.getBOAPI().getByKeyField(YiliWpsConst.BO_EU_PROCESS_MR, "FILEUUID", fileId); + List systemfile = SDK.getBOAPI().getFiles(mrBO.getId(), "SYSTEMFILE"); + FormFile formFile = systemfile.get(0); + SDK.getBOAPI().upFile(formFile,fileInputStream); + }else{//制度图 + sourceDc = getFileDCContext(fileId); + //在重新获取下fileId + String querySql = " SELECT ID FROM " + YiliWpsConst.APP_ACT_COE_PAL_UPFILE+" WHERE PALREPOSITORYID = ? ORDER BY CREATETIME DESC"; + fileId = DBSql.getString(querySql, new Object[]{palId}); + sourceDc.setSession(me); + SDK.getDCAPI().write(fileInputStream,sourceDc); + } //整理返回的数据 fileJson.put("id", fileId); fileJson.put("size", file.length()); @@ -289,6 +303,21 @@ public class WpsWeb extends ActionWeb { } } + /** + * 获取附件的附件ID(流程图相关的逻辑) + * @param fileId + * @return + */ + public DCContext getFileDCContext(String fileId,String isEpc){ + //查询模版记录文件 + BO mrBO = SDK.getBOAPI().getByKeyField(YiliWpsConst.BO_EU_PROCESS_MR, "FILEUUID", fileId); + List systemfile = SDK.getBOAPI().getFiles(mrBO.getId(), "SYSTEMFILE"); + FormFile formFile = systemfile.get(0); + DCContext fileDCContext = SDK.getBOAPI().getFileDCContext(formFile); + fileDCContext.setSession(this.getContext()); + return fileDCContext; + } + /** * 获取附件的附件ID * @return @@ -391,4 +420,84 @@ public class WpsWeb extends ActionWeb { return ""; } } + + /** + * (编辑)打开流程图管理要求wps在线 + * @param palId + * @return + * @throws Exception + */ + public String getWPSMROnlineFilePreviewUrl(String palId) throws Exception{ + //先判断流程是否已经编辑过 + BO mrBO = SDK.getBOAPI().getByKeyField(YiliWpsConst.BO_EU_PROCESS_MR, "FILEUUID", palId); + if(null == mrBO){//如果为空 + mrBO = new BO(); + mrBO.set("FILEUUID",palId); + mrBO.set("STATUS","0");//默认无效 + ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance("obj_b733a36123364738895919023e305aca", this.getContext().getUID(), "新建管理要求文件"); + SDK.getBOAPI().create("BO_EU_PROCESS_MR", mrBO, processInstance, this.getContext()); + //创建完BO后,把模版附件copy进去 + //先获取模版文件 + BO tplBO = SDK.getBOAPI().query(YiliWpsConst.BO_EU_PROCESS_MR_TPL).addQuery("FILESTATE=", true).detail(); + SDK.getBOAPI().copyFileTo(tplBO.getId(),"SYSTEMFILE",mrBO.getId(),YiliWpsConst.BO_EU_PROCESS_MR,"SYSTEMFILE",processInstance.getId(),null); + } + String mrStatus = mrBO.getString("STATUS");//获取管理办法状态 + DCContext sourceDc = getFileDCContext(palId,"1"); + WPS4Util.initAppInfo(YiliWpsConst.AK, YiliWpsConst.SK); + String url = String.format("/api/edit/v1/files/%s/link?type=%s&_w_third_sid=%s&_w_third_palId=%s&_w_third_queryFileId=%s&_w_third_fname=%s&_w_third_isEPC=%s",palId,"w",this.getContext().getSessionId(),palId,palId,URLEncoder.encode(sourceDc.getFileName()),"1"); + Map headers = WPS4Util.getSignatureHeaders(url, HttpMethod.GET,null, YiliWpsConst.CONTENT_TYPE); + logAPI.consoleInfo(">>>>>headers"+headers); + String content = HttpPostUtil.sendGetRequest(YiliWpsConst.HOST + "/open" + url, headers); + ResponseObject ro = ResponseObject.newOkResponse(); + ro.put("mrStatus",mrStatus); + ro.put("content",content); + return ro.toString(); + } + + /** + * (只读)打开流程图管理要求wps在线 + * @param palId + * @return + */ + public String getWPSMROnlineFilePreviewReadUrl(String palId) throws Exception { + //先判断流程是否已经编辑过 + BO mrBO = SDK.getBOAPI().getByKeyField(YiliWpsConst.BO_EU_PROCESS_MR, "FILEUUID", palId); + if(null == mrBO) {//如果为空 + return ResponseObject.newErrResponse("未创建管理要求文件").toString(); + } + String mrStatus = mrBO.getString("STATUS");//获取管理办法状态 + if("0".equals(mrStatus)){ + return ResponseObject.newErrResponse("管理要求文件未生效").toString(); + } + DCContext sourceDc = getFileDCContext(palId,"1"); + WPS4Util.initAppInfo(YiliWpsConst.AK, YiliWpsConst.SK); + String url = String.format("/api/preview/v1/files/%s/link?type=%s&_w_third_sid=%s&_w_third_palId=%s&_w_third_queryFileId=%s&_w_third_fname=%s&_w_third_isEPC=%s",palId,"w",this.getContext().getSessionId(),palId,palId,URLEncoder.encode(sourceDc.getFileName()),"1"); + Map headers = WPS4Util.getSignatureHeaders(url, HttpMethod.GET,null, YiliWpsConst.CONTENT_TYPE); + logAPI.consoleInfo(">>>>>headers"+headers); + String content = HttpPostUtil.sendGetRequest(YiliWpsConst.HOST + "/open" + url, headers); + ResponseObject ro = ResponseObject.newOkResponse(); + ro.put("mrStatus",mrStatus); + ro.put("content",content); + return ro.toString(); + } + + /** + * 更新MR管理办法状态 + * @param palId + * @return + * @throws Exception + */ + public String updateMrStatus(String palId){ + ResponseObject ro = ResponseObject.newOkResponse(); + BO mrBO = SDK.getBOAPI().getByKeyField(YiliWpsConst.BO_EU_PROCESS_MR, "FILEUUID", palId); + mrBO.set("STATUS","1"); + int update = SDK.getBOAPI().update(YiliWpsConst.BO_EU_PROCESS_MR, mrBO); + if(update>0){ + ro.put("mrStatus",1); + }else{ + ro.put("mrStatus",0); + } + return ResponseObject.newOkResponse().toString(); + } + }