From a216e84095e00baabd4df53bc59058c175fb55bd Mon Sep 17 00:00:00 2001 From: weiyunlong Date: Fri, 6 Jun 2025 18:45:06 +0800 Subject: [PATCH] =?UTF-8?q?-=20[=20]=20=E8=AE=A4=E9=A2=86=E5=8D=95?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=88=90=E6=9C=AC=E4=B8=AD=E5=BF=83=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=90=BA=E5=B8=A6=E7=9A=84=E5=80=BC=20-=20[=20]=20?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=8D=95=E5=88=86=E5=BD=95=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=A4=E4=B8=AA=E5=AD=97=E6=AE=B5(?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E6=96=B9=E5=BC=8F,=E5=BE=80=E6=9D=A5?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=90=8D=E7=A7=B0)=20-=20[=20]=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=A2=AB=E5=8A=A8=E4=BB=98=E6=AC=BE=E5=85=A5=E8=B4=A6?= =?UTF-8?q?=E6=8A=A5=E9=94=99(=E6=90=BA=E5=B8=A6=E8=B5=84=E9=87=91?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E7=A7=91=E7=9B=AE=E6=98=A0=E5=B0=84=E8=A1=A8?= =?UTF-8?q?=E6=A0=87=E8=AF=86=E9=94=99=E8=AF=AF)=20-=20[=20]=20=E4=BB=98?= =?UTF-8?q?=E6=AC=BE=E8=B0=83=E6=95=B4=E5=8D=95=E6=8E=A5=E5=8F=A3=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BB=98=E6=AC=BE=E8=B0=83=E6=95=B4=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=20--s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/operate/PayBillSaveOperation.java | 2 +- .../plugin/operate/RecBillSaveOperation.java | 6 +- .../operate/SchedulebillCHOperation.java | 115 ++++++++++++++++++ .../fi/webapi/ApplyAdjustBillControler.java | 16 ++- 4 files changed, 130 insertions(+), 9 deletions(-) create mode 100644 main/java/shjh/jhzj7/fi/fi/plugin/operate/SchedulebillCHOperation.java diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java index d1cb25c..3b3eb2d 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java @@ -242,7 +242,7 @@ public class PayBillSaveOperation extends AbstractOperationServicePlugIn impleme qFilter = qFilter.and(q2).and(q3).and(q4); } - DynamicObject[] accounts = BusinessDataServiceHelper.load("shjh_request_account", "id," + + DynamicObject[] accounts = BusinessDataServiceHelper.load("shjh_pay_account", "id," + "shjh_membersubject,shjh_bhcgz,shjh_bbhcgz", qFilter.toArray()); if (accounts.length > 1) { // 根据生效日期,失效日期区间,判断当前时间满足的数据 diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecBillSaveOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecBillSaveOperation.java index 39bdcd5..dbcf80f 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecBillSaveOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecBillSaveOperation.java @@ -107,8 +107,8 @@ public class RecBillSaveOperation extends AbstractOperationServicePlugIn impleme * 3若没有,取"1042086_不明确客户"为默认值,携带到收款单的收款人名称,id字段, * 4.并且将对方户名携带到收款单备注字段中 */ - long payer = bill.getLong("payer");//付款人id - if (payer == 0) { +// long payer = bill.getLong("payer");//付款人id +// if (payer == 0) { boolean shjhEGetcustomer = entry.getBoolean("shjh_e_getcustomer");//取规则得映射表客户标记 if (shjhEGetcustomer) { String oppunit = beiIntelpay.getString("oppunit");//收款入账中心的对方户名 @@ -131,7 +131,7 @@ public class RecBillSaveOperation extends AbstractOperationServicePlugIn impleme } } } - } +// } DynamicObject shjhBizbig = (DynamicObject) bill.get("shjh_bizebig");//收款单的业务大类 if (null == shjhBizbig) { bill.set("shjh_bizebig", entry.getDynamicObject("shjh_e_bizbig")); diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/SchedulebillCHOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/SchedulebillCHOperation.java new file mode 100644 index 0000000..8bd7546 --- /dev/null +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/SchedulebillCHOperation.java @@ -0,0 +1,115 @@ +package shjh.jhzj7.fi.fi.plugin.operate; + +import kd.bos.dataentity.OperateOption; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.operate.OperateOptionConst; +import kd.bos.entity.operate.result.OperationResult; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.entity.plugin.args.BeforeOperationArgs; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.OperationServiceHelper; + +import java.util.ArrayList; +import java.util.Map; + +public class SchedulebillCHOperation extends AbstractOperationServicePlugIn { + + private final static Log logger = LogFactory.getLog(SchedulebillCHOperation.class); + + @Override + public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { + super.beforeExecuteOperationTransaction(e); + //排程单撤回,调用对应付款单的预占释放操作 + if ("shjh_ch".equals(e.getOperationKey())) { + ArrayList ids = new ArrayList<>(); + DynamicObject[] dataEntities1 = e.getDataEntities(); + for (DynamicObject dynamicObject : dataEntities1) { + dynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObject.getLong("id"), "psd_schedulebill"); + //付款单信息 + DynamicObjectCollection entrys = dynamicObject.getDynamicObjectCollection("entrys"); + if (!entrys.isEmpty()) { + DynamicObject entry = entrys.get(0); + long ePayid = entry.getLong("e_payid"); + DynamicObject paybill = BusinessDataServiceHelper.loadSingle(ePayid, "cas_paybill"); + if (null != paybill) { + ids.add(ePayid); + } + } + } + + Map payBillMap = BusinessDataServiceHelper.loadFromCache(ids.toArray(), "cas_paybill"); + OperateOption operateOption = createOperateOption(); + for (DynamicObject dynamicObject : payBillMap.values()) { + DynamicObject[] billArray = new DynamicObject[]{dynamicObject}; + OperationResult operationResult = OperationServiceHelper.executeOperate("donothing9", "cas_paybill", billArray, operateOption); + if (operationResult.isSuccess()) { + logger.info("执行 donothing9 成功,单据id:" + dynamicObject.getPkValue()); + } else { + logger.error("执行 donothing9 失败,单据id:"+operationResult.getMessage()); + } + } + } + } + + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + //排程单id + ArrayList ids = new ArrayList<>(); + OperateOption operateOption = createOperateOption(); + //二开撤回后执行标品的撤回 + if ("shjh_ch".equals(e.getOperationKey())) { + + DynamicObject[] dataEntities1 = e.getDataEntities(); + for (DynamicObject dynamicObject : dataEntities1) { + ids.add(dynamicObject.getLong("id")); + } + //排程但对应付款单id + ArrayList idss = new ArrayList<>(); + Map scheduleBillMap = BusinessDataServiceHelper.loadFromCache(ids.toArray(), "psd_schedulebill"); + for (DynamicObject dynamicObject : scheduleBillMap.values()) { + DynamicObject[] billArray = new DynamicObject[]{dynamicObject}; + OperationResult operationResult = OperationServiceHelper.executeOperate("cancelpay", "psd_schedulebill", billArray, operateOption); + if (operationResult.isSuccess()) { + logger.info("执行 cancelpay 成功,单据id:" + dynamicObject.getPkValue()); + } else { + //付款单信息 + DynamicObjectCollection entrys = dynamicObject.getDynamicObjectCollection("entrys"); + if (!entrys.isEmpty()) { + DynamicObject entry = entrys.get(0); + long ePayid = entry.getLong("e_payid"); + DynamicObject paybill = BusinessDataServiceHelper.loadSingle(ePayid, "cas_paybill"); + if (null != paybill) { + idss.add(ePayid); + } + } + logger.error("执行 cancelpay 失败,单据id:"+operationResult.getMessage()); + } + } + //撤回失败的排程单据,执行对应付款单的正向预占操作 + Map payBillMap = BusinessDataServiceHelper.loadFromCache(idss.toArray(), "cas_paybill"); + for (DynamicObject dynamicObject : payBillMap.values()) { + DynamicObject[] billArray = new DynamicObject[]{dynamicObject}; + OperationResult operationResult = OperationServiceHelper.executeOperate("donothing3", "cas_paybill", billArray, operateOption); + if (operationResult.isSuccess()) { + logger.info("执行 donothing3 成功,单据id:" + dynamicObject.getPkValue()); + } else { + logger.error("执行 donothing3 失败,单据id:"+operationResult.getMessage()); + } + } + } + } + + private OperateOption createOperateOption() { + OperateOption operateOption = OperateOption.create(); + operateOption.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); + operateOption.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true)); + operateOption.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(true)); + operateOption.setVariableValue(OperateOptionConst.MUTEX_ISSTRICT, String.valueOf(true)); + return operateOption; + } +} diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java index 0cb55c7..e56ee37 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java @@ -76,6 +76,7 @@ public class ApplyAdjustBillControler { String year = applyAdjustbill.getVoucherYear(); // 会计年度 String companyNum = applyAdjustbill.getCompanyNum(); // 公司编号 String fkBillNum = applyAdjustbill.getFkBillNum(); // 调整单号 + Date bizDate = applyAdjustbill.getBizDate();//付款调整日期 DynamicObject org = loadOrgByCompanyNum(companyNum); if (org == null) { @@ -138,6 +139,7 @@ public class ApplyAdjustBillControler { add.set("e_applyamount", amounts); // 相等,直接将调整金额覆盖首行申请金额 add.set("e_approvedamt", amounts); // 同步核准金额 add.set("shjh_applyadjustcode", applyAdjustbill.getFkBillNum()); // 付款调整单号 + add.set("shjh_fktzrq", bizDate); // 付款调整日期 } // 分录申请金额大于调整金额,可拆 由于新增,所以不需要考虑状态直接拆 difference(拆完剩余金额) if (comparisonResult > 0) { @@ -147,7 +149,7 @@ public class ApplyAdjustBillControler { add.set("e_approvedamt", difference); // 同步核准金额 // 复制行 ,不考虑重复拆() - cloneEntryRow(add, collection, amounts, applyAdjustbill.getFkBillNum()); + cloneEntryRow(add, collection, amounts, applyAdjustbill.getFkBillNum(), bizDate); } // 标记付款申请___来源调整单 @@ -206,6 +208,7 @@ public class ApplyAdjustBillControler { add.set("e_applyamount", amounts); // 相等,直接将调整金额覆盖首行申请金额 add.set("e_approvedamt", amounts); // 同步核准金额 add.set("shjh_applyadjustcode", applyAdjustbill.getFkBillNum()); // 付款调整单号 + add.set("shjh_fktzrq", bizDate); // 付款调整日期 } if (comparisonResult > 0) { @@ -215,7 +218,7 @@ public class ApplyAdjustBillControler { add.set("e_approvedamt", difference); // 同步核准金额 // 复制行 ,不考虑重复拆() - DynamicObject add1 = cloneEntryRow(add, collection, amounts, applyAdjustbill.getFkBillNum()); + DynamicObject add1 = cloneEntryRow(add, collection, amounts, applyAdjustbill.getFkBillNum(), bizDate); } // 标记付款申请___来源调整单 ap_payapply.set("shjh_sourceadjustment", true); @@ -249,6 +252,7 @@ public class ApplyAdjustBillControler { add.set("e_applyamount", amounts); // 相等,直接将调整金额覆盖首行申请金额 add.set("e_approvedamt", amounts); // 同步核准金额 add.set("shjh_applyadjustcode", applyAdjustbill.getFkBillNum()); // 付款调整单号 + add.set("shjh_fktzrq", bizDate); // 付款调整日期 } if (comparisonResult > 0) { @@ -259,7 +263,7 @@ public class ApplyAdjustBillControler { add.set("e_approvedamt", difference); // 同步核准金额 } // 复制行 - DynamicObject add1 = cloneEntryRow(add, collection, amounts, applyAdjustbill.getFkBillNum()); + DynamicObject add1 = cloneEntryRow(add, collection, amounts, applyAdjustbill.getFkBillNum(), bizDate); } // 标记付款申请___来源调整单 @@ -372,7 +376,7 @@ public class ApplyAdjustBillControler { * @param fkBillNum 付款调整单号 * @return 复制后的分录行 */ - private DynamicObject cloneEntryRow(DynamicObject source, DynamicObjectCollection collection, BigDecimal amounts, String fkBillNum) { + private DynamicObject cloneEntryRow(DynamicObject source, DynamicObjectCollection collection, BigDecimal amounts, String fkBillNum,Date bizDate) { int size = collection.size(); DynamicObject newRow = collection.addNew(); @@ -388,13 +392,15 @@ public class ApplyAdjustBillControler { newRow.set("e_freezestate", source.get("e_freezestate")); newRow.set("e_creator", source.get("e_creator")); newRow.set("e_closestatus", source.get("e_closestatus")); + newRow.set("shjh_asstactrealname", source.get("shjh_asstactrealname"));//往来账号名称 + newRow.set("e_settlementtype", source.get("e_settlementtype"));//结算方式 // 设置特定属性 newRow.set("seq", size + 1); newRow.set("e_applyamount", amounts); // 调整金额 newRow.set("e_approvedamt", amounts); // 核准金额 newRow.set("shjh_applyadjustcode", fkBillNum); // 付款调整单号 - + newRow.set("shjh_fktzrq", bizDate); // 付款调整日期 return newRow; }