From c8e7c5495022ba2cf18d88077842d8d937507548 Mon Sep 17 00:00:00 2001 From: zoujiangtao Date: Tue, 25 Feb 2025 10:35:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=86=85=E5=AE=B9=EF=BC=9A?= =?UTF-8?q?=E6=95=B4=E4=BD=93=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0=20?= =?UTF-8?q?=E5=A4=87=E6=B3=A8=EF=BC=9A=E6=95=B4=E4=BD=93=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=88=E6=96=B0=E5=A2=9E=E9=93=B6=E8=A1=8C?= =?UTF-8?q?=E6=94=B6=E4=BB=98=E5=A4=84=E7=90=86/=E7=94=B5=E5=AD=90?= =?UTF-8?q?=E5=9B=9E=E5=8D=95=E8=B0=83=E5=BA=A6=E8=AE=A1=E5=88=92=E4=BA=8C?= =?UTF-8?q?=E5=BC=80=E4=BB=A3=E7=A0=81=EF=BC=89=20=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E4=BA=BA=EF=BC=9A=E9=82=B9=E6=B1=9F=E6=B6=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/sys/plugin/CA/InfoSecService.java | 24 +- .../sys/plugin/api/PayBillApiSavePlugin.java | 355 +++++++++++++++--- .../sys/plugin/form/ApiMappingBillPlugin.java | 8 +- .../plugin/list/OrgExpansionListPlugin.java | 28 ++ .../sys/sys/plugin/task/PushTaskPlugin.java | 49 +-- 5 files changed, 395 insertions(+), 69 deletions(-) create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/OrgExpansionListPlugin.java diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/CA/InfoSecService.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/CA/InfoSecService.java index 2b0abdd..f71f375 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/CA/InfoSecService.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/CA/InfoSecService.java @@ -57,7 +57,27 @@ public class InfoSecService extends AbstractCAService { log.info("验签失败,未找到当前用户绑定证书"); return result; } else { - String puKey = certificateManagement.getString("publickey"); + try { + String response = verifyPkcs7(cleartext, signData, "" + System.currentTimeMillis()); + JSONObject jsonObject = JSON.parseObject(response); + String code = jsonObject.getString("code"); + if ("200".equals(code)) { + result.setSuccess(true); + result.setMessage("验签通过。"); + } else { + result.setSuccess(false); + result.setMessage("验签失败。"); + } + log.info("验签响应: " + response); + + } catch (Exception e) { + log.error(e); + result.setSuccess(false); + result.setMessage("验签失败:" + e.getMessage()); + } + return result; + + /*String puKey = certificateManagement.getString("publickey"); log.info("证书验签publicKey:{}\n当前登录人绑定证书的publicKey:{}", publicKey, puKey); if (publicKey.equals(puKey)) { try { @@ -84,7 +104,7 @@ public class InfoSecService extends AbstractCAService { result.setMessage("验签失败,签名人员和验签人员不同"); log.info("验签失败,签名人员和验签人员不同"); return result; - } + }*/ } } } 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 22b7704..a3eda7a 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 @@ -6,6 +6,7 @@ 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.dataentity.entity.DynamicObjectCollection; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.openapi.api.plugin.ApiSavePlugin; @@ -17,6 +18,12 @@ import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.user.UserServiceHelper; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -43,7 +50,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { String objectType;//对象类型(收/付人类型) - String objectNumber;//对象编码(收/付人编码) + String objectNumber = null;//对象编码(收/付人编码) String fieldName1;//字段名称(收/付人ID) String bankNumber = null;//(收/付款银行账号.number) @@ -53,7 +60,11 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { Object payeetype = map.get("payeetype");//如果是收款人类型 则为付款处理保存接口 Object payertype = map.get("payertype");//如果是付款人类型 则为收款处理保存接口 if (payeetype != null) { - + logger.info("进入付款处理单API"); + // 收款人ID + fieldName1 = "payee"; + // 付款银行编码 + fieldName2 = "payerbank"; String billstatus = map.get("billstatus").toString(); if ("B".equals(billstatus)) { map.put("shkd_pushstatus", "未结算"); @@ -85,66 +96,259 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { map.put("payeeformid", "other"); } + // 收款账号 + String payeebanknum = map.get("payeebanknum").toString(); + // 收款银行名称 + String payeebankname = map.get("payeebankname").toString(); + // 收款行行号 + String recbanknumber = map.get("recbanknumber").toString(); + + Map payeracctbank = (Map) map.get("payeracctbank"); + bankNumber = payeracctbank.get("number").toString(); // 付款银行账号 + + // 账户查询,通过银行账号查对应的付款账户 + DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number", new QFilter("number", QCP.equals, bankNumber).toArray()); + logger.info("账户查询,通过银行账号查对应的付款账户长度:{}", amAccountbanks.length); + Map payerbank = new HashMap<>(); + if (amAccountbanks.length > 0) { + payerbank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); + logger.info("账户查询,通过银行账号查对应的付款账户信息:{}", amAccountbanks[0]); + } + logger.info("付款银行:{}", payerbank); + map.put(fieldName2, payerbank); + // 如果为供应商或者客户 - if ("bd_supplier".equals(payeetype) || "bd_customer".equals(payeetype)) { + if ("bd_supplier".equals(payeetype)) { + Map societycreditcode = new HashMap<>(); + societycreditcode.put("societycreditcode", map.get("payeenumber").toString()); + map.put("shkd_supplier", societycreditcode); + logger.info("收款人ID:{}", map.get("payeenumber")); - DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,societycreditcode", new QFilter("societycreditcode", QCP.equals, map.get("payeenumber").toString()).toArray()); + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,societycreditcode,entry_bank,entry_bank.bankaccount,entry_bank.accountname,entry_bank.bank", new QFilter("societycreditcode", QCP.equals, map.get("payeenumber").toString()).toArray()); + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + int result = 0; + for (DynamicObject dynamicObject : dynamicObjectCollection) { + if (dynamicObject.getString("bankaccount").equals(payeebanknum)) { + result = 1; + logger.info("存在银行账号"); + break; + } + } + + if (result == 0) { + /*JSONObject app_token_jsonBody = new JSONObject(); + app_token_jsonBody.put("appId", "BIP"); + app_token_jsonBody.put("appSecret", "1qaz2wsx#EDC$RFV"); + app_token_jsonBody.put("tenantid", "ctsk-test"); + app_token_jsonBody.put("accountId", "2063187796394248192"); + String app_token_body = app_token_jsonBody.toString(); + + String app_token = updateBankInformation("http://10.1.7.83:8022/ierp/api/getAppToken.do", app_token_body, null); + logger.info("app_token_body:{}\napp_token:{}", app_token_body, app_token); + + JSONObject jsonObject = JSON.parseObject(app_token); + String key = jsonObject.getJSONObject("data").getString("app_token"); + + JSONObject access_token_jsonBody = new JSONObject(); + access_token_jsonBody.put("user", "17779007624"); + access_token_jsonBody.put("usertype", "Mobile"); + access_token_jsonBody.put("apptoken", key); + access_token_jsonBody.put("tenantid", "ctsk-test"); + access_token_jsonBody.put("accountId", "2063187796394248192"); + access_token_jsonBody.put("language", "zh_CN"); + String access_token_body = access_token_jsonBody.toString(); + + String access_token = updateBankInformation("http://10.1.7.83:8022/ierp/api/login.do", access_token_body, null); + logger.info("access_token_body:{}\naccess_token:{}", access_token_body, access_token); + String token = JSON.parseObject(access_token).getJSONObject("data").getString("access_token"); + + // 创建内部 JSON 对象 + JSONObject entryBank = new JSONObject(); + entryBank.put("bankaccount", payeebanknum);// 银行账号 + entryBank.put("accountname", payeebanknum);// 账户名称 + Map payeebank = (Map) map.get("payeebank"); + entryBank.put("bank_union_number", payeebank.get("number").toString());// 联行号 + entryBank.put("currency_number", "CNY"); + entryBank.put("isdefault_bank", "false"); + + // 创建 entry_bank 数组 + JSONArray entryBankArray = new JSONArray(); + entryBankArray.add(entryBank); + + // 创建 data 内部对象 + JSONObject dataObject = new JSONObject(); + dataObject.put("societycreditcode", map.get("payeenumber").toString());// 统一社会信用代码 + dataObject.put("entry_bank", entryBankArray); + + // 创建 data 数组 + JSONArray dataArray = new JSONArray(); + dataArray.add(dataObject); + + // 创建最外层 JSON 对象 + JSONObject body = new JSONObject(); + body.put("data", dataArray); + + // 将 JSONObject 转换为字符串 + String bodyString = body.toString(); + String resultBody = updateBankInformation("http://10.1.7.83:8022/ierp/kapi/v2/shkd/basedata/bd_supplier/supplier_save", bodyString, token); + logger.info("resultBody:{}", resultBody);*/ + + logger.info("不存在银行账号"); + } + + // 收款人编码 map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); //收款人编码 objectNumber = objects[0].getString("number"); - } else { + } + } else if ("bd_customer".equals(payeetype)) { + Map societycreditcode = new HashMap<>(); + societycreditcode.put("societycreditcode", map.get("payeenumber").toString()); + map.put("shkd_customer", societycreditcode); + + logger.info("收款人ID:{}", map.get("payeenumber")); + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,societycreditcode,entry_bank,entry_bank.bankaccount,entry_bank.accountname,entry_bank.bank", new QFilter("societycreditcode", QCP.equals, map.get("payeenumber").toString()).toArray()); + + if (objects.length > 0) { + DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank"); + logger.info("dynamicObjectCollection:{}", dynamicObjectCollection); + int result = 0; + for (DynamicObject dynamicObject : dynamicObjectCollection) { + if (dynamicObject.getString("bankaccount").equals(payeebanknum)) { + result = 1; + logger.info("存在银行账号"); + break; + } + } + + if (result == 0) { + /*JSONObject app_token_jsonBody = new JSONObject(); + app_token_jsonBody.put("appId", "BIP"); + app_token_jsonBody.put("appSecret", "1qaz2wsx#EDC$RFV"); + app_token_jsonBody.put("tenantid", "ctsk-test"); + app_token_jsonBody.put("accountId", "2063187796394248192"); + String app_token_body = app_token_jsonBody.toString(); + + String app_token = updateBankInformation("http://10.1.7.83:8022/ierp/api/getAppToken.do", app_token_body, null); + logger.info("app_token_body:{}\napp_token:{}", app_token_body, app_token); + + JSONObject jsonObject = JSON.parseObject(app_token); + String key = jsonObject.getJSONObject("data").getString("app_token"); + + JSONObject access_token_jsonBody = new JSONObject(); + access_token_jsonBody.put("user", "17779007624"); + access_token_jsonBody.put("usertype", "Mobile"); + access_token_jsonBody.put("apptoken", key); + access_token_jsonBody.put("tenantid", "ctsk-test"); + access_token_jsonBody.put("accountId", "2063187796394248192"); + access_token_jsonBody.put("language", "zh_CN"); + String access_token_body = access_token_jsonBody.toString(); + + String access_token = updateBankInformation("http://10.1.7.83:8022/ierp/api/login.do", access_token_body, null); + logger.info("access_token_body:{}\naccess_token:{}", access_token_body, access_token); + + String token = JSON.parseObject(access_token).getJSONObject("data").getString("access_token"); + + // 创建内部 JSON 对象 + JSONObject entryBank = new JSONObject(); + entryBank.put("bankaccount", payeebanknum);// 银行账号 + entryBank.put("accountname", payeebanknum);// 账户名称 + Map payeebank = (Map) map.get("payeebank"); + entryBank.put("bank_union_number", payeebank.get("number").toString());// 联行号 + entryBank.put("currency_number", "CNY"); + entryBank.put("isdefault_bank", "false"); + + // 创建 entry_bank 数组 + JSONArray entryBankArray = new JSONArray(); + entryBankArray.add(entryBank); + + // 创建 data 内部对象 + JSONObject dataObject = new JSONObject(); + dataObject.put("societycreditcode", map.get("payeenumber").toString());// 统一社会信用代码 + dataObject.put("entry_bank", entryBankArray); + + // 创建 data 数组 + JSONArray dataArray = new JSONArray(); + dataArray.add(dataObject); + + // 创建最外层 JSON 对象 + JSONObject body = new JSONObject(); + body.put("data", dataArray); + + // 将 JSONObject 转换为字符串 + String bodyString = body.toString(); + String resultBody = updateBankInformation("http://10.1.7.83:8022/ierp/kapi/v2/shkd/basedata/bd_customer/customer_save", bodyString, token); + logger.info("resultBody:{}", resultBody);*/ + + logger.info("不存在银行账号"); + } + + // 收款人编码 + map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); //收款人编码 - objectNumber = map.get("payeenumber").toString(); + objectNumber = objects[0].getString("number"); } } else if ("bos_user".equals(payeetype)) { - DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,username", new QFilter("username", QCP.equals, map.get("payeenumber").toString()).toArray()); + Map username = new HashMap<>(); + username.put("username", map.get("payeenumber").toString()); + map.put("shkd_user", username); + + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payeenumber").toString()).toArray()); if (objects.length > 0) { + // 收款银行(收款信息) 添加,如果没有收款信息则会报错 + DynamicObject[] er_payeers = BusinessDataServiceHelper.load("er_payeer", "id,outpayer,payeraccount", new QFilter("outpayer", QCP.equals, objects[0].getString("name")).and(new QFilter("payeraccount", QCP.equals, payeebanknum)).toArray()); + if (er_payeers.length > 0) { + Map payeraccount = new HashMap<>(); + payeraccount.put("payeraccount", payeebanknum); + map.put("shkd_reebankuser", payeraccount); + } else { + Map payeraccount = new HashMap<>(); + payeraccount.put("payeraccount", ""); + map.put("shkd_reebankuser", payeraccount); + } + + // 收款人编码 map.put("payeenumber", objects[0].getString("number")); + // 收款人ID + map.put(fieldName1, objects[0].getPkValue()); //收款人编码 objectNumber = objects[0].getString("number"); - } else { - //收款人编码 - objectNumber = map.get("payeenumber").toString(); } - } else { - //收款人编码 - objectNumber = map.get("payeenumber").toString(); - } + } else if ("bos_org".equals(payeetype)) { + Map number = new HashMap<>(); + number.put("number", map.get("payeenumber").toString()); + map.put("shkd_org", number); - - logger.info("进入付款处理单API"); - //收款人类型 - objectType = payeetype.toString(); - if (!"other".equals(objectType)) { - //收款人ID - fieldName1 = "payee"; - Map payeebankObj = (Map) map.get("payeebank"); - bankNumber = (String) payeebankObj.get("number"); - logger.info("付款处理 → \nobjectType:{}\nobjectNumber:{}\nbankNumber:{}", objectType, objectNumber, bankNumber); - DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load(objectType, "id,number", new QFilter("number", QCP.equals, objectNumber).toArray()); - logger.info("dynamicObjects.length:{}", dynamicObjects.length); - if (dynamicObjects.length > 0) { - map.put(fieldName1, dynamicObjects[0].getPkValue()); - logger.info("dynamicObjects[0]:{}", dynamicObjects[0]); + DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,", new QFilter("number", QCP.equals, map.get("payeenumber").toString()).toArray()); + if (objects.length > 0) { + // 收款银行(账户查询) 添加,如果没有账户查询则会报错 + DynamicObject[] amAccountbanks1 = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number,company,company.name", + new QFilter("number", QCP.equals, payeebanknum).and( + new QFilter("bank.number", QCP.equals, objects[0].getString("name"))).toArray()); + logger.info("账户查询,通过银行账号查对应的收款账户长度:{}", amAccountbanks1.length); + if (amAccountbanks1.length > 0) { + Map payeraccount = new HashMap<>(); + payeraccount.put("bankaccountnumber", payeebanknum); + map.put("shkd_reebankorg", payeraccount); + } else { + Map payeraccount = new HashMap<>(); + payeraccount.put("bankaccountnumber", ""); + map.put("shkd_reebankorg", payeraccount); + } } } - - if ("bos_org".equals(objectType)) { - fieldName2 = "payerbank"; - DynamicObject[] amAccountbanks = BusinessDataServiceHelper.load("am_accountbank", "id,bank,bank.number", new QFilter("number", QCP.equals, bankNumber).toArray()); - logger.info("amAccountbanks.length:{}", amAccountbanks.length); - Map payerbank = new HashMap<>(); - if (amAccountbanks.length > 0) { - payerbank.put("number", amAccountbanks[0].getDynamicObject("bank").getString("number")); - logger.info("amAccountbanks[0]:{}", amAccountbanks[0]); - } - logger.info("payerbank:{}", payerbank); - map.put(fieldName2, payerbank); - } } if (payertype != null) { + fieldName1 = "payer"; + if ("BD_Supplier".equals(payertype)) { payertype = "bd_supplier"; map.put("payertype", "bd_supplier"); @@ -184,7 +388,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { objectType = payertype.toString(); if (!"other".equals(objectType)) { - fieldName1 = "payer"; + Map accountbank = (Map) map.get("accountbank"); bankNumber = (String) accountbank.get("number"); @@ -216,4 +420,69 @@ public class PayBillApiSavePlugin implements ApiSavePlugin { } return reqData; } + + /** + * 推送单条数据 + * + * @param linkUrl 请求URL + * @param requestBody 请求体数据 + * @param access_token 令牌 + * @return 推送结果 + */ + private static String updateBankInformation(String linkUrl, String requestBody, String access_token) { + // 响应数据 + String formattedContent; + try { + // 请求URL + URL url = new URL(linkUrl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + + // 设置请求方法为POST + connection.setRequestMethod("POST"); + + // 设置请求头 + connection.setRequestProperty("Content-Type", "application/json"); + if (access_token != null && !access_token.isEmpty()) { + connection.setRequestProperty("access_token", access_token); + } + + // 允许输出 + connection.setDoOutput(true); + + // 写入请求体 + try (OutputStream os = connection.getOutputStream()) { + byte[] input = requestBody.getBytes(StandardCharsets.UTF_8); + os.write(input, 0, input.length); + } + + // 获取响应码 + int responseCode = connection.getResponseCode(); + + // 读取响应内容 + if (responseCode == HttpURLConnection.HTTP_OK) { // 成功响应 + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); + String inputLine; + StringBuilder content = new StringBuilder(); + while ((inputLine = in.readLine()) != null) { + content.append(inputLine); + } + in.close(); + // 替换 \n 为实际的换行符 + formattedContent = content.toString().replace("\\n", "\n"); + } else { + // 读取错误流 + BufferedReader errorReader = new BufferedReader(new InputStreamReader(connection.getErrorStream(), StandardCharsets.UTF_8)); + String errorLine; + StringBuilder errorContent = new StringBuilder(); + while ((errorLine = errorReader.readLine()) != null) { + errorContent.append(errorLine); + } + errorReader.close(); + formattedContent = "响应失败: " + errorContent; + } + } catch (Exception e) { + formattedContent = "请求失败," + e.getMessage(); + } + return formattedContent; + } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java index 2c0752d..0090988 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java @@ -214,9 +214,11 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin { 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("billno", QCP.equals, billNumber).toArray()); + "payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,org.number,org.name,bizdate," + + "description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus" + , new QFilter("billno", QCP.equals, billNumber) + .and("org.name", QCP.in, new String[]{"四川川投能源股份有限公司", "川投(攀枝花)新能源开发有限公司", "四川川投屏山书楼抽水蓄能开发有限公司", "四川天彭电力开发有限公司"})//目前四家公司 + .toArray()); billObject = objects1[0]; logger.info("获取付款处理推送对象 → billObject:{}", billObject); break; diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/OrgExpansionListPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/OrgExpansionListPlugin.java new file mode 100644 index 0000000..2fd1b91 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/OrgExpansionListPlugin.java @@ -0,0 +1,28 @@ +package shkd.sys.sys.plugin.list; + +import kd.bos.form.events.SetFilterEvent; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.orm.query.QFilter; +import kd.sdk.plugin.Plugin; + +import java.util.List; + +/** + * 标准单据列表插件 + */ +public class OrgExpansionListPlugin extends AbstractListPlugin implements Plugin { + @Override + public void setFilter(SetFilterEvent e) { + super.setFilter(e); + List basedataCoreQFilters = e.getBasedataCoreQFilters(); + for (QFilter qFilter : basedataCoreQFilters) { + System.out.println(qFilter); + if (qFilter.getValue().equals("08")) { + QFilter qFilter1 = new QFilter("orgpattern", "!=", 7L); + QFilter qFilter2 = new QFilter("orgpattern", "!=", 8L); + e.addCustomQFilter(qFilter1); + e.addCustomQFilter(qFilter2); + } + } + } +} \ No newline at end of file diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java index 3ceb679..a535af0 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java @@ -43,7 +43,17 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { "payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,org.number,bizdate,description," + "shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus" , new QFilter("bizdate", QCP.large_equals, calculateTheDate(2)) - .and("org.number", QCP.in, new String[]{"SIG1040100", "SIG000101135", "SIG1041000", "SIG1040400"})//目前四家公司 + .and("org.number", QCP.in, new String[]{ + "SIG1040100", + "SIG1090000", + "SIG000101135", + "SIG1041000", + "SIG1040802", + "SIG1040804", + "SIG1040803", + "SIG1040801", + "SIG1040400" + })//目前四家公司 .and("shkd_pushstatus", QCP.not_equals, "已结算") .and("shkd_pushstatus", QCP.not_equals, "结算失败") .and("billstatus", QCP.equals, "D").toArray()); @@ -67,14 +77,16 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { "shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus" , new QFilter("bizdate", QCP.large_equals, calculateTheDate(2)) .and("bankpaystatus", QCP.in, new String[]{"TS", "TF", "NC", "OF"}) - .and("shkd_pushstatus", QCP.equals, "未结算").toArray()); + .and("shkd_pushstatus", QCP.equals, "未结算") + .and(new QFilter("shkd_businessname", 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()); + .and("shkd_pushstatus", QCP.equals, "结算失败") + .and(new QFilter("shkd_businessname", QCP.equals, "共享系统")).toArray()); dynamicObjects = Arrays.asList(objects4); dynamicObjects.addAll(Arrays.asList(objects5)); dynamicObjects.forEach(dynamicObject -> ApiService.paymentSlipsJson(dynamicObject, "BIPNO", dynamicObjectList, null)); @@ -105,32 +117,27 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { * 收款 → 先有流水 后有单据 */ case "bei_transdetail_cas": +// DynamicObject[] objects3 = BusinessDataServiceHelper.load("bei_transdetail_cas", +// "id,bizdate,oppbank,oppunit,accountbank,description,company,oppbanknumber," + +// "bankdetailno,transbalance,description,debitamount,creditamount,shkd_pushstatus," + +// "shkd_businessnumber,shkd_businessid,shkd_businessname,recedbillentry,receiptno," + +// "recedbillentry.e_recedbilltype,recedbillentry.e_recedbillnumber,recedbillentry.e_recedbillid" +// , new QFilter("bizdate", QCP.large_equals, calculateTheDate(7)) +// .and("shkd_pushstatus", QCP.not_equals, "已推送").toArray()); + DynamicObject[] objects3 = BusinessDataServiceHelper.load("bei_transdetail_cas", "id,bizdate,oppbank,oppunit,accountbank,description,company,oppbanknumber," + "bankdetailno,transbalance,description,debitamount,creditamount,shkd_pushstatus," + "shkd_businessnumber,shkd_businessid,shkd_businessname,recedbillentry,receiptno," + "recedbillentry.e_recedbilltype,recedbillentry.e_recedbillnumber,recedbillentry.e_recedbillid" - , new QFilter("bizdate", QCP.large_equals, calculateTheDate(7)) - .and("shkd_pushstatus", QCP.not_equals, "已推送").toArray()); - ArrayList transdetailCollection = new ArrayList<>(); + , new QFilter("shkd_pushstatus", QCP.not_equals, "已推送").toArray()); + Arrays.stream(objects3).forEach(dynamicObject -> { - DynamicObjectCollection dynamicObjectCollection = dynamicObject.getDynamicObjectCollection("recedbillentry"); - if (!dynamicObjectCollection.isEmpty()) { - DynamicObject object = dynamicObjectCollection.get(0); - String billType = object.getString("e_recedbilltype");// 接收单据类型 - String billNumber = object.getString("e_recedbillnumber");// 接受单据编号 - String billId = object.getString("e_recedbillid");// 接受单据ID - if (billType.equals("cas_paybill")) { - DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(billId, billType); - String businessName = dynamicObject1.getString("shkd_businessname");// 推送系统 - String pushStatus = dynamicObject1.getString("shkd_pushstatus");// 推送状态 - if ("共享系统".equals(businessName) && "已结算".equals(pushStatus)) { - transdetailCollection.add(dynamicObject); - } - } + DynamicObject companys = dynamicObject.getDynamicObject("company"); + if ("SIG1040100、SIG1090000、SIG000101135、SIG1041000、SIG1040802、SIG1040804、SIG1040803、SIG1040801、SIG1040400".contains(companys.getString("number"))) { + ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null); } }); - transdetailCollection.forEach(dynamicObject -> ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null)); SaveServiceHelper.save(dynamicObjectList.toArray(new DynamicObject[0])); break; /**