diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java index 657149f..0469795 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java @@ -42,8 +42,10 @@ public class AspAccountControler { private static final Log log = LogFactory.getLog(AspAccountControler.class); private static final String apimenthod = "/account_sync"; - private static final Map mapObject = new HashMap<>();//公司对象集合 - private static final Map hsxmMaps = new HashMap<>();//核算维度对象集合 + private Map mapObject = new HashMap<>();//公司对象集合 + private Map hsxmMaps = new HashMap<>();//核算维度对象集合 + private DynamicObject grouporginfo = EsbUtils.getGroupOrg();//获取默认科目表 + DynamicObject tableinfo = EsbUtils.getTable();//获取默认科目表 // private static final String insertSql = "insert into T_BD_Account_U (fdataid,fuseorgid) values (?,?);"; @@ -90,7 +92,7 @@ public class AspAccountControler { OperationResult operResult; Map acctids = new HashMap<>();//科目编号和ID对应关系 Map accountMaps = new HashMap<>();//将科目编号与对象关联 - DynamicObject tableinfo = EsbUtils.getTable(); + //先根据基础信息在集团层面生成科目,不考虑核算维度,使用逐级分配 //再根据公司信息进行科目分配 //最后处理每个公司下科目的核算维度和禁用状态 @@ -145,7 +147,7 @@ public class AspAccountControler { acctInfo.set("number", number); acctInfo.set("name", name); //处理父级科目 - parentAcctInfo = getParentAcct(number,name,acctType,acctTypeInfo,tableinfo); + parentAcctInfo = getParentAcct(number,name,acctType,acctTypeInfo); if(parentAcctInfo == null){ itemInfo = new JSONObject(); itemInfo.put("code",number); @@ -157,8 +159,8 @@ public class AspAccountControler { 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 @@ -208,7 +210,7 @@ public class AspAccountControler { JSONArray companysJson = json_obj.getJSONArray("companys"); //处理科目在每个公司生成 - Map companyAcctMaps = handleAccountCompany(accountMaps,companysJson,tableinfo); + Map companyAcctMaps = handleAccountCompany(accountMaps,companysJson); //处理科目分配和反分配 EsbUtils.handleAssignNew(companysJson, acctids, entityName); EsbUtils.handleUnAssignNew(companysJson, acctids, entityName); @@ -305,7 +307,7 @@ public class AspAccountControler { } } - private Map handleAccountCompany(Map accountMaps,JSONArray companysJson,DynamicObject tableinfo){ + private Map handleAccountCompany(Map accountMaps,JSONArray companysJson){ Map baseMaps = new HashMap<>(); if(companysJson == null){ return baseMaps; @@ -336,7 +338,7 @@ public class AspAccountControler { continue; } //复制对象,修改其中的某些属性,比如id和组织id,新增币别相关属性 - newAcctInfo = copydo(oldAcctInfo,hsorgInfo,json_body,tableinfo); + newAcctInfo = copydo(oldAcctInfo,hsorgInfo,json_body); }else{ //修改币别相关属性 newAcctInfo.set("acctcurrency", json_body.getString("acctcurrency")); @@ -360,15 +362,15 @@ public class AspAccountControler { return baseMaps; } - private DynamicObject copydo(DynamicObject olddo, DynamicObject hsorgInfo, JSONObject json_body,DynamicObject tableinfo){ + private DynamicObject copydo(DynamicObject olddo, DynamicObject hsorgInfo, JSONObject json_body){ DynamicObject newAcctInfo = BusinessDataServiceHelper.newDynamicObject(entityName); 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")); newAcctInfo.set("fullname", olddo.getString("fullname")); - newAcctInfo.set("createorg", hsorgInfo.getLong("id"));//创建组织 - newAcctInfo.set("org", hsorgInfo.getLong("id"));//管理组织 + newAcctInfo.set("createorg", hsorgInfo);//创建组织 + newAcctInfo.set("org", hsorgInfo);//管理组织 //科目类型 newAcctInfo.set("accounttype", olddo.getDynamicObject("accounttype")); //币别核算--外币核算类型 @@ -449,7 +451,7 @@ public class AspAccountControler { return baseMaps; } - private DynamicObject getParentAcct(String number,String name,String acctType,DynamicObject acctTypeInfo,DynamicObject tableinfo){ + private DynamicObject getParentAcct(String number,String name,String acctType,DynamicObject acctTypeInfo){ //sap科目编号为10位,且没有层级关系,金蝶按照4-6分两级自行处理 String parentnumber = number.substring(0,4); DynamicObject acctInfo = BusinessDataServiceHelper.loadSingleFromCache(entityName, @@ -469,8 +471,8 @@ public class AspAccountControler { 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