横向科研 纵向科研

This commit is contained in:
xiang2lin 2025-05-16 13:44:26 +08:00
parent 1788bbe19d
commit 7f0994bd93
3 changed files with 382 additions and 0 deletions

View File

@ -55,6 +55,7 @@ public class OerDjmlEntity extends BaseEntity {
private String pzh;//凭证号
private String fph;//发票号
private String sfzh;//身份证号
private byte[] RptRtContent;
//项目代码
@ -81,6 +82,11 @@ public class OerDjmlEntity extends BaseEntity {
private String jflxdm;
//经费类型名称
private String jflxmc;
private String WX00000051;//自定义字段 申请类型
private String WX00000054;//自定义字段 资助经费总额
private String WX00000055;//自定义字段 已到位经费
private String WX00000056;//自定义字段 激励费总额
private String WX00000057;//自定义字段 已支出激励费
//附件对象
@JSONField(ordinal = 9995)
private List<FileInfoDTO> fileInfoList;
@ -507,4 +513,52 @@ public class OerDjmlEntity extends BaseEntity {
public void setJflxmc(String jflxmc) {
this.jflxmc = jflxmc;
}
public String getSfzh() {
return sfzh;
}
public void setSfzh(String sfzh) {
this.sfzh = sfzh;
}
public String getWX00000051() {
return WX00000051;
}
public void setWX00000051(String WX00000051) {
this.WX00000051 = WX00000051;
}
public String getWX00000054() {
return WX00000054;
}
public void setWX00000054(String WX00000054) {
this.WX00000054 = WX00000054;
}
public String getWX00000055() {
return WX00000055;
}
public void setWX00000055(String WX00000055) {
this.WX00000055 = WX00000055;
}
public String getWX00000056() {
return WX00000056;
}
public void setWX00000056(String WX00000056) {
this.WX00000056 = WX00000056;
}
public String getWX00000057() {
return WX00000057;
}
public void setWX00000057(String WX00000057) {
this.WX00000057 = WX00000057;
}
}

View File

@ -25,11 +25,17 @@
<result property="grdm" column="grdm" />
<result property="grmc" column="grmc" />
<result property="tel" column="tel" />
<result property="sfzh" column="sfzh" />
<result property="yjje" column="yjje" />
<result property="thje" column="thje" />
<result property="blje" column="blje" />
<result property="whje" column="whje" />
<result property="jedx" column="jedx" />
<result property="WX00000051" column="WX00000051" />
<result property="WX00000054" column="WX00000054" />
<result property="WX00000055" column="WX00000055" />
<result property="WX00000056" column="WX00000056" />
<result property="WX00000057" column="WX00000057" />
<result column="Rpt_Rt_content" property="RptRtContent" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler" />
</resultMap>
@ -131,6 +137,7 @@ GSDM,KJND,mlId
<if test="grdm != null and grdm !='' ">GRDM, </if>
<if test="grmc != null and grmc !='' ">GRMC,</if>
<if test="tel != null and tel !='' "> TEL, </if>
<if test="sfzh != null and sfzh !='' "> SFZH, </if>
<if test="yjje != null and yjje !='' "> YJJE, </if>
<if test="thje != null and thje !='' "> THJE,</if>
<if test="blje != null and blje !='' "> BLJE, </if>
@ -149,6 +156,11 @@ GSDM,KJND,mlId
<!-- <if test="ssrq != null and ssrq !='' "> ssrq, </if>-->
<if test="jflxdm != null and jflxdm !='' "> jflxdm, </if>
<if test="jflxmc != null and jflxmc !='' "> jflxmc, </if>
<if test="WX00000051 != null and WX00000051 !='' "> WX00000051, </if>
<if test="WX00000054 != null and WX00000054 !='' "> WX00000054, </if>
<if test="WX00000055 != null and WX00000055 !='' "> WX00000055, </if>
<if test="WX00000056 != null and WX00000056 !='' "> WX00000056, </if>
<if test="WX00000057 != null and WX00000057 !='' "> WX00000057, </if>
<if test="xmdm != null and xmdm !='' "> xmdm, </if>
<if test="xmmc != null and xmmc !='' "> xmmc, </if>
</trim>
@ -178,6 +190,7 @@ GSDM,KJND,mlId
<if test="grdm != null and grdm !='' "> #{grdm}, </if>
<if test="grmc != null and grmc !='' "> #{grmc},</if>
<if test="tel != null and tel !='' "> #{tel}, </if>
<if test="sfzh != null and sfzh !='' "> #{sfzh}, </if>
<if test="yjje != null and yjje !='' "> #{yjje}, </if>
<if test="thje != null and thje !='' "> #{thje},</if>
<if test="blje != null and blje !='' "> #{blje}, </if>
@ -196,6 +209,11 @@ GSDM,KJND,mlId
<!-- <if test="ssrq != null and ssrq !='' "> #{ssrq}, </if>-->
<if test="jflxdm != null and jflxdm !='' "> #{jflxdm}, </if>
<if test="jflxmc != null and jflxmc !='' "> #{jflxmc}, </if>
<if test="WX00000051 != null and WX00000051 !='' "> #{WX00000051}, </if>
<if test="WX00000054 != null and WX00000054 !='' "> #{WX00000054}, </if>
<if test="WX00000055 != null and WX00000055 !='' "> #{WX00000055}, </if>
<if test="WX00000056 != null and WX00000056 !='' "> #{WX00000056}, </if>
<if test="WX00000057 != null and WX00000057 !='' "> #{WX00000057}, </if>
<if test="xmdm != null and xmdm !='' "> #{xmdm}, </if>
<if test="xmmc != null and xmmc !='' "> #{xmmc}, </if>
</trim>

View File

@ -182,6 +182,12 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
logger.info("oerValuOf方法已经组装好参数准备return");
}else if (DjlxEnum.LABOR.type.equals(djlx)){
//劳务费 labor
}else if (DjlxEnum.HXKY.type.equals(djlx)){
//横向科研
res = hxky(headers,eventType,summaryId,dataSourceCode, formmainData, forsonData);
}else if (DjlxEnum.ZXKY.type.equals(djlx)){
//纵向科研
res = zxky(headers,eventType,summaryId,dataSourceCode, formmainData, forsonData);
}
logger.info("oerValuOf方法return");
return res;
@ -189,6 +195,9 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
}
return null;
}
/**
* 费用报销单
* @param headers 请求头
@ -554,6 +563,305 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
logger.info("差旅报销单报文:{}",djmlStr);
return djmlStr;
}
//横向科研
private String hxky(Map<String, String> headers, String eventType, String summaryId, String dataSourceCode, JSONObject formmainData, JSONArray forsonData) {
String djlxid = headers.get("djlxid");
String flowcode = headers.get("flowcode");
String fileApiCode = headers.get("file_api_code");
OerDjmlEntity djml = new OerDjmlEntity();
djml.setLclb(eventType);
djml.setDjbh(formmainData.getString("field0001"));
djml.setDjlxId(djlxid);
djml.setDataSourceCode(dataSourceCode);
JSONObject forsonData0 = forsonData.getJSONObject(0);
if (ColEventTypeEnum.ONSTART.getType().equals(eventType)){
JSONObject forjsonData0 = forsonData.getJSONObject(0);
djml.setGsdm(formmainData.getString("field0037"));
djml.setKjnd(formmainData.getString("field0038"));
djml.setDjlxId(djlxid);
djml.setZt("2");
djml.setCrerdm(formmainData.getString("field0039"));//制单人代码
djml.setCrermc(formmainData.getString("field0045"));//制单人名称
djml.setCrerdate(timestampConvert(formmainData.getString("start_date"),"yyyyMMdd"));
djml.setDjdate((timestampConvert(formmainData.getString("field0029"),"yyyyMMdd")));
djml.setJe(formmainData.getString("field0011"));//金额
djml.setJedx(formmainData.getString("field0049"));//金额大写
djml.setGrdm(formmainData.getString("field0042"));//报销人代码
djml.setGrmc(formmainData.getString("field0041"));//报销人名称
djml.setBmdm(formmainData.getString("field0044"));//部门代码
djml.setBmmc(formmainData.getString("field0046"));//部门名称
djml.setXmdm(formmainData.getString("field0052"));//项目代码
djml.setXmmc(formmainData.getString("field0002"));//项目名称
djml.setFjs(formmainData.getString("field0048"));//附件数
djml.setZy(formmainData.getString("field0047"));//事由
djml.setSfzh(forsonData0.getString("field0021"));//身份证号
djml.setTel(forsonData0.getString("field0022"));//电话
djml.setWX00000051(formmainData.getString("field0057"));//申请类型
djml.setWX00000054(formmainData.getString("field0004"));//资助经费总额
djml.setWX00000055(formmainData.getString("field0018"));//已到位经费
djml.setWX00000056(formmainData.getString("field0007"));//激励费总额
djml.setWX00000057(formmainData.getString("field0008"));//已支出激励费
//报销明细
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 = djml.getGsdm();
String kjnd = djml.getKjnd();
String je = forson.getString("field0024");
//单据内容
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(formmainData.getString("field0051"));
djnr.setBmmc(formmainData.getString("field0050"));
djnr.setXmdm(djml.getXmdm());
djnr.setXmmc(djml.getXmmc());
//指标id
djnr.setZbId(formmainData.getString("field0030"));
djnr.setZy(djml.getZy());
djnr.setFjs(djml.getFjs());
//支出项目
djnr.setFzx6dm(formmainData.getString("field0053"));
djnr.setFzx6mc(formmainData.getString("field0054"));
//资金来源
djnr.setFzx7dm(formmainData.getString("field0051"));
djnr.setFzx7mc(formmainData.getString("field0056"));
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("field0061"));
jsfs.setJsfsmc(forson.getString("field0060"));
jsfs.setKmdm(forson.getString(""));
jsfs.setKmmc(forson.getString(""));
jsfs.setSkr(forson.getString("field0020"));
jsfs.setKhyh(forson.getString("field0036"));
jsfs.setYhzh(forson.getString("field0023"));
jsfs.setJe(je);
jsfs.setYh("");//银行类型 例如 招商银行
jsfs.setYhhh("");// 联行号
jsfs.setProvince("");//
jsfs.setCity("");//
//支付方式为个人公务卡时 可以选择 经办人负责人其他
jsfs.setRytype("");//人员类型
//用途
jsfs.setYt(forson.getString(""));
jsfsList.add(jsfs);
//预算指标
OerYszbEntity yszb = new OerYszbEntity();
BeanUtil.copyProperties(djnr,yszb);
yszb.setBnxId(headers.get("yszb_bnxid"));
yszb.setZbdm(forson.getString("field0030"));
yszb.setZy(djnr.getZy());
yszb.setKmdm(forson.getString(""));
yszb.setKmmc(forson.getString(""));
yszb.setXh(String.valueOf(xh));
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.setOerDjjsfsEntityList(jsfsList);
djml.setOerYszbEntityList(yszbList);
}else if (ColEventTypeEnum.ONSTOP.getType().equals(eventType)){
//流程终止 修改状态释放指标
djml.setZt("0");
djml.setCurshjd("0");
djml.setNextshjd("-9");
djml.setSsrid(null);
djml.setSsr(null);
djml.setSsrq(null);
djml.setShrId(null);
djml.setShrq(null);
}else if (ColEventTypeEnum.ONCANCEL.getType().equals(eventType)){
//流程撤销 修改状态释放指标
djml.setZt("1");
djml.setCurshjd("0");
djml.setNextshjd("-9");
djml.setSsrid(null);
djml.setSsr(null);
djml.setSsrq(null);
djml.setShrId(null);
djml.setShrq(null);
}else if (ColEventTypeEnum.ONPROCESSFINISHED.getType().equals(eventType)){
//流程结束事件
djml.setZt("3");
djml.setCurshjd("999");
djml.setNextshjd("-1");
//查询协同附件
List<FileInfoDTO> fileInfoList = fileDownloadV1(summaryId, fileApiCode);
djml.setFileInfoList(fileInfoList);
}
String djmlStr = JSONObject.toJSONString(djml);
logger.info("横向科研报文:{}",djmlStr);
return djmlStr;
}
//纵向科研
private String zxky(Map<String, String> headers, String eventType, String summaryId, String dataSourceCode, JSONObject formmainData, JSONArray forsonData) {
String djlxid = headers.get("djlxid");
String flowcode = headers.get("flowcode");
String fileApiCode = headers.get("file_api_code");
OerDjmlEntity djml = new OerDjmlEntity();
djml.setLclb(eventType);
djml.setDjbh(formmainData.getString("field0001"));
djml.setDjlxId(djlxid);
djml.setDataSourceCode(dataSourceCode);
JSONObject forsonData0 = forsonData.getJSONObject(0);
if (ColEventTypeEnum.ONSTART.getType().equals(eventType)){
JSONObject forjsonData0 = forsonData.getJSONObject(0);
djml.setGsdm(formmainData.getString("field0036"));
djml.setKjnd(formmainData.getString("field0037"));
djml.setDjlxId(djlxid);
djml.setZt("2");
djml.setCrerdm(formmainData.getString("field0039"));//制单人代码
djml.setCrermc(formmainData.getString("field0038"));//制单人名称
djml.setCrerdate(timestampConvert(formmainData.getString("start_date"),"yyyyMMdd"));
djml.setDjdate((timestampConvert(formmainData.getString("field0031"),"yyyyMMdd")));
djml.setJe(formmainData.getString("field0011"));//金额
djml.setJedx(formmainData.getString("field0048"));//金额大写
djml.setGrdm(formmainData.getString("field0043"));//报销人代码
djml.setGrmc(formmainData.getString("field0042"));//报销人名称
djml.setBmdm(formmainData.getString("field0045"));//部门代码
djml.setBmmc(formmainData.getString("field0040"));//部门名称
djml.setXmdm(formmainData.getString("field0051"));//项目代码
djml.setXmmc(formmainData.getString("field0002"));//项目名称
djml.setFjs(formmainData.getString("field0047"));//附件数
djml.setZy(formmainData.getString("field0046"));//事由
djml.setSfzh(forsonData0.getString("field0021"));//身份证号
djml.setTel(forsonData0.getString("field0022"));//电话
djml.setWX00000051(formmainData.getString("field0056"));//申请类型
djml.setWX00000054(formmainData.getString("field0004"));//资助经费总额
djml.setWX00000055(formmainData.getString("field0018"));//已到位经费
djml.setWX00000056(formmainData.getString("field0007"));//激励费总额
djml.setWX00000057(formmainData.getString("field0008"));//已支出激励费
//报销明细
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 = djml.getGsdm();
String kjnd = djml.getKjnd();
String je = forson.getString("field0024");
//单据内容
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(formmainData.getString("field0049"));
djnr.setBmmc(formmainData.getString("field0050"));
djnr.setXmdm(djml.getXmdm());
djnr.setXmmc(djml.getXmmc());
//指标id
djnr.setZbId(formmainData.getString("field0032"));
djnr.setZy(djml.getZy());
djnr.setFjs(djml.getFjs());
//支出项目
djnr.setFzx6dm(formmainData.getString("field0052"));
djnr.setFzx6mc(formmainData.getString("field0053"));
//资金来源
djnr.setFzx7dm(formmainData.getString("field0054"));
djnr.setFzx7mc(formmainData.getString("field0055"));
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("field0060"));
jsfs.setJsfsmc(forson.getString("field0059"));
jsfs.setKmdm(forson.getString(""));
jsfs.setKmmc(forson.getString(""));
jsfs.setSkr(forson.getString("field0020"));
jsfs.setKhyh(forson.getString("field0028"));
jsfs.setYhzh(forson.getString("field0023"));
jsfs.setJe(je);
jsfs.setYh("");//银行类型 例如 招商银行
jsfs.setYhhh("");// 联行号
jsfs.setProvince("");//
jsfs.setCity("");//
//支付方式为个人公务卡时 可以选择 经办人负责人其他
jsfs.setRytype("");//人员类型
//用途
jsfs.setYt(forson.getString(""));
jsfsList.add(jsfs);
//预算指标
OerYszbEntity yszb = new OerYszbEntity();
BeanUtil.copyProperties(djnr,yszb);
yszb.setBnxId(headers.get("yszb_bnxid"));
yszb.setZbdm(forson.getString("field0032"));
yszb.setZy(djnr.getZy());
yszb.setKmdm(forson.getString(""));
yszb.setKmmc(forson.getString(""));
yszb.setXh(String.valueOf(xh));
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.setOerDjjsfsEntityList(jsfsList);
djml.setOerYszbEntityList(yszbList);
}else if (ColEventTypeEnum.ONSTOP.getType().equals(eventType)){
//流程终止 修改状态释放指标
djml.setZt("0");
djml.setCurshjd("0");
djml.setNextshjd("-9");
djml.setSsrid(null);
djml.setSsr(null);
djml.setSsrq(null);
djml.setShrId(null);
djml.setShrq(null);
}else if (ColEventTypeEnum.ONCANCEL.getType().equals(eventType)){
//流程撤销 修改状态释放指标
djml.setZt("1");
djml.setCurshjd("0");
djml.setNextshjd("-9");
djml.setSsrid(null);
djml.setSsr(null);
djml.setSsrq(null);
djml.setShrId(null);
djml.setShrq(null);
}else if (ColEventTypeEnum.ONPROCESSFINISHED.getType().equals(eventType)){
//流程结束事件
djml.setZt("3");
djml.setCurshjd("999");
djml.setNextshjd("-1");
//查询协同附件
List<FileInfoDTO> fileInfoList = fileDownloadV1(summaryId, fileApiCode);
djml.setFileInfoList(fileInfoList);
}
String djmlStr = JSONObject.toJSONString(djml);
logger.info("纵向科研报文:{}",djmlStr);
return djmlStr;
}
/**
* 时间戳转成 指定格式
@ -730,6 +1038,8 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
public enum DjlxEnum {
TRAVEL("travel","差旅报销单"),
EXPENSE("expense","费用报销单"),
HXKY("hxky","横向科研"),
ZXKY("zxky","纵向科研"),
LABOR("labor","劳务费报销单"),
;