diff --git a/main/java/shjh/jhzj7/fi/fi/utils/EsbUtils.java b/main/java/shjh/jhzj7/fi/fi/utils/EsbUtils.java index 0886d2f..e16d44c 100644 --- a/main/java/shjh/jhzj7/fi/fi/utils/EsbUtils.java +++ b/main/java/shjh/jhzj7/fi/fi/utils/EsbUtils.java @@ -24,6 +24,7 @@ public class EsbUtils { public static final Long CUSTOMERSTAND = 712984405228187648L;//客户分类标准 // public static final Long CUSTOMERSTATUS = 1122390034075371520L;//客户状态 默认合格 + private static final String acctTableName = "bd_accounttable";//科目表 public static final Long ACCTABLE = 2184297498435138560L;//科目表 财务库 T_BD_Accounttable private static final String orgName = "bos_org";//系统库 表名 t_org_org @@ -47,6 +48,11 @@ public class EsbUtils { return null; } + public static DynamicObject getTable(){ + //获取科目表对象 + return BusinessDataServiceHelper.loadSingleFromCache(ACCTABLE,acctTableName); + } + public static DynamicObject getGroupOrg(){ //获取集团组织对象 return BusinessDataServiceHelper.loadSingleFromCache(JhzjUtils.GROUPID,orgName); diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java index 3bf9e83..657149f 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java @@ -90,6 +90,7 @@ public class AspAccountControler { OperationResult operResult; Map acctids = new HashMap<>();//科目编号和ID对应关系 Map accountMaps = new HashMap<>();//将科目编号与对象关联 + DynamicObject tableinfo = EsbUtils.getTable(); //先根据基础信息在集团层面生成科目,不考虑核算维度,使用逐级分配 //再根据公司信息进行科目分配 //最后处理每个公司下科目的核算维度和禁用状态 @@ -140,11 +141,11 @@ public class AspAccountControler { } //不存在,做新增 根据实体名称创建动态对象 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); //处理父级科目 - parentAcctInfo = getParentAcct(number,name,acctType,acctTypeInfo); + parentAcctInfo = getParentAcct(number,name,acctType,acctTypeInfo,tableinfo); if(parentAcctInfo == null){ itemInfo = new JSONObject(); itemInfo.put("code",number); @@ -207,7 +208,7 @@ public class AspAccountControler { JSONArray companysJson = json_obj.getJSONArray("companys"); //处理科目在每个公司生成 - Map companyAcctMaps = handleAccountCompany(accountMaps,companysJson); + Map companyAcctMaps = handleAccountCompany(accountMaps,companysJson,tableinfo); //处理科目分配和反分配 EsbUtils.handleAssignNew(companysJson, acctids, entityName); EsbUtils.handleUnAssignNew(companysJson, acctids, entityName); @@ -304,7 +305,7 @@ public class AspAccountControler { } } - private Map handleAccountCompany(Map accountMaps,JSONArray companysJson){ + private Map handleAccountCompany(Map accountMaps,JSONArray companysJson,DynamicObject tableinfo){ Map baseMaps = new HashMap<>(); if(companysJson == null){ return baseMaps; @@ -335,7 +336,7 @@ public class AspAccountControler { continue; } //复制对象,修改其中的某些属性,比如id和组织id,新增币别相关属性 - newAcctInfo = copydo(oldAcctInfo,hsorgInfo,json_body); + newAcctInfo = copydo(oldAcctInfo,hsorgInfo,json_body,tableinfo); }else{ //修改币别相关属性 newAcctInfo.set("acctcurrency", json_body.getString("acctcurrency")); @@ -359,9 +360,9 @@ public class AspAccountControler { return baseMaps; } - private DynamicObject copydo(DynamicObject olddo, DynamicObject hsorgInfo, JSONObject json_body){ + private DynamicObject copydo(DynamicObject olddo, DynamicObject hsorgInfo, JSONObject json_body,DynamicObject tableinfo){ 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")); @@ -448,7 +449,7 @@ public class AspAccountControler { return baseMaps; } - private DynamicObject getParentAcct(String number,String name,String acctType,DynamicObject acctTypeInfo){ + private DynamicObject getParentAcct(String number,String name,String acctType,DynamicObject acctTypeInfo,DynamicObject tableinfo){ //sap科目编号为10位,且没有层级关系,金蝶按照4-6分两级自行处理 String parentnumber = number.substring(0,4); DynamicObject acctInfo = BusinessDataServiceHelper.loadSingleFromCache(entityName, @@ -462,7 +463,7 @@ public class AspAccountControler { parentname = name.substring(0, name.indexOf("-")); } 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);