方盛制药流程生成凭证文件
parent
96b0292a2f
commit
345daced84
@ -0,0 +1,13 @@
|
|||||||
|
package com.api.fssecond.web;
|
||||||
|
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2025/4/9 14:46
|
||||||
|
* @Description: 获取电子凭证
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
@Path("/fssecond/workflow")
|
||||||
|
public class EleEctronVoucherAction extends com.engine.fssecond.web.EleEctronVoucherAction {
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.engine.fssecond.entity;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class GenerateDocParams {
|
||||||
|
|
||||||
|
private int imageFileid;
|
||||||
|
|
||||||
|
private String fileName;
|
||||||
|
|
||||||
|
private String docContent;
|
||||||
|
|
||||||
|
private String workflowid;
|
||||||
|
|
||||||
|
private int creater;
|
||||||
|
|
||||||
|
private String docCreateDate;
|
||||||
|
|
||||||
|
private String docCreateTime;
|
||||||
|
|
||||||
|
private int maincategory;
|
||||||
|
|
||||||
|
private int subcategory;
|
||||||
|
|
||||||
|
private int seccategory;
|
||||||
|
|
||||||
|
private int docType;
|
||||||
|
|
||||||
|
private String docExtendname;
|
||||||
|
|
||||||
|
private String clientAddress;
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.engine.fssecond.service;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2025/4/9 14:46
|
||||||
|
* @Description:
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public interface EleEctronVoucherService {
|
||||||
|
|
||||||
|
|
||||||
|
Map<String,Object> generateFile(Map<String, Object> params);
|
||||||
|
}
|
@ -0,0 +1,228 @@
|
|||||||
|
package com.engine.fssecond.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import com.api.formmode.page.util.Util;
|
||||||
|
import com.engine.core.impl.Service;
|
||||||
|
import com.engine.fssecond.entity.GenerateDocParams;
|
||||||
|
import com.engine.fssecond.service.EleEctronVoucherService;
|
||||||
|
import cn.hutool.http.HttpRequest;
|
||||||
|
import cn.hutool.http.HttpResponse;
|
||||||
|
import com.weaver.general.TimeUtil;
|
||||||
|
import weaver.conn.RecordSet;
|
||||||
|
import weaver.docs.category.SecCategoryComInfo;
|
||||||
|
import weaver.docs.docs.DocComInfo;
|
||||||
|
import weaver.docs.docs.DocImageManager;
|
||||||
|
import weaver.docs.docs.DocManager;
|
||||||
|
import weaver.docs.docs.DocViewer;
|
||||||
|
import weaver.file.ImageFileManager;
|
||||||
|
import weaver.hrm.User;
|
||||||
|
import weaver.workflow.request.RequestDoc;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2025/4/9 14:47
|
||||||
|
* @Description: TODO
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public class EleEctronVoucherServiceImpl extends Service implements EleEctronVoucherService {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> generateFile(Map<String, Object> params) {
|
||||||
|
|
||||||
|
String billId = Util.null2String(params.get("billId"));
|
||||||
|
String host = Util.null2String(params.get("host"));
|
||||||
|
String maincategory = Util.null2String(params.get("maincategory"));
|
||||||
|
String subcategory = Util.null2String(params.get("subcategory"));
|
||||||
|
String seccategory = Util.null2String(params.get("seccategory"));
|
||||||
|
String workflowid = Util.null2String(params.get("workflowid"));
|
||||||
|
|
||||||
|
Map<String, Object> fileMap = new HashMap<>(2);
|
||||||
|
String apiUrl = host + "/uapws/rest/gl/voucherout/voucheroutpdf";
|
||||||
|
|
||||||
|
String fileName = "凭证" + billId + ".pdf";
|
||||||
|
|
||||||
|
// 1. 发送 POST 请求,获取 InputStream
|
||||||
|
try (HttpResponse response = HttpRequest.post(apiUrl)
|
||||||
|
.header("Content-Type", "application/json")
|
||||||
|
.body("{\"billId\": \"" + billId + "\"}")
|
||||||
|
.execute()) {
|
||||||
|
|
||||||
|
// 2. 检查响应状态码
|
||||||
|
if (response.isOk()) {
|
||||||
|
|
||||||
|
InputStream inputStream = response.bodyStream();
|
||||||
|
//附件生成
|
||||||
|
int imageFileid = generateImageFileid(inputStream, fileName);
|
||||||
|
GenerateDocParams generateDocParams = GenerateDocParams.builder()
|
||||||
|
.imageFileid(imageFileid)
|
||||||
|
.fileName(fileName)
|
||||||
|
.creater(user.getUID())
|
||||||
|
.docCreateDate(TimeUtil.getCurrentDateString())
|
||||||
|
.docCreateTime(TimeUtil.getOnlyCurrentTimeString())
|
||||||
|
.maincategory(Integer.parseInt(maincategory))
|
||||||
|
.subcategory(Integer.parseInt(subcategory))
|
||||||
|
.seccategory(Integer.parseInt(seccategory))
|
||||||
|
.docType(1)
|
||||||
|
.docExtendname(".pdf")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
fileMap.put("imageFileid", imageFileid);
|
||||||
|
fileMap.put("fileName", fileName);
|
||||||
|
|
||||||
|
int docId = generateDocId(user, generateDocParams);
|
||||||
|
fileMap.put("docId", docId);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
fileMap.put("msg","接口调用失败 ->"+response.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return fileMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private int generateImageFileid(InputStream inputStream, String filename) {
|
||||||
|
int imagefileid = -1;
|
||||||
|
try {
|
||||||
|
ByteArrayOutputStream bos = null;
|
||||||
|
byte[] data = null;
|
||||||
|
try {
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int len = 0;
|
||||||
|
bos = new ByteArrayOutputStream();
|
||||||
|
while ((len = inputStream.read(buffer)) != -1) {
|
||||||
|
bos.write(buffer, 0, len);
|
||||||
|
}
|
||||||
|
data = bos.toByteArray();
|
||||||
|
bos.flush();
|
||||||
|
} catch (Exception e) {
|
||||||
|
} finally {
|
||||||
|
if (bos != null) {
|
||||||
|
try {
|
||||||
|
bos.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
inputStream.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data == null || data.length == 0) {
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
ImageFileManager ifm = new ImageFileManager();
|
||||||
|
ifm.setData(data);
|
||||||
|
|
||||||
|
ifm.setImagFileName(filename);
|
||||||
|
imagefileid = ifm.saveImageFile();// 文件存储及更新imagefile表
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
inputStream.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return imagefileid;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int generateDocId(User user, GenerateDocParams gdp){
|
||||||
|
|
||||||
|
DocManager dm = new DocManager();
|
||||||
|
DocImageManager imgManger = new DocImageManager();
|
||||||
|
SecCategoryComInfo scc = new SecCategoryComInfo();
|
||||||
|
DocComInfo dc = new DocComInfo();
|
||||||
|
DocViewer dv = new DocViewer();
|
||||||
|
|
||||||
|
try {
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
int docId = dm.getNextDocId(rs);
|
||||||
|
String filename = gdp.getFileName();
|
||||||
|
imgManger.resetParameter();
|
||||||
|
String docSubject = getFileMainName(filename);
|
||||||
|
imgManger.setImagefilename(filename);
|
||||||
|
imgManger.setDocfiletype(weaver.general.Util.null2String(gdp.getDocType()));
|
||||||
|
imgManger.setDocid(docId);
|
||||||
|
imgManger.setImagefileid(gdp.getImageFileid());
|
||||||
|
imgManger.setIsextfile("1");//1附件
|
||||||
|
imgManger.AddDocImageInfo();
|
||||||
|
imgManger.setOperateuserid(1); //默认管理员
|
||||||
|
imgManger.setDocfiletype("2");
|
||||||
|
|
||||||
|
int workflowid= weaver.general.Util.getIntValue(gdp.getWorkflowid(),0);
|
||||||
|
String isWorkflowDraft = "0";
|
||||||
|
if(workflowid > 0){
|
||||||
|
RequestDoc requestDoc=new RequestDoc();
|
||||||
|
ArrayList docFiledList = requestDoc.getDocFiled(""+workflowid);
|
||||||
|
if(docFiledList != null && docFiledList.size() > 6){
|
||||||
|
isWorkflowDraft = "" +docFiledList.get(6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String docStatus = "1"; //生效正常
|
||||||
|
if("1".equals(isWorkflowDraft)){
|
||||||
|
docStatus = "9"; //流程草稿
|
||||||
|
}
|
||||||
|
|
||||||
|
dm.setId(docId);
|
||||||
|
dm.setMaincategory(gdp.getMaincategory());
|
||||||
|
dm.setSubcategory(gdp.getSubcategory());
|
||||||
|
dm.setSeccategory(gdp.getSeccategory());
|
||||||
|
dm.setLanguageid(user.getLanguage());
|
||||||
|
dm.setDoccontent(weaver.general.Util.null2String(gdp.getDocContent()));
|
||||||
|
dm.setDocstatus(docStatus);
|
||||||
|
dm.setDocsubject(docSubject);
|
||||||
|
dm.setDoccreaterid(user.getUID());
|
||||||
|
dm.setDocCreaterType(user.getLogintype());
|
||||||
|
dm.setUsertype(user.getLogintype());
|
||||||
|
dm.setOwnerid(user.getUID());
|
||||||
|
dm.setOwnerType(user.getLogintype());
|
||||||
|
dm.setDoclastmoduserid(user.getUID());
|
||||||
|
dm.setDocLastModUserType(user.getLogintype());
|
||||||
|
dm.setDoccreatedate(gdp.getDocCreateDate());
|
||||||
|
dm.setDoclastmoddate(gdp.getDocCreateDate());
|
||||||
|
dm.setDoccreatetime(gdp.getDocCreateTime());
|
||||||
|
dm.setDoclastmodtime(gdp.getDocCreateTime());
|
||||||
|
dm.setDoclangurage(user.getLanguage());
|
||||||
|
dm.setKeyword(docSubject);
|
||||||
|
dm.setIsapprover("0"); //批复意见
|
||||||
|
dm.setIsreply(""); //是否回复文档
|
||||||
|
dm.setDocdepartmentid(user.getUserDepartment());
|
||||||
|
dm.setDocreplyable("1"); //是否可回复
|
||||||
|
dm.setAccessorycount(1); //附件总数
|
||||||
|
dm.setParentids("" + docId); //文档父节点
|
||||||
|
dm.setOrderable("" + scc.getSecOrderable(gdp.getSeccategory())); //得到此分录下文是否可订阅
|
||||||
|
dm.setClientAddress(gdp.getClientAddress());
|
||||||
|
dm.setUserid(user.getUID());
|
||||||
|
dm.AddDocInfo();
|
||||||
|
dm.AddShareInfo();
|
||||||
|
dc.addDocInfoCache("" + docId);
|
||||||
|
dv.setDocShareByDoc("" + docId);
|
||||||
|
return docId;
|
||||||
|
}catch (Exception ex) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getFileMainName(String fileName) {
|
||||||
|
if (fileName == null){
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
int pos = fileName.lastIndexOf(".");
|
||||||
|
if (pos != -1) {
|
||||||
|
fileName = fileName.substring(0, pos);
|
||||||
|
}
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package com.engine.fssecond.web;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||||
|
import com.engine.common.util.ParamUtil;
|
||||||
|
import com.engine.common.util.ServiceUtil;
|
||||||
|
import com.engine.fssecond.service.EleEctronVoucherService;
|
||||||
|
import com.engine.fssecond.service.impl.EleEctronVoucherServiceImpl;
|
||||||
|
import weaver.hrm.HrmUserVarify;
|
||||||
|
import weaver.hrm.User;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
|
import javax.ws.rs.core.Context;
|
||||||
|
import javax.ws.rs.core.MediaType;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author liang.cheng
|
||||||
|
* @Date 2025/4/9 14:46
|
||||||
|
* @Description:
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public class EleEctronVoucherAction {
|
||||||
|
|
||||||
|
private EleEctronVoucherService getService(User user) {
|
||||||
|
return ServiceUtil.getService(EleEctronVoucherServiceImpl.class, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("/generateFile")
|
||||||
|
@Produces(MediaType.TEXT_PLAIN)
|
||||||
|
public String generateFile(@Context HttpServletRequest request, @Context HttpServletResponse response,
|
||||||
|
@QueryParam("billId") String billId,@QueryParam("host") String host){
|
||||||
|
Map<String, Object> data = new HashMap<>(8);
|
||||||
|
try {
|
||||||
|
User user = HrmUserVarify.getUser(request, response);
|
||||||
|
Map<String, Object> params = ParamUtil.request2Map(request);
|
||||||
|
data.putAll(getService(user).generateFile(params));
|
||||||
|
} catch (Exception e) {
|
||||||
|
data.put("msg", "catch exception : " + e.getMessage());
|
||||||
|
}
|
||||||
|
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue