科目接口优化2
This commit is contained in:
		
							parent
							
								
									5c78dd468a
								
							
						
					
					
						commit
						3240be77a1
					
				|  | @ -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<String, DynamicObject> mapObject = new HashMap<>();//公司对象集合 | ||||
|     private static final Map<String, DynamicObject> 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<String, DynamicObject> companyAcctMaps = null; | ||||
|     Map<String, Long> acctids = new HashMap<>();//科目编号和ID对应关系 | ||||
|     Map<String, DynamicObject> accountMaps = new HashMap<>();//将科目编号与对象关联 | ||||
|     Map<String, DynamicObject> 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; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue