保时捷PDF合并
parent
9067934259
commit
a40a2f887c
|
@ -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 "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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.流程字段,2,action参数,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.流程字段,2,action参数,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.流程字段,2,action参数,3流程字段+action参数,4 流程多字段拼接
|
||||||
|
fileName = mergePDFName;
|
||||||
|
}else if("3".equals(mergePDFNameType)){
|
||||||
|
// 1.流程字段,2,action参数,3流程字段+action参数,4 流程多字段拼接
|
||||||
|
fileName = Util.null2DefaultStr(workflowData.get(mergePDFNameFields),defaultFileName) + mergePDFName;
|
||||||
|
}else if("4".equals(mergePDFNameType)){
|
||||||
|
// 1.流程字段,2,action参数,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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue