报销接口编写

This commit is contained in:
lvleigang 2024-08-16 15:24:25 +08:00
parent 5ad6cff94b
commit 58b61fd613
1 changed files with 200 additions and 16 deletions

View File

@ -2,7 +2,6 @@ package com.hzya.frame.grpU8.nxproof.oerdjml.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
@ -10,11 +9,9 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.grpU8.nxproof.gbizbsyrec.dao.IGbiZbsyrecDao;
import com.hzya.frame.grpU8.nxproof.gbizbsyrec.entity.GbiZbsyrecEntity;
import com.hzya.frame.grpU8.nxproof.oerannex.entity.OerAnnexEntity;
import com.hzya.frame.grpU8.nxproof.oerdjjsfs.dao.IOerDjjsfsDao;
import com.hzya.frame.grpU8.nxproof.oerdjjsfs.entity.OerDjjsfsEntity;
import com.hzya.frame.grpU8.nxproof.oerdjml.dao.IOerDjmlDao;
import com.hzya.frame.grpU8.nxproof.oerdjml.dto.FileInfoDTO;
import com.hzya.frame.grpU8.nxproof.oerdjml.entity.GbiZbsyrecAllEntity;
import com.hzya.frame.grpU8.nxproof.oerdjml.entity.OerDjmlEntity;
import com.hzya.frame.grpU8.nxproof.oerdjml.service.IOerDjmlService;
@ -27,28 +24,19 @@ import com.hzya.frame.grpU8.nxproof.pubauditlog.entity.PubAuditLogEntity;
import com.hzya.frame.grpU8.nxproof.pubobjflow.dao.IPubObjFlowDao;
import com.hzya.frame.grpU8.nxproof.pubobjflow.entity.PubObjFlowEntity;
import com.hzya.frame.mdm.entity.MdmDto;
import com.hzya.frame.seeyon.entity.CollAttachmentResDTO;
import com.hzya.frame.seeyon.enums.ColEventTypeEnum;
import com.hzya.frame.seeyon.util.RestUtil;
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
import com.hzya.frame.web.entity.BaseResult;
import com.hzya.frame.web.exception.BaseSystemException;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.*;
import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @Author:hecan
@ -75,10 +63,7 @@ public class OerDjmlServiceImpl implements IOerDjmlService {
private IPubAuditLogDao iPubAuditLogDao;
@Autowired
private IPubObjFlowDao iPubObjFlowDao;
@Autowired
private RestUtil restUtil;
@Value("${savefile.path}")
public String DSK;
@Override
public String saveExpenseDocuments(JSONObject jsonObject) {
@ -830,6 +815,195 @@ public class OerDjmlServiceImpl implements IOerDjmlService {
return BaseResult.getSuccessMessageEntity("处理成功");
}
/**
* 保存方法前先调这个方法 组装参数
*
* @param entity
* @return
*/
public SysExtensionApiEntity saveExpensePre(SysExtensionApiEntity entity) {
try {
String bodys = entity.getBodys();
Map<String, String> headers = entity.getHeaders();
String eventType = headers.get("eventType");
String formmainTableName = headers.get("formmainTableName");
String forsonTableName = headers.get("forsonTableName");
String djlxid = headers.get("djlxid");
String flowcode = headers.get("flowcode");
JSONObject bodyObj = JSONObject.parseObject(bodys);
JSONObject seeyonData = bodyObj.getJSONObject("businessDataStr");
if (null != seeyonData){
/**
* 流程发起 保存/更新单据 要全部数据
* 流程撤销 只更新状态传单号和状态就好了
* 流程终止 只更新状态传单号和状态就好了
* 流程结束 更新状态 并上传附件
*/
JSONObject formmainData = seeyonData.getJSONObject(formmainTableName);
JSONArray forsonData = seeyonData.getJSONArray(forsonTableName);
JSONObject forjsonData0 = forsonData.getJSONObject(0);
OerDjmlEntity djml = new OerDjmlEntity();
djml.setDjbh(formmainData.getString("field0001"));
//流程发起
if (ColEventTypeEnum.ONSTART.getType().equals(eventType)){
djml.setGsdm(forjsonData0.getString("field0084"));
djml.setKjnd(forjsonData0.getString("field0082"));
djml.setDjlxId(djlxid);
djml.setZt("2");
djml.setCrerdm(formmainData.getString("field0107"));
djml.setCrermc("");
djml.setCrerdate(formmainData.getString("startDate"));
djml.setDjdate(formmainData.getString("field0002"));
djml.setJe(formmainData.getString("field0080"));
djml.setJedx( Convert.numberToChinese(Double.valueOf(formmainData.getString("field0080")),true));
djml.setYjje("0.00");
djml.setThje("0.00");
djml.setBlje(formmainData.getString("field0080"));
djml.setFjs( formmainData.getString("field0004"));
djml.setZy( formmainData.getString("field0009"));
//部门代码
djml.setBmdm( formmainData.getString("field0006"));
djml.setBmmc( formmainData.getString("field0006"));
//项目代码
djml.setXmdm(forjsonData0.getString("field0074"));
djml.setXmmc(forjsonData0.getString("field0075"));
//个人代码
djml.setGrdm(formmainData.getString("field0108"));
djml.setGrmc("");
//经济代码
djml.setJjdm("");
djml.setJjmc("");
//银行帐号 开户银行
djml.setYhzh(forjsonData0.getString("field0079"));
djml.setKhyh(forjsonData0.getString("field0078"));
//当前审核节点下个审核节点 ,不在grp审批是不是不用填了
djml.setCurshjd("-9");
djml.setNextshjd("999");
djml.setFlowcode(flowcode);
djml.setJsfs(spliceStr(forjsonData0.getString("field0095"),forjsonData0.getString("field0094")));
//电话oa上没有
djml.setTel(formmainData.getString("field0110"));
djml.setClf_ccr(formmainData.getString("field0010"));
//送审日期
djml.setSsrq( DateUtil.format(formmainData.getDate("startDate"),"yyyyMMddHHmmssSSS"));
djml.setSsrid("");
djml.setSsr("");
//报销明细
List<OerDjnrEntity> djnrList = new ArrayList<>();
//结算方式
List<OerDjjsfsEntity> jsfsList = new ArrayList<>();
//预算指标
List<OerYszbEntity> yszbList = new ArrayList<>();
//指标记录
int xh = 1;
for (int i=0; i<forsonData.size();i++) {
JSONObject forson = forsonData.getJSONObject(i);
String gsdm = forson.getString("field0084");
String kjnd = forson.getString("field0082");
String je = forson.getString("field0032");
//单据内容
OerDjnrEntity djnr = new OerDjnrEntity();
djnr.setXh(String.valueOf(xh));
djnr.setGsdm(gsdm);
djnr.setKjnd(kjnd);
djnr.setDjlxId(djlxid);
djnr.setBnxId(headers.get("bxmx_bnxid"));
djnr.setJe(je);
djnr.setBmdm(forson.getString("field0088"));
djnr.setBmmc(forson.getString("field0087"));
djnr.setXmdm(forson.getString("field0074"));
djnr.setXmmc(forson.getString("field0075"));
djnr.setJjdm("");
djnr.setJjmc("");
//grp库里有不知道是什么 1001基本支出 2001项目支出网银
djnr.setFzx8dm("");
djnr.setFzx8mc("");
//指标id
djnr.setZbId(forson.getString("field0085"));
djnr.setJflxdm("");
djnr.setJflxmc("");
djnr.setZy(forson.getString("field0030"));
djnr.setClf_startdate(forson.getString("field0016"));
djnr.setClf_enddate(forson.getString("field0017"));
djnr.setClf_ccdd(forson.getString("field0019"));
djnr.setClf_ccksd(forson.getString("field0018"));
djnr.setClf_djzs(djml.getFjs());
djnr.setClf_ccts(forson.getString("field0023"));
djnr.setClf_ccrs(forson.getString("field0021"));
djnr.setClf_zw(forson.getString("field0092"));
djnr.setClf_jtgj(forson.getString("field0020"));
djnr.setClf_jtf(forson.getString("field0024"));
djnr.setClf_zsbz(forson.getString("field0077"));
djnr.setClf_zsf(forson.getString("field0025"));
//伙食补助是 标准金额
djnr.setCLF_HSBZ(forson.getString("field0026"));
//伙食费是 实际报销的金额
djnr.setClf_hsf(forson.getString("field0026"));
djnr.setClf_jtbz(forson.getString("field0024"));
djnr.setClf_qtf(forson.getString("field0028"));
djnr.setFjs(djml.getFjs());
djnrList.add(djnr);
//结算方式
OerDjjsfsEntity jsfs = new OerDjjsfsEntity();
jsfs.setGsdm(gsdm);
jsfs.setKjnd(kjnd);
jsfs.setDjlxId(djlxid);
jsfs.setBnxid(headers.get("jsfs_bnxid"));
jsfs.setXh(String.valueOf(xh));
jsfs.setJsfsdm(forson.getString("field0095"));
jsfs.setJsfsmc(forson.getString("field0094"));
jsfs.setKmdm(forson.getString("field0089"));
jsfs.setKmmc(forson.getString("field0066"));
jsfs.setSkr(forson.getString("field0096"));
jsfs.setKhyh(forson.getString("field0078"));
jsfs.setYhzh(forson.getString("field0079"));
jsfs.setJe(je);
jsfs.setYh("");
jsfs.setYhhh("");
jsfs.setProvince("");
jsfs.setCity("");
//支付方式为个人公务卡时 可以选择 经办人负责人其他
jsfs.setRytype("");
//oa没有
jsfs.setYt(forson.getString("field0030"));
jsfsList.add(jsfs);
//预算指标
OerYszbEntity yszb = new OerYszbEntity();
BeanUtil.copyProperties(djnr,yszb);
yszb.setBnxId(headers.get("yszb_bnxid"));
yszb.setZbdm(forson.getString("field0085"));
yszb.setZy(forson.getString("field0111"));
yszb.setKmdm(forson.getString("field0089"));
yszb.setKmmc(forson.getString("field0066"));
yszbList.add(yszb);
xh++;
}
logger.info("报销单主表:{}",JSONObject.toJSONString(djml));
logger.info("报销单明细表:{}",JSONObject.toJSONString(djnrList));
logger.info("报销单结算方式:{}",JSONObject.toJSONString(jsfsList));
logger.info("报销单预算指标:{}",JSONObject.toJSONString(yszbList));
djml.setOerDjnrEntityList(djnrList);
djml.setOerYszbEntityList(yszbList);
String djmlStr = JSONObject.toJSONString(djml);
JSONObject param = new JSONObject(new LinkedHashMap<>());
param = JSONObject.parseObject(djmlStr);
param.put("lclb",eventType);
param.put("oerDjnrEntityList",djnrList);
param.put("oerYszbEntityList",yszbList);
param.put("oerDjjsfsEntityList",jsfsList);
//param.put("gbiZbsyrecEntitylist",null);
logger.info("差旅报销单报文:{}",param.toString());
}
}
}catch (Exception ex ){
logger.error("保存报销单之前组装参数出错",ex);
}
return null;
}
/**
* @Author lvleigang
* @Description 保存或修改主表以及指标
@ -1024,4 +1198,14 @@ public class OerDjmlServiceImpl implements IOerDjmlService {
}
return flag;
}
/**
* code和name拼接[]
* @param code
* @param name
* @return 格式03[公务卡]
*/
private String spliceStr(String code,String name){
String template = "{}[{}]";
return StrUtil.format(template,code,name);
}
}