diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/PayBillApiSavePlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/PayBillApiSavePlugin.java index 415303f..db952ff 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/PayBillApiSavePlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/PayBillApiSavePlugin.java @@ -1,10 +1,19 @@ package shkd.sys.sys.plugin.api; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.openapi.api.plugin.ApiSavePlugin; +import kd.bos.openapi.api.plugin.ApiSerializerPlugin; +import kd.bos.openapi.api.plugin.SerializerResult; +import kd.bos.openapi.common.constant.MediaType; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.user.UserServiceHelper; import java.util.List; import java.util.Map; @@ -14,17 +23,23 @@ import java.util.Map; * @Author Tao * @Date 2024/11/7 */ -public class PayBillApiSavePlugin implements ApiSavePlugin { +public class PayBillApiSavePlugin implements ApiSavePlugin, ApiSerializerPlugin { + private static final long serialVersionUID = 7055073356277386444L; + private String shkd_businessid; + private String shkd_businessnumber; + @Override public List> preHandleRequestData(List> reqData) { + //付款处理 → 收款人ID payee → 付款银行.编码 payerbank_number payeetype 收款人类型 → payeenumber 收款人编码 - //payeracctbank_number 付款银行账号.number + //payeracctbank_number 付款银行账号.number //收款处理 → 付款人ID payer → 收款银行.number payeebank_number payertype 付款人类型 → payernumber 付款人编码 - //accountbank_number 收款银行账号.number + //accountbank_number 收款银行账号.number //重复支付校验 + String objectType;//对象类型(收/付人类型) String objectNumber;//对象编码(收/付人编码) String fieldName1;//字段名称(收/付人ID) @@ -32,7 +47,9 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { String bankNumber;//(收/付款银行账号.number) String fieldName2;//字段名称(收/付款银行.number) for (Map map : reqData) { + Object payeetype = map.get("payeetype");//如果是收款人类型 则为付款处理保存接口 + Object payertype = map.get("payertype");//如果是付款人类型 则为收款处理保存接口 if (payeetype != null) { objectType = payeetype.toString(); objectNumber = map.get("payeenumber").toString(); @@ -40,19 +57,56 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { bankNumber = map.get("payeracctbank_number").toString(); fieldName2 = "payerbank_number"; - } else { - objectType = map.get("payertype").toString(); + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(objectType, "id", new QFilter("billno", QCP.equals, objectNumber).toArray()); + DynamicObject amAccountbank = BusinessDataServiceHelper.loadSingle("am_accountbank", "id,bank,bank.number", new QFilter("number", QCP.equals, bankNumber).toArray()); + map.put(fieldName1, dynamicObject.getString("id")); + map.put(fieldName2, amAccountbank.getDynamicObject("bank").getString("number")); + } + + if (payertype != null){ + objectType = payertype.toString(); objectNumber = map.get("payernumber").toString(); fieldName1 = "payer"; bankNumber = map.get("accountbank_number").toString(); fieldName2 = "payeebank_number"; + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(objectType, "id", new QFilter("billno", QCP.equals, objectNumber).toArray()); + DynamicObject amAccountbank = BusinessDataServiceHelper.loadSingle("am_accountbank", "id,bank,bank.number", new QFilter("number", QCP.equals, bankNumber).toArray()); + map.put(fieldName1, dynamicObject.getString("id")); + map.put(fieldName2, amAccountbank.getDynamicObject("bank").getString("number")); } - DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(objectType, "id", new QFilter("billno", QCP.equals, objectNumber).toArray()); - DynamicObject amAccountbank = BusinessDataServiceHelper.loadSingle("am_accountbank", "id,bank,bank.number", new QFilter("number", QCP.equals, bankNumber).toArray()); - map.put(fieldName1, dynamicObject.getString("id")); - map.put(fieldName2, amAccountbank.getDynamicObject("bank").getString("number")); + shkd_businessid = map.get("shkd_businessid").toString(); + shkd_businessnumber = map.get("shkd_businessnumber").toString(); +// shkd_businessid +// shkd_businessnumber +// shkd_businessname } return reqData; } + + @Override + public SerializerResult serialize(Object response, String accept, String contentType) { + try { + if (contentType.contains(MediaType.APPLICATION_JSON)) { + //返回text文本 + String responseStr = new ObjectMapper().writeValueAsString(response); + JSONObject jsonObject = JSON.parseObject(responseStr); + // 获取 data 节点 + JSONObject data = jsonObject.getJSONObject("data"); + + // 获取 result 节点 + JSONArray result = data.getJSONArray("result"); + result.getJSONObject(0).put("shkd_businessid", shkd_businessid); + result.getJSONObject(0).put("shkd_businessnumber", shkd_businessnumber); + return new SerializerResult(MediaType.TEXT_PLAIN, jsonObject.toJSONString()); + } else { + //其他类型的出参序列化 + return null; + } + } catch (JsonProcessingException e) { + //处理异常时严禁抛出异常,可以定义自己的错误返回信息 + String result="..."; + return new SerializerResult(MediaType.TEXT_PLAIN,result); + } + } }