方盛制药流程生成凭证文件

湖南方盛制药股份有限公司发票管理系统
Chengliang 2 months ago
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…
Cancel
Save