Compare commits

..

3 Commits

Author SHA1 Message Date
xiang2lin 7f0994bd93 横向科研 纵向科研 2025-05-16 13:44:26 +08:00
xiang2lin 1788bbe19d 劳务费 2025-05-16 13:43:02 +08:00
xiang2lin 41a506e414 劳务费 2025-05-16 13:42:26 +08:00
10 changed files with 699 additions and 0 deletions

View File

@ -0,0 +1,96 @@
package com.hzya.frame.plugin.grp.plugin;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.base.PluginBaseEntity;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @Description 劳务费插件
* @Author xiangerlin
* @Date 2025/5/13 17:49
**/
public class LwfPluginInitializer extends PluginBaseEntity {
Logger logger = LoggerFactory.getLogger(ExpensePluginInitializer.class);
/***
* 插件初始化方法
* @Author 👻👻👻👻👻👻👻👻 gjh
* @Date 2023-08-02 10:48
* @Param []
* @return void
**/
@Override
public void initialize() {
logger.info(getPluginLabel() + "執行初始化方法initialize()");
}
/****
* 插件销毁方法
* @author 👻👻👻👻👻👻👻👻 gjh
* @date 2023-08-02 10:48
* @return void
**/
@Override
public void destroy() {
logger.info(getPluginLabel() + "執行銷毀方法destroy()");
}
/****
* 插件的ID
* @author 👻👻👻👻👻👻👻👻 gjh
* @date 2023-08-02 10:48
* @return void
**/
@Override
public String getPluginId() {
return "LwfPlugin";
}
/****
* 插件的名称
* @author 👻👻👻👻👻👻👻👻 gjh
* @date 2023-08-02 10:48
* @return void
**/
@Override
public String getPluginName() {
return "劳务费插件";
}
/****
* 插件的显示值
* @author 👻👻👻👻👻👻👻👻 gjh
* @date 2023-08-02 10:48
* @return void
**/
@Override
public String getPluginLabel() {
return "劳务费插件";
}
/***
* 插件类型 1场景插件
* @Author 👻👻👻👻👻👻👻👻 gjh
* @Date 2023-08-02 14:01
* @Param []
* @return java.lang.String
**/
@Override
public String getPluginType() {
return "1";
}
/***
* 执行业务代码
* @Author 👻👻👻👻👻👻👻👻 gjh
* @Date 2023-08-07 11:20
* @param requestJson 执行业务代码的参数
* @return void
**/
@Override
public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
logger.info("======开始执行GRP劳务费插件======:{}",requestJson.toString());
return null;
}
}

View File

@ -0,0 +1,19 @@
package com.hzya.frame.plugin.grp.service;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.web.entity.JsonResultEntity;
/**
* @Description 劳务费插件service
* @Author xiangerlin
* @Date 2025/5/13 17:52
**/
public interface ILwfPluginService {
/**
* 执行插件
* @param jsonObject
* @return
*/
JsonResultEntity execute(JSONObject jsonObject)throws Exception;
}

View File

@ -0,0 +1,56 @@
package com.hzya.frame.plugin.grp.service.impl;
import cn.hutool.core.lang.Assert;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.grpU8.nxproof.gzlwfml.service.IGzLwfExtService;
import com.hzya.frame.plugin.grp.service.ILwfPluginService;
import com.hzya.frame.web.entity.BaseResult;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
/**
* @Description 劳务费插件
* @Author xiangerlin
* @Date 2025/5/13 17:52
**/
public class LwfPluginServiceImpl implements ILwfPluginService {
Logger logger = LoggerFactory.getLogger(ILwfPluginService.class);
@Autowired
private IGzLwfExtService lwfExtService;
@Value("${zt.url}")
private String interfaceUrl;
/**
* 执行插件
*
* @param json
* @return
*/
@Override
public JsonResultEntity execute(JSONObject json) throws Exception {
String headersStr = json.getString("headers");//请求头
String formAppId = json.getString("formAppId");
String eventType = json.getString("eventType");
String dataSouceCode = json.getString("apiDataSourceCode");
Assert.notEmpty(formAppId,"formAppId不能为空");
Assert.notEmpty(eventType,"eventType不能为空");
Assert.notEmpty(headersStr,"headers不能为空");
Assert.notEmpty(dataSouceCode,"数据源编码不能为空");
logger.info("准备开始组装参数");
String param = lwfExtService.saveLwfPrePlugin(json);
logger.info("OA单据组装好准备保存劳务费的参数:{}",param);
String result = HttpRequest.post(interfaceUrl)
.header("appId","800042")// grp应用
.header("apiCode","8000420043")//劳务费接口
.header("publicKey","ZJYAcDv1SMgN1oUwzfpV5byfUaN78sVw+L+DB9XTT30aS8hCe7eDIk+3zDUT+v578prj")//OA应用key
.header("secretKey","ZLQWG13Z30FoeuCgi6/Uc41XF6oLO63550OAa6ggXUmtOZj5MgQNZMjVgL/M4BRkj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA应用密钥
.body(param).execute().body();
// JsonResultEntity resultEntity = (JsonResultEntity) oerDjmlService.handleOerDjml(paramJSON);
// logger.info("保存GRPU8响应参数:{}",JSONObject.toJSON(resultEntity));
logger.info("保存GRPU8响应参数:{}",result);
return BaseResult.getSuccessMessageEntity(result);
}
}

View File

@ -2,4 +2,5 @@
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName"> <beans default-autowire="byName">
<bean name="expensePluginInitializer" class="com.hzya.frame.plugin.grp.plugin.ExpensePluginInitializer" /> <bean name="expensePluginInitializer" class="com.hzya.frame.plugin.grp.plugin.ExpensePluginInitializer" />
<bean name="lwfPluginInitializer" class="com.hzya.frame.plugin.grp.plugin.LwfPluginInitializer" />
</beans> </beans>

View File

@ -2,4 +2,5 @@
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName"> <beans default-autowire="byName">
<bean name="expensePluginServiceImpl" class="com.hzya.frame.plugin.grp.service.impl.ExpensePluginServiceImpl" /> <bean name="expensePluginServiceImpl" class="com.hzya.frame.plugin.grp.service.impl.ExpensePluginServiceImpl" />
<bean name="lwfPluginServiceImpl" class="com.hzya.frame.plugin.grp.service.impl.LwfPluginServiceImpl" />
</beans> </beans>

View File

@ -0,0 +1,22 @@
package com.hzya.frame.grpU8.nxproof.gzlwfml.service;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.web.entity.JsonResultEntity;
/**
* @Description 劳务费扩展类用来组装参数
* @Author xiangerlin
* @Date 2025/5/13 16:03
**/
public interface IGzLwfExtService {
/**
* 保存前方法先调用这个方法 组装参数
* 插件方式执行用这个方法
* @param jsonObject
* @return
*/
String saveLwfPrePlugin(JSONObject jsonObject);
}

View File

@ -0,0 +1,122 @@
package com.hzya.frame.grpU8.nxproof.gzlwfml.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.grpU8.nxproof.gzlwfml.entity.GzLwfMlEntity;
import com.hzya.frame.grpU8.nxproof.gzlwfml.entity.GzLwfNrEntity;
import com.hzya.frame.grpU8.nxproof.gzlwfml.service.IGzLwfExtService;
import com.hzya.frame.grpU8.nxproof.oerdjml.enums.ColEventTypeEnum;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description
* @Author xiangerlin
* @Date 2025/5/13 16:04
**/
@Service(value ="gzLwfExtServiceImpl")
public class GzLwfExtServiceImpl implements IGzLwfExtService {
Logger logger = LoggerFactory.getLogger(IGzLwfExtService.class);
/**
* 保存前方法先调用这个方法 组装参数
* 插件方式执行用这个方法
*
* @param jsonObject
* @return
*/
@Override
public String saveLwfPrePlugin(JSONObject jsonObject) {
if (null != jsonObject){
logger.info("进入劳务费保存前方法:{}",jsonObject.toString());
JSONObject jsonStr = jsonObject.getJSONObject("jsonStr");
HashMap<String,String> headers = JSON.parseObject(jsonObject.getString("headers"), new HashMap<String, String>().getClass());
String datasourceCode = jsonObject.getString("apiDataSourceCode");
String res = lwfValuOf(jsonStr,headers,datasourceCode);
logger.info("劳务费保存前方法返回值:{}",res);
return res;
}
return null;
}
private String lwfValuOf(JSONObject jsonStr, HashMap<String,String> headers, String datasourceCode) {
if (null != jsonStr && null != headers && !headers.isEmpty()){
String formmainTableName = headers.get("formmainTableName");
String forsonTableName = headers.get("forsonTableName");
String djlx = headers.get("djlx");
//事件类型
String eventType = jsonStr.getString("eventType");
//summaryId
String summaryId = jsonStr.getString("summaryId");
JSONObject seeyonData = jsonStr.getJSONObject("businessDataStr");
if (null != seeyonData){
/**
* 流程发起 保存/更新单据 要全部数据
* 流程撤销 只更新状态传单号和状态就好了
* 流程终止 只更新状态传单号和状态就好了
* 流程结束 更新状态 并上传附件
*/
JSONObject formmainData = seeyonData.getJSONObject(formmainTableName);
JSONArray forsonData = seeyonData.getJSONArray(forsonTableName);
String lwf = lwf(headers, eventType, summaryId, datasourceCode, formmainData, forsonData);
return lwf;
}
}
return null;
}
//劳务费参数
private String lwf(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");
GzLwfMlEntity djml = new GzLwfMlEntity();
//流程发起
if (ColEventTypeEnum.ONSTART.getType().equals(eventType)){
JSONObject forjsonData0 = forsonData.getJSONObject(0);
djml.setGSDM(formmainData.getString("field0043"));
djml.setFFND(formmainData.getString("field0044"));
djml.setFFDATE(formmainData.getString("field0007"));
djml.setBZR(formmainData.getString("field0085"));
djml.setBZRID(formmainData.getString("field0084"));
djml.setBZRQ(formmainData.getString("field0002"));
djml.setBMDM(formmainData.getString("field0086"));
djml.setZT("2");
List<GzLwfNrEntity> lwfnrList = new ArrayList<>();
for (int i=0; i<forsonData.size();i++){
JSONObject forson = forsonData.getJSONObject(i);
GzLwfNrEntity djnr = new GzLwfNrEntity();
djnr.setGSDM(djml.getGSDM());
djnr.setFFND(djml.getFFND());
djnr.setBMDM(forson.getString("field0093"));
djnr.setBMMC(forson.getString("field0056"));
djnr.setFFZH(forson.getString("field0060"));
djnr.setSFZH(forson.getString("field0057"));
djnr.setJE(forson.getString("field0065"));
djnr.setSDS(new BigDecimal(forson.getString("field0064")));
djnr.setYhmc(forson.getString("field0059"));
lwfnrList.add(djnr);
}
djml.setLwfnrList(lwfnrList);
logger.info("劳务费主表:{}",JSONObject.toJSONString(djml));
logger.info("劳务费子表:{}",JSONObject.toJSONString(lwfnrList));
}else if (ColEventTypeEnum.ONSTOP.getType().equals(eventType)){
//流程终止
}else if (ColEventTypeEnum.ONCANCEL.getType().equals(eventType)){
//流程撤销
}else if (ColEventTypeEnum.ONPROCESSFINISHED.getType().equals(eventType)){
//流程终止
}
String djmlStr = JSONObject.toJSONString(djml);
return djmlStr;
}
}

View File

@ -55,6 +55,7 @@ public class OerDjmlEntity extends BaseEntity {
private String pzh;//凭证号 private String pzh;//凭证号
private String fph;//发票号 private String fph;//发票号
private String sfzh;//身份证号
private byte[] RptRtContent; private byte[] RptRtContent;
//项目代码 //项目代码
@ -81,6 +82,11 @@ public class OerDjmlEntity extends BaseEntity {
private String jflxdm; private String jflxdm;
//经费类型名称 //经费类型名称
private String jflxmc; private String jflxmc;
private String WX00000051;//自定义字段 申请类型
private String WX00000054;//自定义字段 资助经费总额
private String WX00000055;//自定义字段 已到位经费
private String WX00000056;//自定义字段 激励费总额
private String WX00000057;//自定义字段 已支出激励费
//附件对象 //附件对象
@JSONField(ordinal = 9995) @JSONField(ordinal = 9995)
private List<FileInfoDTO> fileInfoList; private List<FileInfoDTO> fileInfoList;
@ -507,4 +513,52 @@ public class OerDjmlEntity extends BaseEntity {
public void setJflxmc(String jflxmc) { public void setJflxmc(String jflxmc) {
this.jflxmc = 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="grdm" column="grdm" />
<result property="grmc" column="grmc" /> <result property="grmc" column="grmc" />
<result property="tel" column="tel" /> <result property="tel" column="tel" />
<result property="sfzh" column="sfzh" />
<result property="yjje" column="yjje" /> <result property="yjje" column="yjje" />
<result property="thje" column="thje" /> <result property="thje" column="thje" />
<result property="blje" column="blje" /> <result property="blje" column="blje" />
<result property="whje" column="whje" /> <result property="whje" column="whje" />
<result property="jedx" column="jedx" /> <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" /> <result column="Rpt_Rt_content" property="RptRtContent" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler" />
</resultMap> </resultMap>
@ -131,6 +137,7 @@ GSDM,KJND,mlId
<if test="grdm != null and grdm !='' ">GRDM, </if> <if test="grdm != null and grdm !='' ">GRDM, </if>
<if test="grmc != null and grmc !='' ">GRMC,</if> <if test="grmc != null and grmc !='' ">GRMC,</if>
<if test="tel != null and tel !='' "> TEL, </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="yjje != null and yjje !='' "> YJJE, </if>
<if test="thje != null and thje !='' "> THJE,</if> <if test="thje != null and thje !='' "> THJE,</if>
<if test="blje != null and blje !='' "> BLJE, </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="ssrq != null and ssrq !='' "> ssrq, </if>-->
<if test="jflxdm != null and jflxdm !='' "> jflxdm, </if> <if test="jflxdm != null and jflxdm !='' "> jflxdm, </if>
<if test="jflxmc != null and jflxmc !='' "> jflxmc, </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="xmdm != null and xmdm !='' "> xmdm, </if>
<if test="xmmc != null and xmmc !='' "> xmmc, </if> <if test="xmmc != null and xmmc !='' "> xmmc, </if>
</trim> </trim>
@ -178,6 +190,7 @@ GSDM,KJND,mlId
<if test="grdm != null and grdm !='' "> #{grdm}, </if> <if test="grdm != null and grdm !='' "> #{grdm}, </if>
<if test="grmc != null and grmc !='' "> #{grmc},</if> <if test="grmc != null and grmc !='' "> #{grmc},</if>
<if test="tel != null and tel !='' "> #{tel}, </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="yjje != null and yjje !='' "> #{yjje}, </if>
<if test="thje != null and thje !='' "> #{thje},</if> <if test="thje != null and thje !='' "> #{thje},</if>
<if test="blje != null and blje !='' "> #{blje}, </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="ssrq != null and ssrq !='' "> #{ssrq}, </if>-->
<if test="jflxdm != null and jflxdm !='' "> #{jflxdm}, </if> <if test="jflxdm != null and jflxdm !='' "> #{jflxdm}, </if>
<if test="jflxmc != null and jflxmc !='' "> #{jflxmc}, </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="xmdm != null and xmdm !='' "> #{xmdm}, </if>
<if test="xmmc != null and xmmc !='' "> #{xmmc}, </if> <if test="xmmc != null and xmmc !='' "> #{xmmc}, </if>
</trim> </trim>

View File

@ -182,6 +182,12 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
logger.info("oerValuOf方法已经组装好参数准备return"); logger.info("oerValuOf方法已经组装好参数准备return");
}else if (DjlxEnum.LABOR.type.equals(djlx)){ }else if (DjlxEnum.LABOR.type.equals(djlx)){
//劳务费 labor //劳务费 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"); logger.info("oerValuOf方法return");
return res; return res;
@ -189,6 +195,9 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
} }
return null; return null;
} }
/** /**
* 费用报销单 * 费用报销单
* @param headers 请求头 * @param headers 请求头
@ -554,6 +563,305 @@ public class OerDjmlExtServiceImpl implements IOerDjmlExtService {
logger.info("差旅报销单报文:{}",djmlStr); logger.info("差旅报销单报文:{}",djmlStr);
return 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 { public enum DjlxEnum {
TRAVEL("travel","差旅报销单"), TRAVEL("travel","差旅报销单"),
EXPENSE("expense","费用报销单"), EXPENSE("expense","费用报销单"),
HXKY("hxky","横向科研"),
ZXKY("zxky","纵向科研"),
LABOR("labor","劳务费报销单"), LABOR("labor","劳务费报销单"),
; ;