diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/common/SubjectbalanceAutoData.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/common/SubjectbalanceAutoData.java new file mode 100644 index 0000000..5a00e30 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/common/SubjectbalanceAutoData.java @@ -0,0 +1,185 @@ +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.dataentity.entity.DynamicObjectCollection; +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 SubjectbalanceAutoData { + + 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}); + 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[] costcompany = BusinessDataServiceHelper.load("zcgj_minecompany", "zcgj_costcompany", new QFilter[]{}); + if(costcompany != null){ + List ids = new ArrayList<>(); + for (DynamicObject dynamicObject : costcompany) { + DynamicObject minecompany = dynamicObject.getDynamicObject("zcgj_costcompany"); + long id = minecompany.getLong("id"); + ids.add(id); + } + QFilter idFilter = new QFilter("id", QCP.in, ids); + DynamicObject[] org = BusinessDataServiceHelper.load("bos_org", "id,structure.longnumber,structure.view", new QFilter[]{idFilter}); + for (DynamicObject dynamicObject : org) { + orgNumberMap.put(dynamicObject.getString("number"), dynamicObject); + orgIds.add(dynamicObject.getLong("id")); + } + } + + //查询科目余额配置表 + DynamicObject[] accountConf = BusinessDataServiceHelper.load("zcgj_conf_balanceaccoungx", "zcgj_entryentity.zcgj_account", new QFilter[]{}); + Set accountNumber = new HashSet<>(); + for (DynamicObject dynamicObject : accountConf) { + DynamicObjectCollection zcgjEntryentity = dynamicObject.getDynamicObjectCollection("zcgj_entryentity"); + for (DynamicObject object : zcgjEntryentity) { + accountNumber.add(object.getDynamicObject("zcgj_account").getString("number")); + } + } + + + //查询组织下对应的当前期间数据 + 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 = new HashMap<>(); + for (DynamicObject dynamicObject : orgByCurperiod) { + orgByCurperiodMap.put(dynamicObject.getLong("org.id"), dynamicObject); + } + + //获取核算组织的项目 + /*Map projectMap = new HashMap<>(); + //ec_project + DynamicObject[] projects = BusinessDataServiceHelper.load("ec_project", + "fiaccountorg,zcgj_pm", + new QFilter[]{new QFilter("billstatus", QCP.equals, "C"). + and("fiaccountorg", QCP.in, orgIds)}); + for (DynamicObject project : projects) { + DynamicObject fiaccountorg = project.getDynamicObject("fiaccountorg"); + DynamicObject pm = project.getDynamicObject("zcgj_pm"); + if(fiaccountorg!=null){ + projectMap.put(fiaccountorg.getString("number"), pm); + } + }*/ + + + //清除数据 + //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_assistbalangx 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("0032",""); + li.add(map1); + for (String accNum : accountNumber) { + accountAssgrp.put(accNum,li); + } + balanceQueryParamApi.setAccountAssgrp(accountAssgrp); + List groupBy = new ArrayList<>(); + groupBy.add("0032"); + 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_assistbalancegx"); + assistbalance.set("zcgj_debitlocal", record.getDebitlocal()); + assistbalance.set("zcgj_beginlocal", record.getBeginlocal()); + 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); + //assistbalance.set("zcgj_pm",projectMap.get(orgNumber)); + Map assgrp = record.getAssgrp(); + if (assgrp.containsKey("0032")) { + assistbalance.set("zcgj_processnumber",assgrp.get("0032").getNumber()); + assistbalance.set("zcgj_processname",assgrp.get("0032").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/SubjectbalancePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/SubjectbalancePlugin.java new file mode 100644 index 0000000..bfa3339 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/SubjectbalancePlugin.java @@ -0,0 +1,27 @@ +package zcgj.zcdev.zcdev.fs.plugin.form; + +import kd.bos.form.control.events.ItemClickEvent; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.sdk.plugin.Plugin; +import zcgj.zcdev.zcdev.fs.plugin.common.SubjectbalanceAutoData; + +/** + * 核算维度余额取数表(矿山二开) + */ +public class SubjectbalancePlugin extends AbstractListPlugin implements Plugin { + private static final Log log = LogFactory.getLog(SubjectbalancePlugin.class); + + public static String ksNumberTop = "10006431"; //矿山总部组织编码 + @Override + public void itemClick(ItemClickEvent evt) { + super.itemClick(evt); + String itemKey = evt.getItemKey(); + if("zcgj_gatdata".equals(itemKey)) { + //科目余额表自动取数 + SubjectbalanceAutoData.getData(); + } + } + +} 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 index 5d3a3f9..a20ad0b 100644 --- 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 @@ -8,6 +8,7 @@ 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 zcgj.zcdev.zcdev.fs.plugin.common.SubjectbalanceAutoData; import java.util.Map; @@ -23,5 +24,9 @@ public class AssistbalanceTask extends AbstractTask { log.info("AssistbalanceTask,进入到后台任务中-开始"); AssistbalanceAutoData.getData(); log.info("AssistbalanceTask,进入到后台任务中-结束"); + + log.info("SubjectbalanceTask,进入到后台任务中-开始"); + // SubjectbalanceAutoData.getData(); + log.info("SubjectbalanceTask,进入到后台任务中-结束"); } }