From cce3525cb65867372f109491bd6d85eeb3711a15 Mon Sep 17 00:00:00 2001 From: zhangzhiguo <421587375@qq.com> Date: Tue, 5 Aug 2025 11:03:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=91=E7=9B=AE=E4=BD=99=E9=A2=9D=E8=A1=A8?= =?UTF-8?q?=E5=8F=96=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/common/AssistbalanceAutoData.java | 150 ++++++++++++++++ .../fs/plugin/form/AssistbalancePlugin.java | 160 +----------------- .../fs/plugin/task/AssistbalanceTask.java | 27 +++ 3 files changed, 183 insertions(+), 154 deletions(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/common/AssistbalanceAutoData.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/task/AssistbalanceTask.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/common/AssistbalanceAutoData.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/common/AssistbalanceAutoData.java new file mode 100644 index 0000000..76cf8c5 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/common/AssistbalanceAutoData.java @@ -0,0 +1,150 @@ +package zcgj.zcdev.zcdev.fs.plugin.common; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.db.DB; +import kd.bos.db.DBRoute; +import kd.bos.openapi.common.result.OpenApiResult; +import kd.bos.openapi.common.util.OpenApiSdkUtil; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import zcgj.zcdev.zcdev.fs.utils.AccountRecord; +import zcgj.zcdev.zcdev.fs.utils.BalanceQueryParamApi; + +import java.lang.reflect.Type; +import java.util.*; + +public class AssistbalanceAutoData { + + public static void getData(){ + String[] selectorsArray = new String[]{"beginlocal", "endlocal", "yeardebitfor","yearcreditfor","debitlocal","creditlocal"}; + + QFilter filteraccountTable = new QFilter("number", QCP.equals, "0003"); + DynamicObject accountTableLoad = BusinessDataServiceHelper.loadSingle("bd_accounttable", "id", new QFilter[]{filteraccountTable}); + + QFilter number = new QFilter("fisaccounting", "=", "1"); + QFilter structure = new QFilter("structure.longnumber", QCP.like, "10000000!10006431%"); + QFilter isleaf = new QFilter("structure.isleaf", QCP.equals, true); + DynamicObject[] load = BusinessDataServiceHelper.load("bos_org", "id,structure.longnumber,structure.view", new QFilter[]{number, structure,isleaf}); + + DynamicObject[] accountConf = BusinessDataServiceHelper.load("zcgj_conf_balanceaccount", "zcgj_account", new QFilter[]{}); + Set accountNumber = new HashSet<>(); + for (DynamicObject dynamicObject : accountConf) { + accountNumber.add(dynamicObject.getDynamicObject("zcgj_account").getString("number")); + } + + List orgIds = new ArrayList<>(); + Map orgNumberMap = new HashMap<>(); + for (int i = 0; i < load.length; i++) { + DynamicObject dynamicObject = load[i]; + orgNumberMap.put(dynamicObject.getString("number"), dynamicObject); + orgIds.add(dynamicObject.getLong("id")); + } + + + //查询组织下对应的当前期间数据 + DynamicObject[] orgByCurperiod = BusinessDataServiceHelper.load("gl_accountbook", + "org,curperiod", + new QFilter[]{new QFilter("enable", QCP.equals, Boolean.TRUE). + and("status", QCP.equals, "C").and("org.id", QCP.in, orgIds)}); + /*Map orgByCurperiodMap = + Arrays.stream(orgByCurperiod).collect(Collectors.toMap( + i -> i.getLong("org.id"), + i -> i));*/ + Map orgByCurperiodMap = new HashMap<>(); + for (DynamicObject dynamicObject : orgByCurperiod) { + orgByCurperiodMap.put(dynamicObject.getLong("org.id"), dynamicObject); + } + + //清除数据 + //DeleteServiceHelper.delete("zcgj_rpt_assistbalance",new QFilter[]{}); + List sqlparams = new ArrayList<>(); + Object[] sqlparam = new Object[] { false }; + sqlparams.add(sqlparam); + DB.executeBatch(DBRoute.of("fi"), + "update tk_zcgj_rpt_assistbalance set fk_zcgj_isnew = ? ", sqlparams); + + for (String orgNumber : orgNumberMap.keySet()) { + BalanceQueryParamApi balanceQueryParamApi = new BalanceQueryParamApi(); + balanceQueryParamApi.setSelectors(Arrays.asList(selectorsArray)); + // balanceQueryParamApi.setOrgNumber("cw000102"); + balanceQueryParamApi.setOrgNumber(orgNumber); + balanceQueryParamApi.setBookTypeNumber("100002"); //账簿类型 + balanceQueryParamApi.setAccountTableNumber("0003");//科目表 + + DynamicObject orgObj = orgNumberMap.get(orgNumber); + DynamicObject periodObj = orgByCurperiodMap.get(orgObj.getLong("id")); + DynamicObject curperiod = null; + if(periodObj != null) { + curperiod = periodObj.getDynamicObject("curperiod"); + if( curperiod!= null) { + balanceQueryParamApi.setPeriodNumber(curperiod.getString("number")); // + }else{ + continue; + } + }else{ + continue; + } + + Map>> accountAssgrp = new HashMap<>(); + List> li = new ArrayList<>(); + Map map1 = new HashMap<>(); + map1.put("0001",""); + li.add(map1); + for (String accNum : accountNumber) { + accountAssgrp.put(accNum,li); + } + balanceQueryParamApi.setAccountAssgrp(accountAssgrp); + List groupBy = new ArrayList<>(); + groupBy.add("0001"); + groupBy.add("account"); + balanceQueryParamApi.setGroupBys(groupBy); + Gson gson = new Gson(); + String json = gson.toJson(balanceQueryParamApi); + Map params = gson.fromJson(json, + new TypeToken>(){}.getType()); + + OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); + + List addEntities = new ArrayList<>(); + if(balanceData.isStatus()){ + String data = (String) balanceData.getData(); + Type listType = new TypeToken>() {}.getType(); + List records = gson.fromJson(data, listType); + // 示例输出 + for (AccountRecord record : records) { + DynamicObject assistbalance + =BusinessDataServiceHelper.newDynamicObject("zcgj_rpt_assistbalance"); + assistbalance.set("zcgj_debitlocal", record.getDebitlocal()); + assistbalance.set("zcgj_creditlocal", record.getCreditlocal()); + assistbalance.set("zcgj_yeardebitfor", record.getYeardebitfor()); + assistbalance.set("zcgj_yearcreditfor", record.getYearcreditfor()); + assistbalance.set("zcgj_endlocal", record.getEndlocal()); + assistbalance.set("zcgj_org",orgNumberMap.get(orgNumber)); + assistbalance.set("zcgj_accounttable",accountTableLoad); + assistbalance.set("zcgj_account", record.getAccount()); + assistbalance.set("zcgj_period",curperiod); + assistbalance.set("zcgj_isnew",true); + Map assgrp = record.getAssgrp(); + if (assgrp.containsKey("0001")) { + assistbalance.set("zcgj_customernumber",assgrp.get("0001").getNumber()); + assistbalance.set("zcgj_customername",assgrp.get("0001").getName()); + } + addEntities.add(assistbalance); + } + + } + + if (!addEntities.isEmpty()) { + try { + SaveServiceHelper.save(addEntities.toArray(new DynamicObject[0])); + } catch (Exception ex) { + throw new RuntimeException(ex); + } + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/AssistbalancePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/AssistbalancePlugin.java index a8643fe..737f29f 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/AssistbalancePlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/AssistbalancePlugin.java @@ -1,33 +1,17 @@ package zcgj.zcdev.zcdev.fs.plugin.form; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import kd.bos.dataentity.entity.DynamicObject; import kd.bos.form.control.events.ItemClickEvent; import kd.bos.list.plugin.AbstractListPlugin; -import kd.bos.openapi.common.result.OpenApiResult; -import kd.bos.openapi.common.util.OpenApiSdkUtil; -import kd.bos.orm.query.QCP; -import kd.bos.orm.query.QFilter; -import kd.bos.servicehelper.BusinessDataServiceHelper; -import kd.bos.servicehelper.operation.DeleteServiceHelper; -import kd.bos.servicehelper.operation.SaveServiceHelper; -import kd.bos.servicehelper.org.OrgUnitServiceHelper; -import kd.fi.gl.servicehelper.BalanceQueryParam; -import kd.fi.gl.util.SystemParamHelper; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; import kd.sdk.plugin.Plugin; -import zcgj.zcdev.zcdev.fs.utils.AccountRecord; -import zcgj.zcdev.zcdev.fs.utils.BalanceQueryParamApi; - -import java.lang.reflect.Type; -import java.util.*; -import java.util.stream.Collectors; +import zcgj.zcdev.zcdev.fs.plugin.common.AssistbalanceAutoData; /** * 核算维度余额取数表(矿山二开) */ public class AssistbalancePlugin extends AbstractListPlugin implements Plugin { - + private static final Log log = LogFactory.getLog(AssistbalancePlugin.class); public static String ksNumberTop = "10006431"; //矿山总部组织编码 @Override @@ -35,141 +19,9 @@ public class AssistbalancePlugin extends AbstractListPlugin implements Plugin { super.itemClick(evt); String itemKey = evt.getItemKey(); if("zcgj_gatdata".equals(itemKey)) { - String[] selectorsArray = new String[]{"beginlocal", "endlocal", "yeardebitfor","yearcreditfor","debitlocal","creditlocal"}; - - QFilter filteraccountTable = new QFilter("number", QCP.equals, "0003"); - DynamicObject accountTableLoad = BusinessDataServiceHelper.loadSingle("bd_accounttable", "id", new QFilter[]{filteraccountTable}); - - QFilter number = new QFilter("fisaccounting", "=", "1"); - QFilter structure = new QFilter("structure.longnumber", QCP.like, "10000000!10006431%"); - QFilter isleaf = new QFilter("structure.isleaf", QCP.equals, true); - DynamicObject[] load = BusinessDataServiceHelper.load("bos_org", "id,structure.longnumber,structure.view", new QFilter[]{number, structure,isleaf}); - - DynamicObject[] accountConf = BusinessDataServiceHelper.load("zcgj_conf_balanceaccount", "zcgj_account", new QFilter[]{}); - Set accountNumber = new HashSet<>(); - for (DynamicObject dynamicObject : accountConf) { - accountNumber.add(dynamicObject.getDynamicObject("zcgj_account").getString("number")); - } - - List orgIds = new ArrayList<>(); - Map orgNumberMap = new HashMap<>(); - for (int i = 0; i < load.length; i++) { - DynamicObject dynamicObject = load[i]; - orgNumberMap.put(dynamicObject.getString("number"), dynamicObject); - orgIds.add(dynamicObject.getLong("id")); - } - - - //查询组织下对应的当前期间数据 - DynamicObject[] orgByCurperiod = BusinessDataServiceHelper.load("gl_accountbook", - "org,curperiod", - new QFilter[]{new QFilter("enable", QCP.equals, Boolean.TRUE). - and("status", QCP.equals, "C").and("org.id", QCP.in, orgIds)}); - /*Map orgByCurperiodMap = - Arrays.stream(orgByCurperiod).collect(Collectors.toMap( - i -> i.getLong("org.id"), - i -> i));*/ - Map orgByCurperiodMap = new HashMap<>(); - for (DynamicObject dynamicObject : orgByCurperiod) { - orgByCurperiodMap.put(dynamicObject.getLong("org.id"), dynamicObject); - } - - //清除数据 - DeleteServiceHelper.delete("zcgj_rpt_assistbalance",new QFilter[]{}); - for (String orgNumber : orgNumberMap.keySet()) { - BalanceQueryParamApi balanceQueryParamApi = new BalanceQueryParamApi(); - balanceQueryParamApi.setSelectors(Arrays.asList(selectorsArray)); - // balanceQueryParamApi.setOrgNumber("cw000102"); - balanceQueryParamApi.setOrgNumber(orgNumber); - balanceQueryParamApi.setBookTypeNumber("100002"); //账簿类型 - balanceQueryParamApi.setAccountTableNumber("0003");//科目表 - - DynamicObject orgObj = orgNumberMap.get(orgNumber); - DynamicObject periodObj = orgByCurperiodMap.get(orgObj.getLong("id")); - DynamicObject curperiod = null; - if(periodObj != null) { - curperiod = periodObj.getDynamicObject("curperiod"); - if( curperiod!= null) { - balanceQueryParamApi.setPeriodNumber(curperiod.getString("number")); // - }else{ - continue; - } - }else{ - continue; - } - - Map>> accountAssgrp = new HashMap<>(); - List> li = new ArrayList<>(); - Map map1 = new HashMap<>(); - map1.put("0001",""); - li.add(map1); - for (String accNum : accountNumber) { - accountAssgrp.put(accNum,li); - } - balanceQueryParamApi.setAccountAssgrp(accountAssgrp); - List groupBy = new ArrayList<>(); - groupBy.add("0001"); - groupBy.add("account"); - balanceQueryParamApi.setGroupBys(groupBy); - Gson gson = new Gson(); - String json = gson.toJson(balanceQueryParamApi); - Map params = gson.fromJson(json, - new TypeToken>(){}.getType()); - - OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); - - List addEntities = new ArrayList<>(); - if(balanceData.isStatus()){ - String data = (String) balanceData.getData(); - Type listType = new TypeToken>() {}.getType(); - List records = gson.fromJson(data, listType); - // 示例输出 - for (AccountRecord record : records) { - DynamicObject assistbalance - =BusinessDataServiceHelper.newDynamicObject("zcgj_rpt_assistbalance"); - assistbalance.set("zcgj_debitlocal", record.getDebitlocal()); - assistbalance.set("zcgj_creditlocal", record.getCreditlocal()); - assistbalance.set("zcgj_yeardebitfor", record.getYeardebitfor()); - assistbalance.set("zcgj_yearcreditfor", record.getYearcreditfor()); - assistbalance.set("zcgj_endlocal", record.getEndlocal()); - assistbalance.set("zcgj_org",orgNumberMap.get(orgNumber)); - assistbalance.set("zcgj_accounttable",accountTableLoad); - assistbalance.set("zcgj_account", record.getAccount()); - assistbalance.set("zcgj_period",curperiod); - - Map assgrp = record.getAssgrp(); - if (assgrp.containsKey("0001")) { - assistbalance.set("zcgj_customernumber",assgrp.get("0001").getNumber()); - assistbalance.set("zcgj_customername",assgrp.get("0001").getName()); - } - addEntities.add(assistbalance); - } - - } - - if (!addEntities.isEmpty()) { - try { - SaveServiceHelper.save(addEntities.toArray(new DynamicObject[0])); - } catch (Exception ex) { - throw new RuntimeException(ex); - } - } - } - - //balanceQueryParam.setAccountAssgrp(); + //科目余额表自动取数 + AssistbalanceAutoData.getData(); } } - - public Set getKsOrg(){ - QFilter filterOrgId = new QFilter("number", QCP.equals,ksNumberTop);//中材矿山建设有限公司 - DynamicObject adminOrg = BusinessDataServiceHelper.loadSingle("bos_org", "number,name,fullname", new QFilter[]{filterOrgId}); - long orgId = adminOrg.getLong("id"); - List orgIds = new ArrayList<>(1); - //orgIds.add(1692204547985902592L); - orgIds.add(orgId); - List subOrgIds = OrgUnitServiceHelper.getAllSubordinateOrgs(1L, orgIds, true); - return subOrgIds.stream().collect(Collectors.toSet()); - } - } diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/task/AssistbalanceTask.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/task/AssistbalanceTask.java new file mode 100644 index 0000000..5d3a3f9 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/task/AssistbalanceTask.java @@ -0,0 +1,27 @@ +package zcgj.zcdev.zcdev.fs.plugin.task; + +import kd.bos.context.RequestContext; +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.schedule.executor.AbstractTask; +import kd.bos.servicehelper.operation.OperationServiceHelper; +import zcgj.zcdev.zcdev.fs.plugin.common.AssistbalanceAutoData; + +import java.util.Map; + +/** + * 科目余额取数表自动取数 + */ +public class AssistbalanceTask extends AbstractTask { + + private static final Log log = LogFactory.getLog(AssistbalanceTask.class); + + @Override + public void execute(RequestContext requestContext, Map map) throws KDException { + log.info("AssistbalanceTask,进入到后台任务中-开始"); + AssistbalanceAutoData.getData(); + log.info("AssistbalanceTask,进入到后台任务中-结束"); + } +}