管理办法wps在线编辑,后台代码提交

This commit is contained in:
yujh_java 2025-07-21 15:53:59 +08:00 committed by zhaolei
parent 3f298c9f7c
commit 58f90cdbee
4 changed files with 168 additions and 13 deletions

View File

@ -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";

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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<FormFile> 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<FormFile> 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<String,String> 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<String,String> 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();
}
}