From b6f0bd3a844b41483a84dbf7eefc744fabc0e97f Mon Sep 17 00:00:00 2001 From: weiyunlong Date: Thu, 17 Apr 2025 00:06:40 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96todo=20-=20=E4=BB=98?= =?UTF-8?q?=E6=AC=BE=E7=94=B3=E8=AF=B7=E5=AE=9A=E6=97=B6=E7=94=9F=E6=88=90?= =?UTF-8?q?=E4=BB=98=E6=AC=BE=E5=8D=95=20-=20=E9=85=8D=E7=BD=AE=E8=A1=A8(o?= =?UTF-8?q?r=E9=80=BB=E8=BE=91)=20--s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fi/fi/plugin/form/ScheduleListPlugin.java | 4 +- .../operate/PayApplyDeleteOperation.java | 4 +- .../plugin/operate/PayApplySaveOperation.java | 4 +- .../operate/PaybillPushSapOperation.java | 4 +- .../operate/PayrequestBillOperation.java | 4 +- .../fi/fi/plugin/task/PayApplyFukuanTask.java | 66 +++++++++++++++++++ .../task/QuerySapCreatePayApplyTask.java | 13 ++-- 7 files changed, 85 insertions(+), 14 deletions(-) create mode 100644 main/java/shjh/jhzj7/fi/fi/plugin/task/PayApplyFukuanTask.java diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/ScheduleListPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/ScheduleListPlugin.java index d100c45..03e5fa5 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/ScheduleListPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/ScheduleListPlugin.java @@ -97,8 +97,8 @@ public class ScheduleListPlugin extends AbstractListPlugin { if (null!= bill.getDynamicObject("creator")) { cname = bill.getDynamicObject("creator").getString("number");//创建人,工号_申请人 } - //jsonObject.put("cname", cname);//创建人,工号 - jsonObject.put("cname", "GH001657");//todo:创建人,工号 + jsonObject.put("cname", cname);//创建人,工号 +// jsonObject.put("cname", "GH001657");//创建人,工号 jsonObject.put("zjddjid", "" + bill.getPkValue()); jsonObject.put("zjddjbh", bill.getString("billno")); IT_INPUT.add(jsonObject); diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplyDeleteOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplyDeleteOperation.java index e600a93..7118946 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplyDeleteOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplyDeleteOperation.java @@ -52,8 +52,8 @@ public class PayApplyDeleteOperation extends AbstractOperationServicePlugIn impl if (null!= bill.getDynamicObject("creator")) { cname = bill.getDynamicObject("creator").getString("number");//创建人,工号_申请人 } -// jsonObject.put("cname", cname);//创建人,工号 - jsonObject.put("cname", "GH001657");//todo:创建人,工号 + jsonObject.put("cname", cname);//创建人,工号 +// jsonObject.put("cname", "GH001657");//创建人,工号 jsonObject.put("zjddjid", ""+bill.getPkValue());//金蝶单据ID jsonObject.put("zjddjbh", bill.getString("billno"));//金蝶单据编号 IT_INPUT.add(jsonObject); diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplySaveOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplySaveOperation.java index c66dfb9..00dc56f 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplySaveOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayApplySaveOperation.java @@ -60,8 +60,8 @@ public class PayApplySaveOperation extends AbstractOperationServicePlugIn implem if (null!= bill.getDynamicObject("creator")) { cname = bill.getDynamicObject("creator").getString("number");//创建人,工号_申请人 } -// jsonObject.put("cname", cname);//todo:创建人,工号 - jsonObject.put("CNAME", "GH001657");//todo:创建人,工号 + jsonObject.put("cname", cname);//创建人,工号 +// jsonObject.put("CNAME", "GH001657");//创建人,工号 jsonObject.put("ZJDDJID", ""+bill.getPkValue());//金蝶单据ID jsonObject.put("ZJDDJBH", bill.getString("billno"));//金蝶单据编号 IT_INPUT.add(jsonObject); diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java index bade62f..b461cb3 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java @@ -208,7 +208,7 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl // 进行空值检查 if (debitlocal != null && creditlocal != null && entrydc != null) { BigDecimal amountToPut = BigDecimal.ZERO; - // todo:获取分录方向 若A,只拿一方,当前拿的借方 + // 获取分录方向 若A,只拿一方,当前拿的借方 boolean isSourceSystemA = "A".equals(shjhSourcesystem); boolean isEntryDC1 = "1".equals(entrydc); boolean isEntryDCNegative1 = "-1".equals(entrydc); @@ -386,7 +386,7 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl // HKONT = shjhSapkjkm.getString("number");//SAP会计科目 // } // jsonObject.put("HKONT", HKONT);//总账科目 -// jsonObject.put("UMSKZ", "");//todo:特殊总账标识 +// jsonObject.put("UMSKZ", "");//特殊总账标识 // jsonObject.put("DMBTR", entr.getBigDecimal("e_actamt"));//未清金额_实收金额 // IT_CLEAR.add(jsonObject); // } diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayrequestBillOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayrequestBillOperation.java index cb8e25c..f8ef425 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayrequestBillOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayrequestBillOperation.java @@ -77,8 +77,8 @@ public class PayrequestBillOperation extends AbstractOperationServicePlugIn impl if (null!= bill.getDynamicObject("creator")) { cname = bill.getDynamicObject("creator").getString("number");//创建人,工号_申请人 } -// jsonObject.put("cname", cname);//创建人,工号 - jsonObject.put("cname", "GH001657");//todo:创建人,工号 + jsonObject.put("cname", cname);//创建人,工号 +// jsonObject.put("cname", "GH001657");//创建人,工号 jsonObject.put("zjddjid", ""+bill.getPkValue());//金蝶单据ID jsonObject.put("zjddjbh", bill.getString("billno"));//金蝶单据编号 IT_INPUT.add(jsonObject); diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/task/PayApplyFukuanTask.java b/main/java/shjh/jhzj7/fi/fi/plugin/task/PayApplyFukuanTask.java new file mode 100644 index 0000000..98224a4 --- /dev/null +++ b/main/java/shjh/jhzj7/fi/fi/plugin/task/PayApplyFukuanTask.java @@ -0,0 +1,66 @@ +package shjh.jhzj7.fi.fi.plugin.task; + +import kd.bos.context.RequestContext; +import kd.bos.dataentity.OperateOption; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.operate.OperateOptionConst; +import kd.bos.entity.operate.result.OperationResult; +import kd.bos.exception.KDException; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.schedule.executor.AbstractTask; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.OperationServiceHelper; +import kd.sdk.plugin.Plugin; + +import java.util.ArrayList; +import java.util.Map; + +/** + * 定时任务 付款申请定时生成付款单 + * @author LiGuiQiang + */ +public class PayApplyFukuanTask extends AbstractTask implements Plugin { + + private static final String AP_PAYAPPLY ="ap_payapply";// 付款申请单 + private static final String CAS_PAYBILL ="cas_paybill";// 付款单 + private static final Log logger = LogFactory.getLog(PayApplyFukuanTask.class); + + + @Override + public void execute(RequestContext requestContext, Map map) throws KDException { + // 【单据状态】=已审核 + QFilter qFilter = new QFilter("status", QCP.equals, "C"); + + DynamicObject[] collection = BusinessDataServiceHelper.load(AP_PAYAPPLY, "id", qFilter.toArray()); + if (collection.length!=0){ + ArrayList ids = new ArrayList<>(); + for (DynamicObject dynamicObject : collection) { + ids.add(dynamicObject.getLong("id")); + } + Map recBillMap = BusinessDataServiceHelper.loadFromCache(ids.toArray(), AP_PAYAPPLY); + 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)); + for (DynamicObject dynamicObject : recBillMap.values()) { + // 注意:executeOperate 需要一个数组形式的 DynamicObject[] + DynamicObject[] billArray = new DynamicObject[]{dynamicObject}; + OperationResult operationResult = OperationServiceHelper.executeOperate("pay", AP_PAYAPPLY, billArray, operateOption); + // 可以根据需要处理 operationResult,例如检查是否成功、获取返回值等 + if (operationResult.isSuccess()) { + logger.info("执行 pay 成功,单据编号:" + dynamicObject.getPkValue()); + } else { + logger.error(operationResult.getMessage()); + } + } + } + } +} diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java b/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java index d69b37c..ab6df32 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java @@ -152,8 +152,8 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { shjh_payeebanknum = lifnr; } String assacct = it_list.getString("BVTYP");//合作银行类型 - //todo:原因码 - String reasoncode = "014"; + //原因码 + String reasoncode =it_list.getString("RSTGR"); //todo:资金计划分类 String zreqDept = it_list.getString("ZREQ_DEPT");//二级部门 String procurementeam = it_list.getString("EKGRP");//采购组 @@ -285,7 +285,13 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { //表头申请金额 ap_payapply.set("applyamount", amount); - //todo:结算方式 + String zlsch = it_list.getString("ZLSCH");//付款方式 + // 结算方式(付款方式) + DynamicObject settlementtype = BusinessDataServiceHelper.loadSingle("bd_settlementtype", + new QFilter[]{new QFilter("number", QCP.equals, zlsch)}); + if (null != settlementtype) { + ap_payapply_entry.set("e_settlementtype", settlementtype); + } //付款类型:取值范围:对公付款、对私付款;SAP:科目编号1221020200 对私付款。费控:劳务人员报销单 对私付款。其他均赋值为对公付款。 if ("1221020200".equals(accountingsubject)) { @@ -371,7 +377,6 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { DynamicObject cause = BusinessDataServiceHelper.loadSingle(GL_CASHFLOWITEM, new QFilter[]{Q11}); ap_payapply.set("shjh_yym", cause); } - //todo:汇率日期,支付渠道 文档20-36(7.1.3) //过账日期(记账) ap_payapply.set("shjh_bookkeepingdate", BUDATs); //凭证日期