wps 正文丢失问题优化

This commit is contained in:
yujh 2024-09-13 17:15:35 +08:00
parent 1244759402
commit 5c4d344173
3 changed files with 128 additions and 2 deletions

View File

@ -7,6 +7,7 @@ import com.actionsoft.apps.coe.pal.datamigration.util.readword.ReadWordUtil;
import com.actionsoft.apps.coe.pal.datamigration.versionNo.web.VersionNoExcelImportWeb;
import com.actionsoft.apps.coe.pal.datamigration.web.DataMigrationWeb;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.designer.relation.web.DesignerRelationShapeWeb;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.apps.coe.pal.pal.repository.web.CoeProcessLevelWeb;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
@ -313,4 +314,15 @@ public class DataMigrationController {
return new VersionNoExcelImportWeb(uc).downloadVersionNoExcelImportLog(logId, path);
}
/**
* 下载一个合同正文模版文件
* @param me
* @return
*/
@Mapping("com.actionsoft.apps.coe.pal.datamigration_reloadFile")
public String reloadFile(UserContext me,String palId) {
DataMigrationWeb web = new DataMigrationWeb(me);
return web.reloadFile(palId);
}
}

View File

@ -1,6 +1,7 @@
package com.actionsoft.apps.coe.pal.datamigration.web;
import com.actionsoft.apps.coe.pal.constant.CoEConstant;
import com.actionsoft.apps.coe.pal.constant.YiliWpsConst;
import com.actionsoft.apps.coe.pal.datamigration.aris.mapping.ModelMappingAPIManager;
import com.actionsoft.apps.coe.pal.datamigration.aris.model.*;
import com.actionsoft.apps.coe.pal.datamigration.aris.util.XMLUtil;
@ -41,6 +42,9 @@ import com.actionsoft.apps.coe.pal.pal.repository.util.CoeRepositoryImportUtil;
import com.actionsoft.apps.coe.pal.yili.log.datamigration.log.Cache.LogRealTimeCountCache;
import com.actionsoft.apps.coe.pal.yili.log.datamigration.log.Model.LogRealTimeCountModel;
import com.actionsoft.apps.resource.plugin.profile.DCPluginProfile;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.commons.formfile.model.delegate.FormFile;
import com.actionsoft.bpms.commons.htmlframework.HtmlPageTemplate;
import com.actionsoft.bpms.commons.mvc.view.ActionWeb;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
@ -53,6 +57,7 @@ import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.dc.DCProfileManager;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.bpms.util.UtilString;
@ -79,6 +84,8 @@ import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import static com.actionsoft.apps.coe.pal.pal.output.util.OutputExcelUtil.fileId;
public class DataMigrationWeb extends ActionWeb {
UserContext _uc;
@ -933,4 +940,109 @@ public class DataMigrationWeb extends ActionWeb {
public String positionImport(String wsId, String groupValue, String fileValue, String fileName) {
return new PositionExcelImportWeb(_uc).positionImport(wsId, groupValue, fileValue, fileName);
}
/**
* 刷新正文
* @return
*/
public String reloadFile(String palId){
RowMap row = getFileIdByPalId(palId);
DCContext sourceDc = getFileDCContext(row.getString("ID"),row.getString("FILENAME"));
DCPluginProfile dcProfilepdf = DCProfileManager.getDCProfile("com.actionsoft.apps.coe.pal.datamigration",
"migration");
DCContext dcContextpdf = new DCContext(_uc, dcProfilepdf, "com.actionsoft.apps.coe.pal.datamigration",
"policyFile", palId, row.getString("FILENAME"));
System.out.println(">>>>>>>>>>>>开始重画");
boolean write = SDK.getDCAPI().write(SDK.getDCAPI().read(sourceDc), dcContextpdf);
PALRepositoryModel plModel = PALRepositoryCache.getCache().get(palId);
if (plModel == null) {
return ResponseObject.newErrResponse("找不到该流程").toString();
}
String wsId = plModel.getWsId();
new ReadWordUtil().translateDoc(_uc,wsId,"policyFile",palId,row.getString("FILENAME"));
return getCoeDefinition(palId);
}
/**
* 通过文件ID获取主要模型块的附件ID
* @param palId
* @return
*/
public RowMap getFileIdByPalId(String palId){
List<Map<String, Object>> repositoryFileElements = CoeDesignerUtil.getShapeMessageJson(palId);
List<Object> ids = repositoryFileElements.stream()
.filter(map -> "制度".equals(map.get("title")) || "操作指导".equals(map.get("title")) || "工程技术标准".equals(map.get("title")) || "方案".equals(map.get("title")))
.map(map -> map.get("id"))
.collect(Collectors.toList());
if(ids.size()>0){
String querySql = " SELECT ID,FILENAME FROM " + YiliWpsConst.APP_ACT_COE_PAL_UPFILE+" WHERE PALREPOSITORYID = ? AND SHAPEID =? AND FILETYPE=? ORDER BY CREATETIME DESC";
RowMap map = DBSql.getMap(querySql, new Object[]{palId, ids.get(0).toString(), "s"});
System.out.println(">>>>>>>>>>fileId = " + fileId);
return map;
}else{
return null;
}
}
/**
* 获取附件的附件ID
* @param palId
* @return
*/
public DCContext getFileDCContext(String palId,String fileName){
DCContext sourceDc = null;
//先判断该fileId有无附件
String querySql = " SELECT PALREPOSITORYID,SHAPEID,FILETYPE,FILENAME FROM " + YiliWpsConst.APP_ACT_COE_PAL_UPFILE+" WHERE ID = ? ORDER BY CREATETIME DESC";
RowMap model = DBSql.getMap(querySql, new Object[]{palId});
if(null != model){
DCPluginProfile dcProfile = DCProfileManager.getDCProfile(YiliWpsConst.FILE_APPID, YiliWpsConst.COE_UPFILE);
if (dcProfile != null) {
if ("f".equals(model.getString("FILETYPE"))) {// 文件
System.out.println(" >>>>进入普通文件" );
sourceDc = new DCContext(this.getContext(), dcProfile, YiliWpsConst.FILE_APPID, "file",
model.getString("PALREPOSITORYID"), model.getString("FILENAME"));
} else {// 图形
System.out.println(" >>>>进入图型文件" );
sourceDc = new DCContext(this.getContext(), dcProfile, YiliWpsConst.FILE_APPID, model.getString("PALREPOSITORYID"),
model.getString("SHAPEID"), model.getString("FILENAME"));
}
}
return sourceDc;
}else{//无附件则取打开默认模板
//先获取附件模版
System.out.println(" >>>>进入模版文件" );
String repositoryName = "!form-ui-file-";
BO bo = SDK.getBOAPI().query(YiliWpsConst.BO_EU_SYSTEM_DEMO_FILE).addQuery("FILESTATE=", true).detail();
List<FormFile> files = SDK.getBOAPI().getFiles(bo.getId(), "SYSTEMFILE");
FormFile formFile = files.get(0);
sourceDc = SDK.getBOAPI().getFileDCContext(formFile, repositoryName);
sourceDc.setSession(this.getContext());
//往附件表中写入一个附件
return sourceDc;
}
}
public String getCoeDefinition(String palId){
// coe所需参数
PALRepositoryModel plModel = PALRepositoryCache.getCache().get(palId);
String uuid = plModel.getId();
String fileName = com.actionsoft.apps.coe.pal.pal.repository.designer.util.ShapeUtil.replaceBlank(plModel.getName());
String wsid = plModel.getWsId();
String methodId = plModel.getMethodId();
BaseModel model = CoeDesignerAPIManager.getInstance().getDefinition(palId, 0);
if (model == null) {
model = CoeDesignerUtil.createModel(palId, 0);
}
CoeDesignerShapeAPIManager manager = CoeDesignerShapeAPIManager.getInstance();
String define = model.getDefinition();
//获取流程定义和排序
JSONObject object = manager.getCoeDefinitionAndSort(define, wsid, methodId);
model.setDefinition(object.getString("define"));
//处理流程节点形状的通用配置
JSONObject obj = manager.getCoeProcessShapeConfig(model.getDefinition(), wsid, methodId, palId);
model.setDefinition(obj.getString("define"));
model.setFileName(fileName);
return model.getDefinition();
}
}

View File

@ -146,10 +146,12 @@ public class WpsWeb extends ActionWeb {
FileInputStream fileInputStream=new FileInputStream(file);
//写入新文件
//调用刷新逻辑
CallASLPUtil aslpUtil =new CallASLPUtil();
aslpUtil.callTranslateDocASLP(me,palId,fileName,fileInputStream);
//CallASLPUtil aslpUtil =new CallASLPUtil();
//aslpUtil.callTranslateDocASLP(me,palId,fileName,fileInputStream);
//只写入新文件
DCContext sourceDc = getFileDCContext(fileId,fileName);
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});