用友实付款查询接口
This commit is contained in:
parent
a3b8cce54d
commit
b81a01c055
|
@ -94,26 +94,26 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
DynamicObject prinfo = null;
|
DynamicObject prinfo = null;
|
||||||
boolean isBipSuccess = false;
|
boolean isBipSuccess = false;
|
||||||
for (int i = 0; i < dos.length; i++) {
|
for (int i = 0; i < dos.length; i++) {
|
||||||
prinfo = dos[i];
|
//反审核操作之前系统未把info对象所有属性加载出来,尤其是二开的字段,需要在此处重新load一下
|
||||||
|
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(),dos[i].getDataEntityType().getName());
|
||||||
//如果bip红冲单据号为空则需要调用bip接口,否则不需要
|
//如果bip红冲单据号为空则需要调用bip接口,否则不需要
|
||||||
if(!DobeDWUtils.isEmpty(prinfo.getString("qeug_yyhc"))){
|
if(!DobeDWUtils.isEmpty(prinfo.getString("qeug_yyhc"))){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
//supplementflag 事后补单 可能不需要推送BIP,需要排除
|
||||||
if("recon_payreqbill".equals(prinfo.getDataEntityType().getName()) && !prinfo.getBoolean("nocontractflag")){
|
if("recon_payreqbill".equals(prinfo.getDataEntityType().getName()) && !prinfo.getBoolean("nocontractflag")){
|
||||||
//判断实体名称为合同付款申请单,此时无合同付款 nocontractflag 不需要推送
|
//判断实体名称为合同付款申请单,此时无合同付款 nocontractflag 不需要推送
|
||||||
isBipSuccess = handleForBIP(eok,prinfo,false);
|
isBipSuccess = handleForBIP(eok,prinfo,false);
|
||||||
}else if("recon_connotextbill".equals(prinfo.getDataEntityType().getName())){
|
}else if("recon_connotextbill".equals(prinfo.getDataEntityType().getName())){
|
||||||
//无文本合同
|
//无文本合同
|
||||||
isBipSuccess = handleForBIP(eok,prinfo,true);
|
isBipSuccess = handleForBIP(eok,prinfo,true);
|
||||||
|
}else {
|
||||||
|
//由无文本合同生成的付款申请单走这里
|
||||||
|
isBipSuccess = true;
|
||||||
}
|
}
|
||||||
//如果bip接口失败,记录日志,并中断原有反审核业务
|
//如果bip接口失败,记录日志,并中断原有反审核业务
|
||||||
if(!isBipSuccess){
|
if(!isBipSuccess){
|
||||||
e.setCancelMessage("推送BIP红冲数据失败,反审核中断,请排查接口失败原因e.setCancelMessage");
|
e.setCancelMessage("推送BIP红冲数据失败,反审核中断,请排查接口失败原因");
|
||||||
OperateErrorInfo oeInfo = new OperateErrorInfo();
|
|
||||||
oeInfo.setMessage("推送BIP红冲数据失败,反审核中断,请排查接口失败原因");
|
|
||||||
oeInfo.setErrorLevel(ErrorLevel.Error.name());
|
|
||||||
oeInfo.setPkValue(prinfo.getPkValue());
|
|
||||||
this.operationResult.addErrorInfo(oeInfo);
|
|
||||||
e.setCancel(true);
|
e.setCancel(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -134,7 +134,7 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
boolean isBipSuccess = false;
|
boolean isBipSuccess = false;
|
||||||
for (int i = 0; i < dos.length; i++) {
|
for (int i = 0; i < dos.length; i++) {
|
||||||
prinfo = dos[i];
|
prinfo = dos[i];
|
||||||
//如果bip单据号为空则需要调用bip接口,否则不需要
|
//如果bip单据号为空则需要调用bip接口,否则不需要(操作之后系统会把对象的所有属性加载出来)
|
||||||
if(!DobeDWUtils.isEmpty(prinfo.getString("qeug_yynum"))){
|
if(!DobeDWUtils.isEmpty(prinfo.getString("qeug_yynum"))){
|
||||||
this.operationResult.setSuccess(false);
|
this.operationResult.setSuccess(false);
|
||||||
this.operationResult.setMessage("此单已推送BIP,无需再次点击同步按钮");//前端界面提示内容
|
this.operationResult.setMessage("此单已推送BIP,无需再次点击同步按钮");//前端界面提示内容
|
||||||
|
@ -143,10 +143,10 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
}
|
}
|
||||||
//审核时,如果用友单号已有,则不需要再推送给BIP
|
//审核时,如果用友单号已有,则不需要再推送给BIP
|
||||||
if("recon_payreqbill".equals(prinfo.getDataEntityType().getName()) && !prinfo.getBoolean("nocontractflag")){
|
if("recon_payreqbill".equals(prinfo.getDataEntityType().getName()) && !prinfo.getBoolean("nocontractflag")){
|
||||||
//判断实体名称为合同付款申请单,此时无合同付款 nocontractflag 不需要推送
|
//判断实体名称为合同付款申请单,此时无合同付款 nocontractflag 不需要推送 是否事后补单 supplementflag
|
||||||
isBipSuccess = handleForBIP(eok,prinfo,false);
|
isBipSuccess = handleForBIP(eok,prinfo,false);
|
||||||
}else if("recon_connotextbill".equals(prinfo.getDataEntityType().getName())){
|
}else if("recon_connotextbill".equals(prinfo.getDataEntityType().getName())){
|
||||||
//无文本合同
|
//无文本合同 是否事后补单 supplementflag
|
||||||
isBipSuccess = handleForBIP(eok,prinfo,true);
|
isBipSuccess = handleForBIP(eok,prinfo,true);
|
||||||
}
|
}
|
||||||
if("syncbip".equals(eok)){
|
if("syncbip".equals(eok)){
|
||||||
|
@ -172,24 +172,8 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String[] getCompanyDeptNumber(String bizDept){
|
|
||||||
//根据用款部门的编号获得对应关系表中的财务公司编号和部门编号
|
|
||||||
DynamicObject orginfo = BusinessDataServiceHelper.loadSingle("qeug_recon_orgrelation",new QFilter[]{new QFilter("number","=",bizDept)});
|
|
||||||
String[] result = new String[3];
|
|
||||||
if(orginfo != null){
|
|
||||||
result[0] = orginfo.getString("qeug_companynumber");//财务公司编号
|
|
||||||
result[1] = orginfo.getString("qeug_deptnumber");//财务部门编号
|
|
||||||
result[2] = orginfo.getString("qeug_paynumber");//财务公司付款账户
|
|
||||||
// result[2] = "03002635967";
|
|
||||||
}else{
|
|
||||||
log.error(String.format("用友付款接口根据用款部门编号转换财务编号失败:%s", bizDept));
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private JSONObject zzPayData(String eventName, DynamicObject payrequestinfo, boolean isnotext){
|
private JSONObject zzPayData(String eventName, DynamicObject payrequestinfo, boolean isnotext){
|
||||||
String[] companyDept = getCompanyDeptNumber(payrequestinfo.getDynamicObject("usedepart").getString("number"));
|
String[] companyDept = DobeDWUtils.getCompanyDeptNumber(payrequestinfo.getDynamicObject("usedepart").getString("number"));
|
||||||
if(companyDept[0] == null){
|
if(companyDept[0] == null){
|
||||||
DobeDWUtils.saveLog(payrequestinfo.getString("billno"),"用友BIP",payrequestinfo.getDynamicObject("usedepart").getString("number"),"根据用款部门编号转换财务编号失败",false,eventName);
|
DobeDWUtils.saveLog(payrequestinfo.getString("billno"),"用友BIP",payrequestinfo.getDynamicObject("usedepart").getString("number"),"根据用款部门编号转换财务编号失败",false,eventName);
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -17,8 +17,10 @@ import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
import nccloud.open.api.auto.token.cur.utils.APICurUtils;
|
import nccloud.open.api.auto.token.cur.utils.APICurUtils;
|
||||||
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.Request;
|
import okhttp3.Request;
|
||||||
import okhttp3.RequestBody;
|
import okhttp3.RequestBody;
|
||||||
|
import okhttp3.Response;
|
||||||
import shkd.utils.DobeDWUtils;
|
import shkd.utils.DobeDWUtils;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -44,12 +46,11 @@ public class YongyouBIPTask extends AbstractTask implements Plugin {
|
||||||
// currentinfo = docs.get(i);
|
// currentinfo = docs.get(i);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
//查找无文本合同已审核未付款的单子
|
|
||||||
|
|
||||||
//查找未审核的付款登记单,考虑费用登记和付款申请单如果是事后补单的话,此处是否需要过滤
|
//查找未审核的付款登记单,考虑费用登记和付款申请单如果是事后补单的话,此处是否需要过滤
|
||||||
QFilter statusFilter = new QFilter("billstatus","=","A");
|
QFilter statusFilter = new QFilter("billstatus","=","A");
|
||||||
String selectStr = "id,billno,bizdate,connotextbill.id,connotextbill.billno,connotextbill.qeug_yynum,payreqbill.id,payreqbill.billno,payreqbill.qeug_yynum";
|
QFilter statusB = new QFilter("billstatus","=","B");
|
||||||
DynamicObject[] prs = BusinessDataServiceHelper.load(payregisterEntity,selectStr,new QFilter[]{statusFilter});
|
// String selectStr = "id,billno,bizdate,billstatus,connotextbill.id,connotextbill.billno,connotextbill.qeug_yynum,payreqbill.id,payreqbill.billno,payreqbill.qeug_yynum";
|
||||||
|
DynamicObject[] prs = BusinessDataServiceHelper.load(payregisterEntity,"id",new QFilter[]{statusFilter.or(statusB)});
|
||||||
if(prs.length == 0){
|
if(prs.length == 0){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -77,36 +78,68 @@ public class YongyouBIPTask extends AbstractTask implements Plugin {
|
||||||
log.error("用友认证接口返回的accessToken为空");
|
log.error("用友认证接口返回的accessToken为空");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Request request = new Request.Builder().url(DobeDWUtils.payQueryUrl)
|
Request request = null;
|
||||||
.post(createFormRequestBody(null))
|
|
||||||
.header("Content-Type", "application/json;charset=utf-8")
|
|
||||||
.header("access_token", accesstoken)
|
|
||||||
.header("repeat_check", "Y")
|
|
||||||
.header("ucg_flag", "Y")
|
|
||||||
.header("client_id", DobeDWUtils.clientid)
|
|
||||||
.build();
|
|
||||||
JSONObject resultData = null;
|
JSONObject resultData = null;
|
||||||
DynamicObject prinfo = null;
|
DynamicObject prinfo = null;
|
||||||
DynamicObject requestinfo = null;
|
DynamicObject requestinfo = null;
|
||||||
String yynum = null;
|
String yynum = null;
|
||||||
|
String[] companyDept = null;
|
||||||
|
JSONObject queryParams = new JSONObject();
|
||||||
|
OkHttpClient client = new OkHttpClient();
|
||||||
|
Response response = null;
|
||||||
for (int i = 0; i < prs.length; i++) {
|
for (int i = 0; i < prs.length; i++) {
|
||||||
prinfo = prs[i];
|
prinfo = BusinessDataServiceHelper.loadSingle(prs[i].getPkValue(),payregisterEntity);
|
||||||
//费用登记
|
//费用登记
|
||||||
requestinfo = prinfo.getDynamicObject("connotextbill");
|
requestinfo = prinfo.getDynamicObject("connotextbill");
|
||||||
if(requestinfo == null){
|
if(requestinfo == null){
|
||||||
//付款申请
|
//付款申请
|
||||||
requestinfo = prinfo.getDynamicObject("payreqbill");
|
requestinfo = prinfo.getDynamicObject("payreqbill");
|
||||||
}
|
}
|
||||||
//看用友的实付款查询接口是一个个查询,还是集中查询
|
requestinfo = BusinessDataServiceHelper.loadSingle(requestinfo.getPkValue(),requestinfo.getDataEntityType().getName());
|
||||||
|
//看用友的实付款查询接口是一个个查询,还是集中查询;这个字段直接从F7实体对象中获取不到,需要扩展F7实体
|
||||||
yynum = requestinfo.getString("qeug_yynum");
|
yynum = requestinfo.getString("qeug_yynum");
|
||||||
resultData = JSON.parseObject("用友接口返回值");
|
//获取到的yynum为空,则不进行实付查询
|
||||||
|
if(DobeDWUtils.isEmpty(yynum)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//根据付款申请单的用款部门找到对应财务组织编号
|
||||||
|
companyDept = DobeDWUtils.getCompanyDeptNumber(requestinfo.getDynamicObject("usedepart").getString("number"));
|
||||||
|
if(companyDept[0] == null){
|
||||||
|
DobeDWUtils.saveLog(requestinfo.getString("number"),"用友实付查询",requestinfo.getDynamicObject("usedepart").getString("number"),"根据用款部门编号转换财务编号失败",false,"定时任务");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
queryParams.put("pk_org",companyDept[0]);
|
||||||
|
queryParams.put("bill_no",yynum);
|
||||||
|
request = new Request.Builder().url(DobeDWUtils.payQueryUrl)
|
||||||
|
.post(createFormRequestBody(queryParams))
|
||||||
|
.header("Content-Type", "application/json;charset=utf-8")
|
||||||
|
.header("access_token", accesstoken)
|
||||||
|
.header("repeat_check", "Y")
|
||||||
|
.header("ucg_flag", "Y")
|
||||||
|
.header("client_id", DobeDWUtils.clientid)
|
||||||
|
.build();
|
||||||
|
try {
|
||||||
|
response = client.newCall(request).execute();
|
||||||
|
resultData = JSON.parseObject(response.body().string());
|
||||||
|
if(!"true".equals(resultData.getString("success"))){
|
||||||
|
//增加日志记录
|
||||||
|
DobeDWUtils.saveLog(requestinfo.getString("number"),"用友实付查询",queryParams.toString(),resultData.toString(),false,"定时任务");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
DobeDWUtils.saveLog(requestinfo.getString("number"),"用友实付查询",queryParams.toString(),e.getMessage(),false,"定时任务");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
//根据查询结果设置付款登记对象
|
//根据查询结果设置付款登记对象
|
||||||
prinfo.set("bizdate",resultData.getDate("bizdate"));
|
prinfo.set("bizdate",resultData.getJSONObject("data").getDate("billdate"));
|
||||||
prinfo.set("billno",resultData.getString("billno"));
|
prinfo.set("billno",yynum);
|
||||||
prinfo.set("status","B"); //单据状态改为已提交
|
prinfo.set("billstatus","B"); //单据状态改为已提交
|
||||||
SaveServiceHelper.update(prinfo);//保存上述设置内容
|
SaveServiceHelper.update(prinfo);//保存上述设置内容
|
||||||
|
//调用提交方法
|
||||||
|
// OperationServiceHelper.executeOperate("submit",payregisterEntity,new DynamicObject[]{prinfo}, OperateOption.create());
|
||||||
//调用付款登记单的审核方法
|
//调用付款登记单的审核方法
|
||||||
OperationServiceHelper.executeOperate("audit",payregisterEntity,new DynamicObject[]{prinfo}, OperateOption.create());
|
OperationServiceHelper.executeOperate("audit",payregisterEntity,new DynamicObject[]{prinfo}, OperateOption.create());
|
||||||
|
DobeDWUtils.saveLog(requestinfo.getString("number"),"用友实付查询",queryParams.toString(),resultData.toString(),true,"定时任务");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import kd.bos.context.RequestContext;
|
import kd.bos.context.RequestContext;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||||
import okhttp3.MediaType;
|
import okhttp3.MediaType;
|
||||||
|
@ -38,7 +39,7 @@ public class DobeDWUtils {
|
||||||
//用友付款单新增接口
|
//用友付款单新增接口
|
||||||
public static final String payUrl = "http://106.14.25.83:9999/nccloud/api/arap/paybill/insertandcommit";
|
public static final String payUrl = "http://106.14.25.83:9999/nccloud/api/arap/paybill/insertandcommit";
|
||||||
//付款金额查询接口
|
//付款金额查询接口
|
||||||
public static final String payQueryUrl = "http://106.14.25.83:8090/nccloud/api/arap/paybill/insertandcommit";
|
public static final String payQueryUrl = "http://106.14.25.83:8090/nccloud/api/sp/spPaybillQuery/querySettleStatus";
|
||||||
|
|
||||||
private static final String jklogEntityName = "qeug_recon_jklog";
|
private static final String jklogEntityName = "qeug_recon_jklog";
|
||||||
|
|
||||||
|
@ -46,6 +47,19 @@ public class DobeDWUtils {
|
||||||
return value == null || value.trim().length() <= 0;
|
return value == null || value.trim().length() <= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String[] getCompanyDeptNumber(String bizDept){
|
||||||
|
//根据用款部门的编号获得对应关系表中的财务公司编号和部门编号
|
||||||
|
DynamicObject orginfo = BusinessDataServiceHelper.loadSingle("qeug_recon_orgrelation",new QFilter[]{new QFilter("number","=",bizDept)});
|
||||||
|
String[] result = new String[3];
|
||||||
|
if(orginfo != null){
|
||||||
|
result[0] = orginfo.getString("qeug_companynumber");//财务公司编号
|
||||||
|
result[1] = orginfo.getString("qeug_deptnumber");//财务部门编号
|
||||||
|
result[2] = orginfo.getString("qeug_paynumber");//财务公司付款账户
|
||||||
|
// result[2] = "03002635967";
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public static void saveLog(String billno,String jkname,String inputs,String outputs,boolean isSuccess,String operation){
|
public static void saveLog(String billno,String jkname,String inputs,String outputs,boolean isSuccess,String operation){
|
||||||
//保存星瀚与第三方接口调用之间的日志记录
|
//保存星瀚与第三方接口调用之间的日志记录
|
||||||
//参数说明:单据编号、接口名称、接口入参、接口返回值、接口执行结果是否成功、操作名称(audit、unaudit等)
|
//参数说明:单据编号、接口名称、接口入参、接口返回值、接口执行结果是否成功、操作名称(audit、unaudit等)
|
||||||
|
|
Loading…
Reference in New Issue