0210测试提交
This commit is contained in:
parent
c4f594a16f
commit
7524f090de
|
|
@ -26,8 +26,7 @@ public class JHSSOAuthHandler implements ThirdSSOAuthHandler {
|
||||||
//backUrl 系统已构建好回调地址,二开无需处理
|
//backUrl 系统已构建好回调地址,二开无需处理
|
||||||
//实现用户没有登录的时候跳转认证中心的登录地址
|
//实现用户没有登录的时候跳转认证中心的登录地址
|
||||||
//第一步:认证中心的登录地址(注意拼接参数和回调地址转义),注意正式地址切换
|
//第一步:认证中心的登录地址(注意拼接参数和回调地址转义),注意正式地址切换
|
||||||
System.getProperty("domain.contextUrl");
|
// backUrl = "http://172.20.42.104:8881/iserp/auth/callbackTrdSSO.do?tenantNo=jahwa-uatenv&sandboxNo=2102993326188790784";
|
||||||
// backUrl = "http://172.20.42.104:8881/ierp/auth/callbackTrdSSO.do?tenantNo=jahwa-uatenv&sandboxNo=2102993326188790784";
|
|
||||||
callBackUrl = backUrl;
|
callBackUrl = backUrl;
|
||||||
StringBuffer ssoURL = new StringBuffer();
|
StringBuffer ssoURL = new StringBuffer();
|
||||||
ssoURL.append(ssologinUrl);
|
ssoURL.append(ssologinUrl);
|
||||||
|
|
@ -57,7 +56,7 @@ public class JHSSOAuthHandler implements ThirdSSOAuthHandler {
|
||||||
result.setSucess(false);
|
result.setSucess(false);
|
||||||
//将用户的认证凭据传输到认证系统进行认证,从而实现对认证凭据进行识别和获取用户信息,request包含请求的认证凭据
|
//将用户的认证凭据传输到认证系统进行认证,从而实现对认证凭据进行识别和获取用户信息,request包含请求的认证凭据
|
||||||
String numOrName = getWorkerNumberOrUseName(hsrequest);//此逻辑需二开实现
|
String numOrName = getWorkerNumberOrUseName(hsrequest);//此逻辑需二开实现
|
||||||
if(numOrName != null){
|
if(StringUtils.isNotEmpty(numOrName)){
|
||||||
//当前返回类型手机,用户名,邮箱、工号
|
//当前返回类型手机,用户名,邮箱、工号
|
||||||
// result.setUserType(UserProperType.WorkerNumber);
|
// result.setUserType(UserProperType.WorkerNumber);
|
||||||
result.setUserType(UserProperType.UserName);
|
result.setUserType(UserProperType.UserName);
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ public class TestSupplierListPlugin extends AbstractListPlugin {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lqs.add(new QFilter("createorg.id","=",2116753963226241024l));
|
lqs.add(new QFilter("createorg.id","=",2116762463713107968l));
|
||||||
lqs.size();
|
lqs.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@ import shjh.jhzj7.fi.fi.webapi.model.AccountModel;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@ApiController(value = "AspAccountControler",desc = "会计科目接口,自定义插件")
|
@ApiController(value = "AspAccountControler",desc = "会计科目接口,自定义插件")
|
||||||
public class AspAccountControler {
|
public class AspAccountControler {
|
||||||
|
|
@ -35,9 +37,13 @@ public class AspAccountControler {
|
||||||
private static final String acctTypeName = "bd_accounttype";//科目类型
|
private static final String acctTypeName = "bd_accounttype";//科目类型
|
||||||
private static final String hswdName = "bd_asstacttype";//系统库 核算维度 表名t_bas_flex_property
|
private static final String hswdName = "bd_asstacttype";//系统库 核算维度 表名t_bas_flex_property
|
||||||
private static final String orgName = "bos_org";//业务单元
|
private static final String orgName = "bos_org";//业务单元
|
||||||
|
private static final String bbName = "bd_currency";//币别
|
||||||
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 static final Map<String, DynamicObject> hsxmMaps = new HashMap<>();//核算维度对象集合
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param bizParam 入参json格式数据
|
* @param bizParam 入参json格式数据
|
||||||
* @return 自定义返回值
|
* @return 自定义返回值
|
||||||
|
|
@ -57,14 +63,15 @@ public class AspAccountControler {
|
||||||
}
|
}
|
||||||
JSONArray itemsJson = new JSONArray();//返回值明细集合
|
JSONArray itemsJson = new JSONArray();//返回值明细集合
|
||||||
JSONObject itemInfo;//返回值明细对象
|
JSONObject itemInfo;//返回值明细对象
|
||||||
JSONArray detailsJson = json_obj.getJSONArray("items");
|
//根据科目基本信息得到科目编号和JSONObject
|
||||||
|
Map<String, JSONObject> baseMaps = getBaseMap(json_obj.getJSONArray("items"));
|
||||||
|
JSONArray companysJson = json_obj.getJSONArray("companys");
|
||||||
String number;//科目编号
|
String number;//科目编号
|
||||||
String name;//科目名称
|
String name;//科目名称
|
||||||
// String isleaf;//是否叶子节点
|
// String isleaf;//是否叶子节点
|
||||||
// String level;//层级
|
// String level;//层级
|
||||||
// String yefx;//余额方向 借1 贷-1
|
// String yefx;//余额方向 借1 贷-1
|
||||||
// String acctsx;//科目金额类属性 现金、银行、现金等价物
|
// String acctsx;//科目金额类属性 现金、银行、现金等价物
|
||||||
String hswd;//核算维度 基础资料
|
|
||||||
String bbhs;//币别核算 不核算外币 核算所有外币 指定核算币别(需要指定币别ISO)
|
String bbhs;//币别核算 不核算外币 核算所有外币 指定核算币别(需要指定币别ISO)
|
||||||
String acctType;//科目类型 资产负债类 损益类
|
String acctType;//科目类型 资产负债类 损益类
|
||||||
String descurrencynum;//指定币别编号
|
String descurrencynum;//指定币别编号
|
||||||
|
|
@ -72,19 +79,27 @@ public class AspAccountControler {
|
||||||
DynamicObject acctInfo;
|
DynamicObject acctInfo;
|
||||||
DynamicObject acctTypeInfo;
|
DynamicObject acctTypeInfo;
|
||||||
DynamicObject parentAcctInfo;
|
DynamicObject parentAcctInfo;
|
||||||
DynamicObject hswdInfo;
|
JSONObject company_body;
|
||||||
DynamicObject checkitementryInfo;
|
|
||||||
JSONObject json_body;
|
JSONObject json_body;
|
||||||
|
String companynum;
|
||||||
|
DynamicObjectCollection docbb;
|
||||||
|
DynamicObject bbInfo;
|
||||||
|
String bbiso;
|
||||||
|
Map<String, DynamicObject> accountMaps = new HashMap<>();//将科目编号与对象关联
|
||||||
|
|
||||||
for (int i = 0; i < detailsJson.size(); i++) {
|
for (int i = 0; i < companysJson.size(); i++) {
|
||||||
json_body = detailsJson.getJSONObject(i);
|
company_body = companysJson.getJSONObject(i);
|
||||||
number = json_body.getString("code");
|
number = company_body.getString("code");
|
||||||
|
json_body = baseMaps.get(number);
|
||||||
|
if(json_body == null){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
companynum = company_body.getString("companynum");//公司编号
|
||||||
name = json_body.getString("name");
|
name = json_body.getString("name");
|
||||||
acctType = json_body.getString("type");
|
acctType = json_body.getString("type");
|
||||||
hswd = json_body.getString("hswd");
|
|
||||||
bbhs = json_body.getString("acctcurrency");
|
bbhs = json_body.getString("acctcurrency");
|
||||||
descurrencynum = json_body.getString("descurrencynum");
|
descurrencynum = json_body.getString("descurrencynum");
|
||||||
if(EsbUtils.isEmpty(number) || EsbUtils.isEmpty(name) || EsbUtils.isEmpty(acctType) || EsbUtils.isEmpty(bbhs)){
|
if(EsbUtils.isEmpty(number) || EsbUtils.isEmpty(name) || EsbUtils.isEmpty(acctType) || EsbUtils.isEmpty(bbhs) || EsbUtils.isEmpty(companynum)){
|
||||||
log.error(String.format("会计科目接口入参为空异常:%s", json_body.toJSONString()));
|
log.error(String.format("会计科目接口入参为空异常:%s", json_body.toJSONString()));
|
||||||
itemInfo = new JSONObject();
|
itemInfo = new JSONObject();
|
||||||
itemInfo.put("code",number);
|
itemInfo.put("code",number);
|
||||||
|
|
@ -100,56 +115,39 @@ public class AspAccountControler {
|
||||||
itemsJson.add(itemInfo);
|
itemsJson.add(itemInfo);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//根据科目编号查找科目是否已存在
|
//根据科目编号和公司编号查找对应科目是否已存在
|
||||||
acctInfo = BusinessDataServiceHelper.loadSingle(entityName,new QFilter[]{new QFilter("number","=",number),
|
acctInfo = BusinessDataServiceHelper.loadSingle(entityName,new QFilter[]{new QFilter("number","=",number),
|
||||||
new QFilter("createorg.id","=",2116753963226241024l)});
|
new QFilter("createorg.number","=", companynum)});
|
||||||
// acctInfo = BusinessDataServiceHelper.loadSingle(entityName,new QFilter[]{new QFilter("number","=",number)});
|
// acctInfo = BusinessDataServiceHelper.loadSingle(entityName,new QFilter[]{new QFilter("number","=",number)});
|
||||||
if(acctInfo != null){
|
if(acctInfo != null){
|
||||||
//处理科目更新逻辑,此时能修改哪些字段?名称 币别核算 核算维度 是否可用
|
//处理科目更新逻辑,此时能修改哪些字段?名称 币别核算 核算维度 是否可用
|
||||||
if("0".equals(json_body.getString("status"))){
|
if("0".equals(company_body.getString("companystatus")) || "0".equals(json_body.getString("status"))){
|
||||||
acctInfo.set("enable", 0);//科目禁用处理
|
acctInfo.set("enable", 0);//科目禁用处理
|
||||||
}
|
}
|
||||||
// acctInfo.set("ctrlstrategy", "7");
|
// acctInfo.set("ctrlstrategy", "7");
|
||||||
acctInfo.set("pltype", getSY(acctType));
|
// acctInfo.set("pltype", getSY(acctType));
|
||||||
|
acctInfo.set("name", name);
|
||||||
|
acctInfo.set("fullname", name);
|
||||||
|
acctInfo.set("acctcurrency", bbhs);
|
||||||
|
// acctInfo.set("useorg", 2116762463713107968l);//核算组织
|
||||||
//如果是指定核算币别
|
//如果是指定核算币别
|
||||||
if("descurrency".equals(bbhs)){
|
if("descurrency".equals(bbhs)){
|
||||||
//处理具体币别分录数据,根据逗号进行分割
|
//处理具体币别分录数据,根据逗号进行分割
|
||||||
DynamicObjectCollection doc = acctInfo.getDynamicObjectCollection("currencyentry");
|
docbb = acctInfo.getDynamicObjectCollection("currencyentry");
|
||||||
doc.clear();
|
docbb.clear();
|
||||||
String[] dess = descurrencynum.split(",");
|
String[] dess = descurrencynum.split(",");
|
||||||
String bbiso;
|
|
||||||
DynamicObject bbinfo;
|
|
||||||
for (int j = 0; j < dess.length; j++) {
|
for (int j = 0; j < dess.length; j++) {
|
||||||
bbiso = dess[j];
|
bbiso = dess[j];
|
||||||
bbinfo = BusinessDataServiceHelper.loadSingleFromCache("bd_currency",new QFilter[]{new QFilter("number","=",bbiso)});
|
bbInfo = BusinessDataServiceHelper.loadSingleFromCache(bbName,new QFilter[]{new QFilter("number","=",bbiso)});
|
||||||
if(bbinfo != null){
|
if(bbInfo != null){
|
||||||
doc.addNew().set("currency",bbinfo.getLong("id"));
|
docbb.addNew().set("currency",bbInfo.getLong("id"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SaveServiceHelper.save(new DynamicObject[]{acctInfo});
|
SaveServiceHelper.save(new DynamicObject[]{acctInfo});
|
||||||
}else{
|
}else{
|
||||||
//不存在,做新增 根据实体名称创建动态对象
|
|
||||||
acctInfo = BusinessDataServiceHelper.newDynamicObject(entityName);
|
|
||||||
// acctInfo.set("accounttable", EsbUtils.ACCTABLE);//科目表fid,上正式时,注意此ID
|
|
||||||
acctInfo.set("accounttable", 2125524820924832768l);//科目表fid,上正式时,注意此ID
|
|
||||||
acctInfo.set("number", number);
|
|
||||||
acctInfo.set("name", name);
|
|
||||||
//处理父级科目
|
|
||||||
parentAcctInfo = getParentAcct(number);
|
|
||||||
acctInfo.set("longnumber", number);
|
|
||||||
acctInfo.set("fullname", name);
|
|
||||||
// acctInfo.set("parent", parentAcctInfo.getLong("id"));
|
|
||||||
//创建组织
|
|
||||||
// acctInfo.set("createorg", JhzjUtils.GROUPID);//创建组织
|
|
||||||
// acctInfo.set("org", JhzjUtils.GROUPID);//管理组织
|
|
||||||
acctInfo.set("createorg", 2116753963226241024l);//创建组织
|
|
||||||
acctInfo.set("org", 2116753963226241024l);//管理组织
|
|
||||||
//科目类型
|
|
||||||
acctTypeInfo = BusinessDataServiceHelper.loadSingleFromCache(acctTypeName,new QFilter[]{new QFilter("number","=",acctType)});
|
acctTypeInfo = BusinessDataServiceHelper.loadSingleFromCache(acctTypeName,new QFilter[]{new QFilter("number","=",acctType)});
|
||||||
if(acctTypeInfo != null){
|
if(acctTypeInfo == null){
|
||||||
acctInfo.set("accounttype", acctTypeInfo.getLong("id"));
|
|
||||||
}else{
|
|
||||||
log.error(String.format("科目类型在金蝶中找不到:%s", acctType));
|
log.error(String.format("科目类型在金蝶中找不到:%s", acctType));
|
||||||
itemInfo = new JSONObject();
|
itemInfo = new JSONObject();
|
||||||
itemInfo.put("code",number);
|
itemInfo.put("code",number);
|
||||||
|
|
@ -157,44 +155,44 @@ public class AspAccountControler {
|
||||||
itemsJson.add(itemInfo);
|
itemsJson.add(itemInfo);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//核算维度
|
hsorgInfo = getOrgInfo(companynum);
|
||||||
if(!EsbUtils.isEmpty(hswd)){
|
if(hsorgInfo == null){
|
||||||
hswdInfo = BusinessDataServiceHelper.loadSingleFromCache(hswdName,new QFilter[]{new QFilter("number","=",hswd)});
|
log.error(String.format("公司编号在金蝶中未找到对应组织:%s", companynum));
|
||||||
if(hswdInfo != null){
|
itemInfo = new JSONObject();
|
||||||
checkitementryInfo = acctInfo.getDynamicObjectCollection("checkitementry").addNew();
|
itemInfo.put("code",number);
|
||||||
checkitementryInfo.set("asstactitem",hswdInfo.getLong("id"));
|
itemInfo.put("error","公司编号在金蝶中未找到对应组织:"+companynum);
|
||||||
// if(Boolean.valueOf(isleaf)){
|
itemsJson.add(itemInfo);
|
||||||
// checkitementryInfo.set("isrequire", true);//必录
|
continue;
|
||||||
// checkitementryInfo.set("isdetail", true);//明细
|
|
||||||
// }else{
|
|
||||||
// checkitementryInfo.set("isrequire", false);//必录
|
|
||||||
// checkitementryInfo.set("isdetail", false);//明细
|
|
||||||
// }
|
|
||||||
acctInfo.set("isassist", true);//主表的isassist是否包含核算项目为是
|
|
||||||
}else{
|
|
||||||
log.error(String.format("核算维度在金蝶中找不到:%s", hswd));
|
|
||||||
itemInfo = new JSONObject();
|
|
||||||
itemInfo.put("code",number);
|
|
||||||
itemInfo.put("error","核算维度在金蝶中找不到");
|
|
||||||
itemsJson.add(itemInfo);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
//不存在,做新增 根据实体名称创建动态对象
|
||||||
|
acctInfo = BusinessDataServiceHelper.newDynamicObject(entityName);
|
||||||
|
acctInfo.set("accounttable", EsbUtils.ACCTABLE);//科目表fid,上正式时,注意此ID
|
||||||
|
acctInfo.set("number", number);
|
||||||
|
acctInfo.set("name", name);
|
||||||
|
//处理父级科目
|
||||||
|
// parentAcctInfo = getParentAcct(number);
|
||||||
|
acctInfo.set("longnumber", number);
|
||||||
|
acctInfo.set("fullname", name);
|
||||||
|
// acctInfo.set("parent", parentAcctInfo.getLong("id"));
|
||||||
|
//创建组织
|
||||||
|
// acctInfo.set("createorg", JhzjUtils.GROUPID);//创建组织
|
||||||
|
// acctInfo.set("org", JhzjUtils.GROUPID);//管理组织
|
||||||
|
acctInfo.set("createorg", hsorgInfo.getLong("id"));//创建组织
|
||||||
|
acctInfo.set("org", hsorgInfo.getLong("id"));//管理组织
|
||||||
|
//科目类型
|
||||||
|
acctInfo.set("accounttype", acctTypeInfo.getLong("id"));
|
||||||
//币别核算--外币核算类型
|
//币别核算--外币核算类型
|
||||||
acctInfo.set("acctcurrency", bbhs);//不核算外币nocurrency 指定核算币别descurrency 核算所有币别allcurrency
|
acctInfo.set("acctcurrency", bbhs);//不核算外币nocurrency 指定核算币别descurrency 核算所有币别allcurrency
|
||||||
//如果是指定核算币别
|
//如果是指定核算币别
|
||||||
if("descurrency".equals(bbhs)){
|
if("descurrency".equals(bbhs)){
|
||||||
//处理具体币别分录数据,根据逗号进行分割
|
//处理具体币别分录数据,根据逗号进行分割
|
||||||
DynamicObjectCollection doc = acctInfo.getDynamicObjectCollection("currencyentry");
|
docbb = acctInfo.getDynamicObjectCollection("currencyentry");
|
||||||
doc.clear();
|
|
||||||
String[] dess = descurrencynum.split(",");
|
String[] dess = descurrencynum.split(",");
|
||||||
String bbiso;
|
|
||||||
DynamicObject bbinfo;
|
|
||||||
for (int j = 0; j < dess.length; j++) {
|
for (int j = 0; j < dess.length; j++) {
|
||||||
bbiso = dess[j];
|
bbiso = dess[j];
|
||||||
bbinfo = BusinessDataServiceHelper.loadSingleFromCache(hswdName,new QFilter[]{new QFilter("number","=",bbiso)});
|
bbInfo = BusinessDataServiceHelper.loadSingleFromCache(bbName,new QFilter[]{new QFilter("number","=",bbiso)});
|
||||||
if(bbinfo != null){
|
if(bbInfo != null){
|
||||||
doc.addNew().set("currency",bbinfo.getLong("id"));
|
docbb.addNew().set("currency",bbInfo.getLong("id"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -225,6 +223,59 @@ public class AspAccountControler {
|
||||||
//保存数据:直接保存入库,不走操作校验
|
//保存数据:直接保存入库,不走操作校验
|
||||||
SaveServiceHelper.save(new DynamicObject[]{acctInfo});
|
SaveServiceHelper.save(new DynamicObject[]{acctInfo});
|
||||||
}
|
}
|
||||||
|
accountMaps.put(number+companynum,acctInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
//处理核算维度
|
||||||
|
JSONArray asstacttypesJson = json_obj.getJSONArray("asstacttypes");
|
||||||
|
String hsxm;//核算维度名称 基础资料
|
||||||
|
DynamicObject hsxmInfo;//核算维度对象
|
||||||
|
DynamicObjectCollection dochswd;
|
||||||
|
DynamicObject checkitementryInfo = null;
|
||||||
|
for (int i = 0; i < asstacttypesJson.size(); i++) {
|
||||||
|
json_body = asstacttypesJson.getJSONObject(i);
|
||||||
|
hsxm = json_body.getString("asstactname");
|
||||||
|
if(EsbUtils.isEmpty(hsxm)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
number = json_body.getString("code");
|
||||||
|
companynum = json_body.getString("companynum");
|
||||||
|
//根据科目核算维度中的科目编号和公司编号获取对应科目对象,不存在的不处理
|
||||||
|
acctInfo = accountMaps.get(number+companynum);
|
||||||
|
if(acctInfo == null){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
hsxmInfo = getHsxmInfo(hsxm);
|
||||||
|
if(hsxmInfo == null){
|
||||||
|
log.error(String.format("核算维度在金蝶中找不到:%s", hsxm));
|
||||||
|
itemInfo = new JSONObject();
|
||||||
|
itemInfo.put("code",number);
|
||||||
|
itemInfo.put("error","核算维度在金蝶中找不到"+hsxm);
|
||||||
|
itemsJson.add(itemInfo);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//判断当前科目是否存在此核算维度,不存在则新增,存在则判断是否必录
|
||||||
|
dochswd = acctInfo.getDynamicObjectCollection("checkitementry");
|
||||||
|
for (int j = 0; j < dochswd.size(); j++) {
|
||||||
|
checkitementryInfo = dochswd.get(j);
|
||||||
|
if(hsxmInfo.getLong("id") == checkitementryInfo.getDynamicObject("asstactitem").getLong("id")){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
checkitementryInfo = null;
|
||||||
|
}
|
||||||
|
if(checkitementryInfo == null){
|
||||||
|
checkitementryInfo = dochswd.addNew();
|
||||||
|
checkitementryInfo.set("asstactitem",hsxmInfo.getLong("id"));
|
||||||
|
checkitementryInfo.set("isdetail", true);//明细
|
||||||
|
}
|
||||||
|
if("1".equals(json_body.getString("isneed"))){
|
||||||
|
checkitementryInfo.set("isrequire", true);//必录
|
||||||
|
}else{
|
||||||
|
checkitementryInfo.set("isrequire", false);//必录
|
||||||
|
}
|
||||||
|
acctInfo.set("isassist", true);//主表的isassist是否包含核算项目为是
|
||||||
|
SaveServiceHelper.save(new DynamicObject[]{acctInfo});
|
||||||
|
accountMaps.put(number+companynum,acctInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(itemsJson.isEmpty()){
|
if(itemsJson.isEmpty()){
|
||||||
|
|
@ -236,6 +287,36 @@ public class AspAccountControler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DynamicObject getHsxmInfo(String hsxmname){
|
||||||
|
//核算维度对象集合
|
||||||
|
DynamicObject orginfo = hsxmMaps.get(hsxmname);
|
||||||
|
if(orginfo == null){
|
||||||
|
orginfo = BusinessDataServiceHelper.loadSingleFromCache(hswdName,new QFilter[]{new QFilter("name","=",hsxmname)});
|
||||||
|
mapObject.put(hsxmname,orginfo);
|
||||||
|
}
|
||||||
|
return orginfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DynamicObject getOrgInfo(String companynum){
|
||||||
|
//公司对象集合
|
||||||
|
DynamicObject orginfo = mapObject.get(companynum);
|
||||||
|
if(orginfo == null){
|
||||||
|
orginfo = BusinessDataServiceHelper.loadSingleFromCache(orgName,new QFilter[]{new QFilter("number","=",companynum)});
|
||||||
|
mapObject.put(companynum,orginfo);
|
||||||
|
}
|
||||||
|
return orginfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, JSONObject> getBaseMap(JSONArray detailsJson){
|
||||||
|
Map<String, JSONObject> baseMaps = new HashMap<>();
|
||||||
|
JSONObject json_body;
|
||||||
|
for (int i = 0; i < detailsJson.size(); i++) {
|
||||||
|
json_body = detailsJson.getJSONObject(i);
|
||||||
|
baseMaps.put(json_body.getString("code"),json_body);
|
||||||
|
}
|
||||||
|
return baseMaps;
|
||||||
|
}
|
||||||
|
|
||||||
private DynamicObject getParentAcct(String number){
|
private DynamicObject getParentAcct(String number){
|
||||||
//sap科目编号为10位,且没有层级关系,金蝶按照4-6分两级自行处理
|
//sap科目编号为10位,且没有层级关系,金蝶按照4-6分两级自行处理
|
||||||
String parentNumber = number.substring(0,4);
|
String parentNumber = number.substring(0,4);
|
||||||
|
|
|
||||||
|
|
@ -1,156 +0,0 @@
|
||||||
package shjh.jhzj7.fi.fi.webapi;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
|
||||||
import com.alibaba.fastjson.JSONException;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import com.drew.lang.annotations.NotNull;
|
|
||||||
import kd.bos.api.client.ApiResult;
|
|
||||||
import kd.bos.context.RequestContext;
|
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
|
||||||
import kd.bos.logging.Log;
|
|
||||||
import kd.bos.logging.LogFactory;
|
|
||||||
import kd.bos.openapi.common.custom.annotation.ApiController;
|
|
||||||
import kd.bos.openapi.common.custom.annotation.ApiPostMapping;
|
|
||||||
import kd.bos.openapi.common.custom.annotation.ApiRequestBody;
|
|
||||||
import kd.bos.openapi.common.result.CustomApiResult;
|
|
||||||
import kd.bos.orm.query.QFilter;
|
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
||||||
import kd.bos.servicehelper.QueryServiceHelper;
|
|
||||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
||||||
import shjh.jhzj7.fi.fi.utils.EsbUtils;
|
|
||||||
import shjh.jhzj7.fi.fi.webapi.model.CostCenterModel;
|
|
||||||
|
|
||||||
import javax.validation.Valid;
|
|
||||||
import java.util.Comparator;
|
|
||||||
|
|
||||||
@ApiController(value = "CCControler",desc = "成本中心接口,测试代码,不用提交")
|
|
||||||
public class CCControler {
|
|
||||||
private static final String entityName = "bos_costcenter";//系统库 表名 t_bas_costcenter
|
|
||||||
private static final String orgEntName = "bos_org";//系统库 表名 t_org_org
|
|
||||||
private static final String apimenthod = "/costcenter_sync";
|
|
||||||
private static final Log log = LogFactory.getLog(CCControler.class);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param bizParam 入参json格式数据
|
|
||||||
* @return 自定义返回值
|
|
||||||
*/
|
|
||||||
@ApiPostMapping(value = apimenthod, desc = "成本中心接口")
|
|
||||||
public CustomApiResult<ApiResult> costcenter_sync (@NotNull @Valid @ApiRequestBody(value="入参json格式") CostCenterModel bizParam) {
|
|
||||||
// if(EsbUtils.isEmpty(data)){
|
|
||||||
// return CustomApiResult.fail("400","接口入参为空");
|
|
||||||
// }
|
|
||||||
JSONObject json_obj = null;
|
|
||||||
try{
|
|
||||||
//解析入参,如果格式不正确,日志记录,并反馈esb
|
|
||||||
json_obj = (JSONObject) JSON.toJSON(bizParam);
|
|
||||||
}catch (JSONException e) {
|
|
||||||
String jsonResult = String.format("成本中心接口入参异常:%s", e.getMessage());
|
|
||||||
log.error(jsonResult);
|
|
||||||
EsbUtils.saveLog(apimenthod,"ESB",bizParam.toString(),jsonResult,false,"API");
|
|
||||||
return CustomApiResult.fail("400","接口入参异常");
|
|
||||||
}
|
|
||||||
// String batchId = json_body.getString("batchId");//批数据的唯一标识
|
|
||||||
// JSONObject json_result = new JSONObject();//返回值主对象
|
|
||||||
// json_result.put("batchId",batchId);
|
|
||||||
JSONArray itemsJson = new JSONArray();//返回值明细集合
|
|
||||||
JSONObject itemInfo = null;//返回值明细对象
|
|
||||||
JSONArray detailsJson = json_obj.getJSONArray("items");
|
|
||||||
//处理入参的排序,按照ccLevel正序
|
|
||||||
detailsJson.sort(Comparator.comparingInt(json -> ((JSONObject) json).getIntValue("ccLevel")));
|
|
||||||
String orgNumber = null;
|
|
||||||
String orgName = null;
|
|
||||||
String ccLevel = null;
|
|
||||||
String parentCode = null;
|
|
||||||
String typeNum = null;
|
|
||||||
String company = null;
|
|
||||||
DynamicObject parentOrg = null;
|
|
||||||
DynamicObject currentOrg = null;
|
|
||||||
DynamicObject companyInfo = null;
|
|
||||||
JSONObject json_body = null;
|
|
||||||
for (int i = 0; i < detailsJson.size(); i++) {
|
|
||||||
json_body = detailsJson.getJSONObject(i);
|
|
||||||
orgNumber = json_body.getString("code");//成本中心编号
|
|
||||||
orgName = json_body.getString("ccname");//成本中心名称
|
|
||||||
ccLevel = json_body.getString("ccLevel");//层级
|
|
||||||
parentCode = json_body.getString("parentCode");//父级编号
|
|
||||||
typeNum = json_body.getString("typeNum");//类型编号
|
|
||||||
company = json_body.getString("company");//所属公司编号
|
|
||||||
if(EsbUtils.isEmpty(orgNumber) || EsbUtils.isEmpty(orgName) || EsbUtils.isEmpty(typeNum) || EsbUtils.isEmpty(ccLevel) ||
|
|
||||||
(Integer.parseInt(ccLevel)>1 && EsbUtils.isEmpty(parentCode)) || EsbUtils.isEmpty(company)){
|
|
||||||
log.error(String.format("成本中心入参为空异常:%s", json_body.toJSONString()));
|
|
||||||
itemInfo = new JSONObject();
|
|
||||||
itemInfo.put("code",orgNumber);
|
|
||||||
itemInfo.put("error","入参值为空");
|
|
||||||
itemsJson.add(itemInfo);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
//处理上级组织
|
|
||||||
parentOrg = QueryServiceHelper.queryOne(entityName,"id,number,longnumber,fullname",new QFilter[]{new QFilter("number","=",parentCode)});
|
|
||||||
if(parentOrg == null && Integer.parseInt(ccLevel)>1){
|
|
||||||
log.error(String.format("根据父级成本中心编号未在金蝶中找到对应组织:%s", parentCode));
|
|
||||||
itemInfo = new JSONObject();
|
|
||||||
itemInfo.put("code",orgNumber);
|
|
||||||
itemInfo.put("error","根据父级成本中心编号未在金蝶中找到对应组织");
|
|
||||||
itemsJson.add(itemInfo);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
currentOrg = BusinessDataServiceHelper.loadSingle(entityName,new QFilter[]{new QFilter("number","=",orgNumber)});
|
|
||||||
if(currentOrg == null){
|
|
||||||
//根据编号找不到成本中心,则新增
|
|
||||||
currentOrg = BusinessDataServiceHelper.newDynamicObject(entityName);
|
|
||||||
currentOrg.set("number",orgNumber);
|
|
||||||
//处理所属公司
|
|
||||||
companyInfo = QueryServiceHelper.queryOne(orgEntName,"id,number",new QFilter[]{new QFilter("number","=",company)});
|
|
||||||
if(companyInfo == null){
|
|
||||||
log.error(String.format("根据所属公司编号未在金蝶中找到对应公司:%s", company));
|
|
||||||
itemInfo = new JSONObject();
|
|
||||||
itemInfo.put("code",orgNumber);
|
|
||||||
itemInfo.put("error","根据所属公司编号未在金蝶中找到对应公司");
|
|
||||||
itemsJson.add(itemInfo);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
currentOrg.set("accountorg",companyInfo.getLong("id"));
|
|
||||||
currentOrg.set("addtype","manual");//新增方式,默认手工新增
|
|
||||||
currentOrg.set("status","C");//数据状态
|
|
||||||
currentOrg.set("creator", RequestContext.get().getCurrUserId());//创建人
|
|
||||||
currentOrg.set("isleaf",true);//默认为叶子
|
|
||||||
currentOrg.set("enable",1);//默认可用
|
|
||||||
}
|
|
||||||
currentOrg.set("name",orgName);
|
|
||||||
currentOrg.set("orgduty",typeNum);//类型
|
|
||||||
currentOrg.set("level",ccLevel);//层级
|
|
||||||
currentOrg.set("shjh_comids",json_body.getString("other_company"));//跨公司ID
|
|
||||||
//处理长编号和长名称
|
|
||||||
currentOrg.set("longnumber",orgNumber);
|
|
||||||
currentOrg.set("fullname",orgName);
|
|
||||||
if(parentOrg != null){
|
|
||||||
currentOrg.set("longnumber",parentOrg.getString("longnumber")+orgNumber);
|
|
||||||
currentOrg.set("fullname",parentOrg.getString("fullname")+orgName);
|
|
||||||
currentOrg.set("parent",parentOrg.getLong("id"));//父级
|
|
||||||
}
|
|
||||||
//处理禁用组织
|
|
||||||
if("0".equals(json_body.getString("status"))){
|
|
||||||
currentOrg.set("enable",0);
|
|
||||||
}
|
|
||||||
SaveServiceHelper.save(new DynamicObject[]{currentOrg});
|
|
||||||
// itemInfo = new JSONObject();
|
|
||||||
// itemInfo.put("pkId",orgNumber);
|
|
||||||
// itemInfo.put("status","1");
|
|
||||||
// itemInfo.put("message","");
|
|
||||||
// itemsJson.add(itemInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
//返回最终处理结果,如果上述有单个组织处理失败,则总体状态overallStatus是何值?
|
|
||||||
// json_result.put("overallStatus","1");
|
|
||||||
// json_result.put("items",itemsJson);
|
|
||||||
if(itemsJson.isEmpty()){
|
|
||||||
EsbUtils.saveLog(apimenthod,"ESB",json_obj.toString(),null,true,"API");
|
|
||||||
return CustomApiResult.success(null);
|
|
||||||
}else{
|
|
||||||
EsbUtils.saveLog(apimenthod,"ESB",json_obj.toString(),itemsJson.toJSONString(),false,"API");
|
|
||||||
return CustomApiResult.fail("400","接口处理异常"+itemsJson.toJSONString());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue