用友接口优化,日志保存优化
This commit is contained in:
parent
a8123adecc
commit
94917bcdd2
|
@ -91,19 +91,20 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
@Override
|
@Override
|
||||||
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||||
super.afterExecuteOperationTransaction(e);
|
super.afterExecuteOperationTransaction(e);
|
||||||
//audit审核通过后,判断当前是合同付款申请单还是无文本合同
|
//audit审核 unaudit反审核 syncbip手动同步 三种情况进入如下代码
|
||||||
if("syncbip".equals(e.getOperationKey())){
|
String eok = e.getOperationKey();
|
||||||
|
if("audit".equals(eok) || "unaudit".equals(eok) || "syncbip".equals(eok)){
|
||||||
DynamicObject[] dos = e.getDataEntities();
|
DynamicObject[] dos = e.getDataEntities();
|
||||||
DynamicObject payrequestinfo = null;
|
DynamicObject prinfo = null;
|
||||||
for (int i = 0; i < dos.length; i++) {
|
for (int i = 0; i < dos.length; i++) {
|
||||||
payrequestinfo = dos[i];
|
prinfo = dos[i];
|
||||||
|
//审核时,如果用友单号已有,则不需要再推送给BIP
|
||||||
if("recon_payreqbill".equals(payrequestinfo.getDataEntityType().getName())){
|
if("recon_payreqbill".equals(prinfo.getDataEntityType().getName()) && !prinfo.getBoolean("nocontractflag")){
|
||||||
//判断实体名称为合同付款申请单
|
//判断实体名称为合同付款申请单,此时无合同付款 nocontractflag 不需要推送
|
||||||
handleForBIP(e.getOperationKey(),payrequestinfo,false);
|
handleForBIP(eok,prinfo,false);
|
||||||
}else if("recon_connotextbill".equals(payrequestinfo.getDataEntityType().getName())){
|
}else if("recon_connotextbill".equals(prinfo.getDataEntityType().getName())){
|
||||||
//无文本合同
|
//无文本合同
|
||||||
handleForBIP(e.getOperationKey(),payrequestinfo,true);
|
handleForBIP(eok,prinfo,true);
|
||||||
}
|
}
|
||||||
// payrequestinfo.getDynamicObjectType().getAlias();//获取数据库表名
|
// payrequestinfo.getDynamicObjectType().getAlias();//获取数据库表名
|
||||||
}
|
}
|
||||||
|
@ -140,8 +141,8 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
JSONObject payData = new JSONObject();
|
JSONObject payData = new JSONObject();
|
||||||
String[] companyDept = getCompanyDeptNumber(payrequestinfo.getDynamicObject("usedepart").getString("number"));
|
String[] companyDept = getCompanyDeptNumber(payrequestinfo.getDynamicObject("usedepart").getString("number"));
|
||||||
payData.put("pk_org",companyDept[0]);//财务公司组织编码,根据当前单据的用款部门获得对应关系表中的财务公司和部门
|
payData.put("pk_org",companyDept[0]);//财务公司组织编码,根据当前单据的用款部门获得对应关系表中的财务公司和部门
|
||||||
payData.put("pk_tradetype","D3");//交易类型,传编码例:D3-采购付款单
|
payData.put("pk_tradetype","F3-Cxx-03");//交易类型编码,传编码例:D3-采购付款单
|
||||||
payData.put("billdate",DobeDWUtils.getDateString(payrequestinfo.getDate("bizdate")));//业务日期,YYYY-MM-DD
|
payData.put("billdate",DobeDWUtils.getDateString(payrequestinfo.getDate("auditDate")));//业务日期,YYYY-MM-DD
|
||||||
String ap_recaccount = null;//收款银行账户编码
|
String ap_recaccount = null;//收款银行账户编码
|
||||||
//无文本合同的个人垫付时,是业务员
|
//无文本合同的个人垫付时,是业务员
|
||||||
boolean isgrdf = isnotext && payrequestinfo.getBoolean("qeug_grdf");
|
boolean isgrdf = isnotext && payrequestinfo.getBoolean("qeug_grdf");
|
||||||
|
@ -166,7 +167,10 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
payData.put("ap_payaccount",ap_payaccount);//如何取值?-从数仓获取的组织对应关系中获取默认付款银行账号
|
payData.put("ap_payaccount",ap_payaccount);//如何取值?-从数仓获取的组织对应关系中获取默认付款银行账号
|
||||||
payData.put("ap_recaccount",ap_recaccount);//收款银行账户编码(客商),传编码例:3101040160000098225-上海达洋消防保安工程有限公司
|
payData.put("ap_recaccount",ap_recaccount);//收款银行账户编码(客商),传编码例:3101040160000098225-上海达洋消防保安工程有限公司
|
||||||
payData.put("pk_balatype","07");//结算方式编码,传编码例:07-网银
|
payData.put("pk_balatype","07");//结算方式编码,传编码例:07-网银
|
||||||
BigDecimal bcsqje = payrequestinfo.getBigDecimal("amount");//单据上的本次申请金额
|
BigDecimal bcsqje = payrequestinfo.getBigDecimal("amount");//费用登记单据上的本次申请金额
|
||||||
|
if(!isnotext){
|
||||||
|
bcsqje = payrequestinfo.getBigDecimal("curactualamt");//付款申请单的本期应付金额 curactualamt
|
||||||
|
}
|
||||||
payData.put("money",bcsqje.toString());//原币金额 取含税金额
|
payData.put("money",bcsqje.toString());//原币金额 取含税金额
|
||||||
payData.put("rate","1.00000000");//组织本币汇率,默认1.00000000
|
payData.put("rate","1.00000000");//组织本币汇率,默认1.00000000
|
||||||
payData.put("local_money",bcsqje.toString());//组织本币金额 含税金额,xxxxx.00000000
|
payData.put("local_money",bcsqje.toString());//组织本币金额 含税金额,xxxxx.00000000
|
||||||
|
@ -186,21 +190,21 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
// String auditor = payrequestinfo.getDynamicObject("auditor").getString("number");
|
// String auditor = payrequestinfo.getDynamicObject("auditor").getString("number");
|
||||||
// payData.put("approver",auditor);//审核人编码 审核人工号
|
// payData.put("approver",auditor);//审核人编码 审核人工号
|
||||||
payData.put("approver",DobeDWUtils.clientid);//审核人编码 固定传ISC
|
payData.put("approver",DobeDWUtils.clientid);//审核人编码 固定传ISC
|
||||||
payData.put("approvedate",DobeDWUtils.getDateString(payrequestinfo.getDate("auditDate")));//审核日期 YYYY-MM-DD
|
payData.put("approvedate",DobeDWUtils.getDateString(null));//审核日期 接口推送的日期
|
||||||
// payData.put("src_syscode","ISC");//单据来源系统编码 非必传
|
// payData.put("src_syscode","ISC");//单据来源系统编码 非必传
|
||||||
if(isnotext){
|
if(isnotext){
|
||||||
payData.put("def11","无合同付款");//自定义项1 流程类型:有合同 无合同
|
payData.put("def11","无合同付款");//自定义项11 流程类型:有合同 无合同
|
||||||
}else{
|
}else{
|
||||||
payData.put("def11","合同付款");//自定义项1 流程类型:有合同 无合同
|
payData.put("def11","合同付款");//自定义项11 流程类型:有合同 无合同
|
||||||
}
|
}
|
||||||
payData.put("def12",payrequestinfo.getString("billno"));//自定义项2 付款申请单的单号(全局唯一才行)
|
payData.put("def12",payrequestinfo.getString("billno"));//自定义项12 付款申请单的单号(全局唯一才行)
|
||||||
payData.put("def13","");//备注。传合同总金额及付款比例等,拼接凭证摘要
|
payData.put("def13",payrequestinfo.getString("description"));//备注。传合同总金额及付款比例等,拼接凭证摘要
|
||||||
|
|
||||||
//------------------以下是表体组装--------------------
|
//------------------以下是表体组装--------------------
|
||||||
JSONArray jas = new JSONArray();
|
JSONArray jas = new JSONArray();
|
||||||
JSONObject items = new JSONObject();
|
JSONObject items = new JSONObject();
|
||||||
// items.put("contractno",payrequestinfo.getDynamicObject("contractbill"));//合同号
|
// items.put("contractno",payrequestinfo.getDynamicObject("contractbill"));//合同号
|
||||||
items.put("scomment",null);//摘要 按照现在NC57逻辑先来,涉及银企互联支付,原来是15个字符(7个中文)的样子
|
items.put("scomment",payrequestinfo.getString("qeug_xf"));//摘要 按照现在NC57逻辑先来,涉及银企互联支付,原来是15个字符(7个中文)的样子
|
||||||
|
|
||||||
if(isgrdf){
|
if(isgrdf){
|
||||||
items.put("objtype","3");//往来对象(0-客户 1-供应商 2-部门 3-业务员)
|
items.put("objtype","3");//往来对象(0-客户 1-供应商 2-部门 3-业务员)
|
||||||
|
@ -265,7 +269,7 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
if(isnotext){
|
if(isnotext){
|
||||||
items.put("def13","");//供应链系统合同号,无合同怎么传递?
|
items.put("def13","");//供应链系统合同号,无合同怎么传递?
|
||||||
}else{
|
}else{
|
||||||
items.put("def13","");//供应链系统合同号
|
items.put("def13",payrequestinfo.getDynamicObject("contractbill").getString("billno"));//供应链系统合同号
|
||||||
}
|
}
|
||||||
items.put("def14",payrequestinfo.getString("id"));//供应链付款单ID
|
items.put("def14",payrequestinfo.getString("id"));//供应链付款单ID
|
||||||
jas.add(items);
|
jas.add(items);
|
||||||
|
@ -318,7 +322,7 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
if(!"true".equals(json_reuslt.getString("success"))){
|
if(!"true".equals(json_reuslt.getString("success"))){
|
||||||
log.error(String.format("用友付款接口处理失败,具体原因:%s", json_reuslt.toString()));
|
log.error(String.format("用友付款接口处理失败,具体原因:%s", json_reuslt.toString()));
|
||||||
//此时除了日志打印,增加日志记录
|
//此时除了日志打印,增加日志记录
|
||||||
DobeDWUtils.saveLog(payrequestinfo.getString("billno"),"用友BIP",payData.toString(),json_reuslt.toString(),false);
|
DobeDWUtils.saveLog(payrequestinfo.getString("billno"),"用友BIP",payData.toString(),json_reuslt.toString(),false,eventName);
|
||||||
return;
|
return;
|
||||||
}else{
|
}else{
|
||||||
yynum = json_reuslt.getJSONObject("data").getString("billno");
|
yynum = json_reuslt.getJSONObject("data").getString("billno");
|
||||||
|
@ -326,27 +330,22 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(String.format("用友付款接口异常:%s", e.getMessage()));
|
log.error(String.format("用友付款接口异常:%s", e.getMessage()));
|
||||||
// throw new RuntimeException(e);
|
// throw new RuntimeException(e);
|
||||||
DobeDWUtils.saveLog(payrequestinfo.getString("billno"),"用友BIP",payData.toString(),e.getMessage(),false);
|
DobeDWUtils.saveLog(payrequestinfo.getString("billno"),"用友BIP",payData.toString(),e.getMessage(),false,eventName);
|
||||||
}
|
}
|
||||||
if(DobeDWUtils.isEmpty(yynum)){
|
if(DobeDWUtils.isEmpty(yynum)){
|
||||||
log.error("用友付款接口返回的billno为空");
|
log.error("用友付款接口返回的billno为空");
|
||||||
DobeDWUtils.saveLog(payrequestinfo.getString("billno"),"用友BIP",payData.toString(),"用友billno为空"+json_reuslt.toString(),false);
|
DobeDWUtils.saveLog(payrequestinfo.getString("billno"),"用友BIP",payData.toString(),"用友billno为空"+json_reuslt.toString(),false,eventName);
|
||||||
}else{
|
}else{
|
||||||
//推送用友bip成功后,反写合同付款申请单的用友付款单id字段值
|
//推送用友bip成功后,反写费用登记和合同付款申请单的用友付款单id字段值
|
||||||
String sql = "UPDATE t_xxx SET fk_qeug_yynum=? WHERE fid=?;";
|
String sql = "UPDATE t_recon_payreqbill SET fk_qeug_yynum=? WHERE fid=?;";
|
||||||
|
if(isnotext){
|
||||||
|
sql = "UPDATE t_recon_connotextbill SET fk_qeug_yynum=? WHERE fid=?;";
|
||||||
|
}
|
||||||
DB.update(DBRoute.of("scm"), sql, new Object[]{yynum, payrequestinfo.getLong("id")});
|
DB.update(DBRoute.of("scm"), sql, new Object[]{yynum, payrequestinfo.getLong("id")});
|
||||||
DobeDWUtils.saveLog(payrequestinfo.getString("billno"),"用友BIP",payData.toString(),json_reuslt.toString(),true);
|
DobeDWUtils.saveLog(payrequestinfo.getString("billno"),"用友BIP",payData.toString(),json_reuslt.toString(),true,eventName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleWithOutContract(String eventName, DynamicObject payrequestinfo){
|
|
||||||
//处理无文本合同的审核推送用友bip
|
|
||||||
String yyid = null;//用友单据id
|
|
||||||
//推送用友bip成功后,反写无文本合同的用友付款单id字段值
|
|
||||||
String sql = "UPDATE t_recon_connotextbill SET fk_qeug_yynum=? WHERE fid=?;";
|
|
||||||
DB.update(DBRoute.of("scm"), sql, new Object[]{yyid, payrequestinfo.getLong("id")});
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getSupplierType(long supplierid){
|
private String getSupplierType(long supplierid){
|
||||||
//根据供应商id从供应商F7中得到供应商的分类标准
|
//根据供应商id从供应商F7中得到供应商的分类标准
|
||||||
DynamicObject supinfo = BusinessDataServiceHelper.loadSingle("resm_supplier_f7",new QFilter[]{new QFilter("id","=",supplierid)});
|
DynamicObject supinfo = BusinessDataServiceHelper.loadSingle("resm_supplier_f7",new QFilter[]{new QFilter("id","=",supplierid)});
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package shkd.repc.task;
|
package shkd.repc.task;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import kd.bos.context.RequestContext;
|
import kd.bos.context.RequestContext;
|
||||||
|
import kd.bos.dataentity.OperateOption;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
import kd.bos.exception.KDException;
|
import kd.bos.exception.KDException;
|
||||||
|
@ -8,7 +11,10 @@ import kd.bos.logging.Log;
|
||||||
import kd.bos.logging.LogFactory;
|
import kd.bos.logging.LogFactory;
|
||||||
import kd.bos.orm.query.QFilter;
|
import kd.bos.orm.query.QFilter;
|
||||||
import kd.bos.schedule.executor.AbstractTask;
|
import kd.bos.schedule.executor.AbstractTask;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
import kd.bos.servicehelper.QueryServiceHelper;
|
import kd.bos.servicehelper.QueryServiceHelper;
|
||||||
|
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||||
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -23,17 +29,44 @@ public class YongyouBIPTask extends AbstractTask implements Plugin {
|
||||||
private static final String payrequestEntity = "recon_payreqbill";
|
private static final String payrequestEntity = "recon_payreqbill";
|
||||||
//费用登记的实体名称
|
//费用登记的实体名称
|
||||||
private static final String notextEntity = "recon_connotextbill";
|
private static final String notextEntity = "recon_connotextbill";
|
||||||
|
private static final String payregisterEntity = "recon_payregister";//供应链库 t_recon_payregister
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||||
//查找合同付款申请单已审核未付款的单子
|
//查找合同付款申请单已审核未付款的单子
|
||||||
DynamicObjectCollection docs = QueryServiceHelper.query(payrequestEntity,"id,number,name",new QFilter[]{new QFilter("billstatus","=","C")});
|
// DynamicObjectCollection docs = QueryServiceHelper.query(payrequestEntity,"id,number,name",new QFilter[]{new QFilter("billstatus","=","C")});
|
||||||
DynamicObject currentinfo = null;
|
// DynamicObject currentinfo = null;
|
||||||
for (int i = 0; i < docs.size(); i++) {
|
// for (int i = 0; i < docs.size(); i++) {
|
||||||
currentinfo = docs.get(i);
|
// currentinfo = docs.get(i);
|
||||||
}
|
// }
|
||||||
|
|
||||||
//查找无文本合同已审核未付款的单子
|
//查找无文本合同已审核未付款的单子
|
||||||
|
|
||||||
|
//查找未审核的付款登记单,考虑费用登记和付款申请单如果是事后补单的话,此处是否需要过滤
|
||||||
|
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";
|
||||||
|
DynamicObject[] prs = BusinessDataServiceHelper.load(payregisterEntity,selectStr,new QFilter[]{statusFilter});
|
||||||
|
DynamicObject prinfo = null;
|
||||||
|
DynamicObject requestinfo = null;
|
||||||
|
String yynum = null;
|
||||||
|
for (int i = 0; i < prs.length; i++) {
|
||||||
|
prinfo = prs[i];
|
||||||
|
//费用登记
|
||||||
|
requestinfo = prinfo.getDynamicObject("connotextbill");
|
||||||
|
if(requestinfo == null){
|
||||||
|
//付款申请
|
||||||
|
requestinfo = prinfo.getDynamicObject("payreqbill");
|
||||||
|
}
|
||||||
|
//看用友的实付款查询接口是一个个查询,还是集中查询
|
||||||
|
yynum = requestinfo.getString("qeug_yynum");
|
||||||
|
JSONObject resultData = JSON.parseObject("用友接口返回值");
|
||||||
|
//根据查询结果设置付款登记对象
|
||||||
|
prinfo.set("bizdate",resultData.getDate("bizdate"));
|
||||||
|
prinfo.set("billno",resultData.getString("billno"));
|
||||||
|
prinfo.set("status","B"); //单据状态改为已提交
|
||||||
|
SaveServiceHelper.update(prinfo);//保存上述设置内容
|
||||||
|
//调用付款登记单的审核方法
|
||||||
|
OperationServiceHelper.executeOperate("audit",payregisterEntity,new DynamicObject[]{prinfo}, OperateOption.create());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -45,15 +45,16 @@ public class DobeDWUtils {
|
||||||
return value == null || value.trim().length() <= 0;
|
return value == null || value.trim().length() <= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void saveLog(String billno,String jkname,String inputs,String outputs,boolean isSuccess){
|
public static void saveLog(String billno,String jkname,String inputs,String outputs,boolean isSuccess,String operation){
|
||||||
//保存星瀚与第三方接口调用之间的日志记录
|
//保存星瀚与第三方接口调用之间的日志记录
|
||||||
//参数说明:单据编号、接口名称、接口入参、接口返回值、接口执行结果是否成功
|
//参数说明:单据编号、接口名称、接口入参、接口返回值、接口执行结果是否成功、操作名称(audit、unaudit等)
|
||||||
DynamicObject billinfo = BusinessDataServiceHelper.newDynamicObject(jklogEntityName);
|
DynamicObject billinfo = BusinessDataServiceHelper.newDynamicObject(jklogEntityName);
|
||||||
billinfo.set("number",billno);
|
billinfo.set("number",billno);
|
||||||
billinfo.set("name",jkname);
|
billinfo.set("name",jkname);
|
||||||
billinfo.set("qeug_inputs_tag",inputs);//大文本赋值,标识后加_tag 是内容,不加是文本标题
|
billinfo.set("qeug_inputs_tag",inputs);//大文本赋值,标识后加_tag 是内容,不加是文本标题
|
||||||
billinfo.set("qeug_outputs_tag",outputs);
|
billinfo.set("qeug_outputs_tag",outputs);
|
||||||
billinfo.set("qeug_issuccess",isSuccess);
|
billinfo.set("qeug_issuccess",isSuccess);
|
||||||
|
billinfo.set("qeug_operation",operation);
|
||||||
billinfo.set("status","A"); //单据状态默认暂存
|
billinfo.set("status","A"); //单据状态默认暂存
|
||||||
SaveServiceHelper.save(new DynamicObject[]{billinfo});
|
SaveServiceHelper.save(new DynamicObject[]{billinfo});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue