提交内容:定时任务

备注:定时推送单据至BIP
提交人:邹江涛
This commit is contained in:
zoujiangtao 2024-12-17 16:20:06 +08:00
parent 92fceb9317
commit 8337b23375
6 changed files with 140 additions and 4 deletions

View File

@ -205,7 +205,7 @@ public class ApiService {
dynamic.set("shkd_businessnumber", data.getString("code"));
dynamic.set("shkd_businessid", data.getString("id"));
dynamic.set("shkd_businessname", "BIP");
dynamic.set("shkd_pushstatus", "推送");
dynamic.set("shkd_pushstatus", "结算");
dynamicObjects.add(dynamic);
submitUrl = objects[0].getString("shkd_submiturl");
@ -233,6 +233,13 @@ public class ApiService {
code = jsonObject.getString("code");
if ("200".equals(code)) {
dynamic.set("billstatus", "A");
if ("TF、NC、OF".contains(objects[0].getString("bankpaystatus"))) {
dynamic.set("shkd_pushstatus", "结算失败");
} else if ("TS".equals(objects[0].getString("bankpaystatus"))){
dynamic.set("shkd_pushstatus", "已结算");
}
dynamicObjects.add(dynamic);
logger.info("付款处理(支付结果) → BIP推送接口 → 成功\n成功单据编号{}\n推送成功接口返回数据{}", dynamic.getString("billno"), saveResponseBody);
result = "推送 → 付款处理(支付结果) → 成功";
@ -400,6 +407,18 @@ public class ApiService {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 格式化Date对象为字符串
value = sdf.format(bizdate);
} else if ("bankpaystatus".equals(parts[0])) {
String bankpaystatus = billObject.getString(parts[0]);
switch (bankpaystatus) {
case "TS":
value = "3";
break;
case "TF":
case "NC":
case "OF":
value = "4";
break;
}
} else {
value = billObject.get(parts[0]);
}

View File

@ -118,7 +118,18 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
map.put(fieldName2, payeebank);
}
}
String billstatus = map.get("billstatus").toString();
if ("C".equals(billstatus)) {
map.put("shkd_pushstatus", "未结算");
}
if ("D".equals(billstatus)) {
map.put("shkd_pushstatus", "已结算");
}
logger.info("最终处理 → 调用接口参数:{}", reqData);
}
return reqData;
}

View File

@ -112,11 +112,13 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
if ("shkd_testapi".equals(itemKey)) {
String result = ApiService.paymentSlipsJson(billObject, "BIP", dynamicObjects);
SaveServiceHelper.save(dynamicObjects.toArray(new DynamicObject[0]));
this.getView().showTipNotification("返回结果:" + result);
}
if ("shkd_hitback".equals(itemKey)) {
String result = ApiService.paymentSlipsJson(billObject, "BIPNO", dynamicObjects);
SaveServiceHelper.save(dynamicObjects.toArray(new DynamicObject[0]));
this.getView().showTipNotification("返回结果:" + result);
}

View File

@ -0,0 +1,43 @@
package shkd.sys.sys.plugin.form;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.form.control.Toolbar;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.sdk.plugin.Plugin;
import shkd.sys.sys.mservice.ApiService;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;
/**
* 单据界面插件
*/
public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements Plugin {
@Override
public void registerListener(EventObject e) {
Toolbar tbmain = this.getView().getControl("tbmain");
tbmain.addItemClickListener(this);
}
@Override
public void itemClick(ItemClickEvent evt) {
String itemKey = evt.getItemKey();
if ("shkd_hitback".equals(itemKey)) {
DynamicObject dataEntity = this.getModel().getDataEntity(true);
String bankpaystatus = dataEntity.getString("bankpaystatus");
if ("TF、NC、OF".contains(bankpaystatus)) {
List<DynamicObject> dynamicObjects = new ArrayList<>();
String result = ApiService.paymentSlipsJson(dataEntity, "BIPNO", dynamicObjects);
if (result.contains("成功")) {
SaveServiceHelper.save(dynamicObjects.toArray(new DynamicObject[0]));
this.getView().showSuccessNotification("打回成功");
}
} else {
this.getView().showErrorNotification("打回失败,请确认银行支付状态");
}
}
}
}

View File

@ -0,0 +1,46 @@
package shkd.sys.sys.plugin.list;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.list.BillList;
import kd.bos.list.plugin.AbstractListPlugin;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.sdk.plugin.Plugin;
import java.util.ArrayList;
import java.util.List;
/**
* 标准单据列表插件
*/
public class PaymentProcessingListPlugin extends AbstractListPlugin implements Plugin {
@Override
public void itemClick(ItemClickEvent evt) {
String itemKey = evt.getItemKey();
if ("shkd_hitback".equals(itemKey)) {
List<String> billnos = new ArrayList<>();
//获取列表
BillList list = this.getControl("billlistap");
//获取列表选中的行数据
ListSelectedRowCollection selectedRows = list.getSelectedRows();
if (selectedRows.isEmpty()) this.getView().showTipNotification("请至少选择一条数据");
if (selectedRows.size() > 1000) this.getView().showTipNotification("请至少选择一条数据");
for (ListSelectedRow listSelectedRow : selectedRows) {
billnos.add(listSelectedRow.getBillNo());
}
/* DynamicObject[] objects1 = BusinessDataServiceHelper.load("cas_paybill",
"id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,payeebanknum," +
"payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,bizdate,description," +
"shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
, new QFilter("bizdate", QCP.large_equals, date).and("shkd_pushstatus", QCP.not_equals, "已推送")
.and("billstatus", QCP.equals, "D").toArray());*/
}
}
}

View File

@ -53,13 +53,18 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
List<DynamicObject> dynamicObjectList = new ArrayList<>();
if (billMark != null) {
switch (billMark.toString()) {
//已结算未结算结算失败未推送
// 付款处理
case "cas_paybill":
DynamicObject[] objects1 = BusinessDataServiceHelper.load("cas_paybill",
"id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,payeebanknum," +
"payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,bizdate,description," +
"shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
, new QFilter("bizdate", QCP.large_equals, date).and("shkd_pushstatus", QCP.not_equals, "已推送")
, new QFilter("bizdate", QCP.large_equals, date)
.and("shkd_pushstatus", QCP.not_equals, "已结算")
.and("shkd_pushstatus", QCP.not_equals, "未结算")
.and("shkd_pushstatus", QCP.not_equals, "结算失败")
.and("billstatus", QCP.equals, "D").toArray());
dynamicObjects = Arrays.asList(objects1);
dynamicObjects.forEach(dynamicObject -> {
@ -87,14 +92,24 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
dynamicObjects = Arrays.asList(objects3);
billName = "银行收付处理";
break;
// 支付失败付款处理支付结果定时推送
// 支付结果推送付款处理支付结果定时推送
case "cas_paybill_result":
DynamicObject[] objects4 = BusinessDataServiceHelper.load("cas_paybill",
"id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,payeebanknum," +
"payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,bizdate,description," +
"shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
, new QFilter("bizdate", QCP.large_equals, date).and("bankpaystatus", QCP.in, new String[]{"TF", "NC", "OF"}).toArray());
, new QFilter("bizdate", QCP.large_equals, date)
.and("bankpaystatus", QCP.in, new String[]{"TS", "TF", "NC", "OF"})
.and("shkd_pushstatus", QCP.equals, "未结算").toArray());
DynamicObject[] objects5 = BusinessDataServiceHelper.load("cas_paybill",
"id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,payeebanknum," +
"payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,bizdate,description," +
"shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
, new QFilter("bankpaystatus", QCP.equals, "TS")
.and("shkd_pushstatus", QCP.equals, "结算失败").toArray());
dynamicObjects = Arrays.asList(objects4);
dynamicObjects.addAll(Arrays.asList(objects5));
dynamicObjects.forEach(dynamicObject -> {
ApiService.paymentSlipsJson(dynamicObject, "BIPNO", dynamicObjectList);
});