方盛制药流程生成凭证文件
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