From 3240be77a1a877880eb4881ec5b8e5f9e457c9a6 Mon Sep 17 00:00:00 2001 From: yuxueliang0813 <407010292@qq.com> Date: Fri, 30 May 2025 17:36:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=91=E7=9B=AE=E6=8E=A5=E5=8F=A3=E4=BC=98?= =?UTF-8?q?=E5=8C=962?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fi/plugin/form/InitAccountFormPlugin.java | 71 ++++++++++++------- .../fi/fi/webapi/AspAccountControler.java | 6 +- 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/InitAccountFormPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/InitAccountFormPlugin.java index 43ae8f5..ba9c2bc 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/InitAccountFormPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/InitAccountFormPlugin.java @@ -9,6 +9,8 @@ import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; +import kd.bos.db.DB; +import kd.bos.db.DBRoute; import kd.bos.entity.datamodel.events.BeforeImportEntryEventArgs; import kd.bos.form.control.Control; import kd.bos.form.plugin.AbstractFormPlugin; @@ -19,6 +21,7 @@ import kd.bos.logging.LogFactory; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; import shjh.jhzj7.fi.fi.utils.EsbUtils; import shjh.jhzj7.fi.fi.utils.JhzjUtils; @@ -38,14 +41,17 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { private static final String bbName = "bd_currency";//币别 private static final Map mapObject = new HashMap<>();//公司对象集合 private static final Map hsxmMaps = new HashMap<>();//核算维度对象集合 -// private static final String insertSql = "insert into T_BD_Account_U (fdataid,fuseorgid) values (?,?);"; + private static final String insertSql = "insert into T_BD_Account_U (fdataid,fuseorgid) values (?,?);"; //处理科目在每个公司生成 Map companyAcctMaps = null; Map acctids = new HashMap<>();//科目编号和ID对应关系 Map accountMaps = new HashMap<>();//将科目编号与对象关联 Map parentMaps = new HashMap<>();//将父级科目编号与对象关联 - private DynamicObject handleParentAcct(String number,String name,String acctType,DynamicObject acctTypeInfo){ + private DynamicObject grouporginfo = EsbUtils.getGroupOrg();//获取默认科目表 + DynamicObject tableinfo = EsbUtils.getTable();//获取默认科目表 + + private DynamicObject getParentAcct(String number,String name,String acctType,DynamicObject acctTypeInfo){ String parentnumber = number.substring(0, 4); if(parentMaps.get(parentnumber) == null){ //处理父级科目名称 @@ -54,14 +60,14 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { parentname = name.substring(0, name.indexOf("-")); } DynamicObject acctInfo = BusinessDataServiceHelper.newDynamicObject(entityName); - acctInfo.set("accounttable", EsbUtils.ACCTABLE);//科目表fid,上正式时,注意此ID + acctInfo.set("accounttable", tableinfo);//科目表fid,上正式时,注意此ID acctInfo.set("number", parentnumber); acctInfo.set("name", parentname); acctInfo.set("longnumber", parentnumber); acctInfo.set("fullname", parentname); //创建组织 - acctInfo.set("createorg", JhzjUtils.GROUPID);//创建组织 - acctInfo.set("org", JhzjUtils.GROUPID);//管理组织 + acctInfo.set("createorg", grouporginfo);//创建组织 + acctInfo.set("org", grouporginfo);//管理组织 //科目类型 acctInfo.set("accounttype", acctTypeInfo); //币别核算--外币核算类型--集团科目新增时默认为allcurrency @@ -73,7 +79,7 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { acctInfo.set("dc", 1);//余额方向 默认为借 acctInfo.set("level", 1);//级次 默认为1 acctInfo.set("isleaf", false);//明细科目 默认为否 - acctInfo.set("startdate", TypeUtils.castToDate("2024-01-01"));//版本化日期 + acctInfo.set("startdate", TypeUtils.castToDate("1900-01-01"));//版本化日期 acctInfo.set("enddate", TypeUtils.castToDate("2999-12-31"));//失效日期 acctInfo.set("accrualdirection", "nocontrol");//科目录入方向控制 不控制nocontrol 借方debit 贷方credit acctInfo.set("orgcontrollevel", 1);//控制级次 默认为1 @@ -85,7 +91,7 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { acctInfo.set("isjournal", false);//登日记账 现金等价物时需要勾选 //处理现金 银行科目 登日记账 handleAcctProperty(parentnumber,acctInfo); - acctInfo.set("enable", 1);//是否启用 + acctInfo.set("enable", true);//是否启用 acctInfo.set("status", "C");//单据状态 A保存 B已提交 C已审核 acctInfo.set("creator", RequestContext.get().getCurrUserId());//创建人 //手动指定科目的金蝶id @@ -144,21 +150,21 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { continue; } //根据当前编号和名称处理父级科目 - parentAcctInfo = handleParentAcct(number,name,acctType,acctTypeInfo); + parentAcctInfo = getParentAcct(number,name,acctType,acctTypeInfo); // if(name.contains("-")){ // name = name.substring(name.indexOf("-")+1); // } //不存在,做新增 根据实体名称创建动态对象 acctInfo = BusinessDataServiceHelper.newDynamicObject(entityName); - acctInfo.set("accounttable", EsbUtils.ACCTABLE);//科目表fid,上正式时,注意此ID + acctInfo.set("accounttable", tableinfo);//科目表fid,上正式时,注意此ID acctInfo.set("number", number); acctInfo.set("name", name); - acctInfo.set("longnumber", number); - acctInfo.set("fullname", name); +// acctInfo.set("longnumber", number); +// acctInfo.set("fullname", name); acctInfo.set("parent", parentAcctInfo); //创建组织 - acctInfo.set("createorg", JhzjUtils.GROUPID);//创建组织 - acctInfo.set("org", JhzjUtils.GROUPID);//管理组织 + acctInfo.set("createorg", grouporginfo);//创建组织 + acctInfo.set("org", grouporginfo);//管理组织 //科目类型 acctInfo.set("accounttype", acctTypeInfo); //币别核算--外币核算类型--集团科目新增时默认为allcurrency @@ -170,10 +176,10 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { acctInfo.set("dc", 1);//余额方向 默认为借 acctInfo.set("level", 2);//级次 默认为2 acctInfo.set("isleaf", true);//明细科目 默认为是 - acctInfo.set("startdate", TypeUtils.castToDate("2024-01-01"));//版本化日期 + acctInfo.set("startdate", TypeUtils.castToDate("1900-01-01"));//版本化日期 acctInfo.set("enddate", TypeUtils.castToDate("2999-12-31"));//失效日期 acctInfo.set("accrualdirection", "nocontrol");//科目录入方向控制 不控制nocontrol 借方debit 贷方credit - acctInfo.set("orgcontrollevel", 1);//控制级次 默认为1 + acctInfo.set("orgcontrollevel", 2);//控制级次 默认为2 acctInfo.set("isallowca", false);//允许公司增加下级科目 由接口同步 为false时控制级次可以不设置 acctInfo.set("ismanual", true);//手工录入 由接口同步 acctInfo.set("iscash", false);//现金科目 默认false sap不区分 @@ -182,7 +188,7 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { acctInfo.set("isjournal", false);//登日记账 现金等价物时需要勾选 //处理现金 银行科目 登日记账 handleAcctProperty(number,acctInfo); - acctInfo.set("enable", 1);//是否启用 + acctInfo.set("enable", true);//是否启用 acctInfo.set("status", "C");//单据状态 A保存 B已提交 C已审核 acctInfo.set("creator", RequestContext.get().getCurrUserId());//创建人 //手动指定科目的金蝶id @@ -221,10 +227,11 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { rowdata = importData.getData();//具体的某行数据,key值为列名 companysJson.add(rowdata); } + //处理科目分配-分配好了后再创建子公司下的科目 + EsbUtils.handleAssignInit(companysJson, acctids, entityName); + //处理科目在每个公司生成 companyAcctMaps = handleAccountCompany(accountMaps,companysJson); - //处理科目分配 - EsbUtils.handleAssignInit(companysJson, acctids, entityName); } //处理每个公司下科目的核算维度和禁用状态 list = (ArrayList) itemEntry.get("shjh_hswds");//excel表格的某个页签-科目核算维度信息 @@ -300,8 +307,8 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { } acctInfo.set("isassist", true);//主表的isassist是否包含核算项目为是 //必须调用保存操作,否则不符合受控基础资料开发规范 -// SaveServiceHelper.save(new DynamicObject[]{acctInfo}); - OperationServiceHelper.executeOperate("save", entityName, new DynamicObject[]{acctInfo}, oop); + SaveServiceHelper.save(new DynamicObject[]{acctInfo}); +// OperationServiceHelper.executeOperate("save", entityName, new DynamicObject[]{acctInfo}, oop); companyAcctMaps.put(number+companynum,acctInfo); } } @@ -441,7 +448,7 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { private DynamicObject copydo(DynamicObject olddo, DynamicObject hsorgInfo, JSONObject json_body){ DynamicObject newAcctInfo = BusinessDataServiceHelper.newDynamicObject(entityName); - newAcctInfo.set("accounttable", EsbUtils.ACCTABLE);//TODO 科目表fid,上正式时,注意此ID + newAcctInfo.set("accounttable", tableinfo);//TODO 科目表fid,上正式时,注意此ID newAcctInfo.set("number", olddo.getString("number")); newAcctInfo.set("name", olddo.getString("name")); newAcctInfo.set("longnumber", olddo.getString("longnumber")); @@ -468,6 +475,18 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { } } } + if(olddo.getString("number").startsWith("2211")){ + //2211开头的科目统一在科目接口上设置税基和税码的核算维度 + DynamicObjectCollection dochswd = newAcctInfo.getDynamicObjectCollection("checkitementry"); + DynamicObject itementryInfo = dochswd.addNew(); + itementryInfo.set("asstactitem",getHsxmInfo("税基")); + itementryInfo.set("isdetail", true);//明细 + itementryInfo.set("isrequire", false);//必录 + DynamicObject itementryInfo1 = dochswd.addNew(); + itementryInfo1.set("asstactitem",getHsxmInfo("税码")); + itementryInfo1.set("isdetail", true);//明细 + itementryInfo1.set("isrequire", false);//必录 + } //损益类型 newAcctInfo.set("pltype", olddo.getString("pltype")); newAcctInfo.set("parent", olddo.getDynamicObject("parent")); @@ -476,10 +495,10 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { newAcctInfo.set("dc", 1);//余额方向 默认为借 newAcctInfo.set("level", olddo.getInt("level"));//级次 根据源科目来设置 newAcctInfo.set("isleaf", true);//明细科目 默认为是 - newAcctInfo.set("startdate", TypeUtils.castToDate("2024-01-01"));//版本化日期 + newAcctInfo.set("startdate", TypeUtils.castToDate("1900-01-01"));//版本化日期 newAcctInfo.set("enddate", TypeUtils.castToDate("2999-12-31"));//失效日期 newAcctInfo.set("accrualdirection", "nocontrol");//科目录入方向控制 不控制nocontrol 借方debit 贷方credit - newAcctInfo.set("orgcontrollevel", 1);//控制级次 默认为1 + newAcctInfo.set("orgcontrollevel", olddo.getInt("orgcontrollevel"));//控制级次 默认为1 newAcctInfo.set("isallowca", false);//允许公司增加下级科目 由接口同步 为false时控制级次可以不设置 newAcctInfo.set("ismanual", true);//手工录入 由接口同步 newAcctInfo.set("iscash", olddo.getBoolean("iscash"));//现金科目 默认false sap不区分 @@ -493,10 +512,10 @@ public class InitAccountFormPlugin extends AbstractFormPlugin { newAcctInfo.set("id", ID.genLongId()); newAcctInfo.set("masterid", olddo.getLong("id"));//主数据内码,系统不会根据id自动生成,需要手动设置 //必须调用保存操作,否则不符合受控基础资料开发规范 -// SaveServiceHelper.save(new DynamicObject[]{acctInfo}); - OperationServiceHelper.executeOperate("save", entityName, new DynamicObject[]{newAcctInfo}, OperateOption.create()); + SaveServiceHelper.save(new DynamicObject[]{newAcctInfo}); +// OperationServiceHelper.executeOperate("save", entityName, new DynamicObject[]{newAcctInfo}, OperateOption.create()); //处理科目使用范围 -// DB.update(DBRoute.of("fi"), insertSql, new Object[]{newAcctInfo.getLong("id"),hsorgInfo.getLong("id")}); + DB.update(DBRoute.of("fi"), insertSql, new Object[]{newAcctInfo.getLong("id"),hsorgInfo.getLong("id")}); return newAcctInfo; } diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java index 293d8a8..daf35f8 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java @@ -177,7 +177,7 @@ public class AspAccountControler { acctInfo.set("dc", 1);//余额方向 默认为借 acctInfo.set("level", 2);//级次 默认为2 acctInfo.set("isleaf", true);//明细科目 默认为是 - acctInfo.set("startdate", TypeUtils.castToDate("2024-01-01"));//版本化日期 + acctInfo.set("startdate", TypeUtils.castToDate("1900-01-01"));//版本化日期 acctInfo.set("enddate", TypeUtils.castToDate("2999-12-31"));//失效日期 acctInfo.set("accrualdirection", "nocontrol");//科目录入方向控制 不控制nocontrol 借方debit 贷方credit acctInfo.set("orgcontrollevel", 2);//控制级次 默认为2 @@ -417,7 +417,7 @@ public class AspAccountControler { newAcctInfo.set("dc", 1);//余额方向 默认为借 newAcctInfo.set("level", olddo.getInt("level"));//级次 根据源科目来设置 newAcctInfo.set("isleaf", true);//明细科目 默认为是 - newAcctInfo.set("startdate", TypeUtils.castToDate("2024-01-01"));//版本化日期 + newAcctInfo.set("startdate", TypeUtils.castToDate("1900-01-01"));//版本化日期 newAcctInfo.set("enddate", TypeUtils.castToDate("2999-12-31"));//失效日期 newAcctInfo.set("accrualdirection", "nocontrol");//科目录入方向控制 不控制nocontrol 借方debit 贷方credit newAcctInfo.set("orgcontrollevel", olddo.getInt("orgcontrollevel"));//控制级次 根据源科目来设置 @@ -503,7 +503,7 @@ public class AspAccountControler { acctInfo.set("dc", 1);//余额方向 默认为借 acctInfo.set("level", 1);//级次 默认为1 acctInfo.set("isleaf", false);//明细科目 默认为否 - acctInfo.set("startdate", TypeUtils.castToDate("2024-01-01"));//版本化日期 + acctInfo.set("startdate", TypeUtils.castToDate("1900-01-01"));//版本化日期 acctInfo.set("enddate", TypeUtils.castToDate("2999-12-31"));//失效日期 acctInfo.set("accrualdirection", "nocontrol");//科目录入方向控制 不控制nocontrol 借方debit 贷方credit acctInfo.set("orgcontrollevel", 1);//控制级次 默认为1