科目接口优化创建组织对象

This commit is contained in:
yuxueliang0813 2025-05-22 16:05:33 +08:00
parent 9ab9643fe2
commit 722c92918c
1 changed files with 17 additions and 15 deletions

View File

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