保时捷PDF合并

dev
IT-xiaoXiong 2021-11-16 09:32:09 +08:00
parent 9067934259
commit a40a2f887c
5 changed files with 244 additions and 5 deletions

View File

@ -15,6 +15,7 @@ import aiyh.utils.sqlUtil.whereUtil.impl.WhereImpl;
import aiyh.utils.zwl.common.ToolUtil; import aiyh.utils.zwl.common.ToolUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.ibm.icu.text.SimpleDateFormat; import com.ibm.icu.text.SimpleDateFormat;
import org.h2.util.StringUtils;
import weaver.common.util.string.StringUtil; import weaver.common.util.string.StringUtil;
import weaver.conn.RecordSet; import weaver.conn.RecordSet;
import weaver.general.GCONST; import weaver.general.GCONST;
@ -1353,4 +1354,40 @@ public class Util extends weaver.general.Util {
return rs.getString(1); return rs.getString(1);
} }
/**
*
* @param workflowId
* @param docField
* @return
*/
public static String getDocCategorys(String workflowId,String docField){
RecordSet rs = new RecordSet();
rs.executeQuery("select formid from workflow_base where id = ?",workflowId);
String formId = Util.recordeSet2Entity(rs, String.class);
String query = "select doccategory from workflow_fileupload where fieldid = (select id from workflow_billfield where fieldname = ? and billid = ?)";
rs.executeQuery(query,docField,formId);
String docCategorys =Util.null2String(Util.recordeSet2Entity(rs, String.class));
if(StringUtils.isNullOrEmpty(docCategorys)){
query = "select doccategory from workflow_base where id = ?";
rs.executeQuery(query,workflowId);
rs.next();
docCategorys = Util.null2String(rs.getString(1));
}
if(StringUtils.isNullOrEmpty(docCategorys)){
docCategorys = ",,1";
}
return docCategorys;
}
public static String null2DefaultStr(Object obj, String defaultStr){
String objStr = Util.null2String(obj);
if(StringUtils.isNullOrEmpty(objStr) && StringUtils.isNullOrEmpty(defaultStr)){
return "";
}
if(StringUtils.isNullOrEmpty(objStr) && !StringUtils.isNullOrEmpty(defaultStr)){
return defaultStr;
}
return "";
}
} }

View File

@ -19,6 +19,9 @@ import weaver.formmode.data.ModeDataIdUpdate;
import weaver.formmode.setup.ModeRightInfo; import weaver.formmode.setup.ModeRightInfo;
import weaver.hrm.User; import weaver.hrm.User;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.*; import java.util.*;
@ -58,12 +61,30 @@ public class InvoiceService {
* @throws IOException * @throws IOException
*/ */
public JSONObject getInvoiceInfo(User user, int fileId) throws Exception { public JSONObject getInvoiceInfo(User user, int fileId) throws Exception {
// InputStream inputStreamById = ImageFileManager.getInputStreamById(fileId); // 方法一
// byte[] bytes; /* InputStream inputStreamById = ImageFileManager.getInputStreamById(fileId);
// bytes = IOUtils.toByteArray(inputStreamById); byte[] bytes;
String fileData = FnaInvoiceUploadUtil.changeFileTobase64(fileId); bytes = IOUtils.toByteArray(inputStreamById);
JSONObject jsonObject = HttpUtil.postImage(bytes, user);*/
// 方法二
/* String fileData = FnaInvoiceUploadUtil.changeFileTobase64(fileId);
byte[] imageBytes = ImageUtil.transformImage(fileData); byte[] imageBytes = ImageUtil.transformImage(fileData);
JSONObject jsonObject = HttpUtil.postImage(imageBytes, user); JSONObject jsonObject = HttpUtil.postImage(imageBytes, user);*/
// 方法三
InputStream inputStreamById = ImageFileManager.getInputStreamById(fileId);
BufferedImage imageBuffer = ImageIO.read(inputStreamById);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
boolean jpeg = ImageIO.write(imageBuffer, "jpeg", byteArrayOutputStream);
if(!jpeg){
toolUtil.writeErrorLog("图片转化转化失败!");
}
byte[] bytes = byteArrayOutputStream.toByteArray();
JSONObject jsonObject = HttpUtil.postImage(bytes, user);
toolUtil.writeErrorLog(jsonObject.toString()); toolUtil.writeErrorLog(jsonObject.toString());
return jsonObject; return jsonObject;
} }

View File

@ -7,6 +7,8 @@ import com.api.aiyh_pcn.copy_attachment.dao.ConfigTableData;
import com.api.aiyh_pcn.copy_attachment.model.ConfigEmpty; import com.api.aiyh_pcn.copy_attachment.model.ConfigEmpty;
import com.api.aiyh_pcn.copy_attachment.web.CopyAttachment; import com.api.aiyh_pcn.copy_attachment.web.CopyAttachment;
import org.junit.Test; import org.junit.Test;
import weaver.docs.docs.seconddev.CreateDocForJSGJXT;
import weaver.docs.pdf.docpreview.ConvertMultiPdfTools;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
@ -46,4 +48,17 @@ public class CopyFileTest extends BaseTest{
TestVo testVo = new TestVo(); TestVo testVo = new TestVo();
System.out.println(testVo); System.out.println(testVo);
} }
@Test
public void testInvoice(){
}
@Test
public void testPdf(){
// ConvertMultiPdfTools convertMultiPdfTools = new ConvertMultiPdfTools();
CreateDocForJSGJXT createDocForJSGJXT = new CreateDocForJSGJXT();
int fileName = createDocForJSGJXT.creatDoc(null, "fileName", 8, "1,2,3");
}
} }

View File

@ -474,6 +474,13 @@ public class NewTest extends BaseTest {
out.close(); out.close();
} }
@Test
public void testDocCategorys(){
String docCategorys = Util.getDocCategorys("47","khpj");
System.out.println(docCategorys);
}
} }

View File

@ -0,0 +1,159 @@
package weaver.aiyh_pcn.convert_pdf;
import aiyh.utils.Util;
import aiyh.utils.mapUtil.ParaMap;
import aiyh.utils.sqlUtil.sqlResult.impl.PrepSqlResultImpl;
import aiyh.utils.zwl.common.ToolUtil;
import org.h2.util.StringUtils;
import weaver.conn.RecordSet;
import weaver.docs.docs.seconddev.CreateDocForJSGJXT;
import weaver.hrm.User;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.Map;
/**
* @author EBU7-dev1-ayh
* @create 2021/11/15 0015 14:38
* PDF action
*/
public class ConvertPdfAction implements Action {
// 需要合并的字段
private String mergeField;
// 合并后存放文件的字段
private String mergeToField;
// 1.流程字段2action参数3流程字段+action参数,4 流程多字段拼接
private String mergePDFNameType;
// action参数的文件名
private String mergePDFName;
// 流程字段和多字段
private String mergePDFNameFields;
@Override
public String execute(RequestInfo requestInfo) {
ToolUtil toolUtil = new ToolUtil();
toolUtil.writeErrorLog("进入PDF转换action");
User user = requestInfo.getRequestManager().getUser();
String billTableName = requestInfo.getRequestManager().getBillTableName();
String requestId = requestInfo.getRequestid();
String workflowId = requestInfo.getWorkflowid();
if(StringUtils.isNullOrEmpty(mergeField)){
return Action.SUCCESS;
}
if(StringUtils.isNullOrEmpty(mergeToField)){
// TODO 修改labelId
requestInfo.getRequestManager().setMessagecontent(Util.getHtmlLabelName(-10101,user.getLanguage(),"没有配置合并后PDF存放字段请联系管理员"));
requestInfo.getRequestManager().setMessageid("1");
return Action.FAILURE_AND_CONTINUE;
}
// 获取流程数据
RecordSet rs = new RecordSet();
String query = "select * from " + billTableName + " where requestid = ?";
rs.executeQuery(query,requestId);
Map<String, Object> workflowData = Util.recordSet2Map(rs);
if(workflowData == null){
toolUtil.writeErrorLog("未查询到流程数据:" + query + " --> " + requestId);
return Action.SUCCESS;
}
// 获取文件id
String docIds = Util.null2String(workflowData.get(mergeField));
if(StringUtils.isNullOrEmpty(docIds)){
return Action.SUCCESS;
}
// 查询字段的目录
String docCategorys = Util.getDocCategorys(workflowId, mergeField);
CreateDocForJSGJXT createDocForJSGJXT = new CreateDocForJSGJXT();
String[] docCategoryArray = docCategorys.split(",");
int docCategory = 0;
if(docCategoryArray.length == 3){
docCategory = Integer.parseInt(docCategoryArray[2]);
}else{
for (String s : docCategoryArray) {
docCategory = Integer.parseInt(s);
}
}
String fileName = "";
String defaultFileName = "合同水印合并文件";
if("1".equals(mergePDFNameType)){
// 1.流程字段2action参数3流程字段+action参数,4 流程多字段拼接
String fields = Util.null2String(workflowData.get(mergePDFNameFields));
String[] fieldArr = fields.split(",");
fileName = Util.null2DefaultStr(workflowData.get(fieldArr[0]),defaultFileName);
}else if("2".equals(mergePDFNameType)){
// 1.流程字段2action参数3流程字段+action参数,4 流程多字段拼接
fileName = mergePDFName;
}else if("3".equals(mergePDFNameType)){
// 1.流程字段2action参数3流程字段+action参数,4 流程多字段拼接
fileName = Util.null2DefaultStr(workflowData.get(mergePDFNameFields),defaultFileName) + mergePDFName;
}else if("4".equals(mergePDFNameType)){
// 1.流程字段2action参数3流程字段+action参数,4 流程多字段拼接
String fields = Util.null2String(workflowData.get(mergePDFNameFields));
String[] fieldArr = fields.split(",");
for (String field : fieldArr) {
fileName += Util.null2String(workflowData.get(field));
}
}
if(StringUtils.isNullOrEmpty(fileName)){
fileName = defaultFileName;
}
int fileId = createDocForJSGJXT.creatDoc(user, fileName, docCategory, docIds);
if(fileId <= 0){
toolUtil.writeErrorLog("文件合并错误!(-2:用户为空,-1:文档获取异常)、错误id" + fileId);
// TODO 修改labelId
requestInfo.getRequestManager().setMessagecontent(Util.getHtmlLabelName(-10101,user.getLanguage(),"没有配置合并后PDF存放字段请联系管理员"));
requestInfo.getRequestManager().setMessageid("1");
return Action.FAILURE_AND_CONTINUE;
}
// 将合并的文件回写到流程中
PrepSqlResultImpl sqlResult = Util.createSqlBuilder().updateSql(billTableName, ParaMap.create().put(mergeToField, fileId),
Util.createPrepWhereImpl().whereAnd("requestid").whereEqual(requestId));
toolUtil.writeErrorLog("数据回写:" + sqlResult.getSqlStr() + " --> 参数: " + sqlResult.getArgs());
rs.executeUpdate(sqlResult.getSqlStr(),sqlResult.getArgs());
return Action.SUCCESS;
}
public String getMergeField() {
return mergeField;
}
public void setMergeField(String mergeField) {
this.mergeField = mergeField;
}
public String getMergeToField() {
return mergeToField;
}
public void setMergeToField(String mergeToField) {
this.mergeToField = mergeToField;
}
public String getMergePDFNameType() {
return mergePDFNameType;
}
public void setMergePDFNameType(String mergePDFNameType) {
this.mergePDFNameType = mergePDFNameType;
}
public String getMergePDFName() {
return mergePDFName;
}
public void setMergePDFName(String mergePDFName) {
this.mergePDFName = mergePDFName;
}
public String getMergePDFNameFields() {
return mergePDFNameFields;
}
public void setMergePDFNameFields(String mergePDFNameFields) {
this.mergePDFNameFields = mergePDFNameFields;
}
}