From 409bc1bddcfa7108543e661d6630365faa8bf1ca Mon Sep 17 00:00:00 2001 From: zoujiangtao Date: Tue, 11 Mar 2025 16:44:21 +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=E7=94=B5=E5=AD=90=E5=9B=9E=E5=8D=95?= =?UTF-8?q?=E3=80=81=E9=99=84=E4=BB=B6/=E9=93=B6=E8=A1=8C=E6=94=B6?= =?UTF-8?q?=E4=BB=98=E5=A4=84=E7=90=86=E6=8E=A8=E9=80=81BIP=E8=B0=83?= =?UTF-8?q?=E6=95=B4=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 --- .../shkd/sys/sys/mservice/ApiService.java | 2 +- .../sys/sys/mservice/FundingPlanService.java | 56 +++++++++--- .../sys/plugin/form/ApiMappingBillPlugin.java | 11 ++- .../sys/plugin/form/ApiTestBillPlugin.java | 6 +- .../sys/sys/plugin/task/PushTaskPlugin.java | 91 +++++++++++++++---- 5 files changed, 131 insertions(+), 35 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java index b76b39d..d578638 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java @@ -387,7 +387,7 @@ public class ApiService { hashMap.put("id", jsonObject.getJSONArray("data").get(0).toString()); hashMap.put("receiptno", dynamic.getString("billno")); String attachmentRequestBody = getAttachmentRequestBody(hashMap); - String pushResult = pushBill(token, "https://biptestctny.invest.com.cn:8002/iuap-api-auth//yonbip/ctm/bank/tran/update", attachmentRequestBody); + String pushResult = pushBill(token, "https://10.1.9.43/iuap-api-auth//yonbip/ctm/bank/tran/update", attachmentRequestBody); logger.info("电子回单查询 → BIP推送附件接口 → 请求返回结果:\n{}", pushResult); result = "推送 → 电子回单和附件 → 成功"; } else { diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/FundingPlanService.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/FundingPlanService.java index 18b24cd..80a6321 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/FundingPlanService.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/FundingPlanService.java @@ -1,7 +1,11 @@ package shkd.sys.sys.mservice; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; import kd.tmc.fpm.business.dataproc.save.ReportDataSDKService; import kd.bos.login.actions.SerializationUtils; +import kd.tmc.fpm.business.dataproc.save.domain.ReportDataBatchSaveObject; +import kd.tmc.fpm.business.dataproc.save.domain.ReportDataBatchSaveParam; import kd.tmc.fpm.business.dataproc.save.ReportDataSaveObject; import kd.tmc.fpm.business.domain.service.FpmOperateResult; @@ -10,11 +14,13 @@ import java.util.ArrayList; import java.util.List; /** - * @Description + * @Description 资金计划写入服务 * @Author Tao * @Date 2025/2/24 */ public class FundingPlanService { + + private static final Log logger = LogFactory.getLog(FundingPlanService.class); public static String writeData() { /** * private @ApiParam("报表数据Id") Long reportId; @@ -42,37 +48,64 @@ public class FundingPlanService { */ // 1. 构造请求参数 +// ReportDataBatchSaveParam reportDataBatchSaveParam = new ReportDataBatchSaveParam(); +// reportDataBatchSaveParam.setSystemCode();// 体系code +// reportDataBatchSaveParam.setTemplateCode();// 模板code +// reportDataBatchSaveParam.setReportPeriodCode();// 编报期间code +// reportDataBatchSaveParam.setReportOrgCode();// 编报主体code +// +// ReportDataBatchSaveObject reportDataBatchSaveObject = new ReportDataBatchSaveObject(); +// +// reportDataBatchSaveParam.setBatchSaveData(); + + ReportDataSaveObject requestObject = new ReportDataSaveObject(); + + // 报表数据Id -// requestObject.setReportId(); + requestObject.setReportId(2102457524581052484L);// 计划编制编码:91510100MA7FY7GT7R-20241210-0003 // 报表数据reportDataId // requestObject.setReportDataId(); // 体系ID 必填 requestObject.setSystemId(2078206889971156992L);// 川投计划填报 // 模板ID - requestObject.setTemplateId(2081110508173265920L);// 月度计划测试 +// requestObject.setTemplateId(2081110508173265920L);// 月度计划测试 // 模板名称 - requestObject.setTemplateName("月度计划测试");// 月度计划测试 +// requestObject.setTemplateName("月度计划测试");// 月度计划测试 // 编报期间ID - requestObject.setReportPeriodId(2097273299254902785L);// 2025年02月 + requestObject.setReportPeriodId(2102457312651262977L);// 2025年03月 // 编报主体ID - requestObject.setReportOrgId(2092147481843336244L); // 四川川投新能源有限公司 + requestObject.setReportOrgId(2086389183361843203L); // 四川川投能源股份有限公司 // 编报主体 List objects = new ArrayList<>(); - objects.add(2092147481843336244L); + objects.add(2086389183361843203L); requestObject.setReportOrgIds(objects); // 币种ID requestObject.setCurrencyId(2078206890407364608L);// 人民币 // 计划科目ID - requestObject.setSubjectId(1323045941204225024L);// 计划科目:销售商品、提供劳务收到的现金 + requestObject.setSubjectId(2078208875504338947L);// 计划科目:销售商品、提供劳务收到的现金 // 公司ID // requestObject.setCompanyId(); // 结算方式ID // requestObject.setSettleTypeId(); // 主维度数据分录期间ID - requestObject.setEntryPeriodId(2097273390665565188L);// 2025年2月01周 + requestObject.setEntryPeriodId(2102457312676428801L);// 2025年3月01周 // 度量值列表 -// requestObject.setMetricMembers(); + ReportDataSaveObject.MetricMember metricMember = new ReportDataSaveObject.MetricMember(); +// metricMember.setId(2078206891380443136L);// id +// metricMember.setNumber("M001");// 编码 +// metricMember.setName("计划参考值");// 名称 +// metricMember.setMetrictype("Metric");// 类型 +// metricMember.setPlanAmt(new BigDecimal(1000));// 计划数 + + metricMember.setId(2078206891380442112L);// id + metricMember.setNumber("M002");// 编码 + metricMember.setName("计划额度");// 名称 + metricMember.setMetrictype("Metric");// 类型 + metricMember.setPlanAmt(new BigDecimal(1000));// 计划数 + List metricMemberArrayList = new ArrayList<>(); + metricMemberArrayList.add(metricMember); + requestObject.setMetricMembers(metricMemberArrayList); // 上报计划额度 requestObject.setReportPlanAmt(new BigDecimal(1000)); // 原始计划额度(核定额度) @@ -95,9 +128,10 @@ public class FundingPlanService { String qParam = SerializationUtils.serializeToBase64(requestObject); // 3. 调用SDK接口 ReportDataSDKService reportDataSDKService = new ReportDataSDKService(); - String result = reportDataSDKService.batchSaveReportData(qParam); + String result = reportDataSDKService.saveReportData(qParam); // 4. 反序列化响应结果 FpmOperateResult responseObject = SerializationUtils.deSerializeFromBase64(result); + logger.info("是否成功:{}\n消息列表:{}\n警告消息列表:{}", responseObject.isSuccess(), responseObject.getMessageList(), responseObject.getWarnMessage()); return responseObject.getSuccessMessage(); } 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 0090988..9e0cd4b 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 @@ -235,9 +235,10 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin { // 银企交易明细查询 case "bei_transdetail_cas": DynamicObject[] objects3 = BusinessDataServiceHelper.load("bei_transdetail_cas", - "id,billno,bizdate,oppbank,oppunit,accountbank,description,company,oppbanknumber," + + "id,bizdate,billno,detailid,oppbank,oppunit,accountbank,description,company,oppbanknumber," + "bankdetailno,transbalance,description,debitamount,creditamount,shkd_pushstatus," + - "shkd_businessnumber,shkd_businessid,shkd_businessname" + "shkd_businessnumber,shkd_businessid,shkd_businessname,recedbillentry,receiptno," + + "recedbillentry.e_recedbilltype,recedbillentry.e_recedbillnumber,recedbillentry.e_recedbillid" , new QFilter("billno", QCP.equals, billNumber).toArray()); billObject = objects3[0]; logger.info("获取银企交易明细查询推送对象 → billObject:{}", billObject); @@ -245,9 +246,9 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin { // 电子回单查询 case "bei_elecreceipt": DynamicObject[] objects4 = BusinessDataServiceHelper.load("bei_elecreceipt", - "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbankname,description,company,oppbanknumber," + - "detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid,uploadfilename," + - "shkd_businessnumber,shkd_businessid,shkd_businessname,filepath" + "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbank,oppbankname,description,company," + + "oppbanknumber,oppunit,detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid," + + "uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno" , new QFilter("billno", QCP.equals, billNumber).toArray()); billObject = objects4[0]; logger.info("获取银企交易明细查询推送对象 → billObject:{}", billObject); diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiTestBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiTestBillPlugin.java index 397d794..d1d27ba 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiTestBillPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiTestBillPlugin.java @@ -3,9 +3,12 @@ package shkd.sys.sys.plugin.form; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.form.control.Toolbar; import kd.bos.form.control.events.ItemClickEvent; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; import kd.sdk.plugin.Plugin; import shkd.sys.sys.mservice.ApiService; import shkd.sys.sys.mservice.FundingPlanService; +import shkd.sys.sys.mservice.PlanningService; import java.util.EventObject; @@ -13,6 +16,7 @@ import java.util.EventObject; * 单据界面插件 */ public class ApiTestBillPlugin extends AbstractBillPlugIn implements Plugin { + private static final Log logger = LogFactory.getLog(ApiTestBillPlugin.class); @Override public void registerListener(EventObject e) { // super.registerListener(e); @@ -46,7 +50,7 @@ public class ApiTestBillPlugin extends AbstractBillPlugIn implements Plugin { if ("shkd_funds".equals(key)) { // JSONObject jsonObject = BIPService.paymentSlipsJson(); // this.getView().showTipNotification(jsonObject.toJSONString()); - String result = FundingPlanService.writeData(); + String result = PlanningService.writeData(); this.getView().showSuccessNotification(result); } } 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 713f499..bf901c0 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 @@ -1,6 +1,10 @@ package shkd.sys.sys.plugin.task; import com.kingdee.bos.qing.util.DateUtils; + +import java.time.YearMonth; +import java.time.ZoneId; + import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; @@ -121,15 +125,39 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { // .and("shkd_pushstatus", QCP.not_equals, "已推送").toArray()); DynamicObject[] objects3 = BusinessDataServiceHelper.load("bei_transdetail_cas", - "id,bizdate,oppbank,oppunit,accountbank,description,company,oppbanknumber," + + "id,bizdate,billno,detailid,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("shkd_pushstatus", QCP.not_equals, "已推送").toArray()); + , new QFilter("bizdate", QCP.large_equals, getFirstDayOfMonth()) + .and("shkd_pushstatus", QCP.not_equals, "已推送").toArray()); Arrays.stream(objects3).forEach(dynamicObject -> { DynamicObject companys = dynamicObject.getDynamicObject("company"); - if ("SIG1040100、SIG1090000、SIG000101135、SIG1041000、SIG1040802、SIG1040804、SIG1040803、SIG1040801、SIG1040400".contains(companys.getString("number"))) { + if (("SIG1040100、" + + "SIG1040901、" + + "SIG1040201、" + + "SIG1090000、" + + "SIG1040700、" + + "SIG000101135、" + + "SIG1040600、" + + "SIG1040300、" + + "SIG000100079、" + + "SIG000003001、" + + "SIG1041000、" + + "SIG1040802、" + + "SIG000101558、" + + "SIG1040808、" + + "SIG1040804、" + + "SIG1040803、" + + "SIG1040801、" + + "SIG1040400、" + + "SIG104010101、" + + "SIG104010102、" + + "SIG1040202、" + + "SIG1040203、" + + "SIG1040204、" + + "SIG1040902").contains(companys.getString("number"))) { ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null); } }); @@ -141,25 +169,40 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { */ case "bei_elecreceipt": DynamicObject[] elecreceiptArays = BusinessDataServiceHelper.load("bei_elecreceipt", - "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbankname,description,company," + - "oppbanknumber,detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid," + + "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbank,oppbankname,description,company," + + "oppbanknumber,oppunit,detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid," + "uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno" - , new QFilter("bizdate", QCP.large_equals, calculateTheDate(7)) + , new QFilter("bizdate", QCP.large_equals, getFirstDayOfMonth()) .and("shkd_pushstatus", QCP.not_equals, "已推送").toArray()); - ArrayList elecreceiptCollection = new ArrayList<>(); Arrays.stream(elecreceiptArays).forEach(dynamicObject -> { - DynamicObject[] objects = BusinessDataServiceHelper.load("bei_transdetail_cas", - "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbankname,description,company," + - "oppbanknumber,detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid," + - "uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno", - new QFilter("receiptno", QCP.equals, dynamicObject.getString("receiptno")). - and(new QFilter("shkd_pushstatus", QCP.equals, "已推送")). - and(new QFilter("shkd_businessname", QCP.equals, "共享系统")).toArray()); - if (objects.length > 0) { - elecreceiptCollection.add(dynamicObject); + DynamicObject companys = dynamicObject.getDynamicObject("company"); + if (("SIG1040100、" + + "SIG1040901、" + + "SIG1040201、" + + "SIG1090000、" + + "SIG1040700、" + + "SIG000101135、" + + "SIG1040600、" + + "SIG1040300、" + + "SIG000100079、" + + "SIG000003001、" + + "SIG1041000、" + + "SIG1040802、" + + "SIG000101558、" + + "SIG1040808、" + + "SIG1040804、" + + "SIG1040803、" + + "SIG1040801、" + + "SIG1040400、" + + "SIG104010101、" + + "SIG104010102、" + + "SIG1040202、" + + "SIG1040203、" + + "SIG1040204、" + + "SIG1040902").contains(companys.getString("number"))) { + ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null); } }); - elecreceiptCollection.forEach(dynamicObject -> ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null)); SaveServiceHelper.save(dynamicObjectList.toArray(new DynamicObject[0])); break; default: @@ -187,4 +230,18 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { } return date; } + + private static Date getFirstDayOfMonth() { + // 获取当前日期 + LocalDate currentDate = LocalDate.now(); + + // 获取当前年份和月份 + YearMonth yearMonth = YearMonth.from(currentDate); + + // 获取当前月份的第一天 + LocalDate firstDayOfMonth = yearMonth.atDay(1); + + // 将LocalDate转换为Date + return Date.from(firstDayOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant()); + } } \ No newline at end of file